【问题标题】:Assigning Roles to Players Discord Python为玩家分配角色 Discord Python
【发布时间】:2020-09-06 13:50:21
【问题描述】:

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

我编写的代码用于与 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

感谢任何能帮助我指明正确方向的帮助。

【问题讨论】:

    标签: discord discord.py


    【解决方案1】:

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

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

    【讨论】:

    • 让我更新我的代码,我现在可以获取用户,稍后检查我的更新
    • 是的,这对我有用,我必须先获得用户,这正是我所缺少的。成员id我已经知道了,但是大部分代码并没有告诉你用什么方法来获取成员值
    猜你喜欢
    • 2020-12-22
    • 2021-11-12
    • 2021-03-13
    • 2021-07-08
    • 2021-04-29
    • 1970-01-01
    • 2021-06-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多