Commandes désactivées après la mise en œuvre de on_message()
Lors de l'utilisation de l'événement on_message() de discord.py, les utilisateurs peuvent rencontrer un problème où leurs commandes arrêter de travailler. Cela est dû à la nature primordiale de on_message(), qui désactive l'exécution des commandes à moins qu'elles ne soient spécifiquement activées.
Résoudre le problème
Pour résoudre ce problème, il est Il est crucial d'ajouter un appel à bot.process_commands(message) à la fin de votre fonction on_message(). Cette ligne demande à Discord de traiter toutes les commandes présentes dans le message.
Code modifié
Voici une version modifiée de votre code qui intègre bot.process_commands(message) :
import discord import asyncio from discord.ext import commands bot = commands.Bot(command_prefix = '-') @bot.event async def on_ready(): print('Logged in as') print(bot.user.name) print(bot.user.id) print('------') @bot.event async def on_message(message): if message.content.startswith('-debug'): await message.channel.send('d') # Process any commands present in the message await bot.process_commands(message) @bot.command(pass_context=True) async def ping(ctx): await ctx.channel.send('Pong!') @bot.command(pass_context=True) async def add(ctx, *, arg): await ctx.send(arg)
Explication
La valeur par défaut L'événement on_message() inclut un appel à bot.process_commands(message) en interne. Cette ligne permet l'exécution de commandes dans le message. En remplaçant la valeur par défaut on_message(), vous bloquez efficacement le traitement des commandes. L'ajout de bot.process_commands(message) restaure manuellement la fonctionnalité souhaitée.
Conclusion
En implémentant la solution susmentionnée, vous pouvez vous assurer que la sortie de débogage dans on_message() et vos commandes personnalisées fonctionnent correctement.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!