Bot Discord

Comment héberger son bot Discord Python (discord.py) ?

Hébergez votre bot discord.py chez Winheberg, token sur le portail Discord, environnement Python, requirements.txt, fichier .env, version de Python et erreurs courantes.

2 novembre 2026 Winheberg
Documentation›Bot Discord›Comment héberger son bot Discord Python (discord.py) ?

Contexte

Un bot Discord ne répond que tant que son programme tourne. Lancé depuis votre ordinateur, il se déconnecte dès que vous l'éteignez ou que votre connexion tombe. L'hébergement de bot Discord Winheberg fait tourner votre bot sur un serveur prévu pour cet usage. Vous le pilotez depuis le panel, avec la console en direct, le gestionnaire de fichiers et le choix de la version de Python.

Ce guide prend l'exemple d'un bot écrit en Python avec la bibliothèque discord.py. Vous allez d'abord créer le bot sur le portail des développeurs de Discord et l'inviter sur votre serveur Discord. Sur le panel, vous allez ensuite passer le service en environnement Python si besoin, envoyer le code du bot avec son token rangé dans un fichier .env et choisir la version de Python, puis démarrer le bot et vérifier dans la console qu'il est bien connecté.

Votre bot est écrit en JavaScript ? Consultez plutôt notre guide « Comment héberger son bot Discord Node.js (discord.js) ? ».

Prérequis

  • Un service Bot Discord actif chez Winheberg, accessible depuis le panel https://panel.winheberg.com/
  • Un compte Discord et un serveur Discord sur lequel vous avez la permission Gérer le serveur
  • Le code de votre bot avec son fichier requirements.txt, ou l'exemple fourni dans ce guide

1. Créer l'application et récupérer le token

Rendez-vous sur le portail des développeurs de Discord, https://discord.com/developers/applications, et connectez-vous avec votre compte Discord. Cliquez sur New Application, donnez un nom à votre bot puis validez avec Create.

Ouvrez ensuite la page Bot de l'application. Dans la partie Token, cliquez sur Reset Token et confirmez. Discord affiche alors le token de votre bot. Copiez-le tout de suite, car il n'est plus visible une fois la page quittée, et vous devrez alors en générer un nouveau.

Le token donne le contrôle complet de votre bot. Toute personne qui le possède peut contrôler votre bot comme si c'était le sien. Ne le publiez jamais, ni dans une capture, ni dans un message, ni dans un dépôt Git. S'il a fuité, cliquez sur Reset Token pour l'invalider et reportez le nouveau dans votre fichier .env.

Activer les intents privilégiés si votre bot en a besoin

Toujours sur la page Bot, la section Privileged Gateway Intents regroupe trois accès que Discord ne donne pas par défaut. Le bot d'exemple de ce guide utilise discord.Intents.default(), qui n'en active aucun. Si vous le reprenez tel quel, passez directement à l'étape 2.

Intent dans discord.py Ce qu'il permet
intents.message_content Lire le contenu des messages, par exemple pour des commandes à préfixe comme !ping
intents.members Recevoir la liste et les mouvements des membres du serveur
intents.presences Voir le statut et l'activité des membres

Activez dans le portail uniquement ceux que votre code passe à True. Tant que votre application compte moins de 10 000 utilisateurs, l'interrupteur du portail suffit.

2. Inviter le bot sur votre serveur Discord

Dans le portail, ouvrez la page Installation de votre application. Cochez Guild Install sous Installation Contexts, puis choisissez Discord Provided Link sous Install Link.

Dans Default Install Settings, ajoutez à Guild Install les scopes applications.commands et bot. Le menu Permissions apparaît alors. Sélectionnez-y les permissions dont votre bot a besoin, par exemple Send Messages et View Channels.

Copiez le lien d'installation affiché sur la page, ouvrez-le dans votre navigateur, choisissez votre serveur Discord et validez. Le bot apparaît dans la liste des membres, hors ligne tant que son programme ne tourne pas.

Le générateur de lien de la page OAuth2, section OAuth2 URL Generator, fonctionne aussi. Cochez les mêmes scopes bot et applications.commands, puis copiez l'URL générée en bas de page.

3. Passer le service en environnement Python

