コマンドビルダーノード一覧

アクション(動作ノード)リファレンス

「アクション(動作)」は、メッセージの送信、チャンネル・ロールの操作、Ban や Kick などのサーバー管理、外部 API との連携といった、Bot が実際に行う処理を表すノードです。ほとんどの入力欄では、固定の文字や ID のかわりに変数を使えます(変数と式の使い方)。

Ban・Kick・Timeout・メッセージの一括削除・チャンネル削除・ロール削除などは、サーバーに大きな影響を与え、元に戻せないものもあります。だれがそのコマンドを実行できるかをコマンド設定で必ず確認してから使ってください。

対象の指定

ロール・チャンネル・カテゴリー・スレッド・メンバーの欄は、「入力方法」を切り替えて指定します。

入力方法指定のしかた
サーバーから選ぶサーバーの一覧から選びます。スレッドは一覧から選べないため、ID か変数で指定してください。
ID・名前(メンバーは「ID」)ID・メンション・名前を入力します。ID でない値は実行時に名前やメンションとして解決され、同名のものが複数あると最初に見つかったものが使われます。メンバーは名前では解決できません。 ID・メンション・変数で指定してください。
変数変数の値(ID やメンション)が実行時に使われます。
ブロックから前のノードの出力・コマンドのオプション・イベントのトリガーが持つ値から選びます。「キャンバスで選ぶ」を押すと、キャンバス上のノードをクリックして指定できます(Esc キーで取り消し)。

メッセージを送信

  • 送信先は「コマンド実行と同じチャンネル」(既定)/「特定のチャンネル」/「コマンド実行者のDM」から選びます。DM は常にコマンドを実行した本人へ送られます。任意のユーザーを指定して DM を送る機能は未実装です。
  • 送信先が「コマンド実行と同じチャンネル」のときは、実行者本人にだけ見えるメッセージにできます。
  • 変数名を指定すると、送信したメッセージの ID が保存され、後続の編集・削除・ピン留め・リアクションの対象にできます。
  • 本文・埋め込み・コンポーネントのいずれも空のまま実行すると、何も送信せずに次の処理へ進みます(エラーにはなりません)。
  • 本文は最大 2000 文字、埋め込み(Embed)は 1 メッセージに最大 10 個、フィールドは 1 埋め込みに最大 25 個です。

メッセージ形式

メッセージ形式説明
通常 (本文 + Embed)既定の形式です。本文・Embed に加えて、ボタン/選択メニューを付けられます。
Components V2 (高度なレイアウト)「コンテナ」「セクション」「テキスト」などの部品を組み合わせてレイアウトします。詳しくは Components V2(高度なレイアウト) を参照してください。

「Components V2 (高度なレイアウト)」では、本文・Embed・スタンプ・投票は使えません。また、実際に Components V2 で送信したメッセージは通常形式へ戻せません(不可逆)。

形式を切り替えても本文・Embed の設定はエディタ上に保持されるため、「通常 (本文 + Embed)」に戻せば再び使えます。

テンプレートと JSON

  • 「テンプレート」には、お知らせ・歓迎・ルール・投票・プレゼント企画・エラーの通知と、Components V2 のお知らせカード・ルールカードがあります。適用すると今のメッセージの内容は置き換わります。 メッセージ形式も、選んだテンプレートの形式(通常 / Components V2)に切り替わります。
  • 「JSON をコピー」「JSON を貼り付け」で、Discohook と同じ形式の JSON を書き出し・取り込みできます。変数は書き出した JSON にそのまま残りますが、変数やランダムで指定した色は書き出せません。
  • 取り込むのは BotShade で送れる項目だけです。ボタンとセレクトメニューは取り込まれないため、ノードとして追加してください。2 件目以降のメッセージと上限を超えた分も取り込みません。固定の日時は、送信した時刻に置き換わります。

ボタン・選択メニュー

「インタラクションモード」で、ボタンやメニューが操作されたあとの挙動を選びます。

