Heim >Backend-Entwicklung >Python-Tutorial >Warum funktionieren meine Discord-Befehle nach der Implementierung von „on_message()' nicht mehr?
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!