python - ¿Por qué on_message impide que los comandos funcionen?
python-3.x discord (1)
Básicamente, todo parece funcionar bien y arrancar, pero por alguna razón no puedo llamar a ninguno de los comandos. He estado mirando alrededor por una hora fácilmente y ahora estoy viendo ejemplos / viendo videos y no puedo por mi vida descubrir qué está mal. Código a continuación:
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'')
@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)
La salida de depuración que tengo en on_message realmente funciona y responde, y todo el bot se ejecuta sin excepciones, pero simplemente no llamará a los comandos.
De la documentación de reescritura:
Anular el valor predeterminado proporcionado en
on_message
prohíbe la ejecución de comandos adicionales. Para solucionar esto, agregue una líneabot.process_commands(message)
al final deon_message
. Por ejemplo:
@bot.event async def on_message(message): # do some extra stuff here await bot.process_commands(message)
El
on_message
predeterminado contiene una llamada a esta rutina, pero cuando la anula con su propio
on_message
, debe llamarlo usted mismo.