discord.js - 如何在 discord.js 中解析引号中的命令参数?
问题描述
标题解释了大部分内容。我想做一个投票命令:
const args = message.content.slice(1).trim().split(/ +/g); // trims the args
const command = args.shift().toLowerCase(); // finds the actual command
const guild = message.guild;
client.on("message", async message => {
if (command === "poll") {
const poll = new Discord.RichEmbed().setColor('#' + (0x1000000 + (Math.random()) * 0xffffff).toString(16).substr(1, 6));
if (args) {
if (message.member.roles.find(r => r.name === "poller")) {
var upvote = message.guild.emojis.find(emoji => emoji.name == 'Upvote');
var downvote = message.guild.emojis.find(emoji => emoji.name == 'Downvote');
let sendTo = "";
sendTo+=(args[0]);
sendTo += (upvote + args[1]);
sendTo += ("\n\n" + downvote + args[2]);
message.channel.send(sendTo)
.then(function(message) {
message.react(guild.emojis.find(emoji => emoji.name === "Upvote"));
message.react(guild.emojis.find(emoji => emoji.name === "Downvote"));
}).catch(function() {
poll.setDescription("Error has occured. Stopping process.");
poll.setFooter('Unknown error has occured. Terminating action 000921.');
message.channel.send(poll);
});
message.delete().catch(O_o => {});
}
} else {
console.log("Failed");
}
}
}
这里的主要问题是我需要多个单词进行民意调查,但即使有引号,它仍然会像正常一样返回它。例如 ;poll "test 1" "test 2" "test 3" 返回 "test:upvote:1" :downvote:"test。我能做些什么来解决这个问题?
解决方案
您可以使用:
const pollOptions = message.content.match(/".+?"/g).map(str => str.replace(/"/g, ''))
// ;poll "Option 1" "Option 2" "Option 3"
// pollOptions would equal ['Option 1', 'Option 2', 'Option 3']
代码片段示例:
const input = '"Option 1" and also "Option 2", and maybe "Option 3" as well'
const updated = input.match(/".+?"/g).map(str => str.replace(/"/g, ''))
console.log(updated) // isolating whatever's within the quotes
推荐阅读
- javascript - 如何使用延迟函数以相反的顺序显示圆圈(使用 JSON 数据创建)?
- android - 片段内带有缓存的 Webview
- c# - “IEntityType”不包含“关系”的定义
- python - 使用牛顿拉夫森方法求根
- r - 应用函数 R 中的 if-else 语句
- arrays - 如何在 Tiled 中使用 userData 进行碰撞?(LigGDX)
- javascript - Discord.js 角色/分级系统
- c++ - 如何从 C++ 中的其他函数/方法调用运算符重载函数?
- excel - Excel VBA,列列表中包含“IS”和“S”的第一个单元格中的颜色
- ios - 是否可以仅将视图控制器的一部分嵌入容器视图中?