alvin0319
alvin0319

Reputation: 31

Discord.js Missing permissions error when assign role

if (message.content.startsWith("_mute")) {
    if (!message.member.hasPermission("ADMINISTRATOR")) {
        return message.reply("You don't have permission to do this.");
    }
    if (message.mentions.users.size === 0) {
        return message.reply("Usage: `_mute [mention]`");
    }

    var muteRole = message.guild.roles.cache.find(r => r.name === "mute");

    if (typeof muteRole === "undefined") {
        return message.reply("Your server doesn't have `mute` role!");
    }

    message.mentions.members.forEach((member) => {
        member.roles.add(muteRole).then((value) => {
            message.reply("Succeed to mute " + member.nickname + ".");
        }).catch((error) => {
            message.reply("Internal bot error");
            console.error(error);
        });
    });
}

I got this error when I tried to assign role to user.

I set up bot's permission number to '1409286326'

Is there anything else I need to do?

Permission

Upvotes: 1

Views: 328

Answers (1)

Mineko Kayui
Mineko Kayui

Reputation: 761

Try using this permission number: 1475677686
It's probably because you were missing some important permissions such as READ_MESSAGES, SEND_MESSAGES and others. Also, your code might need a little revision, undefined is not a string. Try the code below and the suggested permission number:

if (message.content.startsWith("_mute")) {
    if (!message.member.hasPermission("ADMINISTRATOR")) {
        return message.reply("You don't have permission to do this.");
    }
    if (!message.mentions.users.array().length) {
        return message.reply("Usage: `_mute [mention]`");
    }

    var muteRole = message.guild.roles.cache.find(r => r.name === "mute");

    if (!muteRole) {
        return message.reply("Your server doesn't have `mute` role!");
    }

    message.mentions.members.forEach((member) => {
        member.roles.add(muteRole).then((value) => {
            message.reply("Succeed to mute " + member.nickname + ".");
        }).catch((error) => {
            message.reply("Internal bot error");
            console.error(error);
        });
    });
}

Upvotes: 1

Related Questions