node.js - 使用前缀 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);
解决方案
听起来像这样?
您想使用机器人用户名作为前缀,因此您可以使用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);
我添加了一些toLowerCase
s ,因为如果机器人找到类似的东西BOT
,并且它确实找到了if("BOT".startsWith("bot")
,它会返回false
,基本上所以命令不区分大小写。
确保您的机器人名称没有空格,否则您可能需要稍微更改索引,或从用户名中删除空格。
您可以随时参考此处的文档。
推荐阅读
- javascript - 在 wordpress 中运行笑话测试时如何修复 import {} 意外令牌
- graphics - 如何为小部件边框/阴影添加霓虹发光效果?
- flutter - 如何在颤振中实现聊天气泡形小部件
- react-native - ReactNative如何在键盘打开时保持滚动视图位置
- excel - 计数和求和功能无法正常工作
- javascript - pts.js 'NS_ERROR_NOT_AVAILABLE:' 尝试将图像用于粒子时出错
- android - 如何在android native中每2秒检查一次webview的http url连接
- xamarin - 在 Xamarin Android 的 MVVMCross 中从视图模型中关闭键盘
- java - JaxB 最后一个字段在解组时返回 null
- macos - 使用 AppleScript 检测上下文菜单当前是否打开/处于活动状态?