我很难在不和谐的角色中向用户添加角色,这是我的代码:
@bot.event
async def on_raw_reaction_add(reaction):
if reaction.message_id == message_id_here:
user = bot.get_user(reaction.user_id)
await user.add_roles(name='Members')
这是错误:
AttributeError:“用户”对象没有属性“ add_roles”
答案 0 :(得分:1)
该代码没什么问题。
首先,所有对象user
代表Discord用户(不与任何公会绑定),而对象member
与特定公会绑定。
一个用户可以在多个公会中,并且每个公会都拥有member
个对象。如果要在公会上获取数据,则需要 member
对象。
要添加角色,您需要在add_roles对象上调用member。
因此,与其获取user
对象,不如通过获取公会然后从其中获取成员来获取member
对象:
@bot.event
async def on_raw_reaction_add(reaction):
if reaction.message_id == message_id_here:
guild = bot.get_guild(reaction.guild_id)
member = guild.get_member(reaction.user_id)
await member.add_roles(...)
还要注意,add_roles具有角色对象,您不能仅传递name='Members'
。
如果您想从公会中找到该角色,请使用utils:
...
role = find(lambda r: r.name == 'Members', guild.roles)
await member.add_roles(role)
请注意,find
位于discord.utils.find
中。