node.js - 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。如果您对减少代码“意大利面条”有任何建议,请随时通知我。
解决方案
推荐阅读
- go - 使用静态 c 库编译 go
- javascript - 缺少类属性转换反应
- python - 为参数 io 创建变量到 pd.read_excel()
- azure-data-lake - U-SQL 动态表值函数
- c# - WPF字符串格式化列表的内容
- sql - 从 TXT/LOG 文件中获取当前日期
- apache-kafka - 如何从 kafka_2.10-0.8.1.1 中删除不一致的 kafka 主题元数据数据
- bash - 如何通过间接迭代字典
- javascript - 使用 JavaScript click 事件处理程序更改标签
- batch-file - 在 cmd.exe 中绕过 UAC