はじめに
本記事は Discordのチャット画面からランチの候補をkintoneに登録してみよう の続きとして、Discordのモーダルフォームを使ってkintoneに登録したランチ候補を絞り込み、Discordにリスト表示する方法を紹介します。
そのため Discordのチャット画面からランチの候補をkintoneに登録してみよう のサンプルアプリが作成されていることを前提とします。
kintone APIトークンのアクセス権追加
前回作成したkintoneアプリの「APIトークン」の設定で、「アクセス権」に「レコード閲覧」を追加し、「保存」します。
コマンドプログラムの追加
前回作成したサンプルアプリと同じプロジェクトを使用し、コマンドプログラムファイルを追加します。
作成方法の詳細は、前回の
コマンドプログラムの作成
を参照してください。
次のコードを参考にプログラムを作成します。
「list-lunch.js」のファイル名で「utility」サブフォルダーの中に保存します。
|
|
コマンドプログラムの解説
スラッシュコマンドでモーダルを表示するためのdiscord.jsクラスのモジュールをロードします。
|
|
スラッシュコマンドを定義します。
|
|
スラッシュコマンドの実行時のインタラクションにレスポンスする関数を定義します。
|
|
モーダルを定義します。
モーダルに追加するコンポーネントを定義し、アクション行としてモーダルに追加します。
モーダルに追加できるコンポーネントは、1行テキストShortか複数行のテキストParagraphのみです。
また、アクション行にはひとつのテキストコンポーネントのみ指定でき、最大5行までです。
スラッシュコマンドのレスポンスとしてモーダルを表示します。
スラッシュコマンドの設定に関する詳細は、discord.js guideの
Creating slash commands
の項を参照してください。
モーダルの設定に関する詳細は、discord.js guideの
Modals
の項を参照してください。
|
|
コマンドハンドラープログラムの修正
前回作成したサンプルアプリと同じプロジェクトを使用し、コマンドハンドラープログラムファイルを修正します。
作成方法の詳細は、前回の
コマンドハンドラープログラムの作成
を参照してください。
以下のコードを参考に「index.js」プログラムを修正します。
|
|
コマンドハンドラープログラムの解説
必要なdiscord.jsクラスを読み込みます。
今回は「EmbedBuilder」を追加しています。
|
|
受け取ったインタラクションのモーダルフォームのIDが「listLunchModal」の場合、モーダルに入力されたデータを取得します。
詳細は、discord.js guideの
Extracting data from modal submissions
の項を参照してください。
|
|
入力された「ランチの種類」からkintoneにレストランのリストを問い合わせます。
取得したレストランの「店名」、「URL」をリスト表示します。
モーダル送信のレスポンスの詳細は、discord.js guideの
Responding to modal submissions
の項を参照してください。
今回はランチのリストを表示するのにEmbedsを使用しています。
Embedsの詳細は、discord.js guideの
Message Embeds
の項を参照してください。
|
|
コマンドデプロイメントプログラムの作成
コマンドデプロイメントプログラムは前回の記事で使用したプログラムと同様です。
作成方法の詳細は、前回の
コマンドデプロイメントプログラムの作成
を参照してください。
コマンドデプロイメントプログラムの実行
コマンドデプロイメントプログラムの詳細は、discord.js guideの
Registering commands
の項を参照してください。
すべてのプログラムの作成が完了したら、以下のコマンドを実行してDiscordにコマンドを再登録し、アップデートします。
|
|
動作確認
コマンドターミナルで次のコマンドを実行し、Discord Botプログラムを実行します。
|
|
起動したLunch BotがDiscordアプリ上でオンライン表示されているのを確認します。
/list-lunchコマンドをDiscordアプリで実行します。
モーダルフォームが表示されるのでランチの種類を入力し(カフェ、和食、イタリアン、中華、その他から選択)、送信ボタンをクリックします。
入力したランチの種類でkintoneのアプリに登録されているレストラン情報が表示されていれば成功です。
今回も、サンプルアプリのため、ローカルサーバーを起動して動作確認を行いましたが、「Google Cloud Run」や「Digital Ocean」等のクラウドサービスプロバイダーにデプロイして実運用してください。
まとめ
本記事では、前回紹介した
Discordのチャット画面からランチの候補をkintoneに登録してみよう
を活用して、kintoneアプリに登録されているランチ候補のレストランを表示するプログラムを作成しました。
プログラム内でコマンドを定義すれば、他にもいろいろなレコード情報を取得できます。
業務アプリに応用すれば、直接kintoneアプリにログインしなくても、Discordのチャット上で、必要な情報を獲得できます。
このTipsは、2024年12月版kintoneとdiscord.js v14.16.3で動作を確認しています。
