【问题标题】:Find role id by name discord rewrite通过名称不和谐重写查找角色ID
【发布时间】:2020-11-30 15:01:50
【问题描述】:

现在我正在为我的 discord 机器人创建一个以用户命名的角色,然后自动将其分配给该用户。我遇到的唯一问题是试图在不知道其 ID 的情况下将角色分配给所提及的人。 到目前为止我的命令:

@client.command(aliases = ["cmr", "CMR"])
@commands.has_permissions(manage_roles=True)
async def creatememberrole(ctx, *, member:discord.Member):
    author = ctx.message.author
    guild = ctx.guild
    print(author.display_name)
    await guild.create_role(name=str(member.display_name))
    await member.add_roles()
          #need help here ^

【问题讨论】:

    标签: python discord.py discord.py-rewrite


    【解决方案1】:

    utils.get可以轻松搞定,不需要for循环

    role = discord.utils.get(ctx.guild.roles, name=member.display_name)
    await member.add_roles(role)
    

    在您的情况下,不需要任何 for loop/utils.get,只需将 create_role() 方法分配给变量并使用该变量

    @client.command(aliases = ["cmr", "CMR"])
    @commands.has_permissions(manage_roles=True)
    async def creatememberrole(ctx, *, member:discord.Member):
        author = ctx.message.author
        guild = ctx.guild
        print(author.display_name)
        role = await guild.create_role(name=str(member.display_name))
        await member.add_roles(role)
    

    【讨论】:

    • 谢谢!之前的 for 循环确实让它变得更复杂了
    • 乐意随时提供帮助!
    【解决方案2】:

    您可以浏览所有角色的列表,找到您创建的角色并分配该角色。这是一个例子:

    for role in message.channel.guild.roles:
        if role.name == str(member.display_name):
            await member.add_roles(role)
    

    【讨论】:

      猜你喜欢
      • 2021-04-06
      • 2019-07-11
      • 2016-09-09
      • 2021-11-02
      • 2012-10-08
      • 2012-11-25
      • 2020-12-25
      • 2018-05-09
      • 2020-10-30
      相关资源
      最近更新 更多