Connectez-vous au panel Winheberg et sélectionnez votre service Bot Discord. Dans le menu latéral, cliquez sur Software Changer. La page liste les environnements disponibles. L'environnement actif affiche un bouton REINSTALL au lieu de INSTALL.

Faites une sauvegarde avant de changer d'environnement, surtout si le serveur contient déjà des fichiers auxquels vous tenez.

Si python generic n'est pas l'environnement actif, cliquez sur son bouton INSTALL puis confirmez avec Yes.

Software Changer avec l'environnement python generic actif et son bouton REINSTALL

4. Préparer les fichiers du bot

Un bot discord.py minimal tient en trois fichiers, tous placés à la racine du serveur.

Fichier Rôle
requirements.txt Liste les bibliothèques dont le bot a besoin
app.py Le code du bot, lancé au démarrage
.env Le token, gardé à part du code

Le fichier requirements.txt déclare discord.py et python-dotenv, la bibliothèque qui lit le fichier .env.

discord.py>=2.7
python-dotenv>=1.2

Le fichier app.py charge le token, connecte le bot et écrit une ligne dans la console une fois la connexion établie.

import os

import discord
from dotenv import load_dotenv

load_dotenv()

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


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


client.run(os.getenv("DISCORD_TOKEN"))

Le fichier .env contient une seule ligne, avec le token copié à l'étape 1 à la place du texte d'exemple.

DISCORD_TOKEN=COLLEZ_ICI_LE_TOKEN_DE_VOTRE_BOT

N'envoyez pas d'environnement virtuel ni de dossier de bibliothèques. À chaque démarrage, le serveur lance pip install -U sur le fichier requirements.txt et installe lui-même les bibliothèques listées, ou les met à jour.

5. Envoyer les fichiers sur le serveur

Dans le menu latéral, cliquez sur Files. Le bouton Upload permet d'envoyer vos fichiers depuis votre ordinateur. Déposez-les à la racine, c'est-à-dire directement dans le dossier affiché par Files, pas dans un sous-dossier.

Vous pouvez aussi créer chaque fichier sur le serveur. Cliquez sur New file, collez le contenu dans l'éditeur, cliquez sur Create File puis nommez le fichier, requirements.txt dans l'exemple ci-dessous. Procédez de la même façon pour app.py et .env.

Fichier requirements.txt avec discord.py et python-dotenv et le bouton Create File

Les trois fichiers apparaissent ensuite dans le gestionnaire de fichiers.

Fichiers .env, app.py et requirements.txt dans le gestionnaire de fichiers du panel

Pour un projet volumineux ou de nombreux fichiers, passez par le SFTP. Notre guide « Comment se connecter en SFTP à son serveur gaming ? » détaille la connexion avec FileZilla ou WinSCP, elle fonctionne de la même manière pour un service Bot Discord.

6. Choisir la version de Python et le fichier principal

Dans le menu latéral, cliquez sur Startup. Le menu Docker Image fixe la version de Python utilisée par le bot. Il propose Python 2.7 ainsi que les versions 3.7 à 3.13.

Page Startup avec la commande de démarrage Python et le menu Docker Image sur Python 3.13

La bibliothèque discord.py 2.7 demande Python 3.8 ou une version plus récente, et python-dotenv 1.2 exige Python 3.10 ou une version plus récente. Pour le bot d'exemple, choisissez donc une image à partir de Python 3.10.

Plus bas, la section Variables contient les réglages du démarrage.

Variables Startup APP PY FILE, ADDITIONAL PYTHON PACKAGES et REQUIREMENTS FILE
Variable Rôle
APP PY FILE Le fichier lancé au démarrage, app.py par défaut
REQUIREMENTS FILE Le fichier qui liste les bibliothèques installées à chaque démarrage, requirements.txt par défaut
ADDITIONAL PYTHON PACKAGES Bibliothèques supplémentaires installées à chaque démarrage, séparées par des espaces

Si le point d'entrée de votre bot porte un autre nom, bot.py ou main.py par exemple, indiquez-le dans APP PY FILE. Le panel enregistre la valeur dès que vous la saisissez.

Juste après un passage par Software Changer, les champs APP PY FILE et REQUIREMENTS FILE peuvent n'afficher qu'un texte d'exemple grisé. Saisissez les valeurs vous-même, app.py et requirements.txt pour le bot d'exemple.

