Discord Raffle Bot
The Discord Raffle Bot is, as the name suggests, a simple python bot for hosting real time raffles for talk shows, communities, livestreams and others. This simple bot allows for flexibility while utilizing just a single command to ensure simplicity for non-tech savvy users.
People experienced in the Python programming language will also be able to easily expand on the bot, add new functionalities and commands thanks to an easy and simple code design that welcomes even the beginners (such as the command()
function)
Technology Stack
This bot utilizes just Python 3.6 (should work on 3.0 and newer, but was tested on 3.6) and the discord.py Python library.
The bot is heavily dependent on the asyncio library (installed by default) which allows Python to act as an asynchronous programming language. This ensures that the bot can be run on multiple discord servers and in multiple channels at once without stopping raffles already taking place and without hosting multiple instances of the bot.
Customization for your server
All the messages sent by the bot can be found on line 7 in the r_messages
dictionary. They can be edited with ease as long as variables are kept in order. If variables are to be changed, you'll need to replace the .format()
method's argument where the message is used.
Permission to use the bot can be set to a role on line 17. It's also possible to change it to check for usernames instead by adjusting the permission_check()
function on line 4 in the utils.py
file.
Custom commands can be added by following the example of !raffle
(line 29) in the command()
function (line 23). They can be assigned for different lists of roles to allow more flexible permissions by smart utilization of the utils.permission_check()
function.
Roadmap
The project is finished aside from final polish and addition of good suggestions. It will also remain maintained for bugs if any are found.
How to contribute?
If you wish to contribute to this project, please use the Github Issues or create Pull Requests directly. You can also contact me via comments under this post.