¿Por qué on_message() impide que funcionen los comandos?
Básicamente, todo parece funcionar bien y arrancar, pero por alguna razón no puedo ejecutar ninguno de los comandos. He estado mirando alrededor durante una hora y mirando 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 llama a los comandos.
De la documentación:
Anular el valor predeterminado proporcionado
on_message
prohíbe la ejecución de comandos adicionales. Para solucionar este problema, agregue unabot.process_commands(message)
línea al final de su archivoon_message
. Por ejemplo:
@bot.event async def on_message(message): # do some extra stuff here await bot.process_commands(message)
El valor predeterminado on_message
contiene una llamada a esta rutina, pero cuando la anula con la suya propia on_message
, debe llamarla usted mismo.