module.exports = {
config: {
name: "help me",
noalias: ""
},
run: async (bot, message, args) => {
}
}
我有这段代码,但是当我运行命令时,它什么也没做(run: async...
里面的代码已删除,以简化代码。)当我执行!!help me
时,{{ 1}}或!!help
不会执行任何操作。此消息下方的代码将是我的!!me
文件。\
message.js
Discord.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);
}
答案 0 :(得分:1)
那是因为您在执行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
。
答案 1 :(得分:-1)
看看您的代码,我认为您最好像github / telebot一样使用正则表达式来匹配命令。这是一个简短的示例,看起来像这样:
const watchRegExp = /^\/watch ([a-z0-9]{64}) ([0-9]*) ?(.*)$/;
// let's say you sent: /watch 81a40da1f3e110017a6982e9e354577926ac047f57a954f70f365e8f5ae65ac6 5 cocacola
bot.on(watchRegExp, (msg, props) => {
const txid = props.match[1]; // '81a40da1f3e110017a6982e9e354577926ac047f57a954f70f365e8f5ae65ac6'
const threshold = props.match[2]; // 5
const label = props.match[3]; // 'cocacola'
// do your stuff here
}
希望这会有所帮助,
干杯