ACLClouds
ACLClouds

Comment héberger un bot Python ?

Préparer requirements.txt, choisir le fichier principal et installer les dépendances. Évitez de stocker le token directement dans le code.

L’environnement Python utilise un fichier de dépendances et une commande de lancement explicite. Évitez de stocker le token directement dans le code.

Procédure étape par étape

  1. Préparer requirements.txt

    Listez les bibliothèques nécessaires avec des versions compatibles.

  2. Choisir l’environnement Python

    Commandez un bot et sélectionnez l’environnement Python proposé dans le catalogue.

  3. Importer le code

    Envoyez requirements.txt, le dossier source et le fichier principal.

  4. Configurer les secrets

    Créez la variable DISCORD_TOKEN, puis lisez-la avec os.environ.

  5. Démarrer

    Cliquez sur « Démarrer » : la plateforme installe requirements.txt, puis lance python -u bot.py ou le « Fichier principal » défini dans Démarrage.

requirements.txt

discord.py==2.5.2
python-dotenv==1.1.0

Lecture du token

import os
TOKEN = os.environ["DISCORD_TOKEN"]

Fichier bot.py minimal

import os

import discord

intents = discord.Intents.default()
client = discord.Client(intents=intents)


@client.event
async def on_ready():
    print(f"Logged in as {client.user}")


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

Avant de commencer

Choisissez la version de Python la plus proche de celle de votre ordinateur : 3.11, 3.12 ou 3.13. Elle se change ensuite dans l’onglet « Démarrage », carte « Image Docker », et les dépendances sont alors réinstallées.

  • Un requirements.txt à la racine, avec des versions fixées comme discord.py==2.5.2.
  • À défaut, les dépendances de la section [project] de pyproject.toml sont installées.
  • Un fichier principal à la racine, par exemple bot.py ou main.py.
  • Aucun dossier venv ou .venv dans l’envoi : la plateforme installe ses propres paquets.

Comment le bot est lancé

Au démarrage, la plateforme installe les paquets de requirements.txt s’ils ont changé depuis la dernière installation, puis lance le fichier principal avec python -u. L’option -u désactive la mise en mémoire tampon : vos print() apparaissent tout de suite dans la console.

Sans réglage, le fichier lancé est le premier trouvé parmi bot.py, main.py, app.py, run.py et index.py. Pour un autre fichier, renseignez le « Fichier principal » dans « Démarrage ». Un autre nom de fichier de dépendances se règle avec le « Fichier des dépendances ».

Les paquets sont installés en priorité depuis des versions précompilées (wheels). Un paquet sans wheel compatible est compilé depuis ses sources, ce qui prend plus de temps et peut échouer : choisissez alors une version plus récente du paquet.

Vérifier que tout fonctionne

Ajoutez un message dans l’événement on_ready, démarrez le bot et ouvrez la console. La ligne de la commande, par exemple $ python -u bot.py, doit être suivie de votre message de connexion. Si le bot redémarre en boucle, la première erreur Python se trouve juste au-dessus de la ligne qui annonce l’arrêt du processus.

Questions fréquentes

Que faire avec ModuleNotFoundError: No module named 'discord' ?

Le paquet manque dans requirements.txt ou son installation a échoué. Le nom installé diffère du nom importé : le code écrit import discord, mais le paquet s’appelle discord.py. Ajoutez la ligne, puis redémarrez : l’installation reprend au démarrage.

Pourquoi No module named 'audioop' avec Python 3.13 ?

Le module audioop a été retiré de Python 3.13 et les anciennes versions de discord.py l’importent encore. Mettez discord.py à jour dans requirements.txt ou ajoutez le paquet audioop-lts, puis redémarrez.

Que signifie discord.errors.LoginFailure: Improper token has been passed. ?

Discord refuse le token reçu. Vérifiez que la variable s’appelle exactement DISCORD_TOKEN dans « Démarrage » et qu’elle contient le token de l’onglet « Bot », pas le secret client. Si le token a pu circuler, régénérez-le avec « Reset Token », enregistrez la nouvelle valeur et redémarrez.

Le bot s’arrête avec PrivilegedIntentsRequired, que faire ?

Le code active message_content, members ou presences alors que l’intent n’est pas autorisé pour l’application. Activez-le dans le portail Discord, onglet « Bot », section « Privileged Gateway Intents », puis redémarrez le bot.