【问题标题】:replace_roles discord.py really confusing?replace_roles discord.py 真的很混乱吗?
【发布时间】:2019-02-01 13:24:20
【问题描述】:

我不完全明白如何在 discord.py 中使用replace roles。我在互联网上到处搜索,但我似乎仍然无法弄清楚如何实现它。

我正在努力让用户可以自行分配角色,但一次只能有 1 个角色。例如,如果他们有 role "1" 并输入命令以获取 role "2",我希望机器人替换 role "1" 具有 role "2",因此它们应该只有 role "2"

我确保机器人角色在层次结构中高于我为人们分配的角色,并且机器人具有管理角色权限。我没有使用重写,我使用的是 python 3.6。

【问题讨论】:

    标签: python replace bots roles discord.py


    【解决方案1】:

    您只需将MemberRoles 传递给它,它就会用您传递的角色替换该成员的所有当前角色。

    @bot.command(pass_context=True)
    async def giverole(ctx, role: discord.Role):
        await bot.replace_roles(ctx.message.author, role)
    

    您可以使用 !giverole @RoleName 之类的名称来调用它。如果调用者的最高角色高于机器人的最高角色,这可能会导致discord.Forbidden 错误。

    【讨论】:

      【解决方案2】:

      Discord.py 有一个有用的函数 discord.utils.get(),它接受某种列表和您正在寻找的参数。例如,

      targetrole = discord.utils.get(myserver.roles, name="MyTargetRole")
      

      请注意,如果您通过 PM 更改用户的角色,则该消息不会向您提供服务器。您可以从 client.servers 以相同的方式获取服务器

      另请注意,通过 PM 将 message.author 传递给 replace_roles 将导致错误,因为该用户实例没有服务器。相反,从 server.members 中获取用户。您可以匹配 message.author 提供的名称。

      第三,注意replace_roles 是一个异步函数。您可能想在它之前添加“等待”,否则您可能看不到任何结果。

      【讨论】:

        猜你喜欢
        • 2021-02-25
        • 1970-01-01
        • 2020-12-10
        • 2015-09-19
        • 1970-01-01
        • 2012-04-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多