7. Démarrer le bot et vérifier la console

Dans le menu latéral, cliquez sur Console puis sur Start. Le serveur affiche la version de Python, installe les bibliothèques du requirements.txt puis lance app.py.

Python 3.13.18
Collecting discord.py>=2.7 (from -r requirements.txt (line 1))
Collecting python-dotenv>=1.2 (from -r requirements.txt (line 2))
Successfully installed aiohappyeyeballs-2.7.1 aiohttp-3.14.5 aiosignal-1.4.0 attrs-26.1.0 audioop-lts-0.2.2 discord.py-2.7.1 frozenlist-1.8.0 idna-3.20 multidict-7.2.1 propcache-0.5.4 python-dotenv-1.2.4 yarl-1.25.1
2026-11-02 19:29:33 INFO     discord.client logging in using static token

Une fois la connexion à Discord établie, le bot d'exemple écrit la ligne suivante, avec le nom de votre bot. Il passe alors en ligne dans la liste des membres de votre serveur Discord.

Ready! Logged in as MonBot#1234

Aux démarrages suivants, pip répond Requirement already satisfied pour chaque bibliothèque déjà à jour, ce qui accélère le lancement.

En cas de problème

❌ discord.errors.LoginFailure: Improper token has been passed.

Console du panel affichant l'erreur discord.errors.LoginFailure Improper token has been passed
  • Vérifiez que le fichier s'appelle exactement .env et qu'il se trouve à la racine, à côté de app.py
  • Vérifiez que le nom de la variable est identique dans .env et dans le code, DISCORD_TOKEN dans l'exemple
  • Recopiez le token en entier, sans espace avant ou après
  • Si vous avez cliqué sur Reset Token entre-temps, reportez le nouveau token dans .env, l'ancien ne fonctionne plus

❌ can't open file '/home/container/bot.py': [Errno 2] No such file or directory

Console du panel affichant can't open file bot.py No such file or directory
  • La valeur de APP PY FILE ne correspond à aucun fichier présent à la racine du serveur
  • Ouvrez Files et vérifiez le nom exact de votre fichier principal, majuscules comprises
  • Reportez ce nom dans APP PY FILE sur la page Startup, puis redémarrez

❌ ModuleNotFoundError: No module named 'discord'

  • Vérifiez que requirements.txt se trouve à la racine et que son nom correspond à la variable REQUIREMENTS FILE
  • Vérifiez qu'il contient bien la ligne discord.py, car le code importe le module discord alors que la bibliothèque à installer s'appelle discord.py
  • Remontez dans la console jusqu'aux lignes de pip pour repérer une éventuelle erreur d'installation, puis redémarrez

❌ discord.errors.PrivilegedIntentsRequired

Le message complet commence par Shard ID None is requesting privileged intents that have not been explicitly enabled in the developer portal.

  • Votre code demande un intent privilégié, message_content, members ou presences, qui n'est pas activé sur la page Bot du portail des développeurs
  • Activez l'intent correspondant dans Privileged Gateway Intents
  • Ou retirez de votre code l'intent dont le bot n'a pas besoin, puis redémarrez

❌ Les commandes à préfixe ne répondent pas

Si votre bot utilise commands.Bot, la console affiche l'avertissement suivant.

Privileged message content intent is missing, commands may not work as expected.
  • Ajoutez la ligne intents.message_content = True dans votre code avant de créer le bot
  • Activez l'intent de contenu des messages dans la section Privileged Gateway Intents du portail, puis redémarrez

Bonnes pratiques

Besoin d'aide ?

Si votre bot refuse de démarrer ou ne se connecte pas à Discord malgré ces vérifications, notre équipe est là pour vous aider. Ouvrez un ticket dans le département Technique depuis votre espace client, renseignez le champ Produit lié avec votre service Bot Discord et indiquez le message d'erreur affiché dans la console, sans jamais y joindre le token.

Votre bot Discord tourne désormais sur Winheberg 🤖

Besoin d'un serveur Bot Discord ?

Découvrez nos offres adaptées à vos besoins et lancez-vous dès maintenant.

Voir les offres