インタラクションモード説明
分岐モード (デフォルト)各ボタン/メニューの選択が即座に次のフローへ進みます。
フォームモード (Confirm で確定)選択メニューの選択をいったん保留し、確定(Submit)ボタンが押された時点でまとめて確定します。選択メニューと、「フォーム動作」が「確定 (Submit)」「キャンセル (Cancel)」のボタンの両方が付いていないと機能しません。

選択メニューの制限:

  • プレースホルダーは最大 150 文字、「デフォルト」タイプの選択肢は最大 25 件です。
  • 複数選択を許可すると、最小選択数(0〜25)・最大選択数(1〜25)を設定できます。選ばれた値はカンマ(,)区切りの 1 つの文字列として変数に入ります。
  • 「選択肢ごとに分岐を作る」をオンにすると、選択肢ごとの「比較による条件分岐」と Else をメニューの下に自動で作り、選択肢の追加・削除・値の変更に合わせて更新します。どの選択肢にも当てはまらなければ Else に進みます。次の場合は分岐が作られません。
    • 複数選択のメニュー(作成済みの分岐は残りますが、更新されなくなります)
    • 「保存する変数名」が空のとき
    • メニューの下に別のノードがつながっているとき

ボタン/セレクトの永続化

インタラクションモードとは独立して設定します。

設定挙動
一時的 (約5分・Bot再起動で失効)約 5 分でクリックできなくなり、Bot を再起動しても失効します。一度きりの確認などに向きます。
永続 (再起動後も操作できるパネル)Bot を再起動したあとも反応し続けます。ロールパネルや常設の応募パネルのような「貼っておくボタン」を作れます。

永続を選んだときの補足:

  • 「操作できるユーザー」で「全員」か「コマンド実行者のみ」を選べます。
  • 「セッション有効期限(秒)」は、0・空欄・30 日を超える値のとき、最長の 30 日に丸められます。期限切れ後のクリックには「期限切れ」と応答します。
  • 永続にできる選択メニューは、選択肢を自分で定義する文字列セレクトだけです。ユーザー/ロール/チャンネルの選択メニューは永続にできません。

モーダルを送信

実行者にポップアップの入力フォーム(モーダル)を表示し、入力値を変数として後続のノードで使えるようにします。タイトルは最大 45 文字、入力フィールドは最大 5 個です。

モーダルは次の 2 通りで開きます。

  • コマンドの最初のアクションに置く: コマンドを実行した瞬間にモーダルが開きます。
  • ボタンの出力からつなぐ: そのボタンがクリックされたときにモーダルが開きます。

条件分岐や権限判定を経由してモーダルにたどり着く構成でも開きます。どの条件も成り立たずモーダルに届かなかった場合は、クリックがそのまま受理されて終わります。

「モーダルを送信」の直下に、もう 1 つ「モーダルを送信」をつなぐことはできません(Discord の仕様上、モーダル送信後の処理から新しいモーダルは開けないため)。あいだに「メッセージを送信」など別のブロックを挟めば使えます。

フィールド種別

フィールド種別説明
テキスト入力自由入力欄。「1行テキスト」/「複数行テキスト」を選べます。
選択メニュー(固定の選択肢)自分で用意した選択肢(最大 25 件)から選ばせます。「送信値」が空ならラベルと同じ値が入ります。
ラジオボタン(単一選択)2〜10 件の選択肢から 1 つだけ選ばせます。
ユーザー選択 / ロール選択 / メンション選択(ユーザー/ロール)サーバー内のメンバー・ロールから選ばせます。
チャンネル選択(Discord)サーバー内のチャンネルから選ばせます。候補のチャンネル種別を絞れます(未選択なら全種別)。
チェックボックス(オン / オフ)初期状態を指定できます。値は文字列の "true" か "false" です。必須の設定はありません。
チェックボックス群(複数選択)選択肢は 1〜10 件で、11 件目以降は使われません。値は常に配列で、何も選ばれなければ空の配列です。
ファイルアップロード「1 ファイル」か「複数ファイル」を選び、最小・最大ファイル数は 10 までです。値は添付ファイルの URL で、1 ファイルなら文字列、複数なら配列です。URL は Discord が発行する署名付きのもので、時間が経つと開けなくなります。 保存が必要なら、後続のノードですぐに転送してください。
説明文(入力なし)入力欄のない説明文を表示します。フィールドの上限 5 個に数えます。変数は作られません。本文が空のままでは保存できません。

