我在将这两个代码组合在一起时遇到问题:

时间:2021-01-27 09:30:00

标签: discord.js

这是我尝试过的:它只执行第一个。

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);
    }
});

我是 js 新手,我需要帮助将这两个代码组合在一起。 我想要做的就是使用命令的人需要扮演某些角色,以便像成员一样...... 不能使用静音命令。

1 个答案:

答案 0 :(得分:0)

是的,您可以这样做,您只想先找到角色,然后在调用 .execute(message, args); 之前运行 if 语句以检查用户是否具有此角色

可以这样做:

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");
        }
    }
});

您应该避免对同一事件使用多个侦听器,而只使用一个。另请注意,如果消息是在 DM 中发送的,则 member 中将没有 message 对象