質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Discord

Discordは、ゲーマー向けのボイスチャットアプリです。チャット・通話がブラウザ上で利用可能で、個人専用サーバーも開設できます。通話中でも音楽を流したり、PC画面を共有できるなど多機能な点が特徴です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

0回答

424閲覧

Discord.jsのBOTが投稿したメッセージにリアクションしたユーザーの内訳を確認したい

RAFAEL-KUN

総合スコア0

Discord

Discordは、ゲーマー向けのボイスチャットアプリです。チャット・通話がブラウザ上で利用可能で、個人専用サーバーも開設できます。通話中でも音楽を流したり、PC画面を共有できるなど多機能な点が特徴です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2022/06/17 05:35

DiscordのサーバートップにあるBOTの投稿したメッセージにリアクションをしたら役職を追加する機能を実装しています。
追加したらの部分はできたのですが、BOTが稼働してなかったときのリアクションを検知するため、BOT起動時にリアクションの内訳を確認する機能を追加したいです。

下記の記事を参考に、MessageReactionまでは取得できたのですが、forEachを回してもBOTしか表示されません。
discord.jsでメッセージにリアクションをしているユーザーを取得できない

実行しているのは下記コードです。

javascript

1 roleSettingMessage = await client.channels.cache.get('????????????????').messages.fetch('????????????????'); 2 const reactionCache = await roleSettingMessage.reactions.cache 3 4 for(let name in rolemoji){ 5 const messageReactions = await reactionCache.find(emoji => emoji._emoji.name === name) 6 if(messageReactions != null) { 7 const reactionUsers = messageReactions.users.cache 8 reactionUsers.forEach(function(data){ 9 console.log(data.username); 10 }) 11 } 12 }

出力結果は以下の通りです、最後のcountが4になっていることから、BOT含め4人のユーザーがリアクションしているのは間違いないと思うのですが…

<ref *2> MessageReaction { message: <ref *1> Message { channelId: '????????????????', guildId: '????????????????', id: '????????????????', createdTimestamp: ????????????, type: 'DEFAULT', system: false, content: '[BOT MESSAGE]', author: ClientUser { id: '????????????????', bot: true, system: false, flags: [UserFlags], username: '[BOT NAME'], discriminator: '????', avatar: null, banner: undefined, accentColor: undefined, verified: true, mfaEnabled: false }, pinned: false, tts: false, nonce: null, embeds: [], components: [], attachments: Collection(0) [Map] {}, stickers: Collection(0) [Map] {}, editedTimestamp: null, reactions: ReactionManager { message: [Circular *1] }, mentions: MessageMentions { everyone: false, users: Collection(0) [Map] {}, roles: Collection(0) [Map] {}, _members: null, _channels: null, crosspostedChannels: Collection(0) [Map] {}, repliedUser: null }, webhookId: null, groupActivityApplication: null, applicationId: null, activity: null, flags: MessageFlags { bitfield: 0 }, reference: null, interaction: null }, me: true, users: ReactionUserManager { reaction: [Circular *2] }, _emoji: ReactionEmoji { animated: null, name: '????', id: '????????????????', reaction: [Circular *2] }, count: 4 }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問