Écrire un bot Discord en Python prend une soirée. Le maintenir en ligne 24h/24 coûte un forfait d'hébergement. Voici le parcours complet : de la création de l'application bot à un bot fonctionnel sur le panel de jeu HostValues.
Étape 1 : créer l'application bot
- Rendez-vous sur le Discord Developer Portal et cliquez sur "New Application".
- Donnez un nom à l'application et cliquez sur "Create".
- Allez dans l'onglet "Bot" et cliquez sur "Reset Token" pour générer un token. Copiez le token et conservez-le en lieu sûr. Vous ne le verrez qu'une seule fois.
- Sous "Privileged Gateway Intents", activez les options suivantes : Presence Intent, Server Members Intent et Message Content Intent.
- Allez dans "OAuth2", sélectionnez sous Scopes "bot" et sous Bot Permissions les droits dont votre bot a besoin (minimum : Send Messages, Read Message History).
- Copiez l'URL générée et ouvrez-la dans votre navigateur pour ajouter le bot à votre serveur.
Étape 2 : le code
Créez un dossier avec deux fichiers :
requirements.txt
discord.py>=2.5 python-dotenv
bot.py
import os
import discord
from discord.ext import commands
from dotenv import load_dotenv
load_dotenv()
bot = commands.Bot(
command_prefix="!",
intents=discord.Intents.all()
)
@bot.event
async def on_ready():
print(f"En ligne en tant que {bot.user}")
@bot.command()
async def ping(ctx):
await ctx.send(f"Pong! Latence: {round(bot.latency * 1000)}ms")
@bot.command()
async def bonjour(ctx):
await ctx.send(f"Salut {ctx.author.display_name}!")
bot.run(os.getenv("DISCORD_TOKEN"))
.env
DISCORD_TOKEN=votre_token_ici
Testez en local : pip install -r requirements.txt, puis python bot.py. Tapez !ping dans votre serveur Discord. Ça fonctionne ? Passons à l'hébergement.
Étape 3 : héberger sur le panel de jeu
- Commandez un forfait bot Discord.
- Uploadez
bot.py,requirements.txtet.envvia l'onglet Files. N'uploadez pas le dossier__pycache__ni un environnement virtuel. - Dans l'onglet Startup, définissez le fichier de démarrage sur
bot.pyet choisissez Python 3.12. - Démarrez le serveur. Le panel installe automatiquement les packages depuis
requirements.txt. - Dans la console apparaît "En ligne en tant que NomDuBot". Votre bot est désormais joignable 24h/24.
Ajouter des slash commands
Les slash commands sont la manière moderne d'interagir avec les bots. Ils apparaissent dans le menu Discord quand vous tapez / :
@bot.tree.command(name="info", description="Affiche les informations du serveur")
async def info(interaction: discord.Interaction):
guild = interaction.guild
await interaction.response.send_message(
f"{guild.name} a {guild.member_count} membres."
)
# Ajoutez à on_ready :
@bot.event
async def on_ready():
await bot.tree.sync()
print(f"En ligne en tant que {bot.user}")
Les trois erreurs que tout le monde commet
- Token dans le code. Mettez le token dans un fichier
.env, pas dansbot.py. Un token qui se retrouve sur GitHub est automatiquement révoqué par Discord. - Intents non activés. Si vous utilisez
discord.Intents.all()mais que vous n'avez pas coché les intents dans le Developer Portal, le bot démarre mais ne réagit à rien. - requirements.txt oublié. Le panel ne peut pas installer de packages si le fichier n'est pas là. En local ça fonctionne parce que vous avez installé manuellement.
De combien de RAM mon bot a-t-il besoin ?
Un bot simple de commandes ou de modération : moins de 256 Mo. Le plus petit forfait de 1 Go est largement suffisant. Un bot musical sur plusieurs serveurs : 2 Go.
Puis-je faire tourner plusieurs bots sur un seul forfait ?
Oui. Utilisez pm2 (npm install -g pm2) pour exécuter plusieurs scripts Python simultanément. Trois petits bots tiennent dans 1 Go.
discord.py ou discord.js ?
Python si vous débutez en programmation : la syntaxe est plus lisible. JavaScript si vous avez déjà de l'expérience web ou si vous voulez construire un tableau de bord. Les deux bibliothèques sont activement maintenues et équivalentes en fonctionnalités.
Consultez les forfaits bot Discord ou le KVM VPS si vous faites tourner un site web ou une base de données en plus du bot.