Voici l'exemple d'un bot Discord en Python permettant de créer simplement des commandes qui renvoient du texte :
Prérequis :
- Installer Python : vous pouvez utiliser un hébergement Python chez By-Hoster pour un tarif très accessible qui tournera parfaitement
- Créer un environnement virtuel (si vous utilisez un hébergement Python chez nous, tout cela est déjà fait), si vous utilisez autre chose tel que votre PC, faites ces commandes dans votre Terminal (sur Windows) :
- Créez un répertoire pour le bot
- Ouvrez un terminal dans ce répertoire
- Exécutez ces commandes :
python -m venv .env
.env\Scripts\activate.bat
cd .env
- Créez votre application et votre bot, veuillez vous assurer de lui attribuer les intents sur le portail Développeur de Discord. Ainsi, remplacez "BOT_TOKEN" par le token donné par Discord de votre bot, et "ID_GUILD" par l'identifiant de votre serveur Discord (Clic droit sur l'icône du serveur, "Copier l'identifiant du serveur" et il faut que vous ayez activer le mode "Développeur" dans les paramètres de votre compte Discord.
- Installer les dépendances :
- Exécutez cette commande à l'aide du Terminal dans le répertoire .env de votre environnement Python afin d'installer le module discord :
pip install -U discord.py
- Chez By-Hoster, créez un fichier nommé requirements.txt dans le répertoire base
/home/container
et insérez le contenu suivant :
discord
Votre environnement est officiellement prêt ! Importez ces 2 fichiers dans l'environnement de votre bot, n'oubliez pas de remplacez les valeurs "BOT_TOKEN" et "ID_GUILD".
📂Version ZIP du bot
import discord
from discord import app_commands
import json
# Variables
TOKEN = "BOT_TOKEN" # Token du bot
GUILD_ID = "ID_GUILD" # ID du serveur Discord
# Charger les commandes depuis le fichier commands.json
def load_commands():
with open('commands.json', 'r', encoding='utf-8') as file:
return json.load(file)
# Initialiser le bot
intents = discord.Intents.default()
client = discord.Client(intents=intents)
tree = app_commands.CommandTree(client)
commands_data = load_commands()
# Définir les commandes à partir du fichier commands.json
async def define_commands():
for command, data in commands_data.items():
async def make_command(text):
async def handle_command(interaction):
await interaction.response.send_message(text)
return handle_command
async def create_and_handle_command():
command_function = await make_command(data['text'])
return command_function
async def setup_command():
command_function = await create_and_handle_command()
@tree.command(
name=command,
description=data['description'],
guild=discord.Object(id=GUILD_ID)
)
async def wrapped_handle_command(interaction):
await command_function(interaction)
await setup_command()
# Synchroniser les commandes avec Discord une fois que le client est prêt
@client.event
async def on_ready():
await define_commands()
await tree.sync(guild=discord.Object(id=GUILD_ID))
print("Prêt à l'emploi !")
# Lancer le client
client.run(TOKEN)
{
"command1": {
"description": "Affiche un message avec du texte en gras, en italique et un saut de ligne.",
"text": "**Gras** *Italique* __Souligné__ ||Caché|| ``code`` :thumbsup: \nSaut de ligne = ``/n``"
},
"command2": {
"description": "Affiche un message avec un lien cliquable et du code.",
"text": "Voici [un lien cliquable vers By-Hoster](https://by-hoster.net) \n\nVoici du code :\n ```py\nprint(\"J'adore By-Hoster 🚀\")\n```"
},
"command3": {
"description": "Affiche un message avec une liste numérotée.",
"text": "Voici une liste : \n- Item 1\n- Item 2\n- Item 3"
}
}
Et voila ! Vous pouvez personnaliser les commandes dans le fichier JSON correspondant. Si vous avez le moindre souci ou une question, n'hésitez pas à me répondre. En espérant que cette ressource vous aura été utile 🙂!
C'était
Tom V. | By-Hoster
sur By'Forum !