Tutoriel : créer un bot Discord avec l'API de ChatGPT

Tutoriel : créer un bot Discord avec l’API de ChatGPT

Discord est devenu l’une des plateformes de communication les plus populaires parmi les amateurs de jeux vidéo, les développeurs, les créateurs de contenu et les communautés en ligne.

Cette popularité s’explique en grande partie par la possibilité d’y intégrer des bots, de petits programmes automatisés qui facilitent la gestion des serveurs et améliorent l’expérience utilisateur.

Dans ce tutoriel, je vous explique pas à pas comment créer votre propre bot Discord en utilisant l’API de ChatGPT d’OpenAI.

Grâce à cette technologie avancée, vous pourrez donner à votre bot des capacités de conversation naturelle et intelligente, permettant ainsi à votre communauté de bénéficier d’un compagnon virtuel à la fois utile et divertissant.

Que vous soyez un développeur aguerri ou un débutant curieux, ce tutoriel vous aidera à mieux comprendre les bases de l’intégration de l’API de ChatGPT et vous fournira les outils nécessaires pour créer un bot Discord interactif et personnalisé.

Le bot sera très simple, son objectif sera seulement de donner une réponse à chaque utilisateurs.

Création du bot sur le Discord developer portal

Commencez par créer une nouvelle application via cet interface.

Tutoriel : créer un bot Discord avec l'API de ChatGPT

Une fois l’appli créée, initialisez le bot sur le panneau de gauche :

Tutoriel : créer un bot Discord avec l'API de ChatGPT

Ajoutez un bot en cliquant sur « Add bot », puis activez les « Privilege Gateway Intents ». Ils permettent au bot d’accéder aux noms des membres du server et aux messages :

Tutoriel : créer un bot Discord avec l'API de ChatGPT

Sur la même page, en bas, donnez les autorisations au bot. Attention, l’autorisation « Administrateur » donne tous les droits au bot :

Tutoriel : créer un bot Discord avec l'API de ChatGPT

Pour ajouter le bot à un server, rendez-vous dans le panneau OAuth2, cochez la case « bot », puis redonnez les autorisations qui conviennent dans votre cas :

Tutoriel : créer un bot Discord avec l'API de ChatGPT

Un lien sera généré en bas de page. Copiez-collez ce lien, dans votre barre de recherche sur Google et intégrez le bot dans le server discord de votre choix.

Si tout va bien vous devriez voir le bot dans la liste des membres du server :

Tutoriel : créer un bot Discord avec l'API de ChatGPT

Vous pouvez récupérer le token qui donnera accès au bot, en cliquant sur « Reset Token » :

Tutoriel : créer un bot Discord avec l'API de ChatGPT

Création de l’environnement de l’application

Le dossier de votre application devra ressembler à ça :

appli_chatGPT
  l .env
  l main.py
  l requirements.txt

Dans le fichier .env vous devez mettre vos access token pour le bot Discord et pour l’API d’OpenAI :

export OPENAI_API_KEY="sk-..."
export BOT_TOKEN="Le token du bot Discord"

Dans le fichier requirements.txt vous devez mettre les librairies python à installer ici :

discord==1.7.3
openai==0.27.0

Vous pouvez ensuite installer ces librairies avec cette commande :

pip install -r requirements.txt

Code de l’application avec Python

On peut maintenant rentrer dans le vif du sujet et coder l’application.

On importe les librairies :

import discord
from dotenv import load_dotenv
import openai

La librairie Discord permet de faire l’interface entre Python et Discord. La librairie dotenv permet de lire les tokens disponibles dans le fichier .env . Et openai permet de requêter sur l’API de ChatGPT.

Commençons par lire les tokens :

load_dotenv()
token = os.environ['BOT_TOKEN']
openai.api_key = os.environ['OPENAI_API_KEY']

Cette approche permet de sécuriser votre développement, je vous conseille de ne jamais copier coller le token directement sur un fichier py.

Le gros avantage de l’API de ChatGPT, est la notion de mémoire, et l’API permet de simuler ça grâce aux rôles et on conversations. On doit d’abord définir le message de système qui explique au bot quel est son objectif.

Sur l’UI de ChatGPT, le message système par défaut est « You are a helpful assistant », j’ai décidé de mettre le message suivant :

Tu es un agent intelligent. Ton objectif est d’aider l’utilisateur à apprendre des notions complexes en intelligence artificielle.

# current_conv

msg_system = "Tu es un agent intelligent. Ton objectif est d'aider l'utilisateur à apprendre des notions complexes en intelligence artificielle."

current_conv = [{"role":"system", "content": msg_system}]

La fonction chatgpt_reply permettra de récupérer la réponse du bot à partir du message de l’utilisateur :

def chatgpt_reply(conv):

    completion = openai.ChatCompletion.create(
        model="gpt-3.5-turbo", 
        messages=conv,
        max_tokens = 350
        )

    return completion['choices'][0]['message']['content']

On initialise ensuite la connexion avec le bot discord :

# connect to discord
intents = discord.Intents.all()
client = discord.Client(intents=intents)

# log
@client.event
async def on_ready():
    print("Logged as {0.user}".format(client))

Ensuite on écrit le corps du bot :

# answerer
@client.event
async def on_message(message):

    if message.author == client.user:
        return

    if message.channel.name == "larevueia":
        msg = message.content
        msg = str(msg)
        current_conv.append({"role":"user", "content":msg})
        reply = chatgpt_reply(current_conv)
        current_conv.append({"role":"assistant", "content":reply})
        await message.reply(reply, mention_author=True)

# lancement de l'appli
client.run(token)

A chaque nouveau message reçu, j’ajoute le message dans la conversation en cours, puis j’ajoute la réponse après qu’elle ait été générée par ChatGPT.

Pour sécuriser l’opération, je limite le bot au canal « larevueia », que j’ai créé sur le server pour l’occasion.

Voilà le résultat :

Conclusion

En résumé, ce tutoriel a montré comment créer un bot Discord intelligent et interactif en tirant parti de l’API de ChatGPT d’OpenAI.

Cette technologie innovante met à la disposition des développeurs et des entreprises une intelligence artificielle de très haut niveau, offrant ainsi un potentiel infini pour enrichir les expériences en ligne et faciliter la communication au sein des communautés.

OpenAI travaille pour démocratiser l’accès à ces technologies de pointe, permettant ainsi aux individus et aux organisations de toutes tailles et de tous horizons de profiter des avantages qu’offrent les IA avancées.

Que ce soit pour améliorer la gestion des serveurs, créer des assistants virtuels personnalisés ou développer des solutions innovantes pour répondre aux besoins spécifiques de chaque entreprise, les API proposées par OpenAI ouvrent un monde de possibilités inédites.