@vxn

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Discord.js botの質問: メンバー「が」特定の絵文字リアクションを付けたメッセージ「の」各種情報を取得したい。

Discord.js botの質問: メンバー「が」特定の絵文字リアクションを付けたメッセージ「の」各種情報を取得したい。

リアクションを付けたAの情報と、リアクションが付けられたメッセージBの情報の収集テストをしています。

discord.js 12.3.1

例)
Discord.jsでbotをテストしています。初心者です。
・A:「🏴‍☠️」を付けた人。Aさんはサーバー内のメンバーの誰かです。 Aとします
・B:「🏴‍☠️」が付けられたメッセージ。Bさんはサーバー内のメンバーの誰かです。Bとします

Aのauthor、チャンネルID、メッセージIDなどの収集方法は検索などですぐに見つかり、コードのテストができています。
Bのauthor、チャンネルID、メッセージIDなどの各種情報(コードの書き方サンプルなど)が見つからず質問に至りました。
Bの収集が本件の質問の要点になります。

Aの情報の収集方法はわかるのですが Bの情報の収集方法(コード)の書き方が分かりません。
サンプルコードを教えてください。

発生している問題

・Bのメッセージはbotの起動後とは限らない。古い可能性がある。
・Bのメッセージはメンバーが投稿できるチャンネルのどこかである。

サーバーに投稿されている過去分のメッセージを含めて、
リアクションが付けられたメッセージの情報(author、channelID、messageID、message content)を収集したい。

Aの情報やサンプルはたくさん見つかるのですがBの方法をどうしても見つけることが出来ず頓挫しています。
どなたか教えてください。
よろしくお願いいたします。

0 likes

1Answer

実際に動かさずに、ドキュメントベースでの回答です。

リアクション時の処理は以下のコメント部に書きますよね?

client.on('messageReactionAdd', (reaction, user) => {
    // ...
}

この messageReactionAdd イベント時の仕様は以下のページに書いてあります。

コールバック引数の reaction は MessageReaction 型のようです。
MessageReaction の型の詳細は以下のページです。

これを見ると MessageReaction 型には message というプロパティがあり、Message 型であることがわかります。
Message 型の詳細は以下のページです。

Message 型には author (メッセージの著者)や channel (メッセージがあるチャネル情報)などのプロパティがあるようです。

なので、以下のように取得できるのではないでしょうか?
author などは null のことがあり得る型になっているので、null チェックしてから使った方が良いと思います)

  • リアクションされた、元のメッセージ reaction.message
    • message ID reaction.message.id
    • message content reaction.message.content null の可能性あり
  • リアクションされた、元のメッセージを書いた人 reaction.message.author null の可能性あり
    • 元メッセージを書いた人のID reaction.message.author.id
    • 元メッセージを書いた人のユーザー名 reaction.message.author.username null の可能性あり
  • 元のメッセージのチャネルID reaction.message.channel.id

オフィシャルなドキュメントを確認すると、詳しい情報が書いてあるので、確認しながら動かしてみるとよいと思います。

1Like

Comments

  1. @vxn

    Questioner

    こんにちは。
    とても詳しく教えていただきありがとうございました。
    特に各クラスの下りはものすごく分かり易くて助かりました。
    質問をしてよかったです。
    リンク先の情報も参考にさせていただきます。本当にありがとうございました。

Your answer might help someone💌