Bases des bots Discord

Sur cette page tu trouveras :

Créer la base d’un bot Discord

 

Pour créer un bot Discord en Python, on commence quasiment toujours avec la même base que tu vas pouvoir découvrir ici.

Cette base peut être découpée en plusieurs étapes :

  • ajouter les imports nécessaires
  • créer le bot
  • lancer le bot

Ajout les imports

Tu peux ajouter les imports ci-contre à ton projet.

  • discord est nécessaire pour avoir accès aux fonctions générales de Discord.py
  • commands est nécessaire pour pouvoir créer des commandes
  • os : pense à ajouter également cet import si tu comptes utiliser une variable d’environnement pour sauvegarder ton token.

Créer le bot

On ajoute les intents : ces derniers nous permettent de pouvoir utiliser des fonctionnalités spécifiques.

  • message_content permet d’avoir accès au contenu des messages postés sur le serveur
  • members permet d’avoir accès aux fonctions liées au membres (par exemple, ajouter / supprimer un rôle à un membre du serveur)

Puis on écrit la ligne bot = commands.Bot(…) qui crée le bot et le stocke dans une variable que l’on appelle « bot ».

  • Dans cet exemple le préfixe « ! » sera utilisé pour les commandes. Ainsi, lorsque l’on voudra appeler une commande dans discord, on la précédera par un « !« 
  • On précise également que les intents à utiliser sont ceux que l’on a créés juste au-dessus avec intents = intents .

Lancer le bot

Pour lancer le bot, rien de compliqué : on utilise simplement la commande bot.run(…). Il faudra simplement penser à mettre le token que tu as pu récupérer depuis le portail développeur Discord !

Cette ligne doit toujours être la dernière ligne de ton code.

Note : tu peux aussi utiliser une variable d’environnement pour que ton token ne soit pas visible, comme dans la 2e option ci-contre.

Cas spécifique : Google Colab

Si jamais pour une raison x ou y tu dois utiliser Google Colab plutôt que Replit, pense à importer les librairies nécessaires en exécutant la ligne ci-contre dans un bloc de code indépendant.

Tu devras aussi importer nest_asyncio et ajouter la ligne nest_asyncio.apply() – en général juste avant la ligne bot.run(…) !

Écrire sa première commande

Une commande n’est rien d’autre qu’une fonction précédée du décorateur @bot.command(). On peut donc commencer par écrire @bot.command()

La commande prend par défaut le nom de la fonction qui lui est associé (ici, « bonjour »).

Si je veux lui donner un autre nom, je précise le nom entre les parenthèses, comme sur l’exemple ci-contre.
Ma commande s’appelle maintenant « coucou » et je pourrai donc l’appeler en écrivant !coucou

On note le mot-clé « async » qui est nécessaire pour préciser que la fonction est asynchrone – c’est-à-dire qu’elle ne s’exécute pas instantanément, mais peut prendre un peu de temps !

Toutes les commandes doivent avoir ce mot-clé. C’est ce qui permet d’utiliser des instructions qui commencent par await

À gauche, un exemple d’instruction que je peux mettre pour ma commande !

  • le await est nécessaire avant d’utiliser un send()
  • ctx.send() permet d’envoyer un message dans le salon donné par le Context (ctx) – autrement dit, le message sera envoyé dans le même salon que celui où la commande a été écrite.
  • on peut donc voici ici que lorsque j’écrirai !coucou, le bot affichera « Salut, ça va ?« 

Rappel : toutes tes commandes doivent être écrites avant la ligne bot.run(…)

Paramètres de commande

Ajouter un paramètre

Pour ajouter un paramètre à ma commande, j’ajoute simplement un argument à ma fonction, comme dans l’exemple ci-contre.

Dans cet exemple, si j’écris !choisir chocolat, le bot me répondra « J’adore le chocolat ! »

On peut continuer à ajouter des arguments pour avoir davantage de paramètres, comme dans l’exemple ci-contre.

Si j’écris !pizza tomate poivrons parmesan, le bot affichera « Voici une pizza base tomate avec poivrons et parmesan« 

Pour avoir un nombre indéfini de paramètres, je peux utiliser *args .

Dans l’exemple ci-contre si j’écris !addition 15 6 4 23 le bot me répondra « Le résultat est 48 »

Retour en haut