当前位置: 首页 > 知识库问答 >
问题:

给玩家分配角色不和谐Python

姚建树
2023-03-14

我在使用我创建的bot为html" target="_blank">服务器中的不协调用户分配角色时遇到问题。

我编写的代码是用于与FaceIT交互的,它工作得很好,但我希望能够根据一个用户进行了多少次匹配来分配角色。

通过我的代码,我知道discord用户的ID,因为它们存储在配置文件中,配置被加载到一个名为server\u config

运行代码时,出现以下错误:

不一致外部命令。错误。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的答案是使用等待client.add_roles(......),但我也会遇到类似的异常抛出像Bot没有属性add_roles

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

共有1个答案

孟佑运
2023-03-14

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

await member.add_roles(discord.utils.get(gzk_srvr.roles, name="Role Name"))
 类似资料:
  • 我对Android/Java编程比较陌生。我正在创建一个基于文本的社交游戏,并创建了一个包含ID、名称和角色的SQLite数据库。 角色将由应用程序分配并存储在相关的SQLite表中。 由于角色是随机的,我想也许一个随机数生成器从1-7(2个独特的角色,2个相同的角色和3个相同的角色) 我被困在哪里开始和如何实现此功能,任何帮助/建议将不胜感激。

  • 我对用JavaScript编码非常陌生,我正在尝试为我计划在不和谐服务器中的事件创建一个非常简单的机器人。 基本上,如果所提到的成员在数组中没有角色集,那么它应该做的就是将角色分配给所提到的成员(仅第一个成员)。 虽然代码本身不会抛出任何错误(机器人登录并打印就绪状态),但每当我试图召唤机器人时,它都不会做任何事情。我认为我的技能不够好,不能自己解决这个问题,所以任何帮助都将受到高度赞赏!谢谢!

  • 我正在做一个RPG游戏,但是,我现在有一个错误。玩家的角色可以在所有四个基本方向上移动,但如果你向右、向上或向下移动,玩家就会被卡住。 此外,这个错误似乎有一定的逻辑性: 如果向下移动,角色将卡在向下移动的循环中 除非按下向上箭头,否则玩家将开始一个新的向上无限循环 除非按下向右箭头,否则玩家将开始一个新的向右无限循环 所以权利似乎优先于上,而上优先于下。 奇怪的是,向左移动工作得很完美,即使当角

  • 我试图让我的Meeseeks机器人为我的个人服务器分配和删除不和谐的角色。我对特殊的方法和命令不太熟悉,我也没有找到它! 这是我现在的代码; 我正在努力让机器人回复“先生”Meeseeks,我需要帮助”与标题角色列表(这些角色没有等级目的,也不会与在线成员分开出现!)你可以选择,并适用于自己。我也希望他能够让自己脱离一个角色。 例如,我想到的是性别代词的角色(即“她/她”或“他/他”),这样当在服

  • 我正在尝试使用discord删除已创建的角色,该角色使用的是。js。 终端中的错误显示: DiscordAPIError:缺少权限 虽然我已经给了我的机器人所有权限。 代码:

  • Bot只是不工作:/Bot没有给出任何错误