【discord.js】TypeScriptでActionRowBuilderをModalに追加できない場合の対処法

ダウンメルト

 Modalについての公式サイトに従ってコードを試し書きしたにも関わらず、エラーを吐いて数時間格闘する羽目になりました。日本語サイトで対策を見つけることができなかったので、対処法を置いておきます。

症例

公式ページのガイド通りに記述すると

modal.addComponents(firstActionRow, secondActionRow);

の部分で引数型に関するエラーが出る。

原因

ActionRowBuilderクラスのリファレンスを確認すると

ActionRowBuilder<T extends AnyCompornentBuilder = AnycompornentBuilder>

と記載されているため、TypeScriptでActionRowBuilderクラスをインスタンス化する場合には追加するコンポーネントの型を配列の要素型のように記述する必要があるらしい。

対処

ActionRowBuilderクラスのインスタンス化部分を

const firstActionRow = new ActionRowBuilder().addComponents(favoriteColorInput);

から

const firstActionRow = new ActionRowBuilder<TextInputBuilder>().addComponents(favoriteColorInput);

に変更する。

最後に

 TypeScriptを導入したばかりなうえ、同じことをやらかしてる人が英語サイト含めてほぼ見つからなかったせいで原因に見当をつけるのに数時間を費やしました。

しかも、Modalを使いたかった機能はModalの仕様のせいで実装できないという悲しみの連鎖。

どうか、この記事を見た人が私のようにならず速やかに問題を解決できることを願います。

コメント

タイトルとURLをコピーしました