计算经过特定时间后对消息的反应

时间:2021-04-17 12:49:14

标签: discord.js

所以我制作了一个有投票命令的机器人,你要求它说一个可投票的事情,人们只能在 discord.js 中用勾号、叉号或 N/A 做出反应

我现在需要做的是响应(通过命令或自动超时,但最好在 24 小时内自动响应)。

到目前为止,我已经尝试了许多不同的方法并查看了 Discord.js 文档,但根本没有完全奏效。下面是代码的结果,虽然它不起作用:

var textToEcho = args.join(" ");
Client.channels.cache.get('channel ID').send(textToEcho).then(async m => {
                await m.react('✅');
                await m.react('❎');
                await m.react('801426534341541919');
            });
message.channel.fetchMessage(textToEcho).then(msg => {
    let downVoteCollection = msg.reactions.filter(rx => rx.emoji.name == '✅');
    console.log(downVoteCollection.first().count);
}).catch(console.error);

注意:这检查滴答响应。

1 个答案:

答案 0 :(得分:0)

您似乎试图在消息发送后直接获得所有反应,这只会返回机器人的反应(如果有的话)。
要在一段时间后准确获得反应,您必须添加 .setTimeout(...) 函数。

var textToEcho = args.join(" ");
Client.channels.cache.get('channel ID').send(textToEcho).then(async m => {
    await m.react('✅');
    await m.react('❎');
    await m.react('801426534341541919');
});
setTimeout(() => {
    message.channel.messages.fetch(message.id).then(msg => {
        let downVoteCollection = msg.reactions.filter(rx => rx.emoji.name == '✅'); // Filter the reactions
        msg.author.send(`You have received **${downVoteCollection.first().count}** votes on your latest poll!`); // Sends the poll owner how many votes they recieved
    }).catch(console.error);
}, 86400000); // This will wait 24 hours after the message has been sent to count reactions