条件分岐
条件ブロックを置くと、「Else(それ以外)」と「条件後」が自動でいっしょに作られます。「条件ノードを追加」で作る一致の枝(If)と合わせて、次の 3 つの行き先に分かれます。
| 行き先 | 通るとき |
|---|---|
| 一致の枝(If) | その条件が成り立ったとき |
| 「Else(それ以外)」 | どの一致の枝も成り立たなかったとき。何もつながなければそのまま「条件後」へ進みます |
| 「条件後」 | どの枝を通ったあとでも、最後に必ず通ります |
「Else(それ以外)」と「条件後」は単独では削除できず、条件ブロックを削除するといっしょに消えます。
分岐の内側で「モーダルを送信」を使った場合、「条件後」の先の処理はユーザーが送信を完了する前に走ります。送信完了を待ってから何かしたいときは、「モーダルを送信」の直下につないでください。
複数の一致の枝
1 つの条件ブロックには一致の枝を複数作れます。キャンバス上の条件ブロックの「+」(「分岐を追加」)からも足せます。枝は線をつないだ順に上から判定され、最初に成り立った枝だけを通ります。{option_command} == "ban" / == "kick" のような振り分けも、枝を並べるだけで書けます。
ただし、一致の枝がすべて「確率による条件分岐」のときだけは、重み付き抽選で決まります。
セレクトメニューの選択肢ごとの分岐は、メニューの設定から自動で作れます。詳しくは動作(アクション)ノードをご覧ください。
判定の共通ルール
- 判定できないときは「成り立たなかった」扱いです。値が解決できない・形式が不正などの場合は「Else(それ以外)」へ進みます。誤って一致することはありません。
- 判定中にエラーが起きても、コマンドは止まりません。その条件は成り立たなかった扱いになり、ユーザーにエラーメッセージは表示されません。
- 値の中の変数は判定の直前に展開されます。コマンドのオプション・途中で作った変数・永続変数のいずれも使えます。変数の書き方は 変数の使い方 をご覧ください。
- 曜日・時刻・日時は Bot のタイムゾーンで判定します。設定していない場合は
Asia/Tokyo(日本時間)です。
実行者・実行チャンネルを入力欄に直接書くときは {Command.channel} / {Command.user} を使います(カスタムイベントでは {Event.channel} / {Event.user})。以前の CURRENT_CHANNEL / COMMAND_USER は非推奨です。保存済みの定義は自動で読み替えられますが、新しく書くときは {Command.*} をお使いください。
条件の種類
比較による条件分岐
「基準値」と「比較する値」を比べます。
| 比較演算子 | 一致する条件 |
|---|---|
等しい (==) / 等しくない (!=) | 両方が数値として読めれば数として、そうでなければ文字列として比較します。文字の 5 と数値の 5 は等しくなります |
より大きい (>) / より小さい (<) / 以上 (>=) / 以下 (<=) | 両方が数値のときだけ判定できます。どちらかが数値に変換できなければ成り立ちません |
含む (contains) / 含まない (not contains) | 基準値の文字列の中に、比較する値が含まれるかどうか |
確率による条件分岐
「確率」に 0〜100 の数値を入れます。
- 枝が 1 つだけのときは、毎回その確率で成り立ちます。
0以下なら常に成り立たず、100以上なら常に成り立ちます。数値として読めない値は成り立ちません。 - 一致の枝がすべて確率の枝のときは、各枝の確率を持ち分とした 1 回の抽選でどれか 1 つに進みます。たとえば 30% と 20% の枝を置くと、残りの 50% は「Else(それ以外)」へ進みます。確率
0の枝は抽選から外れます。 - 「確率を均等に配分」は、「Else(それ以外)」も 1 枠に数えて 100% を整数で分けます。割り切れない分は最初の分岐に足します。値に変数を使っている分岐は変わりません。条件ブロックの「+」で確率の枝を足したときも、同じ配分で全枝の確率が書き換わります。
- 確率の合計は 100% 以下にしてください。合計が 100% を超えるときは一致の枝を追加できません。超えた場合、後ろの枝は選ばれません。
- 確率の枝と、ほかの種類の枝を同じ条件ブロックに混ぜると、抽選ではなく上から順の「先勝ち」判定になります。
チャンネルによる条件分岐
比較元を「コマンドを実行したチャンネル」「チャンネルID」「チャンネル変数」から選び、「等しい (==)」または「等しくない (!=)」で比較します。ID・変数名を空にすると、コマンドを実行したチャンネルが比較元になります。
チャンネルは、変数・<#123...> 形式のメンション・数字の ID・サーバー内のチャンネル名のいずれでも指定でき、この順でチャンネルの数字 ID に解決してから比較します。どちらかが ID に解決できなければ成り立ちません。
権限による条件分岐
対象ユーザーが「基準となる権限」(複数選択可)を持っているかで判定します。
| 条件タイプ | 一致する条件 | 権限を 1 つも選んでいないとき |
|---|---|---|
| すべての権限を持っている | 指定した権限をすべて持っている | 常に一致 |
| すべての権限を持っていない | 指定した権限をどれも持っていない | 常に一致 |
| いずれか1つ以上の権限を持っている | 指定した権限のうち 1 つでも持っている | 常に不一致 |
対象ユーザーが管理者(administrator)権限を持っていると、どの権限も「持っている」と判定されます。管理者を別扱いにしたいときは、ロールやユーザーによる条件分岐と組み合わせてください。
サーバー内での利用が前提です。対象ユーザーをサーバーのメンバーとして特定できないときは成り立ちません。
ロールによる条件分岐
対象ユーザーが指定したロールを持っているかで判定します。一致の枝で「持っている」「持っていない」を切り替えられます。ロールは ID またはロール変数で指定し、ロールの数字 ID に解決できない値(存在しないロール名など)は成り立ちません。
ユーザーによる条件分岐
対象ユーザーと比較相手のユーザー ID どうしを比べます。一致の枝で「である」「ではない」を切り替えられます。ID の比較だけで判定するため、DM でも使えます。どちらかの ID が特定できないときは成り立ちません。
時刻による条件分岐
現在の曜日・時刻・日時を、判定の共通ルールのタイムゾーンで比べます。
| 比較対象 | 使える演算子 | 形式と注意 |
|---|---|---|
| 曜日 | いずれかである / いずれでもない | 複数選択できます |
| 時刻 | より前 / より後 / 等しい / 等しくない / 範囲内 / 範囲外 | HH:MM または HH:MM:SS(HH は 0〜23、MM・SS は 0〜59)。範囲の終了が開始より小さいとき(例: 22:00〜02:00)は深夜をまたぐ範囲になります |
| 日時 | 時刻と同じ | ISO 8601 形式(例: 2026-06-01T21:00)。タイムゾーンを書かない日時は Bot のタイムゾーンの時刻として、Z や +09:00 付きの日時はその時刻として比べます。範囲は深夜またぎにならないため、終了は開始より後にしてください |
形式が不正な値(25:00 や 10:60 など)は成り立ちません。
ブーストによる条件分岐
「判定する内容」で次のどちらかを選びます。DM で実行されたときは成り立ちません。
| 判定する内容 | 一致する条件 |
|---|---|
| サーバーのブーストレベル(既定) | サーバーのブーストレベル(0〜3)が「必要なブーストレベル」以上 |
| ユーザーがサーバーをブーストしているか | 対象ユーザーがこのサーバーをブーストしている |
対象ユーザーは ID・メンション・変数で指定します。省略すると実行者(コマンドでは {Command.user}、イベントでは {Event.user})です。サーバーを退出済みのユーザーや、スケジュール実行のように実行したメンバーがいないイベントでは成り立ちません。
上限
条件の判定も、コマンド 1 回の実行時間とステップ数の上限に含まれます。ループの中の条件は、繰り返すたびにステップ数を消費します。上限値は 上限とクールダウン をご覧ください。
うまく分岐しないとき
- 常に「Else(それ以外)」に進む: チャンネル・ロール・ユーザーの ID や変数が解決できていないか、時刻・日時の形式が正しくない可能性があります。ID は数字で指定してください。時刻の条件は Bot のタイムゾーンの設定もご確認ください。
- 確率の枝の一部が選ばれない: 確率の合計が 100% を超えていないか、確率の枝とほかの種類の枝を混ぜていないかをご確認ください。
関連ページ
最終更新: