Maison >développement back-end >Tutoriel Python >Pourquoi mes commandes Discord cessent-elles de fonctionner après l'implémentation de « on_message() » ?

Pourquoi mes commandes Discord cessent-elles de fonctionner après l'implémentation de « on_message() » ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-13 15:58:18986parcourir

Why Do My Discord Commands Stop Working After Implementing `on_message()`?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn