首页 > 解决方案 > 使用前缀 discord.js 的名称

问题描述

如何使用机器人名称作为空格前缀来使用命令?

 let prefix = 'test '; //botconfig.prefix;
  let messageArray = message.content.split(" ")
  let cmd = messageArray[0].toLowerCase();
  let args = messageArray.slice(1);
  if(!message.content.startsWith(prefix)) return;
  let commandfile = bot.commands.get(cmd.slice(prefix.length)) || bot.commands.get(bot.aliases.get(cmd.slice(prefix.length)))
  if(commandfile) commandfile.run(bot, message, args);

标签: node.jsdiscord.js

解决方案


听起来像这样?

您想使用机器人用户名作为前缀,因此您可以使用message.client.user.

然后对于你的论点,我稍微调整了一下。

这就是每个变量索引参数的方式。

//messageArray
bot do this
0   1  2
//args
bot do this
n/a 0  1
//n/a, because args sliced that element out.

看起来 messageArray 的存在只是为了帮助 args,所以你可以让你的代码这样:

  let prefix = message.client.user.username.toLowerCase();
  let args = message.content.split(/\s+/).slice(1);
  if(!message.content.toLowerCase().startsWith(prefix)) return;
  let commandfile = bot.commands.get(args[0].toLowerCase()) || 
  bot.commands.get(bot.aliases.get(args[0].toLowerCase()));
  if(commandfile) commandfile.run(bot, message, args);

我添加了一些toLowerCases ,因为如果机器人找到类似的东西BOT,并且它确实找到了if("BOT".startsWith("bot"),它会返回false,基本上所以命令不区分大小写。

确保您的机器人名称没有空格,否则您可能需要稍微更改索引,或从用户名中删除空格。

您可以随时参考此处的文档。


推荐阅读