対象のメッセージの上にあるメッセージを取得する
#メッセージ #MessageManagerクラス
TextChannelクラスやDMChannelクラスのmessagesプロパティ(MessageManagerクラス)にあるfetchメソッドのbeforeオプションを使うことで、対象のメッセージの上にあるメッセージを取得するこができる。
before には文字列のメッセージIDを入れること
対象のメッセージの上にあるメッセージをひとつだけ取得するには、limitオプションを1にする。
limitを1にしてもMessageオブジェクトが返ってくるのではなく、Collectionが返されます。
キーが文字列(メッセージID)、値がMessageオブジェクト
limitが1なら.first()、または.last()で取得したMessageのオブジェクトを取り出せます。
limitオプションを使わない場合、デフォルトでは50個のメッセージを取得します。
取得できなかった場合、エラーがcatchに渡されます。
注意
対象のメッセージの上にメッセージが必ず存在するとは言えない。
メッセージがない場合は空のCollectionが返ります。
サンプルコード
送信されたメッセージの上にあるメッセージをひとつだけ取得して、ひとつ上のメッセージを送ったユーザーにメンション付きで「Hey」と送信するサンプル
code:js
client.on('message', async message => {
const beforeMessage = await message.channel.messages.fetch({ before: message.id, limit: 1 })
.then(messages => messages.first())
.catch(console.error)
return beforeMessage.reply('Hey') // 一つ上のメッセージを送信したユーザーにメンション付きで「Hey」と送信
})
関連
対象のメッセージの下にあるメッセージを取得する
対象のメッセージの上下にあるメッセージを取得する