DevRipley / Resilence-Discord-Bot-Template

🐍 A simple template to start to code your own and personalized discord bot in Python programming language.

Home Page:https://darielsax.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

GitHub is maintained CodeQL Deploy

Contributors GitHub last commit GitHub last release Github last prerelease

Discord-Bot

Table of content

About the project

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..

Built with

Getting started

Python Prerequisites

Install python packages with:

  • pip
$ pip install -r requirements.txt

Discord developper configuration

  1. Create an application on Discord Developpers

  2. Enable the bot status in Discord Developpers/applications/{YOUR_APP_ID}/bot

  3. 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.

  4. 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.

Configure the bot

  1. Paste your discord bot token in the "token" field inside /config/bot.json.

  2. Configure the prefix in the /config/bot.json.

  3. If you are using a database, fill your database credentials in the /config/database.json file.

  4. 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.

Database

Acknowledgement

Warning If you have not planned to use a SQL database:

  1. set the "use_database" field to false in the /config/database.json file.
  2. 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.

SQL tables structure

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;

Workflows

Update and restart discord bot

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 right architecture.
  • Then follow the Download and the Configure 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 and start/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 and Discord-Bot/Discord-Bot with your project name.

  • Then enable the service with systemctl enable your-service-name.service
Contributors :

About

🐍 A simple template to start to code your own and personalized discord bot in Python programming language.

https://darielsax.com

License:MIT License


Languages

Language:Python 100.0%