我目前正在设置一个机器人,直接从一个共享的twitter链接发布图像。我在技术上让一切正常工作,但它有一个稍微令人恼火的bug。对于要在discord通道中发布的图像,该链接必须发布两次。
每当机器人检测到一条消息时,如果嵌入消息的长度大于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。有没有办法让初始嵌入消息具有正确的长度,或者等待消息的嵌入部分解析?
发布于 2021-09-22 02:59:15
如果不知道on_message在哪里被调用,message的类型是什么,或者你的@client.event装饰器做了什么(一个更完整的例子会有所帮助),这就有点难说了,但你的问题可能来自于你在代码中同时使用了同步和异步(async)函数。
情况可能是,在第一次执行on_message消息时,消息还不可用,但在第二次执行时就可用。你有没有试着用await获取它?
为了理解在python中的async和await协程下发生了什么,我强烈建议this article不要在任何反模式下运行。另一种方法是从代码的完全同步版本(没有任何async)开始,以检查基本逻辑是否正常工作
https://stackoverflow.com/questions/69277389
复制相似问题