Bot du serveur Discord d'Entraide Informatique - Capetlevrai
Cliquez ici pour accéder à un tutoriel (en anglais) tiré du guide officiel de Discord.js pour créer votre bot.
Une fois le bot créé, dans la section "Bot", il faudra activer l'intent privilégié "PRESENCE INTENT", "SERVER MEMBERS INTENT" et "MESSAGE CONTENT INTENT". Si votre bot n'est pas vérifié, il faut simplement activer le bouton. Sinon, voici quelques ressources pour activer les intents : Discords FAQ, Discord Support.
Une fois votre application et bot créés, vous devez récupérer le token du bot ("TOKEN") ainsi que l'ID de l'application ("APPLICATION ID").
Pour inviter le bot sur un serveur, il faut créer un lien d'invitation. Il est nécessaire d'avoir l'ID du client. Voici le lien type utilisé pour ce bot : https://discord.com/oauth2/authorize?client_id=INSERT_CLIENT_ID_HERE&permissions=8&scope=bot%20applications.commands
.
Remplacez
INSERT_CLIENT_ID_HERE
par l'ID de votre application.
permissions=8
correspond aux permissions d'invitation du bot. Vous pouvez modifier le code des permissions avec un calculateur de permissions.8
accorde au bot la permission administrateur. Veuillez noter qu'il est nécessaire d'avoir l'authentification à deux facteurs activée sur le compte du propriétaire du bot pour utiliser les permissions suivantes : Manage Channels, Manage Roles, Manage Messages.
La configuration du serveur doit être totalement effectuée afin que le bot puisse fonctionner correctement.
Cela s'effectue de la façon suivante avec la commande /setup
:
/setup view
: voir la configuration du serveur/setup rich-presence-text
: texte de présence du bot (facultatif)/setup timeout-join
: temps du @Pas de blabla (30m
par défaut)/setup commands-prefix
: préfixe des commandes personnalisées (!
par défaut)/setup leave-join-channel
: salon départs-arrivées/setup report-channel
: salon signalements/setup logs-messages-channel
: salon logs messages/setup logs-bans-channel
: salon logs bans/setup logs-roles-channel
: salon logs rôles/setup mediation-channel
: salon médiation/setup config-channel
: salon config/setup upgrade-channel
: salon upgrade/setup blabla-channel
: salon blabla-hs/setup access-channel
: salon acces-aux-canaux/setup member-role
: rôle @Membres/setup join-role
: rôle @Pas de blabla/setup no-entraide-role
: rôle @Pas d'entraide/setup muted-role
: rôle @Muted/setup staff-editeurs-role
: rôle @STAFF éditeurs/setup modo-role
: rôle @Modos/setup certif-role
: rôle @Certifiés/setup voice-channels
: salons vocaux ("créer-ton-vocal")/setup no-logs-channels
: salons no-logs messages (facultatif)/setup no-text-channels
: salons no-text messages (facultatif)/setup threads-channels
: salons threads auto (facultatif)/setup feur-channels
: salons avec réaction :feur: autorisée (facultatif)
Lorsqu'il est possible d'y entrer plusieurs IDs, ceux-ci doivent être séparés par des virgules, comme suit : 123456789012345678,123456789012345678,123456789012345678
L'application est capable de tourner sous plusieurs environnements :
- n'importe quel environnement avec Node.js d'installé
- dans un container Docker avec Docker Compose
-
Il est nécessaire d'avoir Node.js v18.7.0 ou plus récent d'installé sur votre machine.
Utilisez la commande
node -v
pour vous assurez que Node est bien installé et que sa version est suffisante. -
Téléchargez le code de l'application sur votre machine. cf. Télécharger le code de l'application sur votre machine
-
Il faut au préalable installer les dépendances de l'application avant de lancer celle-ci en utilisant la commande
npm i
.Toutes les dépendances vont être installées, y compris celles prévues pour les développeurs, car le package dotenv est nécessaire. Ci toutefois vous avez appliqué les variables d'environnement à l'application par vos propres moyens, seule la commande
npm i --production
est nécessaire. -
Renommez le fichier
bot.example.env
enbot.env
, puis modifiez les variables d'environnement pour que l'application fonctionne correctement. cf. Variables d'environnement -
Renommez le fichier
config.example.json
enconfig.json
, puis modifiez les variables d'environnement pour que l'application fonctionne correctement. cf. Variables d'environnement -
Renommez le fichier
reactionRoleConfig.example.json
enreactionRoleConfig.json
, puis modifiez son contenu pour que le système fonctionne correctement. cf. Variables d'environnement -
Renommez le fichier
banEmotesAtJoin.example.json
enbanEmotesAtJoin.json
, puis modifiez son contenu pour que le système fonctionne correctement. cf. Variables d'environnement
-
Vous pouvez utiliser
npm start
pour lancer l'application. -
Vous pouvez utiliser la combinaison de touches
Ctrl + C
ou fermer la fenêtre de commandes pour tuer l'application.
Vous pouvez utiliser un gestionnaire d'application comme PM2 pour faciliter la gestion de l'application. cf. Managing your bot process with PM2
-
Il est nécessaire d'avoir Docker ainsi que Docker Compose d'installé.
Utilisez les commandes
docker -v
etdocker-compose -v
pour vérifier que les deux applications soient bien installées. -
Créez les fichiers
bot.env
,config.json
,reactionRoleConfig.json
etbanEmotesAtJoin.json
dans le dossierconfig
ainsi que le fichierdocker-compose.yml
dans le dossierdocker
:mkdir config cd config touch bot.env config.json reactionRoleConfig.json banEmotesAtJoin.json cd .. mkdir docker touch docker-compose.yml
-
Configurez le fichier
bot.env
en ajoutant les variables d'environnement pour que l'application fonctionne correctement. cf. Variables d'environnement -
Configurez le fichier
config.json
en ajoutant les variables d'environnement pour que l'application fonctionne correctement. cf. Variables d'environnement -
Configurez le fichier
reactionRoleConfig.json
, puis modifiez le fichier pour que le système fonctionne correctement. cf. Configuration du sytème de réactions / rôles -
Configurez le fichier
banEmotesAtJoin.json
, puis modifiez le fichier pour que le système fonctionne correctement. cf. Configuration du sytème de réactions / rôles -
Copiez le contenu du fichier docker/docker-compose.yml dans le fichier du même emplacement sur votre machine. Il correspond au fichier de configuration pour
docker-compose
.
-
La structure des dossiers et fichiers devrait ressembler à ça :
. ├── config │ ├── bot.env │ ├── config.json │ ├── reactionRoleConfig.json │ └── banEmotesAtJoin.json └── docker └── docker-compose.yml
- Vous pouvez utiliser les commandes
docker pull ctrlfdocker/userbot:latest
puisdocker-compose -f ./docker/docker-compose.yml up -d
pour lancer l'application.
docker pull va télécharger ou mettre à jour si besoin l'image de l'application hébergée sur Docker Hub. Le tag ici est
latest
ce qui correspond, de fait, au code présent sur la branche master. Vous pouvez spécifier une version spécifique comme par exemple8.0.0
. cf. liste des tags disponibles ainsi que leur version correspondante
docker-compose va lancer le container avec les règles définies dans
docker-compose.yml
.
Pour plus d'infos sur les technologies liées à Docker utilisées ici, vous pouvez consulter leur documentation ou leur manuel.
- Vous pouvez utiliser la commande
docker-compose -f ./docker/docker-compose.yml stop
pour stopper le container. Pour le supprimer, utilisez la commandedocker-compose -f ./docker/docker-compose.yml down
.
Télécharger le code de l'application sur votre machine
Vous pouvez télécharger le code de l'application sur votre machine
- en clonant le repository
- ou en téléchargeant le code source
Variables d'environnement
Le bot repose sur les variables d'environnement pour pouvoir fonctionner.
Exemple disponible ici :
DISCORD_TOKEN="" DB_HOST="" DB_USER="" DB_PASS="" DB_NAME_URLS_API="" DB_NAME_USERBOT="" JOKE_TOKEN="" OPEN_AI_KEY=""
Variable | Description |
---|---|
DISCORD_TOKEN | Token secret du bot Discord |
DB_HOST | Serveur MySQL |
DB_USER | Nom d'utilisateur MySQL |
DB_PASS | Mot de passe MySQL |
DB_NAME_URLS_API | Base de données des URLs courtes |
DB_NAME_USERBOT | Base de données du bot |
JOKE_TOKEN | Token de l'API blagues-api |
OPEN_AI_KEY | Clé API de l'API ChatGPT |
Pour pouvoir récupérer les identifiants (ID) sur Discord, il faut activer le mode développeur.
Configuration du sytème de réactions / rôles
Exemple disponible ici :
[ { // Salon n°1 "channelID": "123456789123456789", "messageArray": [ // Message n°1 { // ID du message "messageID": "123456789123456789", // Émoji unicode en clé, objet avec "id" en valeur "emojiRoleMap": { "💸": { "id": "123456789123456789" }, "🔧": { "id": "123456789123456789" } } }, // Message n°2 { // ID du message "messageID": "123456789123456789", // Émoji unicode en clé, objet avec "id" et giveJoinRole en valeur "emojiRoleMap": { "🥵": { "id": "123456789123456789" }, "✅": { "id": "123456789123456789", "giveJoinRole": true } } } ] }, { "channelID": "123456789123456789", "messageArray": [ { "messageID": "123456789123456789", "emojiRoleMap": { "123456789123456789": { "id": "123456789123456789" }, "987654321987654321": { "id": "123456789123456789" } } }, { "messageID": "123456789123456789", "emojiRoleMap": { "123456789123456789": { "id": "123456789123456789" }, "987654321987654321": { "id": "123456789123456789", "giveJoinRole": true } } } ] } ]
Pour pouvoir récupérer les identifiants (ID) sur Discord, il faut activer le mode développeur.
Pour désactiver le système, le fichier doit être composé d'un tableau (array) vide :
[]
Exemple disponible ici :
[ // Réaction sous forme d'émoji unicode ou son ID, texte de raison ["🔨", "Reason 1"], ["🧹", "Reason 2"], ["123456789123456789", "Reason 3"], ["123456789123456789", "Reason 4"] ]
- Pour récupérer les émojis :
- unicode : mettre un
\
avant l'émoji. Exemple : pour:white_check_mark:
, l'émoji unicode est✅
. - personnalisés : mettre un
\
avant l'émoji et récupérer l'ID. Exemple : pour\<:lul:719519281682972703>
, l'ID est719519281682972703
.
- unicode : mettre un