¿Por qué on_message() impide que funcionen los comandos?

Resuelto Acemcbean asked hace 6 años • 2 respuestas

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.

Acemcbean avatar Mar 17 '18 07:03 Acemcbean
Aceptado

De la documentación:

Anular el valor predeterminado proporcionado on_messageprohíbe la ejecución de comandos adicionales. Para solucionar este problema, agregue una bot.process_commands(message)línea al final de su archivo on_message. Por ejemplo:

@bot.event
async def on_message(message):
    # do some extra stuff here

    await bot.process_commands(message)

El valor predeterminado on_messagecontiene una llamada a esta rutina, pero cuando la anula con la suya propia on_message, debe llamarla usted mismo.

Patrick Haugh avatar Mar 17 '2018 00:03 Patrick Haugh