ラジオボタン以外の選択系フィールドは複数選択にでき、その場合は値が配列で返ります。

メッセージ操作

「メッセージのピン留め」「リアクションを追加」「メッセージの編集」「メッセージの削除」は、対象を「メッセージ変数」か「メッセージID」で指定します。どちらも「ブロックから」で前の「メッセージを送信」ノードを選べます。

  • メッセージ変数には、「メッセージを送信」で付けた変数名を波括弧を付けずに書きます({msg} ではなく msg)。波括弧を付けると、実行時にメッセージが見つかりません。
  • 対象のメッセージは実行中のチャンネルから探します。別のチャンネルや DM へ送ったメッセージ、実行者本人にだけ見えるメッセージは取得できず、何もしません。
  • 編集できるのは Bot 自身が送ったメッセージだけです。本文も埋め込みも空のまま「メッセージの編集」を実行すると、何も変更しません。
  • カスタム絵文字のリアクションは emoji_name:123456789012345678 の形式で指定します。Bot から参照できない絵文字は、リアクションが付かずにスキップされます(エラーにはなりません)。

メッセージ一括削除

  • 1 回に削除できるのは 100 件までです。
  • コマンドの実行中に投稿された新しいメッセージ(コマンド自身の応答など)は削除対象から除外されます。
  • 投稿から 14 日より古いメッセージは 1 件ずつ削除されるため、時間がかかります。
  • テキストチャンネルとスレッドでのみ動作します。

チャンネル操作

  • 「チャンネル作成」のチャンネルタイプは「テキスト」(既定)/「ボイス」/「カテゴリー」/「ニュース」です。ニュースチャンネルはコミュニティ機能が有効なサーバーでしか作成できません。
  • ボイスチャンネルにはトピックや NSFW を設定できません。「最大ユーザー数」はボイスチャンネルにだけ効きます。
  • 「チャンネル編集」の「権限の統合」をオフにすると、ノードで設定した権限で既存の権限を上書きします。オンなら既存の権限と統合します。
  • 「チャンネル編集」の「タグ」(フォーラム / メディアチャンネルのみ)は、並べたタグで既存のタグを置き換えます。書かなかったタグは削除され、そのタグが付いていた投稿からも外れます。
  • 「チャンネル削除」は元に戻せません。ボイスチャンネルを削除すると、接続中のユーザーは切断されます。
  • 実行中のチャンネルを削除しないでください。 コマンドを実行しているチャンネルを削除すると、それ以降のメッセージ送信が失敗します。

権限設定の「よく使う設定」は、押すと下の表の権限エントリを追加します。同じ対象のエントリがあれば置き換え、ほかのエントリはそのまま残ります。

よく使う設定追加される権限
本人のみ@everyone の閲覧を拒否し、本人(コマンドでは {Command.user}、イベントでは {Event.user})に閲覧・送信・履歴の閲覧を許可します。
スタッフのみ@everyone の閲覧を拒否し、選んだロールに閲覧・送信・履歴の閲覧を許可します。ロールを選ぶまでは「非表示」と同じ効き方になります。
読み取り専用@everyone のメッセージ送信(スレッド内を含む)・スレッド作成・リアクションを拒否します。閲覧は制限しません。
非表示@everyone の閲覧を拒否します。

スレッド操作

  • 「付けるタグ」は、親チャンネルにあるタグの名前(大文字・小文字は区別しません)か ID で指定します。1 つの投稿に付けられるのは 5 個までです。「スレッドを編集」では追加ではなく置き換えになります。一致するタグが無い指定は、エラーにならずに無視されます。
  • 「スレッドを削除」は元に戻せません。フォーラムの投稿は最初のメッセージごと削除されます。実行中のスレッドを削除すると、それ以降のメッセージ送信が失敗します。

