Discord.js - 在前缀和命令之后获取信息
Discord.js - Getting information after Prefix and command
我现在正在使用一个新命令,一个轮询命令。
为此,我需要一种获取前缀和命令本身后的参数的方法。
示例:+投票你喜欢小狗吗?
而且,它会忽略“+投票”,只获取问题本身,然后创建一个投票。
为了获取参数,我正在使用:
var Args = message.content.split(/\s+/g)
您可能想尝试使用命令创建投票,将问题存储在数据库中,然后使用单独的命令显示当前打开的投票。然后用户将 select 通过命令进行投票,机器人将等待对问题的响应。
我不会详细介绍如何将问题存储在数据库中,因为那是一个完全不同的问题。如果您在设置本地数据库和存储民意调查方面需要帮助,link 到另一个问题,我很乐意提供更多示例。
为了回答你的问题,我建议使用 subStr 将命令后的每个单词保存在数组中,这样你以后可以在代码中使用这些部分。像这样的东西将把 !poll 之后的所有内容存储在变量 poll
:
中
if (message.content.startsWith("!poll ")) {
var poll = message.content.substr("!poll ".length);
// Do something with poll variable //
message.channel.send('Your poll question is: ' + poll);
});
对于回答投票的用户,您可以尝试使用awaitMessage 来提问,并给出一定数量的回复。您可能希望将其包装在一个命令中,该命令首先查询您的数据库以获取可用的民意调查,然后使用该标识符实际获得正确的问题和可能的响应。下面的示例只是回显收集到的响应,但您可能希望将响应存储在数据库中而不是在消息中发送。
if (message.content === '!poll') {
message.channel.send(`please say yes or no`).then(() => {
message.channel.awaitMessages(response => response.content === `yes` || response.content === 'no', {
max: 1, // number of responses to collect
time: 10000, //time that bot waits for answer in ms
errors: ['time'],
})
.then((collected) => {
var pollRes = collected.first().content; //this is the first response collected
message.channel.send('You said ' + pollRes);
// Do something else here (save response in database)
})
.catch(() => { // if no message is collected
message.channel.send('I didnt catch that, Try again.');
});
});
};
我现在正在使用一个新命令,一个轮询命令。 为此,我需要一种获取前缀和命令本身后的参数的方法。
示例:+投票你喜欢小狗吗?
而且,它会忽略“+投票”,只获取问题本身,然后创建一个投票。
为了获取参数,我正在使用:
var Args = message.content.split(/\s+/g)
您可能想尝试使用命令创建投票,将问题存储在数据库中,然后使用单独的命令显示当前打开的投票。然后用户将 select 通过命令进行投票,机器人将等待对问题的响应。
我不会详细介绍如何将问题存储在数据库中,因为那是一个完全不同的问题。如果您在设置本地数据库和存储民意调查方面需要帮助,link 到另一个问题,我很乐意提供更多示例。
为了回答你的问题,我建议使用 subStr 将命令后的每个单词保存在数组中,这样你以后可以在代码中使用这些部分。像这样的东西将把 !poll 之后的所有内容存储在变量 poll
:
if (message.content.startsWith("!poll ")) {
var poll = message.content.substr("!poll ".length);
// Do something with poll variable //
message.channel.send('Your poll question is: ' + poll);
});
对于回答投票的用户,您可以尝试使用awaitMessage 来提问,并给出一定数量的回复。您可能希望将其包装在一个命令中,该命令首先查询您的数据库以获取可用的民意调查,然后使用该标识符实际获得正确的问题和可能的响应。下面的示例只是回显收集到的响应,但您可能希望将响应存储在数据库中而不是在消息中发送。
if (message.content === '!poll') {
message.channel.send(`please say yes or no`).then(() => {
message.channel.awaitMessages(response => response.content === `yes` || response.content === 'no', {
max: 1, // number of responses to collect
time: 10000, //time that bot waits for answer in ms
errors: ['time'],
})
.then((collected) => {
var pollRes = collected.first().content; //this is the first response collected
message.channel.send('You said ' + pollRes);
// Do something else here (save response in database)
})
.catch(() => { // if no message is collected
message.channel.send('I didnt catch that, Try again.');
});
});
};