所以我制作了一个有投票命令的机器人,你要求它说一个可投票的事情,人们只能在 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);
注意:这仅检查滴答响应。
答案 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