当我对邮件做出反应时,Bot不想添加角色

时间:2020-10-08 12:23:05

标签: python python-3.x discord.py

我想制作一个在成员对消息做出反应时会向该成员添加角色的机器人。

@client.event
async def on_raw_reaction_add(reaction, member: discord.Member):
    ChID = '678640775747076097'
    if reaction.message != ChID:
        await member.send("Nope")
        return
    else:
        if member.reaction.emoji == ":white_check_mark:":
            Role = discord.utils.get(member.server.roles, id="672473925053055036")
            await client.add_roles(member, Role)
            await user.send("Success")

当我对消息作出反应时,出现此错误:

TypeError: on_raw_reaction_add() missing 1 required positional argument: 'member'

1 个答案:

答案 0 :(得分:2)

这是因为on_raw_reaction_add函数不应期望接收member参数,而只能接收payload: discord.RawReactionActionEvent参数。

尝试一下:

@client.event
async def on_raw_reaction_add(payload):
    reaction_message_id = payload.message_id
    member = payload.member
    ChID = '678640775747076097'
    if reaction_message_id != ChID:
        await member.send("Nope")
        return
    else:
        if member.reaction.emoji == ":white_check_mark:":
            Role = discord.utils.get(member.server.roles, id="672473925053055036")
            await client.add_roles(member, Role)
            await user.send("Success")

这是一个有关如何从有效负载中获取所需属性的示例。

有关这两种方法及其签名的更多信息: