如何获取用户正在响应[discord.py]的消息的ID?

时间:2020-10-16 23:37:17

标签: python discord bots discord.py

所以我想为我的哇公会写一个考勤机器人,当使用命令时会:

  • 基于该命令[raid_type,角色,日期]发送消息
  • 使用表示每个角色的表情符号来响应该消息[dps,治疗者,坦克] 根据反应,它还会在Google电子表格中添加对该消息做出反应的人员的姓名和角色。

虽然我认为我已经确定了对僵尸程序消息的增加反应,并且实际上将数据存储在电子表格中,但我不知道如何使只有对僵尸程序发送的特定消息的反应才有意义。现在,如果您对整个服务器上的任何消息做出回应(例如负责'dps'的emoji_1),则bot也会将您添加到电子表格中。

因此,我的问题是,如何引用用户正在响应的消息?

这是代码的一部分:

@client.command(aliases=["nraid", "newboost"])
async def newraid(ctx, boost_type, date, *, message):
    mes = f"sign up for {boost_type} on {date}. Additional info: \n{message}"
    await ctx.send(mes)

    channel = ctx.channel
    embed = discord.Embed(title="A wild raid has appeared!",
                          description=f"sign up for {boost_type} on {date}. Additional info: \n{message}",
                          color=discord.Color.purple())
    message_ = await channel.send(embed=embed)
    global message_id
    message_id = message_.id
    await message_.add_reaction("?")  # dps
    await message_.add_reaction("?️")  # tank
    await message_.add_reaction("?")  # healer

num = 0
rownum = 1
@client.event
async def on_reaction_add(reaction, user):
     if not user.bot:

这是我不知道的部分-如何获取用户正在响应的消息的ID并将其与机器人发送的消息的ID进行比较。

    if message_id == user.message.id:

        if reaction.emoji == ['?']:
            global num, rownum
            discord_name = user.display_name
            role = 'dps'
            num += 1
            rownum += 1
            can_attend = 'yes'
            newrow = [num, discord_name, role, can_attend]
            sheet.insert_row(newrow, rownum)

如果答案真的很简单,我不会感到惊讶,但是我必须承认,我刚刚学习了python,并且很多东西(例如阅读API的文档,分析某人的代码)有时会很困难,并且有些YouTube上的指南不再详述。任何帮助都非常感激:)

1 个答案:

答案 0 :(得分:0)

您只需键入reaction.message.id