【问题标题】:Removing and adding roles mute command删除和添加角色静音命令
【发布时间】:2021-05-14 03:19:13
【问题描述】:

我一直在做这个静音命令,主要的是,它只是删除了主要角色。我希望它删除所有角色,只删除静音角色,然后再次取消静音角色。 这是我尝试过的:

module.exports = {
    name: `jail`,
    description: "this is jail command!",
    execute(message, args){
        
        const member = message.mentions.users.first();
        if(member){
            const memberTarget = message.guild.members.cache.get(member.id);{
                if (!message.member.hasPermission("MANAGE_MESSAGES")) return message.channel.send("You cant jail person because you are not staff/co owner/owner");
            }
            let mainRole = message.guild.roles.cache.get(`791144820810842163` , `794825576602533898` , `791144908240060426` , `791144966474563624` , `791145298072305685` , `791145926344966185` , `791146191336505414` , `791146355552682034` , `792565793568587796` , `795357387794939904` , `795358283623432213` , `798804993468530699` , `791146747367653387`)
            let muteRole = message.guild.roles.cache.find(role => role.name === 'Jailed'); 
 
            if (!args[1]) {
                memberTarget.roles.remove(`791144820810842163` , `794825576602533898` , `791144908240060426` , `791144966474563624` , `791145298072305685` , `791145926344966185` , `791146191336505414` , `791146355552682034` , `792565793568587796` , `795357387794939904` , `795358283623432213` , `798804993468530699` , `791146747367653387`);
                memberTarget.roles.add(muteRole.id);
                message.channel.send(`<@${memberTarget.user.id}> has been Jailed`);
                return
            }
            memberTarget.roles.remove(`791144820810842163` , `794825576602533898` , `791144908240060426` , `791144966474563624` , `791145298072305685` , `791145926344966185` , `791146191336505414` , `791146355552682034` , `792565793568587796` , `795357387794939904` , `795358283623432213` , `798804993468530699` , `791146747367653387`);
            memberTarget.roles.add(muteRole.id);
            message.channel.send(`<@${memberTarget.user.id}> has been Jailed for ${(ms(args[1]))}`);
 
            setTimeout(function () {
                memberTarget.roles.remove(muteRole.id);
                memberTarget.roles.add(`791144820810842163` , `794825576602533898` , `791144908240060426` , `791144966474563624` , `791145298072305685` , `791145926344966185` , `791146191336505414` , `791146355552682034` , `792565793568587796` , `795357387794939904` , `795358283623432213` , `798804993468530699` , `791146747367653387`);
            }, ms(args[1]));
        } else{
            message.channel.send('Cant find that member!');
        }let cachedUserRoles = {};

        }
    }

【问题讨论】:

    标签: discord.js


    【解决方案1】:

    message.guild.roles.cache.getmemberTarget.roles.removememberTarget.roles.add 不支持多个参数。您需要先将角色添加到列表中,然后对其进行迭代。

    const mainRoles = [`791144820810842163` , `794825576602533898` , `791144908240060426` , `791144966474563624` , `791145298072305685` , `791145926344966185` , `791146191336505414` , `791146355552682034` , `792565793568587796` , `795357387794939904` , `795358283623432213` , `798804993468530699` , `791146747367653387`];
    module.exports = {
        name: `jail`,
        description: "this is jail command!",
        execute(message, args){
            
            const member = message.mentions.users.first();
            if(member){
                const memberTarget = message.guild.members.cache.get(member.id);{
                    if (!message.member.hasPermission("MANAGE_MESSAGES")) return message.channel.send("You cant jail person because you are not staff/co owner/owner");
                }
                let muteRole = message.guild.roles.cache.find(role => role.name === 'Jailed'); 
     
                if (!args[1]) {
                    mainRoles.forEach(roleId => memberTarget.roles.remove(roleId));
                    memberTarget.roles.add(muteRole.id);
                    message.channel.send(`<@${memberTarget.user.id}> has been Jailed`);
                    return
                }
                mainRoles.forEach(roleId => memberTarget.roles.remove(roleId));
                memberTarget.roles.add(muteRole.id);
                message.channel.send(`<@${memberTarget.user.id}> has been Jailed for ${(ms(args[1]))}`);
     
                setTimeout(function () {
                    memberTarget.roles.remove(muteRole.id);
                    mainRoles.forEach(roleId => memberTarget.roles.add(roleId));
                }, ms(args[1]));
            } else{
                message.channel.send('Cant find that member!');
            }let cachedUserRoles = {};
    
            }
        }
    

    【讨论】:

    • 所以如果我想取消静音并找回角色,我只需要将 const mainroles 添加到取消静音命令中?
    • @AnArWi 是的。最好有一个要导出的文件mainRoles,这样您就只有一份 id 需要处理。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 2021-07-06
    • 2023-03-30
    • 1970-01-01
    • 2021-09-19
    • 2020-09-26
    • 1970-01-01
    相关资源
    最近更新 更多