# Déployer un bot Python

> Guide pas à pas pour déployer un bot Discord Python (discord.py ou py-cord) sur Daki Hosting.

Ce guide vous accompagne dans le déploiement d'un bot Discord Python sur Daki Hosting — de la création de votre serveur à la lecture sécurisée du token de votre bot, jusqu'à la mise en ligne.

## Ce que vous allez apprendre

- Comment créer un serveur Python pour votre bot
- Comment téléverser votre code
- Comment configurer la commande d'installation, la commande de démarrage et la version de Python
- Comment définir le token de votre bot en toute sécurité avec un fichier `.env`
- Comment démarrer votre bot et vérifier qu'il fonctionne

---

## Prérequis

- Un compte Daki (Free Tier ou payant) — voir [Créer un compte](https://daki.cc/fr/wiki/guides/account-create)
- Un bot Discord avec un **token de bot**, créé dans le [Discord Developer Portal](https://discord.com/developers/applications)
- Le code source de votre bot, avec un `requirements.txt` listant toutes les dépendances (par ex. `discord.py` ou `py-cord`, et `python-dotenv`)

> **Info:** Les bots Discord se connectent **en sortant** vers les serveurs de Discord et n'ont pas besoin de port entrant. Les bots Discord fonctionnent donc aussi bien sur le Free Tier que sur les offres payantes. Si votre bot exécute aussi un serveur HTTP (par ex. pour des webhooks ou un dashboard web), vous aurez besoin d'une offre payante, car les ports accessibles publiquement ne sont disponibles que sur les offres payantes. Voir [Réseau et allocations](https://daki.cc/fr/wiki/guides/network-allocations).

---

## Déploiement

**Étape 1: Créez un serveur Python**

1. Connectez-vous au Dashboard Free Tier sur [free.daki.cc](https://free.daki.cc) ou au Billing Panel sur [billing.daki.cc](https://billing.daki.cc).
2. Créez un nouveau serveur et sélectionnez l'egg **Python**.
3. Donnez un nom à votre serveur (par ex. `MyPythonBot`).

Voir [Créer votre premier serveur gratuit](https://daki.cc/fr/wiki/guides/create-server) pour le parcours complet.

**Étape 2: Accédez au Portail**

Connectez-vous au Portail via SSO ou directement sur [portal.daki.cc](https://portal.daki.cc). Voir [Vue d'ensemble du Portail](https://daki.cc/fr/wiki/guides/portal).

**Étape 3: Téléversez le code de votre bot**

**Option A — Téléversement en ZIP (le plus simple) :**
1. Compressez le dossier de votre projet dans un fichier `.zip`.
2. Dans le Portail, allez dans l'onglet **Files** et cliquez sur **Upload**.
3. Faites un clic droit sur le `.zip` et cliquez sur **Extract**.

**Option B — Utilisez SFTP (sans limite de taille) :**
Utilisez vos identifiants SFTP depuis l'onglet **Settings** pour téléverser directement le dossier. Voir [Gestionnaire de fichiers](https://daki.cc/fr/wiki/guides/file-manager).

> **Info:** Placez un `requirements.txt` à la racine de votre projet. Il est utilisé par la commande d'installation pour installer vos dépendances.

**Étape 4: Configurez l'onglet Startup**

Ouvrez l'onglet **Startup** et configurez les trois champs :

**1. Docker Image** — Sélectionnez la version de Python dont votre bot a besoin (par ex. **Python 3.13**). Python 3.13 est une valeur par défaut sûre en cas de doute ; les versions plus récentes fonctionnent si toutes vos bibliothèques les prennent en charge. Évitez les versions marquées **EOL** : elles ne reçoivent plus de mises à jour de sécurité.

**2. Install Command** — Définissez-la pour installer automatiquement vos dépendances :
```
pip install -r requirements.txt
```
**3. Startup Command** — Définissez la commande qui exécute votre bot :
- `python main.py` — si votre fichier d'entrée est `main.py`
- `python bot.py` — si votre fichier d'entrée est `bot.py`
- `python -m mypackage` — si votre projet est structuré en package

Vous pouvez adapter librement ces commandes à la structure et aux besoins de votre projet.

Voir [Paramètres de démarrage](https://daki.cc/fr/wiki/guides/startup-settings) pour une explication complète.

**Étape 5: Ajoutez le token de votre bot via un fichier .env**

Enregistrez le token de votre bot Discord dans un fichier `.env` sur le serveur afin qu'il n'apparaisse jamais dans votre code source.

1. Dans l'onglet **Files**, cliquez sur **New File** et nommez-le `.env`.
2. Ajoutez votre token :
   ```
   BOT_TOKEN=your_discord_bot_token_here
   ```
3. Cliquez sur **Save**.

Vérifiez que `python-dotenv` figure dans votre `requirements.txt`, puis chargez le fichier dans votre code :

```python

from dotenv import load_dotenv

import os

import discord



load_dotenv()

TOKEN = os.environ.get("BOT_TOKEN")



intents = discord.Intents.default()

client = discord.Client(intents=intents)



@client.event

async def on_ready():

    print(f"Logged in as {client.user}")



client.run(TOKEN)

```
Voir [Variables d'environnement](https://daki.cc/fr/wiki/guides/environment-variables) pour plus de détails sur l'utilisation des fichiers `.env`.

**Étape 6: Démarrez votre bot**

Cliquez sur **Start** dans l'onglet **Console**. Un lancement réussi affiche :

```

Logged in as MyBot#1234

```
Si des erreurs apparaissent, consultez le guide [Dépannage](https://daki.cc/fr/wiki/guides/troubleshooting).

---

## Problèmes courants

**ModuleNotFoundError: No module named 'discord'**

Vos dépendances n'ont pas été installées. Vérifiez que `discord.py` ou `py-cord` figure dans `requirements.txt`, et que la commande d'installation est bien `pip install -r requirements.txt` dans l'onglet Startup. Redémarrez le serveur pour relancer l'installation.

**ModuleNotFoundError: No module named 'dotenv'**

Ajoutez `python-dotenv` à votre `requirements.txt` et redémarrez le serveur.

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

Le token dans votre fichier `.env` est incorrect ou manquant. Ouvrez le fichier `.env` dans l'onglet Files et vérifiez attentivement la valeur. Supprimez les espaces ou guillemets superflus.

**Erreur PrivilegedIntentsRequired**

Votre bot demande des intents qui ne sont pas activés dans le Discord Developer Portal. Activez les intents privilégiés requis (par ex. Message Content Intent) dans les paramètres de l'application de votre bot, et vérifiez que votre code demande les mêmes intents.

**Le serveur plante dès le démarrage**

Lisez la sortie de la Console pour trouver l'erreur. Causes courantes : une mauvaise commande de démarrage (faute de frappe dans le nom du fichier ou chemin incorrect), un `requirements.txt` manquant ou un paquet absent. Voir [Dépannage](https://daki.cc/fr/wiki/guides/troubleshooting).

---

## Étapes suivantes

- [Variables d'environnement](https://daki.cc/fr/wiki/guides/environment-variables) — Guide complet sur les fichiers `.env` et la lecture des variables dans le code.
- [Renouveler votre serveur gratuit](https://daki.cc/fr/wiki/guides/save-free-server-from-purge) — Regardez des publicités régulièrement pour faire tourner votre serveur Free Tier.
- [Gestionnaire de fichiers](https://daki.cc/fr/wiki/guides/file-manager) — Mettez à jour votre code après des modifications.

---
Source: https://daki.cc/fr/wiki/guides/deploy-python
