Discord Bot 命令不适用于 on_message

时间:2021-07-13 14:43:52

标签: python discord.py command

我有一些命令可以完美运行,但是当我添加 on_message 时,它​​们却没有。我读到您需要添加 await bot.process_commands(message) 行,但它仍然对我不起作用。为什么?

@bot.event
async def on_message(message):
    if message.content.lower() == 'prefix':
        prefix = guilds.find_one({"_id": message.guild.id})["prefix"]
        await message.channel.send(f"> The prefix for this server is: {prefix}")
    else:
        return
    await bot.process_commands(message)

2 个答案:

答案 0 :(得分:1)

函数在遇到 return 语句时立即结束,按照您当前的逻辑,它只会在 if 语句为 True 时处理命令。只需删除 else 部分。

@bot.event
async def on_message(message):
    if message.content.lower() == 'prefix':
        prefix = guilds.find_one({"_id": message.guild.id})["prefix"]
        await message.channel.send(f"> The prefix for this server is: {prefix}")
    await bot.process_commands(message)

答案 1 :(得分:0)

await bot.process_commands(message) 代码仅在消息内容为“前缀”时才可访问。要解决这个问题,请将 await bot.process_commands(message) 放在 else 正文中:

@bot.event
async def on_message(message):
    if message.content.lower() == 'prefix':
        prefix = guilds.find_one({"_id": message.guild.id})["prefix"]
        await message.channel.send(f"> The prefix for this server is: {prefix}")
    else:
        await bot.process_commands(message)