命令删除所有角色并将特定角色添加到提到的用户

Posted

技术标签:

【中文标题】命令删除所有角色并将特定角色添加到提到的用户【英文标题】:Command to remove all roles and add specific role to mentioned user 【发布时间】:2020-12-19 09:13:34 【问题描述】:

我希望创建一个命令,其中提到的用户将删除其所有角色并添加一个特定角色。我在权限和公会语法方面遇到了一些困难。

我得到的当前代码是:

    name: 'megabean',
    description: 'makes Craig megabean people',
    execute(message, args)

        let guild = client.guilds.cache.get(guildId);
        
        message.channel.send(`$message.author has **MEGABEANED** $args [0]. Say goodbye to your perms
**Reason for MEGABEAN:** $args.splice(1).join(" ") `)
            .then(guild.roles.set([]))
            .then(guild.roles.add(['741934348273451032']))
    
                    
 

目前,虽然我已经定义了客户端 const client = new Discord.Client();在我的 main.js 文件中

我只是在寻找一些关于如何更好地完成这项任务的信息。抱歉,如果我似乎准备不足,到目前为止研究还没有让我走得太远......

【问题讨论】:

【参考方案1】:

这是因为您没有使用当前客户端而是创建一个新实例,我建议您将现有客户端作为函数参数传递给它(使用execute(message, args, client),您也可以再次登录此文件,但我'会小心,因为它可能会产生不必要的副作用。您还需要删除角色的帮助吗?

编辑:删除角色:

message.member.roles.remove(message.member.roles); //remove all
message.member.roles.add(message.guild.roles.cache.get("role ID here")); //add the specific role

就是这样。

【讨论】:

我肯定在寻求有关删除角色和为提到的用户添加角色的帮助。忘记添加客户端只是一个糟糕的错误。感谢您的帮助! @Bobfrog93 我对如何实现这一目标进行了编辑 感谢您再次帮助我。抱歉听起来很烦人,但代码似乎没有正确删除和添加 - 我正在寻找代码去 !command .@mention reason 然后让 .@mention 用户删除所有角色然后一个添加而不是调用命令的人改变了他们的角色。如果你想把这个留给我,那很好,只是不太确定如何完成。 在这种情况下,它适用于作者(message.member),如果您希望其他用户使用此功能,您可以使用message.guild.members.cache.get(message.mentions.users.first().id) 获取该成员(我知道它非常冗长)。你可以在 discord.js.org 上找到更多关于这方面的信息,官方文档可以在这里找到 你可以把它压缩成message.mentions.members.first()

以上是关于命令删除所有角色并将特定角色添加到提到的用户的主要内容,如果未能解决你的问题,请参考以下文章

Discord.js v12 角色添加到提到的用户问题

Discord.js - 删除所有包含角色的用户的命令

分配/删除不和谐角色

如何在discord bot上删除所有角色并添加一个角色,然后删除添加的角色并恢复以前的角色

从用户中删除角色,然后将它们添加回 Discord.py(使用 Repl.it)

Discord.js 将特定角色添加到数组