Comment créer des Commandes Hybrides ?

Article publié le et mis à jour le .

Dans l’article précédent de ce tutoriel, on a vu comment créer des commandes slash (Partie 5).

Dans cet article, nous allons explorer tout ce que vous devez savoir sur les commandes hybrides pour vos bots Discord en Python avec la bibliothèque discord.py. Après avoir étudié les commandes avec préfixe et les commandes slash, nous verrons aujourd’hui comment combiner ces deux types de commandes pour bénéficier du meilleur des deux mondes.

Les commandes hybrides permettent d’appeler une commande à la fois avec un préfixe personnalisé ou via un slash /. Elles offrent plus de flexibilité et permettent d’améliorer l’expérience utilisateur en rendant le bot plus intuitif à utiliser.

Introduction

Dans Discord, il existe principalement deux types de commandes pour les bots : les commandes avec préfixe et les slash commands. Chaque type a ses avantages et ses inconvénients. Les commandes avec préfixe sont simples et rapides à implémenter, tandis que les slash commands s’intègrent mieux dans l’interface utilisateur de Discord, permettant des suggestions automatiques.

Cependant, il existe un troisième type de commandes, les commandes hybrides, qui combinent les avantages des deux autres. Une commande hybride peut être appelée soit avec un préfixe défini, soit avec un slash. Cela permet une plus grande flexibilité tout en conservant l’intégration dans l’interface de Discord.

Première commande Hybride

Commençons par créer une première commande hybride. La syntaxe est très similaire à celle des commandes avec préfixe. Au lieu d’utiliser le décorateur @bot.command, nous allons utiliser @bot.hybrid_command. Cela permet de transformer une commande classique en commande hybride.

@bot.hybrid_command()
async def ping(ctx):
    await ctx.send("Pong!")

Cette commande simple répond “Pong!” lorsque l’utilisateur utilise le préfixe ou le slash pour l’appeler. Le reste de la structure est identique à une commande traditionnelle.

Ajouter la commande au bot

Une fois la commande créée, il est important de la synchroniser dans l’arbre de commandes de Discord pour que l’auto-complétion soit activée dans l’interface des slash commands. Cela se fait en écoutant l’événement on_ready du bot.

@bot.event
async def on_ready():
    await bot.tree.sync()

Cette synchronisation est essentielle pour que Discord reconnaisse correctement vos commandes hybrides.

Commande avec paramètres

Les commandes hybrides peuvent aussi accepter des paramètres. Par exemple, créons une commande qui prend deux entiers et renvoie la différence entre eux.

@bot.hybrid_command()
async def soustraire(ctx, a: int, b: int):
    await ctx.send(f"La différence entre {a} et {b} est {a - b}")

Cette commande permet à l’utilisateur d’entrer deux nombres, soit via un préfixe, soit via un slash, et renvoie la différence entre les deux.

Commande avec chaîne de caractères

Les commandes hybrides permettent également d’utiliser des chaînes de caractères. Par exemple, créons une commande qui enregistre une note passée par l’utilisateur.

@bot.hybrid_command()
async def note(ctx, *, note: str):
    await ctx.send(f"Note enregistrée : {note}")

Cette commande permet de capturer plusieurs mots en tant que note, et de les afficher en réponse. Cependant, si vous utilisez un préfixe, il est important d’encadrer la note entre guillemets pour capturer plusieurs mots.

Quand les utiliser ?

Les commandes hybrides sont particulièrement utiles lorsque vous souhaitez offrir à vos utilisateurs une flexibilité maximale. Si vous avez déjà des commandes avec préfixe et que vous souhaitez les rendre compatibles avec l’interface des slash commands, il suffit de changer le décorateur en @bot.hybrid_command et de synchroniser les commandes.

Les commandes hybrides permettent donc d’allier la simplicité des commandes avec préfixe et l’intégration plus poussée des slash commands. C’est à vous de juger quand il est pertinent de les utiliser, en fonction des besoins de votre bot et des préférences de vos utilisateurs.

En conclusion, les commandes hybrides dans discord.py permettent de rendre votre bot plus flexible et facile à utiliser. Vous pouvez ainsi offrir à vos utilisateurs le choix entre une commande avec préfixe classique ou une slash command.

Maintenant qu’on a vu les 3 types de commandes, allons plus loin avec un concept avancé : les cogs.

Lire la suite du tutoriel bot discord en python avec discord.py (Partie 7)