コードノードとKVストア
コードで応答や状態を組み立て、サーバー固有の機能を作ります。コードノードでできること
カスタムコマンドとカスタム返信では、静的なメッセージだけでなくJavaScriptコードを実行できます。入力を処理し、埋め込み、ボタン、セレクトメニューなどを動的に構成できます。- サーバー独自の投票や抽選
- フォーム入力の整形と案内
- 引数やサーバー情報に応じた案内
- KVストアを使った簡易的な経済や状態管理
安全な実行環境
コードはQuickJSサンドボックス内で実行され、Node.jsのプロセスから隔離されます。実行時間やメモリにも制限があります。KVストア
サーバー単位のキーと値をコードから保存・取得できます。投票状況、ポイント、設定値など、応答をまたいで保持したい小規模な状態に適しています。詳細なAPIと利用可能なノードは、コードノードリファレンスで確認できます。
カスタムコマンド
名前と説明を決めます。静的応答では画面で引数や実行許可ロールを設定し、コードノードではcommand.option(...)とcommand.allowRole(...)をコード内に宣言します。コードノードの応答を本人だけに見せる場合は戻り値でephemeralを指定します。カスタム返信
通常メッセージをトリガーとして、含む・完全一致・前方一致・後方一致・正規表現からマッチ方法を選びます。大文字小文字の区別と、反応を許可するチャンネルも設定できます。静的応答とコードノード
静的応答はテキストや埋め込みを画面で設定する用途、コードノードは引数・実行許可ロール・条件分岐・コンポーネント・KVをコードで管理する用途に向きます。コードノードに引数やロールのGUI一覧はなく、コードが唯一の編集元です。制限とデバッグ
サンドボックスはネット接続不可、実行時間2秒、メモリ16MBに制限されています。保存前に構文と戻り値を確認し、複雑な処理は小さく分けてテストしてください。KVストア画面ではキーの内容を確認・編集・削除できます。操作前の準備
- カスタムコマンド名はDiscordの命名規則に従う
- コードノード利用時はコードノードリファレンスを確認する
操作手順
カスタムスラッシュコマンドを作る
- 「カスタムコマンド」を開き、機能を有効にします。
- 追加してコマンド名・説明・有効状態を設定します。
- 静的応答では画面で引数・実行許可ロール・応答を設定します。
- コードノードではcommand.option(...)とcommand.allowRole(...)をコード内に宣言し、応答処理とephemeralを戻り値に記述します。
- 保存後、Discordのコマンド一覧へ反映されたら実行テストします。
カスタム返信を作る
- 「カスタム返信」を開き、機能を有効にします。
- 返信を追加してトリガーと一致方法を選びます。
- 大文字小文字と有効チャンネルを設定します。
- 静的またはコードノードで応答を作り保存します。
- 対象・対象外チャンネルでテストします。
KVデータを確認・修正する
- 「KVストア」を開きます。
- キーを検索・選択して値を確認します。
- 必要な場合だけ値を編集して保存します。
- 不要なキーは影響するコードを確認してから削除します。
設定項目一覧
画面に表示される入力項目と、その値がDiscord上の動作へ与える影響です。| 設定項目 | 意味 | 選択肢・入力条件 |
|---|---|---|
| コマンド名・説明必須 | Discordへ登録される名前と補足です。 | 画面の案内に従って入力 |
| 引数 | 静的応答では画面、コードノードではcommand.option(...)で定義します。 | テキスト/整数/真偽値/ユーザー/チャンネル/ロール |
| 実行許可ロール | 静的応答では画面、コードノードではcommand.allowRole(...)で最大10件を定義します。複数指定はOR条件です。 | 画面の案内に従って入力 |
| ephemeral | 静的応答では画面、コードノードでは戻り値で指定し、応答を実行者だけに表示します。 | 画面の案内に従って入力 |
| 返信トリガーカスタム返信で必須 | 通常メッセージと比較する文字列または正規表現です。 | 画面の案内に従って入力 |
| 一致方法 | トリガーの比較方法です。 | 含む/完全一致/前方一致/後方一致/正規表現 |
| 大文字小文字を区別 | 英字の大文字と小文字を別の文字として比較します。 | 画面の案内に従って入力 |
| 有効チャンネル | 空なら全チャンネル、指定時は選択した場所だけで返信します。 | 画面の案内に従って入力 |
| 実行モード | 応答の作り方です。 | 静的/コードノード |
| 静的応答形式 | コードを使わない応答の見た目です。 | テキスト/埋め込み/両方 |
| コード | QuickJSで実行するJavaScriptです。ネット不可、2秒、16MB制限です。 | 画面の案内に従って入力 |
| KVキー・値 | コードがサーバー単位で保持する状態です。手動編集はJSONなど期待形式を壊さないよう注意します。 | 画面の案内に従って入力 |
必要な権限
コマンド利用権限返信先でのメッセージ送信・埋め込みコードから要求するDiscord操作に対応したBot権限
うまく動かないとき
コマンドが登録されない名前・説明・引数名の規則、重複名、機能と項目の有効状態を確認します。
コードが失敗する構文、戻り値、2秒・16MB・ネット不可の制限、リファレンス上のAPI名を確認します。
返信が何度も反応する一致方法を完全一致へ狭めるか、有効チャンネルとトリガーを具体化します。
KV値を変えた後に動かないコードが期待する値の型・JSON構造へ戻すか、不要ならキーを削除して初期化します。
実装時はコードノードリファレンスでAPIの詳細を確認してください。
