【问题标题】:How to get discord bot (Python) to wait for embed url messages to have content?如何让不和谐机器人(Python)等待嵌入 url 消息有内容?
【发布时间】:2021-11-15 12:24:52
【问题描述】:

我目前正在设置一个机器人,它可以直接从共享的 twitter 链接发布图像。我让一切在技术上都能正常工作,但它有一个轻微的令人恼火的错误。要在discord频道发布图片,链接必须发布两次。

每次bot检测到一条消息,如果嵌入消息的长度大于0,它就会发布图像。问题是来自新链接的第一条嵌入消息的长度始终为0,但以下具有相同链接的消息将具有正确的消息嵌入长度。

代码块的开头如下所示:

@client.event
async def on_message(message):
    if message.author == client.user:
        return

    print(len(message.embeds))

    if len(message.embeds) > 0:
        # Do stuff    

所以重申一下,如果我从 Twitter 发送新的嵌入 url,长度将为 0。如果我再次发送消息,长度将正确大于 0。有没有办法让初始嵌入消息具有正确的长度还是等待消息的嵌入部分解决?

【问题讨论】:

    标签: python discord.py


    【解决方案1】:

    如果不知道 on_message 被调用的位置、message 的类型以及您的 @client.event 装饰器的作用(更完整的示例会有所帮助),这很难说,但您的问题可能来自事实上,您在代码中同时使用了同步和异步 (async) 函数。

    在第一次执行on_message 时,消息可能还不可用,但在第二次执行时可能会出现这种情况。你试过await吗?

    要了解 python 中 asyncawait 协程下发生的情况,我强烈建议 this article 不要以任何反模式运行。另一种方法是从您的代码的完全同步版本开始(没有任何async)来检查基本逻辑是否有效

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-06
      • 2021-04-30
      • 2019-04-11
      • 1970-01-01
      • 1970-01-01
      • 2021-04-14
      • 2021-03-22
      • 2018-05-02
      相关资源
      最近更新 更多