Ressources Magic Makers

 

Site en maintenance

 
Nous sommes actuellement entrain de mettre à jour les ressources de ce site.
Pendant la mise à jour vous pouvez retrouver tous les nouveaux contenus sur le site
 

https://lp-magicmakers.fr/

 
 

Base des bots discord.

Création d'un bot discord

Nous allons utiliser certaines librairies qu’il va falloir importer :

 

# Les imports nécessaires pour un bot discord

import discord

#import pour l’exécution de fonction asynchrone sur colab

import nest_asyncio

#import pour créer des commandes avec préfixe.

from discord.ext import commands

 

Attention, pensez à installer ces librairies sur Colab :

 !pip install -U discord.py nest_asyncio datetime

 

On programme les intentions privilégiées nécessaires pour que notre bot puisse accéder à la liste des membres et au contenu des messages

intents = discord.Intents.default()
intents.members = True
intents.message_content = True 

 

Et l’on créé notre bot discord grâce à la fonction commands.Bot():

On va le stocker dans la variable bot.

– Ici le préfixe point d’exclamation sera utilisé pour les commandes, lorsque l’on voudra appeler une commande dans discord, on la précédera du préfixe « ! »

– Et on lie les intents

# On crée le bot grâce à la fonction commands.Bot()
# On va spécifier en paramètre, le préfixe de la commande, 

# et lier les intents
bot = commands.Bot(command_prefix = ‘!’, intents = intents )

 

Ensuite on va créer l’évènement qui va lire tous les messages écrits dans le tchat :

@bot.event

async def on_message(message):

# Cette ligne est nécessaire pour que les commandes fonctionnent.

  await bot.process_commands(message)

Enfin nous allons lancer notre bot grâce à la fonction bot.run() en lui mettant le token récupéré précédemment en argument (entre les parenthèses).

nest_asyncio.apply() permet juste de lancer un bot discord sur collab ce qui n’est pas possible autrement.

# On lance notre bot, en précisant dans la fonction bot.run() notre token que l'on à récupéré sur le site de discord developer.
nest_asyncio.apply()
bot.run("Token du Bot à mettre ICI")

Pour éviter d’avoir le TOKEN visible aux yeux de tous, on peut utiliser une variable d’environnement dans Repl.it. Voici un lien vers un petit tuto d’utilisation

Les commandes

Pour créer une commande, il faut d’abord la ligne permettant de nommer la commande.

Ici il faudra taper ;Coucou dans le tchat.

Attention le nom de la commande est sensible à la casse. (Majuscule minuscule)

@bot.command(name="Coucou")

Ici Salutation est le nom de la fonction qui est appelée par la commande Coucou : vous pouvez le choisir à votre convenance.

@bot.command(name="Coucou")
async def Salutation(message):
  await message.channel.send("coucou")

Quelques outils utiles

context

Le context est ce que l’on reçoit dans la fonction Salutation lorsque la commande est appelée. Il contient de nombreuses informations que l’on peut récupérer.

On peut retrouver toutes ces informations sur la documentation officielle du context.

async def Salutation(context):

 destination = message.channel

 await destination.send("coucou")

Le context contient le channel dans lequel a été envoyée la commande, que l’on récupère avec le code suivant :

Ici, la fonction enverra donc coucou dans le channel d’origine de la commande.

async def Salutation(context):
 destination= context.channel
 await destination.send("coucou")

Le context contient également l’auteur de la commande, que l’on récupère avec le code suivant :

Ici la fonction enverra donc coucou à l’auteur de la commande, et donc dans ces messages privés.

async def Salutation(context):
 destination= context.author
 await destination.send("coucou")

Author

Le author est un objet de type User.

Documentation officielle des User.

Il s’agit de l’utilisateur qui a utilisé la fonction ou écrit le message ayant déclenché le code dans le channel.

On peut le récupérer en écrivant context.author

Dans le code exemple, on le récupère pour lui envoyer un mp.

async def Salutation(context):
 author = message.author

 await author.send("coucou")

L’ author contient par exemple l’ID de la personne.

L’ID d’un utilisateur est un nombre unique propre à chaque utilisateur de discord.

Ici le code d’une fonction qui envois un message privé à l’author pour lui renvoyer son ID.

async def get_author_ID(author):

  id = context.author.id

  await context.author.send("Ton id est " + str(id))

L’author contient également le nom de l’utilisateur, que l’on récupère avec le code suivant :

Ici, la fonction enverra donc coucou suivi de son pseudo à l’auteur de la commande, et donc dans ces messages privés.

async def Salutation(context):
 author_name = context.author.name
 await context.author.send("coucou " + author_name)