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

Categories

0 votes
865 views
in Technique[技术] by (71.8m points)

discord.js - I'm having problems with combining these two codes together:

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

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

1 Answer

0 votes
by (71.8m points)

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...