Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

This is what I have tried: It only executes the first one.

client.on('message', message => {
    if (!message.content.startsWith(prefix) || message.author.bot) return;
    const roleName = message.member.roles.cache.find(r => r.name === "Owner")
    if (roleName) {
        return message.reply("Pog")
    } else {
        return message.reply("Sorry, an error occured.")
    }
});

client.on('message', message => {
    if (!message.content.startsWith(prefix) || message.author.bot) return;

    const args = message.content.slice(prefix.length).split(/ +/);
    const command = args.shift().toLowerCase();

    if (command === 'ping') {
        client.commands.get('ping').execute(message, args);
    } else if (command == 'youtube') {
        client.commands.get('youtube').execute(message, args);
    } else if (command == 'clear') {
        client.commands.get('clear').execute(message, args);
    } else if (command == 'mute') {
        client.commands.get('mute').execute(message, args);
    } else if (command == 'unmute') {
        client.commands.get('unmute').execute(message, args);
    }
});

I'm new to js and I need help with combining these two codes together. All I want to do is that the person using command needs to heve certan role, so that like members ... can't use the mute command.

question from:https://stackoverflow.com/questions/65916291/im-having-problems-with-combining-these-two-codes-together

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
884 views
Welcome To Ask or Share your Answers For Others

1 Answer

Yes you can do this, you just want to find the role first and then run an if statement to check if the user has this role before calling .execute(message, args);

This can be done like this:

client.on('message', message => {
    if (!message.content.startsWith(prefix) || message.author.bot) return;

    const args = message.content.slice(prefix.length).split(/ +/);
    const command = args.shift().toLowerCase();

    if (command === 'ping') {
        client.commands.get('ping').execute(message, args);
    } else if (command == 'youtube') {
        client.commands.get('youtube').execute(message, args);
    } else if (command == 'clear') {
        client.commands.get('clear').execute(message, args);
    } else if (command == 'mute') {
        if (message.member.roles.cache.some(role => role.name == "Owner")) {
            client.commands.get('mute').execute(message, args);
        } else {
            message.reply("You are unable to use this command");
        }
    } else if (command == 'unmute') {
        if (message.member.roles.cache.some(role => role.name == "Owner")) {
            client.commands.get('unmute').execute(message, args);
        } else {
            message.reply("You are unable to use this command");
        }
    }
});

You should avoid having multiple listeners for the same event and just use one. Also, note that there will be no member object in message if the message was sent in a DM


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...