首页 > 解决方案 > Discord Bot 在使用 args 运行命令后意外返回“无效命令”错误消息

问题描述

我最近开始学习如何使用 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)

配置.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) )"
                ]
            }
        ]
    }
}

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

我的代码有什么问题?为什么它不像我想要的那样工作?

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

标签: node.jsdiscorddiscord.js

解决方案


推荐阅读