前提
Discord.js
でDiscordの投票BOTを作っています。
その過程で、「返信したメッセージのリアクション数を取得する」と言う処理を行いたいです。
具体的には、
(投票IDは気にしなくて大丈夫です)
このような投票メッセージを過去に送り、BOT自身が「1️⃣」「2️⃣」「3️⃣」...と言うリアクションをつけています。
ここまでのコードは完成しています。
しかし、これを集計するために、返信して、「!close」とチャット送信すると投票を締め切るようにしたいです。
私が考えている、処理の概要は
!closeを検知
↓
返信先のmessageIdを取得
↓
message.channel.messages.fetch(メッセージID)
でmessage
オブジェクト(?)を取得
↓
リアクションの種類と、現在までのリアクション数を取得
↓
チャットに送信するテキストに成形
と考えています。
発生している問題・エラーメッセージ
close Command! /Users/~/~/index.js:296 const reactionAmount = msg.reactions.cache.get("👍").count ^ TypeError: Cannot read properties of undefined (reading 'count') at Client.<anonymous> (/Users/~/~/index.js:296:61) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) Node.js v18.5.0
該当のソースコード
javascript
1if (command === "close" || command === "c") { 2 console.log("close Command!"); 3 const referenceMessageId = message.reference.messageId; //messageIdを取得 4 const msg = await message.channel.messages.fetch(referenceMessageId) //messageオブジェクト(?)を取得 5 const reactionAmount = msg.reactions.cache.get("👍").count //リアクション数を取得 6 console.log(reactionAmount) 7}
ここでは試しに👍にしています、
試したこと
Stackoverflowとか色々見ましたが、あまり情報がなく、
試しに
javascript
1const reactionAmount = msg.reactions.cache.get("👍").count
を
javascript
1const reactionAmount = msg.reactions.cache.get("👍")
にしましたが、undefined
と出ました。
補足情報(FW/ツールのバージョンなど)
Node.js v18.5.0
discord.js@13.8.1
あなたの回答
tips
プレビュー