分配/删除不和谐角色

Posted

技术标签:

【中文标题】分配/删除不和谐角色【英文标题】:Assigning/deleting discord roles 【发布时间】:2021-10-19 06:52:24 【问题描述】:

我的编码很糟糕,所以我需要一些帮助。

我希望机器人在我命令它这样做时分配/删除用户的角色。有人可以帮我写一个简单的代码让我这样做吗?

我需要的是:命令:/role user role,为提到的用户分配提到的角色。

其他方式相同:命令:/delrole user role,从提及的用户中删除提及的角色。 (假设该人已经拥有该角色)

例如/role member: test role: admin(分配 Test Admin 角色)

例如/delrole member: test role: admin(从 Test 中删除 Admin 角色)


希望你能帮忙!

谢谢,佩皮恩·科伦布兰德

【问题讨论】:

欢迎您,SO 不是免费的代码编写服务,在向 SO 提问之前,您应该尝试自己解决问题。向我们展示您迄今为止所做的尝试,我们可以为您提供帮助。更多信息请见here。 How much research effort is expected of Stack Overflow users? 【参考方案1】:

你可以这样做:

import discord
from discord.ext import commands

class ConfigureRoles(commands.Cog):
    def __init__(self, bot):
        self.bot = bot

    @commands.command(name="role")
    @commands.bot_has_permissions(manage_roles=True)
    @commands.has_permissions(manage_roles=True, manage_guild=True)
    async def role_creation(self, ctx, users:commands.Greedy[discord.Member], *, role:commands.Greedy[discord.Role]):
        if not len(users): #Check if author sent users
            await ctx.send("One or more required arguments are missing.")
        else:
            for user in users: #You can mention multiple users
                if not role in user.roles: #Check if user doesn't have specified role already
                    if (ctx.guild.me.top_role.position > user.top_role.position #Check to make sure you have perms
                            and not user.guild_permissions.administrator):
                        await user.add_roles(role) #Adds role

    @commands.command(name="delrole")
    @commands.bot_has_permissions(manage_roles=True)
    @commands.has_permissions(manage_roles=True, manage_guild=True)
    async def role_deletion(self, ctx, users: commands.Greedy[discord.Member], *, role: commands.Greedy[discord.Role]):
        if not len(users):  # Check if author sent users
            await ctx.send("One or more required arguments are missing.")
        else:
            for user in users:  # You can mention multiple users
                if role in user.roles:  # Check if user has specified role
                    if (ctx.guild.me.top_role.position > user.top_role.position  # Check to make sure you have perms
                            and not user.guild_permissions.administrator):
                        await user.remove_roles(role)  # Removes role
         

def setup(bot):
    bot.add_cog(ConfigureRoles(bot))

【讨论】:

【参考方案2】:

只需使用它来分配角色:

await user.add_roles(role)

并使用它来删除角色:

await user.remove_roles(role)

user: discord.Member定义user

【讨论】:

以上是关于分配/删除不和谐角色的主要内容,如果未能解决你的问题,请参考以下文章

关于新角色不和谐的消息[关闭]

想要一个检测自定义状态并赋予此人不和谐角色的代码

Rails - Role_Model,删除分配给用户的角色

NotFound:404 未找到(错误代码:10011):未知角色

权限控制:分配权限1

分配后角色被删除