就上下文而言,我的意思不是reactions.cache.size。相反,我想找到是否有办法获取对消息的总反应量。
例如,我不希望它返回数字 2,就像 cache.size 会做的那样。相反,我希望它返回 3。我如何计算对单个消息的反应总数?
答案 0 :(得分:0)
可以使用map()对象的reduce函数。
这是一个例子:
client.channels.cache.get("Your Channel ID").messages.fetch("Your Message ID").then(msg => {
let totalReactionsCount = msg.reactions.cache.map(reaction => reaction.count).reduce(function(tot, arr) {
return tot + arr;
},0);
});
这将返回消息的反应总数。
答案 1 :(得分:0)
const emojisList = ['1️⃣', '2️⃣', '3️⃣', '4️⃣', '5️⃣', '6️⃣', '7️⃣', '8️⃣', '9️⃣']
do {
var reactionCount = reactions.get(emojisList[i]);
//console.log('Reaction count is' + reactionCount.count)
reactionArray.push(reactionCount.count)
//console.log("Total reactions is "+total)
var percentage = ' '
resultsEmbed.addField(`The option *${questionOptionsArray[i]}* got a total of ` + reactionArray[i] + ' votes.', percentage)
i++
console.log(`i = ${i}`)
}
while (i < reactions.size)
这允许我在循环中完成。我计算它引用了我存储表情符号的数组。因为我不知道会有多少表情符号,所以我不得不执行这个循环并让它继续下去,直到用完对消息的反应量。这可能不是最好的方法,但我找不到任何其他方法来处理我的程序的工作方式。