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
- View Channels
- Send Messages
- Read Message History
- Use External Emojis
- Add Reactions
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 is1
)- 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 aguild specific emote
) - Each guild can configure its respective logging channel
- Each guild can configure RaffleBots permission system to work with different
Staff
andAdmin
roles
- Dockerize the bot easily via the provided Dockerfile and docker-compose.yml file
Refer to commands.md for a general list and explanation of all available commands. To learn about commands during runtime, use the help
command!
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.
- Java
- Docker
- Docker-Compose (compatible with docker-compose version 3.8)
Get the Docker version you need here!
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>
$ cp .env.example .env
> Copy-Item .env.example .env
Edit the .env file with your favourite editor, filling out the following properties:
- BOT_TOKEN (you can find the bot token under
https://discord.com/developers/applications/bot-id/bot
for an overview of all your bots visit https://discord.com/developers/applications) - BOT_OWNER (Where can I find my User/Server/Message ID?)
Run the bot via docker-compose
$ docker-compose up --build --detach
This project uses Semantic Versioning for versioning. For the versions available, see the tags on this repository.
- Alexander Deledda - Original Author - @Abzylicious
See also the list of contributors who participated in this project.
Contributions, issues and feature requests are welcome! Feel free to check the issues page.
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
orenvironment variable
(You might have to figure out how to do that in your IDE. IntelliJ let's you do that underRun -> Edit Configurations...
)
Give a โญ๏ธ if this project helped you!
Copyright ยฉ 2020 Alexander Deledda
This project is MIT licensed.