【问题标题】:How can i create roles and put them on top?discord.py我如何创建角色并将它们放在首位? discord.py
【发布时间】:2021-05-24 23:00:09
【问题描述】:

我的机器人有一个名为 mute 的命令,基本上,它会创建一个角色并将其提供给该人,但问题是当它执行此操作时,具有更高角色的 ppl 仍然能够说话。如何将静音角色放在服务器中的每个角色之上?我的意思是在每台服务器中,而不仅仅是一个

【问题讨论】:

标签: python discord discord.py bots


【解决方案1】:

因此您不能将mute 角色置于机器人角色之上,但以下内容应该会有所帮助:

    @commands.command()
    async def mute(self, ctx, member: discord.Member):
        guild = ctx.guild
        role = await guild.create_role(name='muted', hoist=True)
        all_roles = await guild.fetch_roles()
        num_roles = len(all_roles)
        print(f'The server has {num_roles} roles.')
        await role.edit(reason=None, position=num_roles - 2)
        print('Created new role!')
        await member.add_roles(role)
        await ctx.send(f'{member} has been muted.)

所以我们所做的是检查服务器有多少个角色,创建一个新角色并将其放在机器人角色的顶部/下方。

【讨论】:

    【解决方案2】:

    如果您要将角色更改为低于顶部的位置,我建议使用 role.edit 方法,传递一个位置值。

    但是,至于您的问题,即在创建此角色后将角色置于顶部,您应该使用discord.Client.move_role()

    至于实际创建角色:

    如果你正在重写,使用这个

    guild = ctx.guild
    await guild.create_role(name="role name")
    

    并将“角色名称”更改为您要创建的角色的名称。如果你想根据用户所说的来扮演角色,你可以这样做:

    @client.command()
    async def rolecreate(ctx, arg):
       guild = ctx.guild
       await guild.create_role(name=arg)
    

    在这里,您必须这样做(假设您的前缀是!):“!rolecreate Moderator”,它只会创建一个角色。

    对于异步分支:

    author = ctx.message.author
    await client.create_role(author.server, name="role name")
    

    以防万一您希望机器人有一个添加角色的命令,您可以: 对于重写分支

    role = discord.utils.get(ctx.guild.roles, name="role to add name")
    user = ctx.message.author
    await user.add_roles(role)
    

    如果要添加命令中提到的角色,例如:

    @client.command()
    async def addrole(ctx, arg):
      role = discord.utils.get(ctx.guild.roles, name=arg)
      user = ctx.message.author
      await user.add_roles(role)
    

    对于异步分支:

    user = ctx.message.author
    role = discord.utils.get(user.server.roles, name="role to add name")
    await client.add_roles(user, role)
    

    希望这有帮助!

    【讨论】:

    • 不支持异步分支,甚至不工作,没必要给它举例子
    • @ŁukaszKwieciński oop- 抱歉我不知道,因为我主要使用重写
    猜你喜欢
    • 1970-01-01
    • 2021-05-05
    • 2018-06-21
    • 1970-01-01
    • 2020-09-13
    • 2021-05-15
    • 2021-08-05
    • 1970-01-01
    • 2013-12-11
    相关资源
    最近更新 更多