为玩家分配角色Discord Python

时间:2020-05-20 08:54:10

标签: discord discord.py

在使用我创建的机器人在服务器中为不和谐的用户分配角色时,我遇到了问题。

我编写的代码用于与FaceIT进行交互,效果很好,但是我希望能够根据用户玩过多少次比赛来分配角色。

通过我的代码,我知道不和谐用户的ID,因为它们存储在配置文件中,并且该配置已加载到名为server_config的数组中

运行代码时,出现此错误:

discord.ext.commands.errors.CommandInvokeError:命令引发了异常:AttributeError:'Guild'对象没有属性'add_roles'

这是我下面的代码段

@client.command(aliases=["lvl"])
async def assignLvl(ctx):
    global server_config 

    players = server_config[str(ctx.guild.id)]['players']

    # Making sure the server is registered
    check_server(ctx)
    .
    .
    .      this part gets FACEIT data and works
    .
    .
    .
    gzk_srvr = ctx.guild
    for item in hub_data:

        for key in players: 
            if players[key] == item['nickname']:
                if int(item['stats']['Matches']) >= 1 and int(item['stats']['Matches']) < 5:
                    role = get(gzk_srvr.roles, name="First Scrim Attendee")
                    user = gzk_srvr.get_member(int(key))
                    await gzk_srvr.add_roles(players[key], role)

                if int(item['stats']['Matches']) >= 5 and int(item['stats']['Matches']) < 15:
                     role = get(gzk_srvr.roles, name="Lvl 1 Scrimmer")
                     user = gzk_srvr.get_member(int(key))
                     await gzk_srvr.add_roles(players[key], role)

                if int(item['stats']['Matches']) >= 15 and int(item['stats']['Matches']) < 30:
                     role = get(gzk_srvr.roles, name="Lvl 2 Scrimmer")
                     user = gzk_srvr.get_member(int(key))
                     await gzk_srvr.add_roles(players[key], role)

                if int(item['stats']['Matches']) >= 30:
                    role = get(gzk_srvr.roles, name="Lvl 3 Scrimmer")
                    user = gzk_srvr.get_member(int(key))
                    await gzk_srvr.add_roles(players[key], role)

我已经看到了一些问题和答案,并尝试实现它们,例如,OP的答案将是使用await client.add_roles(.....),但也会引发类似的异常 像Bot has no attribute add_roles

我很高兴能为我指出正确的方向。

1 个答案:

答案 0 :(得分:1)

您需要将角色添加到成员。要获得公会的角色,可以使用discord.utils.get

await member.add_roles(discord.utils.get(gzk_srvr.roles, name="Role Name"))