javascript - 机器人如何将两个或多个参数作为命令接收?
问题描述
module.exports = {
config: {
name: "help me",
noalias: ""
},
run: async (bot, message, args) => {
}
}
我有这段代码,但是当我运行命令时,它什么也不做(run: async...
我删除了它以保持简短。)当我这样做!!help me
时!!help
,!!me
它什么也不做。此消息下方的代码将是我的message.js
文件。\
const { PREFIX } = require('../../config.json');
module.exports = async (bot, message) => {
let args = message.content.slice(PREFIX.length).trim().split(/ +/g);
let cmd = args.shift().toLowerCase();
if (!message.content.startsWith(PREFIX)) return;
var commandfile = bot.commands.get(cmd) || bot.commands.get(bot.aliases.get(cmd))
if (commandfile) commandfile.run(bot, message, args);
}
Discord.JS 版本:12.2.0
解决方案
那是因为你在删除第一个参数时删除了args.shift()
. 不要那样做。它将命令名称仅用作“帮助”,将“我”用作args[0]
,这还不错,但不适用于您要执行的操作。
相反,让它在索引位置 0 处接受参数并将其用作命令名称:
let args = message.content.substring(PREFIX.length).split(/ +/g);
let cmd = args[0];
您不应该将多个单词作为命令名称。实现它helpme
,help
或者也许help-me
,否则正确处理用户输入将变得不必要地困难。这就是它没有做任何事情的原因,因为命令名称是,help me
但它将命令解释为help
.
推荐阅读
- python - 将 udp m2tp 单播流代理到流式 sanic.response 时 CPU 使用率差异很大
- java - GraalVM 在 macOS Big Sur (Apple m1) 上安装失败
- python - 在 groupby 之后计算聚合数据的中位数
- typescript - 如何在 TypeScript 中将 {[key: string]: string} 初始化为 {}?
- docker - 限制 docker nginx 日志文件大小
- github - Cloud Build“未授权 Google Cloud Platform 列出存储库”
- python - 加快从叠加截断正态分布中绘制随机值
- angular - Angular Unhandled Promise 拒绝:没有 ErrorHandler。是否包含平台模块(BrowserModule)
- swift - 互斥锁失败:来自自动释放池的无效参数
- javascript - 错误的 HTTPS 证书:Webworker 中的“TypeError:无法在 'WebAssembly' 上执行 'compile':HTTP 状态代码不正常”