Heim >Backend-Entwicklung >Python-Tutorial >Warum funktionieren meine Discord-Befehle nach der Implementierung von „on_message()' nicht mehr?

Warum funktionieren meine Discord-Befehle nach der Implementierung von „on_message()' nicht mehr?

Susan Sarandon
Susan SarandonOriginal
2024-12-13 15:58:18986Durchsuche

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

Befehle nach Implementierung von on_message() deaktiviert

Bei der Verwendung des on_message()-Ereignisses von discord.py können Benutzer auf ein Problem stoßen, wenn ihre Befehle nicht ausgeführt werden aufhören zu arbeiten. Dies liegt an der übergeordneten Natur von on_message(), die die Ausführung von Befehlen deaktiviert, sofern diese nicht ausdrücklich aktiviert sind.

Behebung des Problems

Um dieses Problem zu beheben, ist es erforderlich Es ist wichtig, am Ende Ihrer on_message()-Funktion einen Aufruf von bot.process_commands(message) hinzuzufügen. Diese Zeile weist Discord an, alle in der Nachricht vorhandenen Befehle zu verarbeiten.

Geänderter Code

Hier ist eine modifizierte Version Ihres Codes, die Folgendes enthält 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)

Erklärung

Das Standardereignis on_message() beinhaltet einen internen Aufruf von bot.process_commands(message). Diese Zeile ermöglicht die Ausführung von Befehlen in der Nachricht. Indem Sie die Standardeinstellung on_message() überschreiben, blockieren Sie effektiv die Verarbeitung von Befehlen. Durch manuelles Hinzufügen von bot.process_commands(message) wird die gewünschte Funktionalität wiederhergestellt.

Fazit

Durch die Implementierung der oben genannten Lösung können Sie sicherstellen, dass sowohl die Debug-Ausgabe in on_message() und Ihre benutzerdefinierten Befehle funktionieren ordnungsgemäß.

Das obige ist der detaillierte Inhalt vonWarum funktionieren meine Discord-Befehle nach der Implementierung von „on_message()' nicht mehr?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn