我想制作一个在成员对消息做出反应时会向该成员添加角色的机器人。
@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'
答案 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")
这是一个有关如何从有效负载中获取所需属性的示例。
有关这两种方法及其签名的更多信息: