Skip to content

RaffleBot is a discord bot built originally for The Programmer's Hangout that focuses on managing giveaways.

License

Notifications You must be signed in to change notification settings

Abzylicious/RaffleBot

Repository files navigation

Kotlin DiscordKt Docker Cloud Build Status License

RaffleBot 🎉

RaffleBot is a discord bot built originally for The Programmer's Hangout that focuses on managing giveaways. This bot might be useful for all kinds of discord servers though.

Join us at https://discord.gg/programming

Discord

Required Permissions

  • View Channels
  • Send Messages
  • Read Message History
  • Use External Emojis
  • Add Reactions

Features

While RaffleBot 1.0.0 focuses on essential functionality, there are many more features to come in the future. Currently the following features are available:

  • Convert an existing message or embed to tracked giveaway
  • Create new tracked giveaway as message or embed
  • Create a timed giveaway
    • Add a timer to a given giveaway
    • Create a new giveaway with a timer
    • A giveaway automatically ends after its timer has expired
    • Persist timed giveaways (timed giveaways are not affected by bot downtimes & host machine reboots)
  • RaffleBot can access any guild channel for its commands
  • Assign a custom emoji to react to per giveaway (the default for this is 🎉)
  • Manually end a given giveaway and draw X winners (the default for this is 1)
    • A giveaway does not end if there are no winners available (no one except the bot reacted to a giveaway)
    • A giveaway does not end if there are not enough participants (you want to draw more winners than there are participants)
    • A giveaway is automatically removed from the giveaway list after it ends
  • Remove tracked giveaways
  • Remove all tracked giveaways
  • RaffleBot removes its own reaction from a tracked message after its respective giveaway either ended or is removed from the giveaway list
  • Clean up the giveaway list (automatically remove all entries of non-available giveaways (eg. the respective message was deleted))
  • A permission system protects RaffleBot to be abused by your members
  • Command invocations are logged (given a configured logging channel)
  • Multi Guild support
    • A conversation simplifies the initial guild configuration
    • Each guild can configure its own bot prefix
    • Each guild can configure its own default reaction for creating giveaways (this may either be a unicode emote or a guild specific emote)
    • Each guild can configure its respective logging channel
    • Each guild can configure RaffleBots permission system to work with different Staff and Admin roles
  • Dockerize the bot easily via the provided Dockerfile and docker-compose.yml file

Commands

Refer to commands.md for a general list and explanation of all available commands. To learn about commands during runtime, use the help command!

Getting Started ⚙️

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.

Requirements

  • Java
  • Docker
  • Docker-Compose (compatible with docker-compose version 3.8)

Get the Docker version you need here!

Setup

Since this bot has a docker-compose.yml file and is hosted on DockerHub, all you need to start your own version of RaffleBot locally is to clone this repository and set up the .env file.

The .env file is used to configure the bot token and owner id, in the following format:

BOT_TOKEN=<insert-bot-token>
BOT_OWNER=<insert-owner-id>

For Linux and Mac run

$ cp .env.example .env

For Windows run

> Copy-Item .env.example .env

Edit the .env file with your favourite editor, filling out the following properties:

Run the bot via docker-compose

$ docker-compose up --build --detach

Versioning 🏷️

This project uses Semantic Versioning for versioning. For the versions available, see the tags on this repository.

Authors 👤

See also the list of contributors who participated in this project.

Contributing 🤝

Contributions, issues and feature requests are welcome! Feel free to check the issues page.

Setup development environment 🛠️

For development you don't necessarily need Docker and Docker-Compose but Java

  • clone this repository
  • Open the project in your favourite Java / Kotlin IDE (JetBrains IntelliJ IDEA is the recommended IDE for Kotlin projects)
  • For running the bot within your IDE you need to add your bot token as program argument or environment variable (You might have to figure out how to do that in your IDE. IntelliJ let's you do that under Run -> Edit Configurations...)

Show your support ⭐️

Give a ⭐️ if this project helped you!

License 📝

Copyright © 2020 Alexander Deledda
This project is MIT licensed.

About

RaffleBot is a discord bot built originally for The Programmer's Hangout that focuses on managing giveaways.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages