discord.py on_message 在新命令执行时取消。

当我执行另一条命令时,如何取消我的on_message事件?我的代码

@client.event
async def on_message(message):
    channel = message.author
    def check(m):
        return m.channel == message.channel and m.author != client.user

    if message.content.startswith("!order"):
        await channel.send("in game name")
        in_game_name = await client.wait_for('message', check=check)

        await channel.send("in game ID")
        in_game_ID = await client.wait_for('message', check=check)

    else:
        await client.process_commands(message)

解决方案:

on_message实际上应该只保留给需要on_message事件的事件(比如说你要写一个自动修改功能)。

对于命令,你应该使用 @client.command@bot.command 在一个函数之前的装饰符。在这里 是命令的用法。这里有几个理由说明为什么你应该使用命令(直接摘自discord.py discord上的 “标签 “命令)。

  • 防止出现意大利面条代码
    • 更好的性能
    • 轻松处理命令参数
    • 参数类型转换器
    • 简单的子命令
    • 命令冷却时间
    • 内置帮助功能
    • 简单的前缀管理
    • 命令检查,用于控制何时被调用。
    • 能够通过extensionscogs添加命令模块。
    • 仍然能够做到一切你能做的事情与 Client

如果你有什么问题,欢迎对这个答案进行评论!

给TA打赏
共{{data.count}}人
人已打赏
未分类

如何获得DXF文件中每个实体的纸空间?

2022-10-23 0:22:32

未分类

C++ - 如何制作4x4矩阵和从上到下的cout列(需要解密一个字符串)。

2022-10-23 0:22:34

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索