我有一个命令,当被调用时,它将从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”
似乎您正在传递一个
str
,而不是discord.pydocumentation中定义的Role
到add_roles
。但是,要说如何在不访问其余源代码的情况下进行修复是不可能的,只需确保将Role
检索为实际的Role
对象,而不仅仅是它们的字符串名称相关问题 更多 >
编程相关推荐