【发布时间】:2020-09-22 22:50:12
【问题描述】:
我正在编写一个不和谐的机器人。 Discord 是一个带有聊天功能的社交平台,您可以在那里编写机器人代码。
为了触发机器人命令,机器人会读取发送到聊天室的每条消息。它以字符串的形式发送给他。
通过使用这个:var args = msg.content.split(' ');,机器人将每个单词分成一个数组。现在,我可以这样做了:if (args[0] === '!command') { //code }
我的机器人会跟踪英雄联盟的玩家。我希望能够输入名称并添加跟踪原因。所有这些都将进入数据库。乍一看似乎很简单,我可以这样做:
if (args[0] === '!command') {
var player = args[1];
var reason = args[2];
}
现在,如果我发送 !command player1 reasons,机器人就会正确处理。
问题是,在英雄联盟中,您的昵称中有空格是允许的。同时,原因可能只有一个词。如果您尝试这样做:!command "player one" reasons 机器人不会将 player one 作为 args[1],相反,"player 将是 args[1],one" 将是 args[2]。同时,reasons 现在将是 args[3] 而不是 args[2]。
有没有一种简单的方法来告诉 javascript 忽略引号内的空格,这样它就不会在那里拆分字符串?
我可以使用不同的字符来拆分字符串,但是编写像!command-player-reasons there 这样的命令感觉很奇怪,而且是一个补丁而不是实际的解决方案。
【问题讨论】:
-
名称中是否允许使用双重 qoute
"?我认为您可以使用标签\t作为分隔符?即!command\tplayer one\the is awesome -
这能回答你的问题吗? Count content inside quotes as one argument
标签: javascript node.js discord discord.js