首页 > 解决方案 > on_message 使我的所有 bot.commands 停止工作

问题描述

我有一个翻转命令,它返回正面或反面,在我添加该on_message函数之前它工作正常。我对 SO 做了一些研究并阅读了文档,这里说要包含await bot.process_commands(message)on_message函数中,但这并没有解决问题,并且翻转命令仍然不起作用。如果我删除 on_message 函数,一切都会按预期工作。

僵尸软件

import discord 
from discord.ext import commands 
import random

# from app bot user 
# click to reveal 
TOKEN = 'token_here'

client = commands.Bot(command_prefix = '!')

@client.event 
async def on_ready():
    print('Bot ready')

@client.command()
async def flip():
    flip = random.choice(['heads', 'tails'])
    await client.say(flip)

@client.event
async def on_message(message):
    if message.content.upper().startswith('N****'):
        await client.send_message(message.channel, "Please do not use that word here.")

    client.process_commands(message)

@client.event
async def on_member_join(member):
    await client.change_presence(game=discord.Game(name='Hi %s' % (member)))
    await client.send_message(member, "Hi %s, Welcome to Carson's Discord Server! This server is fairly NSFW at times; you've been warned! Enjoy your stay :)" % (member))

@client.event
async def on_member_remove(member):
    await client.change_presence(game=discord.Game(name='Bye %s' % (member)))

client.run(TOKEN)

当我运行脚本时,其他一切都正常工作,没有错误。只是命令不起作用。任何见解将不胜感激。

标签: clientbotsdiscord.py

解决方案


您需要await将最后一行on_message作为process_commands协程。

await client.process_commands(message)

如果您发送!flip不和谐,您应该能够收到适当的响应(headstails)。


推荐阅读