Comment Héberger un Bot Discord (Python) sur OuiPanel
Temps estimé : 15 minutes
Difficulté : Intermédiaire ⭐⭐
Type de serveur : Python
📋 Introduction
Ce guide vous explique comment héberger un bot Discord développé avec discord.py (Python) sur OuiPanel. Votre bot sera en ligne 24h/24, 7j/7.
Ce dont vous avez besoin
| Prérequis | Description |
|---|---|
| 🤖 Un bot Discord | Créé sur le Portail Développeur Discord |
| 🔑 Le token du bot | Clé secrète pour connecter votre bot |
| 📁 Les fichiers du bot | Votre code source (bot.py, requirements.txt, etc.) |
| 🐍 Un serveur Python | Commandé sur OuiHeberg |
🤖 Étape 1 : Créer le Bot sur Discord
Si vous avez déjà votre bot et son token, passez à l'étape 2.
Créer l'application
- Rendez-vous sur le Portail Développeur Discord
- Connectez-vous avec votre compte Discord
- Cliquez sur New Application

- Donnez un nom à votre application (ex: "Mon Bot Python")
- Acceptez les conditions d'utilisation
- Cliquez sur Create

Récupérer le Token
Le token est la clé secrète qui permet à votre code de se connecter au bot.
- Dans la section Bot, trouvez la zone TOKEN
- Cliquez sur Reset Token
- Confirmez en cliquant sur Yes, do it!
- Cliquez sur Copy pour copier le token

⚠️ IMPORTANT - SÉCURITÉ :
- Le token est comme un mot de passe. Ne le partagez JAMAIS !
- Ne le mettez jamais dans du code public (GitHub, GitLab, etc.)
- Si votre token est compromis, régénérez-le immédiatement
- Gardez-le dans un endroit sûr pour l'étape suivante
Activer les Intents
Les Intents permettent à votre bot d'accéder à certaines informations (messages, membres, etc.).
- Toujours dans la section Bot, descendez jusqu'à Privileged Gateway Intents
- Activez les intents nécessaires :
| Intent | Description | Recommandation |
|---|---|---|
PRESENCE INTENT | Voir le statut des membres | Optionnel |
SERVER MEMBERS INTENT | Accéder à la liste des membres | Optionnel |
MESSAGE CONTENT INTENT | Lire le contenu des messages | ✅ Requis |

- Cliquez sur Save Changes
⚠️ Important : Sans
MESSAGE CONTENT INTENT, votre bot ne pourra pas lire le contenu des messages des utilisateurs.
Inviter le Bot sur votre Serveur Discord
- Dans le menu de gauche, cliquez sur OAuth2
- Cliquez sur URL Generator

- Dans la section SCOPES, cochez :
- ✅
bot
- ✅
- Dans la section BOT PERMISSIONS, cochez les permissions nécessaires :
| Permission | Description |
|---|---|
Administrator | Toutes les permissions (simple mais large) |
| OU permissions spécifiques : | |
Send Messages | Envoyer des messages |
Read Message History | Lire l'historique |
Embed Links | Envoyer des embeds |
Attach Files | Envoyer des fichiers |
Use Slash Commands | Utiliser les commandes slash |

- En bas de la page, copiez l'URL générée

- Ouvrez cette URL dans votre navigateur
- Sélectionnez le serveur où inviter le bot
- Cliquez sur Autoriser
- Complétez le captcha si demandé