ロール操作

  • 「ロール作成」で作られるロールは、Bot の最上位ロールのすぐ下に配置されます。カラーの書き方は色の指定をご覧ください。空欄なら既定の色です。
  • 「ロールアイコン (絵文字)」には通常の絵文字を 1 つ指定します。サーバー絵文字は使えません。ロールアイコンはサーバーのブーストレベル 2 以上でのみ有効で、足りないサーバーでは「ロール作成」はアイコンなしで作成し、「ロール編集」はアイコン以外の変更だけを反映します。空欄のときは、作成ではアイコンなし、編集では今のアイコンのままです。
  • 「ロール編集」の「オンラインメンバーとは別で表示」「メンション可能」は「変更しない」(既定)/「オン」/「オフ」から選びます。
  • 「ロール削除」は元に戻せず、そのロールを持っていたメンバー全員から外れます。
  • Bot は、自分の最上位ロールより上にあるロールを付与・削除・編集できません。自分より上の立場のメンバーへのロール操作やモデレーションも失敗します。

サーバー操作

対象ユーザーの指定

「ロール付与」「ロールはく奪」「メンバーのBAN」「メンバーのKick」「メンバーのTimeout」「メンバーのニックネーム編集」の対象は、1 つの選択欄で次から選びます。

  • 「コマンドを実行したユーザー」
  • このコマンドのユーザーオプションで指定されたユーザー
  • 「ID・変数で指定」(対象の指定の方法で指定します)

以前の「インタラクションを実行したユーザー」は、すでにこの値で保存されているノードにだけ表示され、「コマンドを実行したユーザー」と同じ扱いです。

各ノードの挙動

  • BAN: 過去 0〜7 日分のメッセージを削除できます(既定は 0 日で削除しない)。Ban を解除しない限り再参加できません。サーバーを退出済みのユーザーも、「ID・変数で指定」で ID を指定すれば BAN できます。
  • Kick: 再参加は防げません。
  • Timeout: 「操作」で「タイムアウトする」か「タイムアウトを解除する」を選びます。解除では期間は使われません。期間は 10m(10 分)・1h(1 時間)・1d(1 日)の形で指定します。期間に 0 を指定しても解除にはなりません。タイムアウト中のメンバーはチャンネルを閲覧できますが、メッセージの送信・リアクション・ボイスの利用ができません。より長いタイムアウトが設定済みのメンバーに短いタイムアウトを設定しても変化しません。
  • ニックネーム編集: 空にするとニックネームが解除され、ユーザー名に戻ります。
  • Bot のステータスを変更: 変更は一時的で、Bot 設定を変更したときと Bot が再接続したときに、Bot 設定のステータスへ戻ります。ステータスは Bot 単位の設定なので、参加しているすべてのサーバーで表示が変わります。Free プランでは何もしません。
  • インスタント招待の作成: 有効期限(日数)と最大使用回数は 0 で無期限・無制限、既定はどちらも 1 です。「一時的なリンク」をオンにすると、このリンクで参加してロールを持たないユーザーは 24 時間後に自動で Kick されます。作成したリンクは指定した変数(既定は invite_link)に URL として保存されます。カテゴリーチャンネルには作成できません。

APIリクエストを行う

外部の API に HTTP リクエストを送り、レスポンスを変数に保存します。リクエストビルダーはベータ版で、仕様や入力欄は今後変わることがあります。

「APIリクエスト名」(必須)がレスポンスを受け取る変数の名前になります。myApi の場合:

変数内容
{myApi.response}レスポンスの本文。JSON は {myApi.response.user.id} のようにドットでプロパティを取り出せます。Content-Type が JSON でないレスポンスでは空です。
{myApi.status}HTTP ステータスコード(数値)。
{myApi.text}レスポンス本文の文字列表現。

