无法在我的 for 循环中使用 add_roles discord.py 重写
Posted
技术标签:
【中文标题】无法在我的 for 循环中使用 add_roles discord.py 重写【英文标题】:Can't use add_roles in my for loop discord.py rewrite 【发布时间】:2021-05-18 10:00:21 【问题描述】:我有一个命令,当被调用时,它将从 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\Tranquility\cogs\roles.py”,第 339 行,在 assignRolesByExp 等待 user.add_roles(role_name) 文件“C:\Users\johnj\AppData\Roaming\Python\Python38\site-packages\discord\member.py”,第 676 行,在 add_roles 等待请求(guild_id,user_id,role.id,reason=reason) AttributeError:“str”对象没有属性“id”
【问题讨论】:
【参考方案1】:您似乎将str
传递给Role
,而不是discord.py documentation 中定义的add_roles
。但是,如果不访问其余的源代码,就无法说明如何解决该问题,只需确保您将 Role
s 作为实际的 Role
对象而不是它们的字符串名称来检索。
【讨论】:
以上是关于无法在我的 for 循环中使用 add_roles discord.py 重写的主要内容,如果未能解决你的问题,请参考以下文章