使用args运行命令后,Discord Bot意外返回“无效命令”错误消息

时间:2019-12-13 10:41:11

标签: node.js discord discord.js

我最近开始学习如何使用Discord的JavaScript库。我开始制作我的机器人,并将所有命令和配置都放在同一个JSON文件中。在我决定添加带有args的命令之前,它一直工作正常。

index.js:

const Discord = require('discord.js')
const client = new Discord.Client()

const { prefix, token, commands } = require('./config.json')

client.once('ready', function () {
    console.log('Ready')
})

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

    const args = message.content.slice(prefix.length).split(' ');
    const cmd = args.shift().toLowerCase();

    if (args.length === 0) {
        for (let i = 0; i < commands.simple.length; i++) {
            if (cmd === commands.simple[i][0])
                message.channel.send(commands.simple[i][1])
        }
    } 

    else {
        for (let i = 0; i < commands.long.length; i++) {
            if (cmd === commands.long[i].name) {
                if (args === commands.long[i].request) {
                    message.channel.send(cmd.long[i].response)
                }
                else message.channel.send(':x: Invalid command')
            }
            else message.channel.send(':x: Invalid command')
        }
    }
});

client.login(token)

config.json:

{
    "prefix": ";",
    "token": "NjU0Njc2OTA2NzMzNDY5Njk2.XfJdLA.89UKAGZV5VztnwbVTqeL9z3W5os",
    "commands": {
        "simple": [
            ["ping", "Pong"],
            ["hello", "Hello"],
            ["invite", "https://discordapp.com/oauth2?client_id=654676906733469696&scope=bot&permissions=8"]
        ],
        "long": [
            {
                "name":"formula",
                "request": [
                    "velocity",
                    "momentum",
                    "momentum-rel"
                ],
                "response": [
                    "v = d/t",
                    "p = mv",
                    "p = 1 / sqrt( 1 - (v^2/c^2) )"
                ]
            }
        ]
    }
}

运行机器人时,我开始测试以查看它是否有效。当我运行简单命令(helloping)时,它可以完美运行。虽然,当我尝试运行;formula velocity时,它返回了 Invalid command 错误消息(nodejs中没有错误)

我的代码有什么问题?为什么它不按我希望的那样工作?

PS。如果您有关于减少代码“意大利面条”的任何建议,请随时通知我。

0 个答案:

没有答案