如何在不和中添加角色?

时间:2019-12-08 15:29:17

标签: python discord discord.py

我很难在不和谐的角色中向用户添加角色,这是我的代码:

@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”

1 个答案:

答案 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中。