「テスト送信」の結果には、各項目を後続のノードで使うときの変数パスが表示され、コピーできます(APIリクエスト名の入力が必要です)。JSON パス抽出を設定しているときは、抽出した値を起点にしたパスになります。

リクエストビルダーは「閉じる」を押すとそのまま保存されます。URL が空・形式不正・許可されていない宛先のときは保存できず、閉じられません。

認証とボディ

認証方式リクエストへの乗り方
Bearer TokenAuthorization: Bearer <token> ヘッダー
Basic 認証Authorization: Basic <base64(user:pass)> ヘッダー。変数は Bot 側で展開してから base64 化されます。
API Key指定したキー名のヘッダー、またはクエリパラメータ
ボディ形式自動で付く Content-Type
JSONapplication/json
Formapplication/x-www-form-urlencoded
Multipartmultipart/form-data(値ペアのみ。ファイル添付は未対応)
Raw テキスト / なしなし
  • 認証・ボディ形式・Cookie から自動で付くヘッダーを、手動で重ねて追加する必要はありません。
  • メソッドが GET のときは、ボディ形式が「なし」に固定されます。
  • トークンなど秘密の値は、環境変数のシークレットに登録し、{env.NAME} で参照してください。ダッシュボードに値が表示されず、送信時にだけ展開されます。

入力をそのまま返すエコーバック型の API で、{APIリクエスト名.response} をそのままメッセージに流すと、シークレットの値が Discord に漏れるおそれがあります。

詳細設定

項目範囲・既定値補足
タイムアウト (秒)1〜300 秒(既定 30)時間内に返らないと失敗扱いです。実際に待つのは最長 60 秒で、60 秒を超える値は 60 秒として扱われます。
リダイレクトを追従する既定オン、最大 5 回リダイレクト先も許可された宛先かを毎回検査し、許可されない宛先なら中断します。別ドメインへのリダイレクトでは Authorization / Proxy-Authorization / Cookie ヘッダーを引き継ぎません。
リトライ回数0〜5 回(既定 0)ネットワークエラーと 5xx 応答のときだけ再試行します。
失敗時の挙動停止 / 継続継続を選んでも {APIリクエスト名.status} で結果を確認できます。
JSON パス抽出任意$.data.user.id のように書くと、該当部分だけが {APIリクエスト名.response} に入ります。当たる値がないときはレスポンス全体が入ります。
キャッシュ TTL (秒)0〜86400 秒(既定 0=無効)実際に効くのは 1〜3600 秒に丸めた値です。キャッシュされるのは GET / HEAD の 2xx 応答だけで、Bot 単位です。

IFTTTトリガーを実行する

このノードは現在開発中です。 設定は保存できますが、現時点では Bot 側で実行されません。

変数操作

「変数を設定」「変数への演算の適用」「変数の削除」「変数を読み出す」は 変数と式の使い方 で扱います。登録していない BSVAR_ 変数への代入の扱いは 永続変数 を参照してください。

色の指定

埋め込み(Embed)やロールの色は、次の方法で指定します。欄によって使える方法が異なります。

指定方法例
固定色#FF5733・#F53・0xFF5733・rgb(255, 87, 51)(大文字・小文字は区別しません)
名前付きの色red・blurple・gold など。コマンドビルダーでは dark blue・Dark-Blue のように空白やハイフンで区切っても指定できます
ランダムrandom。送信(ロールでは実行)のたびに色が変わります
変数{User.color} など。実行時に展開した値を、上の 3 つのいずれかとして読みます

変数を展開した値や、抽選の作成で入力した値が色として読めないときは、エラーにならず色なしになります(ロールでは既定の色)。

