Discord.py如何从消息ID获取消息作者

时间:2020-09-13 03:47:44

标签: python discord discord.py payload

我是编程不和谐机器人的新手。我目前正在使用on_raw_reaction_add(payload)on_raw_reaction_remove(payload)来跟踪使用某种反应的次数。有没有办法让我从有效负载中获取消息作者或从payload.message_id中获取消息作者?

2 个答案:

答案 0 :(得分:2)

以上答案部分正确,您需要TextChannel.fetch_message()而不是Client.fetch_message()

msg = await bot.get_channel(payload.channel_id).fetch_message(payload.message_id)
author = msg.author

答案 1 :(得分:1)

我误读了文档。感谢@Poojan指出这一点。 要解决您从他们的答案中得到的错误,您需要等待命令。我认为这是因为fetch_message调用某种http请求,而不是从内存中复制信息。这意味着从请求到接收信息之间存在延迟,因此您需要使用关键字“ await”来等待它。

@bot.event
async def on_raw_reaction_add(payload):
    msg = await bot.get_channel(payload.channel_id).fetch_message(payload.message_id)
    author = msg.author
    print(author.display_name)

经过测试,它输出我的显示名称。作者是用户对象。