✅ Votre bot apparaît maintenant dans la liste des membres de votre serveur (hors ligne pour l'instant).
📁 Étape 2 : Préparer les Fichiers du Bot
Structure des fichiers
Votre bot doit avoir cette structure :
📁 MonBotPython/
├── 📄 bot.py ← Fichier principal (ou main.py, index.py...)
├── 📄 requirements.txt ← Dépendances Python
├── 📄 .env ← Token du bot (créé sur le serveur)
└── 📁 cogs/ ← (Optionnel) Dossier des modules
Fichier requirements.txt
Créez un fichier requirements.txt avec les dépendances discord.py et python-dotenv :
audioop-lts==0.2.1
discord.py==2.3.2
python-dotenv==1.0.0
💡 Ces deux packages sont essentiels :
discord.py: La bibliothèque pour interagir avec Discordpython-dotenv: Pour charger le token depuis le fichier.env
Fichier principal (bot.py)
Créez votre fichier principal avec python-dotenv pour charger le token :
import os
import discord
from discord.ext import commands
from dotenv import load_dotenv
# Charger les variables d'environnement depuis .env
load_dotenv()
# Configuration des intents
intents = discord.Intents.default()
intents.message_content = True
# Création du bot avec un prefix
bot = commands.Bot(command_prefix='!', intents=intents)
# Événement : Bot prêt
@bot.event
async def on_ready():
print(f'✅ Bot connecté en tant que {bot.user.name}')
print(f'📊 Connecté à {len(bot.guilds)} serveur(s)')
# Commande : !ping
@bot.command()
async def ping(ctx):
"""Répond Pong avec la latence"""
latence = round(bot.latency * 1000)
await ctx.send(f'🏓 Pong ! Latence : {latence}ms')
# Commande : !hello
@bot.command()
async def hello(ctx):
"""Dit bonjour"""
await ctx.send(f'👋 Bonjour {ctx.author.name} !')
# Gestion des erreurs
@bot.event
async def on_command_error(ctx, error):
if isinstance(error, commands.CommandNotFound):
await ctx.send('❌ Commande inconnue.')
else:
print(f'Erreur : {error}')
# Connexion avec le token depuis .env
bot.run(os.getenv('DISCORD_TOKEN'))
⚠️ Important :
load_dotenv()doit être appelé avant d'utiliseros.getenv().
📤 Étape 3 : Uploader les Fichiers sur OuiPanel
Via le Gestionnaire de Fichiers
- Connectez-vous à OuiPanel
- Sélectionnez votre serveur Python
- Dans le menu latéral, cliquez sur Gestionnaire de fichiers

- Supprimez les fichiers par défaut (s'il y en a)
- Cliquez sur Envoyer (Upload)
- Uploadez vos fichiers :
bot.py(oumain.py,index.py...)requirements.txt- Vos dossiers (
cogs/...) si nécessaire

⚠️ Ne pas uploader : Le fichier
.envsera créé directement sur le serveur à l'étape suivante (plus sécurisé).
Via SFTP (Recommandé pour plusieurs fichiers)
- Connectez-vous en SFTP avec FileZilla
- Glissez-déposez tout le contenu de votre dossier bot
- Vérifiez que tous les fichiers sont bien uploadés
📖 Consultez le guide "Accès SFTP avec FileZilla" pour les instructions détaillées.
🔑 Étape 4 : Créer le Fichier .env (Token)
Ne mettez jamais votre token directement dans le code ! Créez un fichier .env sur le serveur.
Créer le fichier .env
- Dans le Gestionnaire de fichiers, cliquez sur Nouveau fichier
- Nommez-le
.env(avec le point devant) - Ajoutez le contenu suivant :
# Token du bot Discord
DISCORD_TOKEN=votre_token_ici

- Remplacez
votre_token_icipar le token copié à l'Étape 1 - Cliquez sur Créer ou Enregistrer
Exemple avec un vrai token (format) :
DISCORD_TOKEN=MTIzNDU2Nzg5MDEyMzQ1Njc4OQ.ABcdEF.abcdefghijklmnopqrstuvwxyz123456
Exemple avec plusieurs variables :
# Token du bot Discord
DISCORD_TOKEN=MTIzNDU2Nzg5MDEyMzQ1Njc4OQ.ABcdEF.abcdefghijklmnopqrstuvwxyz123456
# Prefix des commandes
PREFIX=!
# ID du propriétaire (optionnel)
OWNER_ID=123456789012345678
⚠️ Important :
- Pas d'espaces autour du
=- Pas de guillemets autour des valeurs
- Ne partagez jamais ce fichier
Structure finale sur le serveur
📁 Racine du serveur/
├── 📄 .env ← Contient DISCORD_TOKEN
├── 📄 bot.py ← Votre code
├── 📄 requirements.txt ← Dépendances
└── ...
⚙️ Étape 5 : Configurer le Fichier de Démarrage
OuiPanel doit savoir quel fichier Python exécuter au démarrage.
Accéder aux paramètres
- Dans le menu latéral, cliquez sur Configuration
- Cliquez sur Paramètres du serveur

Configurer le fichier à exécuter
Repérez le champ Fichier à exécuter (ou Main File / Startup File) :

| Votre fichier principal | Valeur à mettre |
|---|---|
bot.py | bot.py |
main.py | main.py |
index.py | index.py |
app.py | app.py |
src/bot.py | src/bot.py |
⚠️ Important : Le nom doit correspondre exactement à votre fichier (sensible à la casse).
🚀 Étape 6 : Démarrer le Bot
Lancer le serveur
- Dans le menu latéral, cliquez sur Console
- Cliquez sur Démarrer
Installation automatique des dépendances
Au premier démarrage, le serveur installe automatiquement les packages depuis requirements.txt :
Installing requirements from requirements.txt...
Collecting discord.py==2.3.2
Collecting python-dotenv==1.0.0
Successfully installed discord.py-2.3.2 python-dotenv-1.0.0
Running bot.py...
✅ Bot connecté en tant que MonBot
📊 Connecté à 1 serveur(s)

✅ Étape 7 : Vérifier que le Bot Fonctionne
Dans la Console OuiPanel
Vous devriez voir :
✅ Bot connecté en tant que MonBot
📊 Connecté à 1 serveur(s)
Sur Discord
- Ouvrez Discord
- Allez sur le serveur où vous avez invité le bot
- Votre bot devrait apparaître en ligne (point vert)
- Testez une commande :
!ping - Le bot répond : 🏓 Pong ! Latence : XXms

🔧 Dépannage
Le bot ne démarre pas
| ❌ Erreur | ✅ Solution |
|---|---|
ModuleNotFoundError: No module named 'discord' | Vérifiez requirements.txt et redémarrez |
ModuleNotFoundError: No module named 'dotenv' | Ajoutez python-dotenv dans requirements.txt |
FileNotFoundError: bot.py | Mauvais fichier de démarrage configuré |
SyntaxError | Erreur dans votre code Python |
Erreur de Token
| ❌ Erreur | ✅ Solution |
|---|---|
LoginFailure: Improper token has been passed | Vérifiez le token dans .env |
HTTPException: 401 Unauthorized | Token invalide, régénérez-le |
PrivilegedIntentsRequired | Activez les intents sur le portail Discord |
Le bot ne lit pas les messages
| ❌ Cause | ✅ Solution |
|---|---|
| MESSAGE CONTENT INTENT désactivé | Activez-le sur le portail Discord |
| Intents mal configurés dans le code | Ajoutez intents.message_content = True |
Vérifiez votre code :
intents = discord.Intents.default()
intents.message_content = True # Cette ligne est obligatoire !
Le fichier .env n'est pas lu
| ❌ Cause | ✅ Solution |
|---|---|
| python-dotenv pas installé | Vérifiez requirements.txt |
| load_dotenv() pas appelé | Ajoutez load_dotenv() avant os.getenv() |
| Fichier mal nommé | Le fichier doit s'appeler exactement .env |
| Mauvais format | Pas d'espaces autour du = |
pip install échoue
| ❌ Erreur | ✅ Solution |
|---|---|
requirements.txt not found | Vérifiez que le fichier est à la racine |
Could not find a version | Vérifiez les noms et versions des packages |
🔒 Sécurité du fichier .env
| ✅ À faire | ❌ À ne pas faire |
|---|---|
Garder le .env uniquement sur le serveur | Partager le .env |
Créer le .env directement sur OuiPanel | Mettre le token dans le code |
Ajouter .env au .gitignore | Commit le .env sur GitHub |
Fichier .gitignore recommandé :
# Variables d'environnement
.env
.env.local
# Python
__pycache__/
*.py[cod]
venv/
💡 Bonnes Pratiques
Sécurité
- ✅ Ne partagez jamais votre token
- ✅ Créez le
.envdirectement sur le serveur - ✅ Régénérez le token si compromis
Performance
- ✅ N'activez que les intents nécessaires
- ✅ Utilisez
commands.Botplutôt quediscord.Clientpour les commandes - ✅ Utilisez les Cogs pour organiser votre code
Code
- ✅ Gérez les erreurs avec try/except
- ✅ Ajoutez des logs avec
print()ou le modulelogging - ✅ Utilisez des Cogs pour les gros bots
📂 Structure Avancée avec Cogs (Recommandée)
Pour un bot plus organisé :
📁 MonBotPython/
├── 📄 bot.py ← Point d'entrée
├── 📄 requirements.txt
├── 📄 .env ← Créé sur le serveur
├── 📁 cogs/
│ ├── 📄 moderation.py ← Commandes de modération
│ ├── 📄 fun.py ← Commandes fun
│ └── 📄 utility.py ← Commandes utilitaires
└── 📄 config.py ← Configuration non sensible
Exemple de bot.py avec Cogs :
import os
import discord
from discord.ext import commands
from dotenv import load_dotenv
load_dotenv()
intents = discord.Intents.default()
intents.message_content = True
bot = commands.Bot(command_prefix='!', intents=intents)
# Charger les cogs au démarrage
@bot.event
async def on_ready():
print(f'✅ Bot connecté en tant que {bot.user.name}')
# Charger les cogs
for filename in os.listdir('./cogs'):
if filename.endswith('.py'):
await bot.load_extension(f'cogs.{filename[:-3]}')
print(f'📦 Cog chargé : {filename}')
bot.run(os.getenv('DISCORD_TOKEN'))
Exemple de cog (cogs/fun.py) :
import discord
from discord.ext import commands
class Fun(commands.Cog):
def __init__(self, bot):
self.bot = bot
@commands.command()
async def ping(self, ctx):
"""Répond Pong !"""
latence = round(self.bot.latency * 1000)
await ctx.send(f'🏓 Pong ! Latence : {latence}ms')
@commands.command()
async def hello(self, ctx):
"""Dit bonjour"""
await ctx.send(f'👋 Bonjour {ctx.author.name} !')
async def setup(bot):
await bot.add_cog(Fun(bot))
📝 Récapitulatif
1. Créer le bot sur Discord Developer Portal
2. Récupérer le Token (Reset Token → Copy)
3. Activer MESSAGE CONTENT INTENT
4. Inviter le bot (OAuth2 → URL Generator → bot + applications.commands)
5. Préparer les fichiers (bot.py + requirements.txt avec python-dotenv)
6. Uploader les fichiers sur OuiPanel (sans le .env)
7. Créer le fichier .env sur le serveur avec le token
8. Configurer le fichier de démarrage (bot.py, main.py...)
9. Démarrer le serveur
10. Vérifier que le bot est en ligne sur Discord → !ping

