Discord.js - 在前缀和命令之后获取信息

Posted

技术标签:

【中文标题】Discord.js - 在前缀和命令之后获取信息【英文标题】:Discord.js - Getting information after Prefix and command 【发布时间】:2018-05-06 02:20:43 【问题描述】:

我现在正在处理一个新命令,一个 poll 命令。 为此,我需要一种方法来获取前缀和命令本身之后的参数。

示例:+投票 你喜欢小狗吗?

而且,它会忽略“+投票”,只获取问题本身,然后创建投票。

为了获取参数,我使用:

var Args = message.content.split(/\s+/g)

【问题讨论】:

【参考方案1】:

您可能想尝试使用命令创建投票,将问题存储在数据库中,然后使用单独的命令显示当前打开的投票。然后用户将通过命令选择投票,机器人将等待对问题的响应。

我不会详细介绍如何将问题存储在数据库中,因为这是一个完全不同的问题。如果您在设置本地数据库和存储民意调查时需要帮助,请链接到另一个问题,我很乐意提供更多示例。

为了解决您的问题,我建议使用 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.');
                );
        );
;

【讨论】:

谢谢,这行得通。我只需要使用一些代码,因为我现在坚持使用基本的。非常感谢,再次!

以上是关于Discord.js - 在前缀和命令之后获取信息的主要内容,如果未能解决你的问题,请参考以下文章

Discord.js - 如何实现前缀以避免错误触发命令响应?

如果消息以前缀 + 使用 discord.js 的命令开头,如何使 if 语句起作用

如何让 discord.js 机器人在不包含前缀和命令名称的情况下重复用户的消息?

Discord.js 如何使用机器人提及和设置前缀作为前缀

Discord.js 从带有前缀的句子中过滤命令(比如 Hey Bot 给我一块蛋糕)

在 discord.js 中制作带有前缀的命令处理程序时出现问题 [重复]