我最近开始学习如何使用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) )"
]
}
]
}
}
运行机器人时,我开始测试以查看它是否有效。当我运行简单命令(hello
,ping
)时,它可以完美运行。虽然,当我尝试运行;formula velocity
时,它返回了 Invalid command 错误消息(nodejs中没有错误)
我的代码有什么问题?为什么它不按我希望的那样工作?
PS。如果您有关于减少代码“意大利面条”的任何建议,请随时通知我。