【发布时间】:2021-11-29 08:36:21
【问题描述】:
我已经搜索了几个小时的 stackoverflow 问题,但似乎无法弄清楚我哪里出错了。我正在尝试制作在用户获得“已验证”角色后删除“新手”角色的不和谐机器人。
@client.event
async def on_member_update(before, after):
if len(before.roles) < len(after.roles):
newRole = next(role for role in after.roles if role not in before.roles)
member = after.name
currentRoles = after.roles
if newRole.name == "verified":
removeRole = discord.utils.get(currentRoles, name="Newbie")
await member.remove_roles(removeRole)
我尝试了很多不同的组合,还搜索了discordpy,但似乎无法获得语法。
removeRole = <id>
removeRole = (id=<id>)
remove_role = get(after.roles, name="Newbie")
await member.remove_roles(<id>)
这是完整的错误
Ignoring exception in on_member_update
Traceback (most recent call last):
File "/usr/local/lib/python3.8/dist-packages/discord/client.py", line 343, in _run_event
await coro(*args, **kwargs)
File "security.py", line 117, in on_member_update
await member.remove_roles(removeRole)
AttributeError: 'str' object has no attribute 'remove_roles'
任何帮助将不胜感激!
【问题讨论】:
-
欢迎来到 Stack Overflow!您的代码中的问题是
member被定义为字符串,而不是实际的Member对象,因此没有属性为remove_roles。on_member_update事件已经为您提供了一个成员对象。因此,您现在可以将member定义为member = after并在 Member 对象上调用remove_roles。member.remove_roles(removeRole) -
感谢@Yeti 修复它!
标签: python discord discord.py attributeerror