Créer un chatbot Discord avec Claude : le guide pas à pas
Apprenez à créer votre propre chatbot Discord propulsé par l'IA Claude d'Anthropic. Aucune expérience en programmation requise, on part de zéro.
Créer un chatbot Discord avec Claude : le guide pas à pas
Vous traînez sur Discord tous les jours et vous aimeriez avoir un assistant IA directement dans votre serveur ? Bonne nouvelle : c'est faisable, même si vous n'avez jamais écrit une ligne de code. On va construire ensemble un bot Discord qui utilise Claude, l'IA d'Anthropic, pour répondre aux messages.
Pensez à votre bot comme un ami ultra-cultivé qui squatte votre serveur Discord. Vous lui posez une question, il demande la réponse à Claude (via internet), puis il vous la transmet. Simple.
Ce qu'il vous faut avant de commencer
- Un compte Discord (logique)
- Un ordinateur sous Windows, macOS ou Linux
- Python 3.10 ou plus récent installé sur votre machine
- Un compte Anthropic avec une clé API (on voit ça juste après)
- 15 à 30 minutes de votre temps
Pas besoin d'être développeur. On copie-colle, on comprend ce qu'on fait, et ça roule.
Étape 1 — Installer Python
Python, c'est le langage de programmation qu'on va utiliser. Voyez-le comme la langue que votre ordinateur doit parler pour faire tourner le bot.
Sur Windows :
Allez sur python.org/downloads et téléchargez la dernière version. Pendant l'installation, cochez absolument la case "Add Python to PATH". C'est crucial.
Pour vérifier que ça marche, ouvrez un terminal (tapez "cmd" dans la barre de recherche Windows) et tapez :
## Vérifier que Python est bien installé
python —versionVous devriez voir quelque chose comme Python 3.12.x.
Sur macOS :
## Installer Python via Homebrew (gestionnaire de paquets macOS)
brew install pythonSur Linux (Ubuntu/Debian) :
## Mettre à jour les paquets puis installer Python
sudo apt update && sudo apt install python3 python3-pip python3-venvÉtape 2 — Créer une application Discord
C'est ici qu'on "enregistre" votre bot auprès de Discord.
- Rendez-vous sur le Portail Développeur Discord
- Cliquez sur "New Application" en haut à droite
- Donnez un nom à votre appli (par exemple "Mon Bot Claude")
- Acceptez les conditions et cliquez Create
Votre application est créée. Maintenant, transformons-la en bot.
Étape 3 — Créer le bot et récupérer son token
Le token du bot, c'est comme son mot de passe. Il permet à votre code de se connecter à Discord en tant que bot.
- Dans le menu à gauche, cliquez sur "Bot"
- Cliquez sur "Reset Token" puis confirmez
- Copiez le token immédiatement et gardez-le en lieu sûr
⚠️ Attention : ne partagez JAMAIS ce token. Quelqu'un qui le possède peut contrôler votre bot. Si vous le publiez par erreur sur GitHub ou Discord, régénérez-le immédiatement.
Dans la section Privileged Gateway Intents (toujours sur la page Bot), activez :
- Message Content Intent (pour que le bot puisse lire les messages)
Cliquez Save Changes.
Étape 4 — Inviter le bot sur votre serveur
- Dans le menu à gauche, cliquez sur "OAuth2"
- Dans "OAuth2 URL Generator", cochez "bot" dans les scopes
- Dans les permissions du bot, cochez :
- Send Messages
- Read Message History
- Use Slash Commands
- Copiez l'URL générée en bas
- Collez-la dans votre navigateur
- Choisissez votre serveur et autorisez
Votre bot apparaît maintenant dans la liste des membres de votre serveur (hors-ligne pour le moment).
Étape 5 — Obtenir une clé API Anthropic
L'API, c'est le "numéro de téléphone" pour joindre Claude. Chaque appel coûte quelques centimes, mais rien d'astronomique pour un usage perso.
- Allez sur console.anthropic.com
- Créez un compte ou connectez-vous
- Allez dans Settings > API Keys
- Cliquez Create Key, donnez-lui un nom ("discord-bot")
- Copiez la clé
Tarifs indicatifs (Claude 3.5 Sonnet, le meilleur rapport qualité/prix) :
- Entrée : ~3 $ par million de tokens
- Sortie : ~15 $ par million de tokens
- Pour un usage perso sur Discord, comptez quelques centimes par jour
Étape 6 — Préparer le projet
On crée un dossier propre pour le bot et on installe les bibliothèques nécessaires.
## Créer un dossier pour le projet
mkdir mon-bot-claude
cd mon-bot-claude
## Créer un environnement virtuel (isole les dépendances du projet)
python3 -m venv venv
## Activer l'environnement virtuel
## Sur macOS/Linux :
source venv/bin/activate
## Sur Windows :
## venv\Scripts\activate
## Installer les deux bibliothèques dont on a besoin
pip install discord.py anthropic python-dotenvPetit lexique :
- discord.py : la bibliothèque qui permet à Python de communiquer avec Discord
- anthropic : la bibliothèque officielle pour parler à Claude
- python-dotenv : permet de charger les clés secrètes depuis un fichier
Étape 7 — Créer le fichier de secrets
On stocke les clés dans un fichier séparé pour ne pas les exposer.
## Créer le fichier .env (le point au début est important)
touch .envOuvrez le fichier .env avec n'importe quel éditeur de texte et collez :
DISCORD_TOKEN=votre-token-discord-ici
ANTHROPIC_API_KEY=votre-cle-api-anthropic-iciRemplacez les valeurs par vos vraies clés (celles copiées aux étapes 3 et 5).
⚠️ Si vous utilisez Git, créez aussi un fichier .gitignore contenant .env pour ne jamais publier vos secrets.
Étape 8 — Écrire le code du bot
Créez un fichier bot.py et collez-y ce code. Chaque ligne importante est commentée.
import os
import discord
from anthropic import Anthropic
from dotenv import load_dotenv
## Charger les variables d'environnement depuis le fichier .env
load_dotenv()
## Récupérer les clés depuis les variables d'environnement
DISCORD_TOKEN = os.getenv("DISCORD_TOKEN")
ANTHROPIC_API_KEY = os.getenv("ANTHROPIC_API_KEY")
## Vérification : si les clés manquent, on arrête tout avec un message clair
if not DISCORD_TOKEN or not ANTHROPIC_API_KEY:
raise ValueError("Il manque DISCORD_TOKEN ou ANTHROPIC_API_KEY dans le fichier .env")
## Configurer le client Anthropic (notre lien vers Claude)
claude = Anthropic(api_key=ANTHROPIC_API_KEY)
## Configurer les permissions du bot Discord
intents = discord.Intents.default()
intents.message_content = True # Nécessaire pour lire le contenu des messages
## Créer le client Discord
bot = discord.Client(intents=intents)
## Stocker l'historique des conversations par salon (pour le contexte)
conversations = {}
@bot.event
async def on_ready():
"""Se déclenche quand le bot est connecté et prêt."""
print(f"{bot.user} est connecté et prêt !")
@bot.event
async def on_message(message):
"""Se déclenche à chaque nouveau message dans un salon accessible au bot."""
# Ignorer les messages du bot lui-même (sinon boucle infinie)
if message.author == bot.user:
return
# Le bot répond uniquement quand on le mentionne (@MonBotClaude)
if bot.user not in message.mentions:
return
# Nettoyer le message (retirer la mention du bot)
texte_utilisateur = message.content.replace(f"<@{bot.user.id}>", "").strip()
# Si le message est vide après nettoyage, ignorer
if not texte_utilisateur:
return
# Récupérer ou créer l'historique de conversation pour ce salon
salon_id = str(message.channel.id)
if salon_id not in conversations:
conversations[salon_id] = []
# Ajouter le message de l'utilisateur à l'historique
conversations[salon_id].append({
"role": "user",
"content": f"{message.author.display_name}: {texte_utilisateur}"
})
# Garder seulement les 20 derniers messages (pour limiter les coûts)
conversations[salon_id] = conversations[salon_id][-20:]
# Montrer que le bot est en train de taper
async with message.channel.typing():
try:
# Envoyer la conversation à Claude et récupérer la réponse
reponse = claude.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
system="Tu es un assistant sympathique dans un serveur Discord francophone. "
"Réponds de manière concise et naturelle. "
"Utilise le markdown Discord quand c'est utile.",
messages=conversations[salon_id]
)
# Extraire le texte de la réponse
texte_reponse = reponse.content[0].text
# Ajouter la réponse à l'historique
conversations[salon_id].append({
"role": "assistant",
"content": texte_reponse
})
# Discord limite les messages à 2000 caractères
# Si la réponse est trop longue, on la découpe
if len(texte_reponse) <= 2000:
await message.reply(texte_reponse)
else:
# Découper en morceaux de 2000 caractères
morceaux = [texte_reponse[i:i+2000] for i in range(0, len(texte_reponse), 2000)]
for morceau in morceaux:
await message.channel.send(morceau)
except Exception as e:
await message.reply(f"Oups, une erreur est survenue : {e}")
## Lancer le bot
bot.run(DISCORD_TOKEN)Étape 9 — Lancer le bot
## Depuis le dossier du projet, avec l'environnement virtuel activé
python bot.pySi tout se passe bien, vous verrez dans le terminal :
Mon Bot Claude#1234 est connecté et prêt !Retournez sur Discord, mentionnez votre bot dans n'importe quel salon (@Mon Bot Claude dis-moi une blague) et admirez la magie.
Pour arrêter le bot : Ctrl + C dans le terminal.
Pour aller plus loin
Votre bot fonctionne, mais il tourne sur votre PC. Dès que vous fermez le terminal, il s'éteint. Quelques pistes pour la suite :
- Hébergement permanent : faites tourner le bot sur un VPS (serveur distant). Un petit serveur à 3-5€/mois chez Hetzner ou Contabo suffit largement.
- Commandes slash : au lieu de mentionner le bot, créez des commandes comme
/askou/resume. - Personnalité custom : modifiez le message
systemdans le code pour donner un caractère unique à votre bot. - Limite de coûts : ajoutez un compteur de tokens pour éviter les surprises sur la facture Anthropic.
Les erreurs classiques
"Privileged intent provided is not enabled" : retournez sur le portail développeur Discord, page Bot, et activez Message Content Intent.
"401 Unauthorized" : votre token Discord ou clé API est invalide. Vérifiez le fichier .env.
Le bot est en ligne mais ne répond pas : vérifiez que vous le mentionnez bien avec @. Vérifiez aussi qu'il a les permissions de lire et écrire dans le salon.
"Rate limit" : vous envoyez trop de requêtes. Ajoutez un délai entre les messages ou réduisez la fréquence d'utilisation.
Voilà, vous avez un chatbot IA sur votre serveur Discord. Pas mal pour une demi-heure de travail, non ?
À lire aussi
Fine-tuner un modèle IA avec LoRA : le guide pas à pas
Apprenez à personnaliser un modèle d'IA en le fine-tunant avec LoRA, même avec une carte graphique modeste. Guide complet pour débutants.
Fine-tuning LoRA/QLoRA : configuration avancée et optimisation
Guide technique complet pour fine-tuner un LLM avec LoRA : quantification QLoRA, hyperparamètres, multi-GPU, troubleshooting et déploiement GGUF.
Bot Discord + Claude API : architecture complète et production
Architecture robuste d'un bot Discord alimenté par Claude. Gestion d'erreurs, rate limiting, Docker, déploiement VPS et bonnes pratiques de production.