This discord bot was made for an IT School in 2020. It has a lot of features including all the latest features from discord.py. Made by student(s) for students.
Note: Major features
- ContextMenus (Right-click commands)
- AppCommands (Slash-commands)
- HybridCommands (Slash-commands + Commands)
- Groups
- Commands
- Custom-Modals (Forms)
- Custom-Views (Buttons, Dropdown, ..)
- Cogs/GroupCogs
- Custom prefix per guild
- Dynamic structure (Does not require a reboot to apply changes in files)
- Database support (SQL)
- Error handling
- Logging
- Multiple configs
- Powerful, dev & debuging commands
- Metrics about usage of the bot
- Language detector & Translation
- And more..
- Python >= 3.8
- discord.py >= 2.1.0
- SQL
- MariaDB (or MySQL)
Install python packages with:
- pip
$ pip install -r requirements.txt
-
Create an application on Discord Developpers
-
Enable the bot status in Discord Developpers/applications/{YOUR_APP_ID}/bot
-
Please make sure you have enabled each needed
Privileged Gateway Intents
in Discord Developpers/applications/{YOUR_APP_ID}/bot #Privileged Gateway Intents for your application. -
Copy the token bot from Discord Developpers/applications/{YOUR_APP_ID}/bot #Token
Note In URL replace
{YOUR_APP_ID}
with your own app/bot ID.
-
Paste your discord bot token in the
"token"
field inside/config/bot.json
. -
Configure the prefix in the
/config/bot.json
. -
If you are using a database, fill your database credentials in the
/config/database.json
file. -
Inside your SQL database, create the following tables listed in the SQL tables structure section.
Warning If you are NOT using any/or a compatible database, check the Acknowledgement section.
Warning If you have not planned to use a SQL database:
- set the
"use_database"
field tofalse
in the/config/database.json
file.- in the folder
/cogs
you should remove the following files (which are using the database):birthday.py
,croissants.py
,invite.py
,me.py
,metrics.py
,starboard.py
.
Note If you have planned to use a database:
- you should use a SQL Database.
- reconfigure the "server" section from
/config/database.json
.- you can change the structure of each SQL tables if needed.
- if so you should reconfigure some keys/values of the
/config/cogs.json
.
Note These tables are required in the database if you have planned to use the bot as if provided
table_birthday
CREATE TABLE IF NOT EXISTS `table_birthday`
(
`user_id` BIGINT unsigned NOT NULL,
`user_birth` DATE NOT NULL,
UNIQUE(`user_id`)
)
ENGINE = InnoDB,
CHARACTER SET utf8mb4,
COLLATE utf8mb4_unicode_ci;
table_croissants
CREATE TABLE IF NOT EXISTS `table_croissants`
(
`user_id` BIGINT unsigned NOT NULL,
`user_count` SMALLINT unsigned,
UNIQUE(`user_id`)
)
ENGINE = InnoDB,
CHARACTER SET utf8mb4,
COLLATE utf8mb4_unicode_ci;
table_invite
CREATE TABLE IF NOT EXISTS `table_invite`
(
`guild_id` BIGINT unsigned NOT NULL,
`channel_id` BIGINT unsigned NOT NULL,
`custom_message` varchar(4096),
UNIQUE(`guild_id`)
)
ENGINE = InnoDB,
CHARACTER SET utf8mb4,
COLLATE utf8mb4_unicode_ci;
table_me
CREATE TABLE IF NOT EXISTS `table_me`
(
`guild_id` BIGINT unsigned NOT NULL,
`user_id` BIGINT unsigned NOT NULL,
`user_me` varchar(1024),
CONSTRAINT `me_per_guild` UNIQUE (`guild_id`, `user_id`)
)
ENGINE = InnoDB,
CHARACTER SET utf8mb4,
COLLATE utf8mb4_unicode_ci;
table_metrics
CREATE TABLE IF NOT EXISTS `table_metrics`
(
`command_name` varchar(32) NOT NULL,
`command_count` MEDIUMINT unsigned NOT NULL,
`command_type` varchar(64) NOT NULL,
UNIQUE(`command_name`)
)
ENGINE = InnoDB,
CHARACTER SET utf8mb4,
COLLATE utf8mb4_unicode_ci;
table_prefix
CREATE TABLE IF NOT EXISTS `table_prefix`
(
`guild_id` BIGINT unsigned NOT NULL,
`guild_prefix` varchar(256),
UNIQUE(`guild_id`)
)
ENGINE = InnoDB,
CHARACTER SET utf8mb4,
COLLATE utf8mb4_unicode_ci;
table_starboard
CREATE TABLE IF NOT EXISTS `table_starboard`
(
`reference_message` VARCHAR(100) NOT NULL,
`display_message` VARCHAR(100) NOT NULL,
`star_count` SMALLINT unsigned NOT NULL,
UNIQUE(`reference_message`)
)
ENGINE = InnoDB,
CHARACTER SET utf8mb4,
COLLATE utf8mb4_unicode_ci;
Github setup:
- On Github.com go on your project repository
- Then click on
Settings
>Actions
>Runners
>New self-hosted runner
. - Then select the right
runner-image
related to your machine and the rightarchitecture
. - Then follow the
Download
and theConfigure
instructions.
Server setup:
- If you want to start the self-runner on boot, you can follow this guide.
:warning: The self-hosted runner should have the following permissions,
install apps
andstart/restart services
. (install the service as --user usernameWithPermissions)
Discord bot service: This step is made for linux only.
- Create a service file in
/etc/systemd/system/your-service-name.service
with the following content:
[Unit]
Description=Discord bot startup service
After=multi-user.target
[Service]
Type=simple
Restart=no
User={usernameWithPermissions}
WorkingDirectory=/home/{username}/actions-runner/_work/Discord-Bot/Discord-Bot
ExecStart=python3 /home/{username}/actions-runner/_work/Discord-Bot/Discord-Bot/bot.py
[Install]
WantedBy=multi-user.target
Note Replace
{username}
&{usernameWithPermissions}
with your username andDiscord-Bot/Discord-Bot
with your project name.
- Then enable the service with
systemctl enable your-service-name.service