Héberger un bot Discord Python

2 min de lecture07 novembre 2026

Un bot Discord Python utilise discord.py et une connexion persistante à la passerelle. Il n'expose pas de port HTTP, mais il doit rester connecté, gérer la reconnexion et protéger son jeton. Sur l'hébergement d'applications, le processus est relancé par la plateforme en cas d'arrêt : la stabilité vient donc du code et de la configuration des intents.

Bot minimal

Python
import os
import logging
import discord
from discord.ext import commands

logging.basicConfig(level=logging.INFO)

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

bot = commands.Bot(command_prefix="!", intents=intents)

@bot.event
async def on_ready():
    print(f"connecté en tant que {bot.user}")

@bot.command()
async def ping(ctx):
    await ctx.send("pong")

bot.run(os.environ["DISCORD_TOKEN"])

bot.run bloque et maintient la connexion. Le jeton vient d'une variable d'environnement, jamais du fichier. message_content est un intent privilégié : activez-le dans le portail développeur, sinon la connexion est refusée avec PrivilegedIntentsRequired.

Intents et commandes

Demandez seulement ce dont vous avez besoin. Intents.default() couvre les guildes et les messages, mais pas les membres. Activez members uniquement si vous devez les parcourir. Pour les commandes slash, synchronisez-les une fois et évitez de le refaire à chaque redémarrage.

Python
@bot.tree.command(name="ping", description="Répond pong")
async def ping_slash(interaction: discord.Interaction):
    await interaction.response.send_message("pong")

La synchronisation des commandes dépend de la guilde ou du global ; un excès d'appels peut atteindre les limites de l'API.

Stabilité et mémoire

  • Les caches de membres et de messages peuvent grossir ; n'activez pas members sans nécessité.
  • Ne bloquez pas la boucle avec du code synchrone long : utilisez asyncio.to_thread pour les appels bloquants.
  • Les exceptions dans un événement ne doivent pas tuer le bot : journalisez et continuez.
  • discord.py gère la reconnexion, mais une boucle de reconnexion rapide signale souvent un jeton invalide ou un intent refusé.
  • Surveillez la RAM : une offre à 512 Mo suffit pour un petit serveur, pas pour des milliers de membres avec caches.

Sécurité

Le jeton donne le contrôle du bot. En cas de fuite, réinitialisez-le immédiatement dans le portail développeur et redémarrez le service avec la nouvelle valeur. Ne le journalisez jamais, même en cas d'erreur de connexion. Limitez les permissions du bot sur le serveur et vérifiez les droits avant une action sensible (bannissement, suppression de messages).

Vérifier

Le journal affiche connecté en tant que ..., le bot apparaît en ligne et une commande répond. Laissez tourner trente minutes et vérifiez que la mémoire ne croît pas continuellement. Si le bot se déconnecte en boucle, comparez l'horodatage des erreurs avec un changement récent de jeton ou d'intents.

Publicité

Cet article vous a-t-il aidé ?

À lire aussi