Hackweek Team: Nerd#4271 ,caladanbrood#5363, bAnanaS#6056, MidLoki#6680
Discord Moderation Bot first developed for discord's HackWeek 2019 contest. Includes auto incident reporting feature, a verification feature with three variations, and a roles graph feature.
Terms: Discord, Bot, Python, Moderation
Prerequisites
Running the bot (with docker)
We recommend running this bot using docker. To setup and run the bot with docker:
- Grant execution permissions to the setup and start-bot-container scripts
chmod +x ./setup
chmod +x ./start-bot-container
- Build the docker image by running the setup script
./setup
- Run the start script and provide your bot token (you only need to provide your token on the first run, any subsequent run it is not required)
./start-bot-container <your bot token here>
Running the bot (without docker)
We strongly encourage you to run this bot using docker, however if you are unable to use docker for any reason you may run the bot without docker
- Install all dependencies with pip
pip install discord.py aiohttp networkx pandas matplotlib
- Run the bot and follow setup prompts
python main.py
Features
-
Role statistics -
-
Verification - Users will join as 'unverified', to verify users will be given one of three different types of challenge prompts that they must successfully answer to become a verified member
-
b!verification <true/false> - Enable or disable the system, if enabled, creates a channel and role, auto deletes when the feature is disabled
-
b!verify - Verify yourself as a user. The bot will DM you and you will have to complete one of three challenges. The first possible challenges is to repeat back a three word phrase, copy/pasting will not work, you must type the phrase back. Second possible challenge is to solve a simple 3 operand math problem. Third challenge is to type back the color of an object.
-
-
Incident Reports - When a user is kicked, banned, or unbanned it will auto generate an incident report and a 'receipt' will be sent via DM to both the recipient and the staff member that issued it. Optionally it can post these receipts into a channel. There is also an option to create a custom incident report. These incidents will be preserved through restarts and can be searched with commands. Individual reports can also be deleted if required.
-
b!reporting <true/false> - Enable or disable reporting feature, if enabled a channel is created and a report 'receipt' will be sent in that channel. Channel will be deleted if feature is disabled.
-
b!kick - Kick the specified user, reason is required.
-
b!ban - Bans the specified user,reason is required.
-
b!hackban - This is used to ban a user that is not in the server, reason is required.
-
b!unban - Unban the user with the ID provided, reason is required.
-
b!report - Create a custom report, action and reason are both required.
-
b!lookup <user mention, user ID, or case number> --receipt(optional parameter) - Lookup reports, if user ID or mention is provided, it will show all reports attached to that user. If a case number is specified, it will show that specific report. If only fetching one report, appending '--receipt' to the end of the command will cause the bot to send you a copy of the report via DM.
-
b!recall - Delete a single report from the system.
-
-
General message management features
-
b!purge (optional) - Bulk delete messages from a channel, if you mention a user it will only delete messages from said user.
-
b!move <copy (defaults to false, unless otherwise specified)> - Move the specified number of messages to the target channel, if copy is set to true, it will copy instead of move.
-
-
Join/Leave responses - The bot greets people as they come, and wishes them well as they leave. Will be automatically sent to the server's system message channel