Call-Informatique
Call-Informatique
Le média tech
Créer un chatbot Discord avec Claude : le guide pas à pas
Intelligence ArtificielleGuides9 min de lecture

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 :

bash
## Vérifier que Python est bien installé
python —version

Vous devriez voir quelque chose comme Python 3.12.x.

Sur macOS :

bash
## Installer Python via Homebrew (gestionnaire de paquets macOS)
brew install python

Sur Linux (Ubuntu/Debian) :

bash
## 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.

  1. Rendez-vous sur le Portail Développeur Discord
  2. Cliquez sur "New Application" en haut à droite
  3. Donnez un nom à votre appli (par exemple "Mon Bot Claude")
  4. 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.

  1. Dans le menu à gauche, cliquez sur "Bot"
  2. Cliquez sur "Reset Token" puis confirmez
  3. 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

  1. Dans le menu à gauche, cliquez sur "OAuth2"
  2. Dans "OAuth2 URL Generator", cochez "bot" dans les scopes
  3. Dans les permissions du bot, cochez :
  • Send Messages
  • Read Message History
  • Use Slash Commands
  1. Copiez l'URL générée en bas
  2. Collez-la dans votre navigateur
  3. 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.

  1. Allez sur console.anthropic.com
  2. Créez un compte ou connectez-vous
  3. Allez dans Settings > API Keys
  4. Cliquez Create Key, donnez-lui un nom ("discord-bot")
  5. 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.

bash
## 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-dotenv

Petit 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.

bash
## Créer le fichier .env (le point au début est important)
touch .env

Ouvrez le fichier .env avec n'importe quel éditeur de texte et collez :

terminal
DISCORD_TOKEN=votre-token-discord-ici
ANTHROPIC_API_KEY=votre-cle-api-anthropic-ici

Remplacez 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.

python
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

bash
## Depuis le dossier du projet, avec l'environnement virtuel activé
python bot.py

Si tout se passe bien, vous verrez dans le terminal :

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 /ask ou /resume.
  • Personnalité custom : modifiez le message system dans 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 ?

Sur le même sujet

À lire aussi

#tutoriel#discord#chatbot#claude#intelligence-artificielle