【问题标题】:How to have discord.js have someone add and remove role of someone else如何让 discord.js 有人添加和删除其他人的角色
【发布时间】:2021-05-04 02:50:08
【问题描述】:

所以最近 eli bot 在接下来的几天/月内无法使用,因为 eli 的所有者被禁止使用不和谐。我使用 eli 来监禁成员。所以我想在我的机器人上创建一个 jail 命令(添加一个 jail 角色并删除其他角色)和 unjail 命令(删除 jail 角色并添加回成员角色)。我已经搜索了整个互联网如何添加命令但找不到它。请帮助我,如果我的英语不好,我很抱歉

【问题讨论】:

  • 你有没有尝试过?你有什么问题?您是否尝试向提及的用户添加角色?你有什么代码可以在这里分享吗?这个问题目前太宽泛了,可能会被关闭。

标签: discord discord.js


【解决方案1】:

我正在编写与您的要求几乎相同的代码! 该代码使成员静音!这是什么意思 ?我的代码提供了一个名为“MUTED”的角色,并从成员那里获取我使用的主要角色!

const target = message.mentions.users.first();
        if (target) {
 
            let mainRole = message.guild.roles.cache.find(role => role.name === 'member');
            let muteRole = message.guild.roles.cache.find(role => role.name === 'mute');
 
            let memberTarget = message.guild.members.cache.get(target.id);
 
            if (!args[1]) {
                memberTarget.roles.remove(mainRole.id);
                memberTarget.roles.add(muteRole.id);
                message.channel.send(`<@${memberTarget.user.id}> has been muted`);
                return
            }
            memberTarget.roles.remove(mainRole.id);
            memberTarget.roles.add(muteRole.id);
            message.channel.send(`<@${memberTarget.user.id}> has been muted for ${ms(ms(args[1]))}`);
 
            setTimeout(function () {
                memberTarget.roles.remove(muteRole.id);
                memberTarget.roles.add(mainRole.id);
            }, ms(args[1]));
        } else {
            message.channel.send('Cant find that member!');
        }
    }
}

在第 3 行和第 4 行

let mainRole = message.guild.roles.cache.find(role => role.name === 'member');
            let muteRole = message.guild.roles.cache.find(role => role.name === 'mute');

意味着您需要一个主要角色为您的成员和一个您想成为“MUTE”的角色。 我的代码正在获取成员的权限。对我来说是一种惩罚方式!

“取消静音”命令是:

const target = message.mentions.users.first();
            if(target){
                let mainRole = message.guild.roles.cache.find(role => role.name === 'member');
                let muteRole = message.guild.roles.cache.find(role => role.name === 'mute');
     
                let memberTarget= message.guild.members.cache.get(target.id);
     
                memberTarget.roles.remove(muteRole.id);
                memberTarget.roles.add(mainRole.id);
                message.channel.send(`<@${memberTarget.user.id}> has been unmuted`);
            } else{
                message.channel.send('Cant find that member!');
            }
        }
    }

【讨论】:

  • 嘿,谢谢你的命令,它完全适用于入狱和出狱,但现在主要的问题是,我无法删除其他成员角色,比如如果我静音/监禁员工,员工角色仍然在那里并且没有被删除
  • 它只适用于主要角色!如果要在代码中添加更多角色,则需要更改代码: let mainRole = message.guild.roles.cache.find(role => role.name === 'member');让 mainRole = message.guild.roles.cache.get('roleID', 'roleID1' , 'roleID2');
  • 我已经按照你说的做了,但是它只删除了第一个角色,第二个和另一个角色留在那里没有被删除,我需要添加角色ID和编号吗?或者?,如果打扰您,我很抱歉,我还是编程新手。
  • 您需要设置另一个let let mainRole = message.guild.roles.cache.find(role =&gt; role.name === 'member'); 以获得更多角色并在线memberTarget.roles.remove(mainRole.id, mainRole1.id, mainRole2.id);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-10-24
  • 2020-11-21
  • 1970-01-01
  • 2021-03-14
  • 2021-09-17
  • 2020-01-04
  • 2020-08-24
相关资源
最近更新 更多