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
Libérer: 2024-12-13 15:58:18
original
1116 Les gens l'ont consulté

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)
Copier après la connexion

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 de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal