キャッシュがされなくなるとどうなるのか
Gateway Intentsの指定が必要になったため、今後は基本的にキャッシュされない前提に移っていくと思われる
現在はキャッシュされていないデータをfetchすることは例外的に使うものだが、今後メインになるかもしれない
Discord.jsを使ったコードの多くは基本的にキャッシュされる前提で書かれているので動作しなくなる可能性が高い
Privileged Intentsによって一部キャッシュされないものが出てきて実際に動作しなくなったものも出てきた
固定メッセージへのリアクションに反応して処理をするサンプルなどがそのままでは動かなくなった
Discord.jsも扱いやすいようにキャッシュされている前提の動作をするものがある
関連:なぜボットを起動した後に送信されたメッセージにしか反応しないか
Discord.jsはキャッシュされない前提にまだ対応していない?
GuildChannelManagerにfetchメソッドがないため、ギルドチャンネルが手動では取得できない?
GUILDインテントを含めないとギルドチャンネルに関するGateway Eventsが送信されないのでキャッシュされない
channelオブジェクトがなにかのイベントに付随して来るという発想がないのでキャッシュにないチャンネルのイベントは黙って捨てられる
https://github.com/discordjs/discord.js/blob/stable/src/client/actions/MessageCreate.js#L9
tig.icon
Guild#fetchからチャンネルを取得できる?
fetchするためにGUILDインテントが必要なので結局ギルドチャンネルが取得できない
改めてドキュメント見てみたらそんなこと書いてなかった
https://discord.com/developers/docs/resources/guild#get-guild-channels で取得できそうな感じもする
#TODO 要調査
事例
Guildがcacheに載ってないせいでVoiceChannelをfetchできているにもかかわらずVCへの接続に失敗する事例