获取 MessageReference 对象的作者

Getting the author of MessageReference object

我的 Discord 机器人有一个命令需要检查 2 个 Discord 用户 ID:ctx.message.author.id 和“回复”消息的作者 ID。

获取第一个用户的 id 很容易,因为这只是使用命令的人的 id:

def check_two_ids(ctx):

    id1 = ctx.message.author.id
    # come other code

获得第二个 id 要困难得多,因为该命令仅在用作回复时才有效。所以我尝试使用 MessageReference 对象并以某种方式从中获取第二个 id 。这是我尝试过的:

def check_two_ids(ctx):

    id1 = ctx.message.author.id
    message_reference = ctx.message.reference
    id2 = message.reference.author.id
    # do some more stuff with these two ids

运行 此代码 returns 一个错误:AttributeError: 'MessageReference' object has no attribute 'author'。我认为这类似于具有这些参数的普通 Message 对象。

我可以通过这种方法获得第二个 ID 吗?

MessageReference 不直接具有作者属性的原因是因为它只是 isn't provided by Discord API. However under certain circumstances (when the reference is pointing to a reply), Discord API will provide the resolved message object for the reference which you can access with message.reference.resolved.

def check_two_ids(ctx):
    id1 = ctx.message.author.id
    message_reference = ctx.message.reference
    if not (message_reference and message_reference.resolved and
            isinstance(message_reference.resolved, discord.Message)):
        return
    id2 = message_reference.resolved.author.id

resolved 属性有一些注意事项:

  • 可能是 None,Discord API 无法获取它。
  • 算作DeletedReferencedMessage,引用已删除。