25

基本上,一切似乎都可以正常运行并启动,但由于某种原因,我无法调用任何命令。我现在已经轻松地环顾了一个小时并查看示例/观看视频,但我一生都无法弄清楚出了什么问题。下面的代码:

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)

我在 on_message 中的调试输出实际上可以工作并做出响应,整个机器人运行时没有任何异常,但它不会调用命令。

4

2 回答 2

76

从文档中:

覆盖提供的默认值会on_message禁止运行任何额外的命令。要解决此问题,bot.process_commands(message)请在on_message. 例如:

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

    await bot.process_commands(message)

默认on_message包含对这个协程的调用,但是当你用自己的覆盖它时on_message,你需要自己调用它。

于 2018-03-17T00:53:10.460 回答
-4

确定问题源于您对 的定义on_message,您实际上可以将其实现debug为命令,因为它似乎与您的机器人具有相同的前缀:

@bot.command()
async def debug(ctx):
    await ctx.send("d")
于 2021-07-15T14:50:23.717 回答