欄使える方法
コマンドビルダーの「メッセージを送信」「メッセージの編集」の埋め込み、「ロール作成」「ロール編集」、Components V2 のアクセントカラー4 つすべて
Discord 上で設定する自動応答の埋め込み4 つすべて
各モジュールのダッシュボードで設定する埋め込み(自動応答・モデレーション・ログ・チケット・抽選の当選メッセージなど)固定色・名前付きの色・ランダム
Embed モジュールのダッシュボード固定色のみ
抽選メッセージ(/giveaway create の color と作成ウィザード)固定色・名前付きの色・ランダム。ウィザードの入力欄は 7 文字までです
Discord の埋め込みの編集パネル(Embed・ロールパネル・ログ・ウェルカムメッセージ・固定メッセージ・認証)固定色・名前付きの色。詳しくは編集パネルの制約

既定値

アクション項目既定値
メッセージの削除/編集/ピン留め/リアクション対象の指定方法メッセージ変数(直前の「メッセージを送信」で保存した ID)
メッセージ一括削除 / チャンネル編集対象チャンネルコマンドが実行されたチャンネル
メンバーのTimeout / ニックネーム編集対象ユーザーコマンドを実行したユーザー
チャンネル作成保存先の変数名created_channel_id
ロール作成保存先の変数名created_role_id
スレッドを作成保存先の変数名created_thread_id
変数の設定値の型文字列(BSVAR_ 変数は登録時の型)

何もせずに次へ進むケース

次の場合は何も変更せず、エラーにもならずに次の処理へ進みます。

  • すでに持っているロールの付与、持っていないロールのはく奪
  • BAN 済みのユーザーの BAN、Kick 済み・退出済みのユーザーの Kick・Timeout
  • BAN の対象に、ID として読めない値や Discord に存在しないユーザーの ID を指定したとき
  • 削除済みのメッセージ・チャンネル・ロールの削除、ピン留め済みメッセージのピン留め
  • 「スレッドを編集」「スレッドを削除」で、スレッドではないチャンネルを指定したとき

上限と丸め込み

多くは範囲内に丸められ、コマンドは止まりません。ビルダーはこれらの欄に範囲外の値があると警告を出しますが、保存は止めません(変数を含む値は実行時まで検査しません)。

項目範囲範囲外・読めない値のとき
メッセージ一括削除の件数1〜100 件100 件を超えると 100 件。0 以下・読めない値なら何もしません
埋め込み(Embed)の数1 メッセージ 10 個超過分は送信されません
BAN で削除するメッセージの期間0〜7 日範囲内に丸められます。読めない値は 0 日です
Timeout の期間28 日まで28 日を超えると 28 日。0 秒以下・読めない値ならタイムアウトしません
ニックネームの長さ32 文字Discord に拒否され、エラーになります
チャンネルのスローモード0〜21600 秒(6 時間)21600 秒を超えると 21600 秒。負の値ならスローモードを設定しません
招待リンクの有効期限0(無期限)〜7 日7 日を超えると 7 日。負の値は無期限、読めない値は 1 日です
招待リンクの最大使用回数0(無制限)〜100 回100 回を超えると招待を作成できず、エラーになります。負の値は無制限、読めない値は 1 回です
「チャンネル編集」の最大ユーザー数0〜9999 を超えるとエラーになります。負の値なら変更しません

「待機」の上限は 制御フロー を参照してください。

失敗したとき

各アクションには対応する Bot 権限が必要で、足りないと処理が止まり、共通のエラー文が表示されます(表示されるメッセージ)。具体的な失敗理由はユーザーには表示されません。

操作必要な Bot 権限
メッセージ操作Manage Messages
ロール操作Manage Roles
チャンネル操作Manage Channels
スレッドの作成Create Public Threads(プライベートスレッドは Create Private Threads、フォーラム / メディアへの投稿は Send Messages)
スレッドの編集・削除Manage Threads
BANBan Members
KickKick Members
TimeoutModerate Members
招待の作成Create Invite

監査ログの理由

モデレーション・ロール・チャンネルなどの操作は、Discord の監査ログに CmdBuilder: /コマンド名 の形で記録されます。「理由」欄のあるノードで理由を入力すると CmdBuilder: /コマンド名 — 理由 になります(変数も使えます)。Bot が先頭に付ける識別用の文字列と合わせて 512 文字までで、超えた分は切り詰められます。

関連ページ

最終更新:

目次