【问题标题】:Discord community bot for our FiveM server that handles the discord roles用于处理不和谐角色的 FiveM 服务器的不和谐社区机器人
【发布时间】:2020-04-19 06:25:36
【问题描述】:

我正在尝试为处理不和谐角色的 FiveM 服务器创建不和谐社区机器人。 我希望机器人限制那个 ROLECHANNEL,所以只能发布角色命令。我想删除其他垃圾,以便频道保持干净。

命令正在运行并分配了角色,但机器人也会触发message.reply('Wrong role, type ' + prefix +'roles'); 为什么?

client.on('message', message => {

if (message.channel.id === ROLECHANNEL) {
    if (message.author.bot) return;

    if (!message.content.includes("fivem", "ark", "arma3", "roles", "stream",)) {
        message.delete([1]);
        message.reply('Wrong role, type ' + prefix +'roles');
    }
    if(message.content.startsWith(prefix + "fivem")){
        message.delete([1]);
        let fivemrole = message.member.guild.roles.find("name", "fivem");
        message.member.addRole(fivemrole);
        message.channel.send('Gives ' + message.author + ' fivem role...');

    }
    if(message.content.startsWith(prefix + "arma3")){
        message.delete([1])
        let armarole = message.member.guild.roles.find("name", "Arma3");
        message.member.addRole(armarole);
        message.channel.send('Gives ' + message.author + ' Arma3 role...');

    }
    if(message.content.startsWith(prefix + "ark")){
        message.delete([1]);
        let arkrole = message.member.guild.roles.find("name", "Ark");
        message.member.addRole(arkrole);
        message.channel.send('Gives ' + message.author + ' Ark role...');

    }
    if(message.content.startsWith(prefix + "stream")){
        message.delete([1]);
        let streamerrole = message.member.guild.roles.find("name", "Streamer");
        message.member.addRole(streamerrole);
        message.channel.send('Gives ' + message.author + ' Streamer role...');

    }
    if (message.content.startsWith(prefix + "roles")) {
        message.delete([1]);
        message.channel.send('Help: ' + message.author + ' roles are. ' + roles);
    }
};

【问题讨论】:

    标签: discord discord.js


    【解决方案1】:

    你在这部分的问题!message.content.includes("fivem", "ark", "arma3", "roles", "stream",) 因为消息包含只听第一个参数“fivem”,你需要在你的代码中添加 or

    V2

    作为拳头变体:

    if(!message.content.includes("fivem") && !message.content.includes("ark") && !message.content.includes("arma3"))
    

    或者你可以设置允许的变量数组并检查它

        let allowedCommands = ["fivem", "ark", "arma3", "roles", "stream"]
    if (!allowedCommands.find(command => message.content.indexOf(command) !== -1)) {
        message.delete([1]);
        message.reply('Wrong role, type ' + prefix +'roles');
    }
    

    【讨论】:

    • if (!message.content.includes("fivem" || "ark" || "arma3" || "roles" || "stream",)) 喜欢吗?
    • 我在回答中写了一些例子:)
    • 非常感谢,这是一个很好的解决方法。解决了问题。
    • 很高兴为您提供帮助 :)
    猜你喜欢
    • 2019-02-02
    • 2020-12-15
    • 1970-01-01
    • 2018-03-20
    • 1970-01-01
    • 2021-01-06
    • 2021-10-21
    • 1970-01-01
    • 2021-01-22
    相关资源
    最近更新 更多