无法在我的for loop discord.py重写中使用添加_角色

2024-05-08 21:13:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个命令,当被调用时,它将从mongodb集合中获取一个用户ID列表,从不同的mongodb集合中获取一个角色名称列表,然后通过这些列表查看哪些角色需要分配给哪些ID

我可以让它打印出需要角色的正确ID,但我无法通过实际分配角色的最后一步

    @commands.command(
        name='assignRolesByExp',
        aliases =['arbe'],
        description="Assign all members roles based on their Exp Points",
        #usage='[Role Name]',
    )
    @commands.has_permissions(administrator=True)
    async def assignRolesByExp(self, ctx):
        people = await self.bot.expAcc.get_all()


        roles = await self.bot.stockroles.get_all()
        filtered_roles=[]
        for i in roles:
            if i["expRequired"]>0:
                filtered_roles.append(i)

        for i in filtered_roles:
            roll_to_add = []
            role_name = i["_id"]
            role_exp_required = i["expRequired"]
            #print(role_name)
            for i in people:
                if i["expValue"]>= role_exp_required:
                    roll_to_add.append(i["_id"])
            
            for i in roll_to_add:
                user= ctx.guild.get_member(i)
                await user.add_roles(role_name)

我得到的错误是: 文件“D:\WORK\DISCORD BOT\宁静\cogs\roles.py”,第339行,在assignRolesByExp中 等待用户。添加角色(角色名称) 文件“C:\Users\johnj\AppData\Roaming\Python38\site packages\discord\member.py”,第676行,位于add\u角色中 等待请求(公会id、用户id、角色id、原因=原因) AttributeError:“str”对象没有属性“id”


Tags: 用户nameinselfaddid角色列表
1条回答
网友
1楼 · 发布于 2024-05-08 21:13:43

似乎您正在传递一个str,而不是discord.pydocumentation中定义的Roleadd_roles。但是,要说如何在不访问其余源代码的情况下进行修复是不可能的,只需确保将Role检索为实际的Role对象,而不仅仅是它们的字符串名称

相关问题 更多 >

    热门问题