【问题标题】:await member.remove_roles(member, role)等待 member.remove_roles(成员,角色)
【发布时间】:2020-07-02 19:57:02
【问题描述】:

我正在使用 discord.py 重写。我已经 3 天试图让这两行代码工作:

await member.remove_roles(tryMember, tryRole)
.
.
.
await member.add_roles(tryMember, tryRole)

这里是周围的代码,包括我的故障排除。我有用户 ID# 和角色 ID# 可以使用。这是一个后台进程。

memberList = []
    for member in guild.members:

    ...
    ... decide on one of 3 roles for the user as proposedRole.   # role ID number
    ...

    for roleID in (serverSettings["inactive_r"], serverSettings["active_r"], serverSettings["very_active_r"]):
 
        if roleID != proposedRole:       
           try:
                print (roleID)
                tryRole = discord.utils.find(lambda r: r.id == roleID, guild.roles)
                tryMember =  discord.utils.find(lambda m: m.id == member.id, guild.members)
                print (tryRole)    #only prints a member's name#number
                print (tryMember)  #only prints the role name

                await member.remove_roles(tryMember, tryRole)
                print (f'Removed {tryRole} from {tryMember} in {guild.name}')
            except Exception as e:
                print ('There was an error running this command: ' + str(e))

     ...  And repeat all this but adding the right role instead of removing the inocrrect roles

每个成员在 cosole 上打印的内容是:

709425978044186725      # the correct role ID
inactive                # the correct role name (I was expecting an object)
ArdenFutura#2469        # the correct member name (I was expecting an object)
There was an error running this command: 404 Not Found (error code: 10011): Unknown Role
                        # the e exception

664856898838855681      #aaaaand repeat...
active
ArdenFutura#2469
There was an error running this command: 404 Not Found (error code: 10011): Unknown Role
726974763649728593     
very active
ArdenFutura#2469
There was an error running this command: 404 Not Found (error code: 10011): Unknown Role

这两行代码我已经用了 3 天了。请帮忙。

【问题讨论】:

  • await member.remove_roles(tryMember, tryRole) 这意味着您正在尝试从member 中删除角色tryMembertryRole。如果您尝试从tryMember 中删除tryRole,那就是await tryMember.remove_roles(tryRole)

标签: discord.py-rewrite user-roles


【解决方案1】:

您可能会对 API 参考中的 older version 感到困惑。 remove_roles曾经带两个参数:

remove_roles(member, *roles)

但是,new documentation 声明只需要一个参数:

remove_roles(*roles, reason=None, atomic=True)

roles 扮演一个角色。如果您想删除多个角色,将传入列表前带有星号的角色列表 (remove_roles(*[roleOne, roleTwo]))。 reasonatomic 是 str 和 bool 类型的可选参数。

在您的情况下,您正试图从 tryMember 中删除 tryRole。结果是:

await tryMember.remove_roles(tryRole)

【讨论】:

  • hmmm...你知道,我觉得奇怪的是我使用member. 并再次指定一个成员对象。我回家后会试试这个。谢谢你们。
猜你喜欢
  • 2020-06-10
  • 1970-01-01
  • 1970-01-01
  • 2020-05-09
  • 2012-02-19
  • 2018-07-27
  • 2020-10-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多