【问题标题】:how to make an event stop overlapping a command如何使事件停止与命令重叠
【发布时间】:2021-06-21 18:31:38
【问题描述】:

这个问题我已经有一段时间了,试图在一个文件中同时使用命令和事件。

我知道有一个名为 process_commands() 的函数,但机器人似乎没有这个函数。有什么我需要导入的吗? (除了 discord.ext 和命令)

代码图片:https://i.stack.imgur.com/Gdvj8.png

【问题讨论】:

  • 嗨,Mathe,欢迎来到堆栈溢出。您能否为您的问题添加一些上下文和细节?目前尚不清楚您在做什么(它是一个不和谐的机器人吗?),您正在尝试实现什么,或者代码以什么方式不起作用。此外 - 如果您将代码发布在代码块 (stackoverflow.com/editing-help#code) 中而不是链接图像中,这将更容易提供帮助。
  • 嘿西蒙。感谢您的评论!是的,它是一个不和谐的机器人,我试图将两个命令都放在一个文件中。我找到了一个解决方案,即在运行机器人时一次打开多个代码/文件。它似乎有点原始。你知道其他方法吗?

标签: python discord.py


【解决方案1】:

你应该在 on_message 事件的顶部添加await client.process_commands(message)

@client.event
async def on_message(message):
    await client.process_commands(message) 
    # do other stuff

你的命令中的message.send('...') 也不起作用,必须等待它,因为它是一个协程。 (Docs)

@client.command()
async def test(ctx): # ctx instead of message
    await ctx.send("test")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-02
    • 1970-01-01
    • 2019-07-15
    • 2011-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多