我在discord.js定时静音命令中的removeRole中遇到了问题(removeRole不是函数)

时间:2020-03-04 10:26:01

标签: javascript discord discord.js

删除角色错误 我的代码:

    bot.on('message', message => {
    let prefix = "t?";

    let args = message.content.substring(prefix.length).split(" ");

    switch (args[0]) {
        case 'mute':
        let person = message.mentions.users.first(); message.guild.members.fetch(args[1])
        if(!person) return message.reply("couldnt find member");

        let mainrole = message.guild.fetch(role => role.name === "member");
        let muterole = message.guild.fetch(role => role.name === "muted");

        if(!muterole) return message.reply("couldn't find mute role");

        let time = (args[2]);

        if(!time) {
            return message.reply("how long? <:Thonk:582005026470363137>");
        }

        person.removeRole(mainrole.id);
        person.addRole(muterole.id);

        channel.send(`@${person.user.tag} has now been muted for ${ms(ms(time))}`);

        setTimeout(function(){
            person.addRole(mainrole.id);
            person.removeRole(muterole.id);
            message.channel.send(`@${person.user.tag} has been unmuted.`);
        }, ms(time));




        break;
    }
});

,它弹出并显示错误提示“删除角色不是函数” 有谁知道如何不和谐地解决这类问题

1 个答案:

答案 0 :(得分:0)

您将GuildMemberUser混淆了。

用户是不和谐的人,GuildMemebr是与特定公会有关的不和谐的人。例如,您可以向用户或公会成员DM,因为直接消息与公会无关,但是您不能从用户中删除角色,因为用户与公会没有关联,没有要删除的角色。

因此,您需要获取message.mentions.members而不是message.mentions.users

此文档位于MessageMentions