コマンドビルダー

イベントビルダー(カスタムイベント)

「イベントビルダー」は、Discord サーバー上で起きた出来事(メンバーの参加、メッセージの編集、リアクションなど)や、決まった時刻をきっかけに Bot を自動で動かすための機能です。処理の組み立て方はコマンドビルダーと同じで、ブロックを線でつないで作ります。

機能動くきっかけ
コマンドビルダーユーザーがスラッシュコマンドを入力したとき/help と打つと使い方を返信する
イベントビルダーサーバーで出来事が起きたとき、または決まった時刻新しいメンバーが参加したら歓迎メッセージを送る

イベントの一覧・作成・削除はカスタムイベント一覧から行います。この画面は、一覧の「処理を編集」から開きます。

コマンドビルダーとの違い

項目カスタムコマンドカスタムイベント
起点のブロック「スラッシュコマンド」「イベントトリガー」
左サイドバーブロック / 変数 / グループ / 関数 / 解析 / ログブロック / 変数 / 関数 / 解析 / ログ
オプション(引数)使えますありません
実行者コマンドを実行した人トリガーによって決まります(いないこともあります)
文脈の変数{Command.*}{Event.*}

「イベントトリガー」と「エラーハンドラー」の 2 つが起点ブロックで、どちらも移動・削除ができません。エラーハンドラーとコマンド内関数はカスタムコマンドとまったく同じように使えます。

イベントでは使えないブロック

次のブロックはブロックパネルに並びません。

ブロック理由
「モーダルを送信」「ボタン」「選択メニュー」イベントには操作の起点となるユーザーがいないためです。
オプション 8 種(テキスト / 数値 / 真偽値 / ユーザー / ロール / チャンネル / 添付ファイル / 選択)イベントには引数がないためです。

カスタムコマンドから複製した定義にこれらが残っている場合は、「イベントでは動かないブロックが N 個あります」と警告が出ます。保存はできますが、実行時にはそのブロックが読み飛ばされます。

イベントでの制限

置けるブロックでも、イベントでは動きが変わるものがあります。

設定イベントでの動き
Components V2送信できません。メッセージ本文ごと送られないため、通常のメッセージに切り替えてください。
永続パネル作成できません。ボタンだけが送信されず、本文のみ送られます。
エフェメラル(実行者のみ表示)無視され、全員に見えるメッセージとして送られます。
「メッセージの消去」巻き込み防止のフィルタが効きません。直前に自分が送ったメッセージも削除対象になります。

チャンネルの指定

「メッセージを送信」の「メッセージの送信先」にある「コマンド実行と同じチャンネル」は、イベントではイベントの発生元チャンネルを指します。これを選べるのは、そのトリガーが対象チャンネルを持つ場合だけです。持たないトリガーでは「特定のチャンネル」を選び、チャンネル ID のほかに {Event.channel}{BSVAR_…} などの変数で指定してください。「コマンド実行者のDM」も同じで、対象ユーザーを特定できるトリガーでのみ届きます。

「インスタント招待の作成」「メッセージの消去」「チャンネルを編集」や、チャンネルを選ぶ欄が無い「メッセージを編集」「メッセージを削除」も、同じく発生元チャンネルに依存します。解決できない組み合わせになっているときは画面に案内が出ます。

対象ユーザーの指定

「ロールを付与」「メンバーのBAN」「メンバーのKick」「メンバーのTimeout」など、既定で実行者を対象にとるブロックは、対象がサーバーメンバーとして解決できないと何もせずに終わります。イベントで実行者が確実に決まるのは「メンバーが参加」「メンバーが退出」など一部のトリガーだけなので、それ以外では対象ユーザーを {Event.user} などの変数か ID で明示的に指定してください。対象が未指定のときは画面に案内が出ます。

条件ブロックのラベル

条件ブロック(チャンネル / ユーザー / ロール / 権限)の対象は、イベントでは「イベントの発生元チャンネル」「イベントの対象ユーザー」というラベルになります(カスタムコマンドでは「コマンドを実行したチャンネル」「コマンドを実行したユーザー」です)。

イベントの中で使える変数

{Bot.*} {Now.*} {Guild.*} と、次の変数を使えます。{Command.*} はカスタムイベントでは一切使えません。

常に使える変数

変数内容
{Event.id}このイベント定義の ID
{Event.name}イベント名
{Event.trigger}トリガーの種別(例: memberJoin)
{Event.firedAt}発火した時刻。時刻の型なので {Event.firedAt.short} のように書けます
{Event.guild}イベントが発火したサーバー

トリガー次第で使える変数

変数内容
{Event.channel}対象チャンネル。対象チャンネルを持つトリガーでのみ登録されます
{Event.user}対象ユーザー。実行者を特定できるトリガーでのみ登録されます

トリガーが提供する名前空間

トリガーごとに、次の名前空間のうち使えるものだけが変数一覧と入力補完に並びます。

名前空間内容
{Member.*}対象メンバー(ユーザー型)
{Role.*}対象ロール(ロール型)
{Thread.*}対象スレッド(チャンネル型)
{Message.*}id / content / url。本文はメッセージコンテンツ インテントが無いと空になります
{Invite.*}code / url / uses / maxUses / maxAge / temporary
{Stage.*}id / topic / privacyLevel
{Reaction.*}emoji / emojiId / emojiName
{Poll.*}messageId / answerId
{Emoji.*} / {Sticker.*}id / name / url / animated
{AutoMod.*}ruleId / action / matchedKeyword / matchedContent / content
{AutoModRule.*}id / name / enabled
{Audit.*}id / action / reason / changed
{Target.*}監査ログの操作対象(id / name / mention)
{Nickname.before} / {Nickname.after}ニックネームの変更前後
{Before.*} / {After.*}サーバー設定の変更前後(name / ownerId / boostLevel)

プラン別の上限

項目FreePlusProMax
有効にできるカスタムイベント数31030100
1 イベントに置けるブロック数150200300500
1 分あたりの発火回数3060120300
同時に実行できるイベント数251020
イベント連鎖の深さ3355
スケジュールの最短間隔(秒)1206030制限なし

「イベント連鎖の深さ」は、イベントの処理が起こした変更がさらに別のイベントを呼ぶ、という連鎖を何段まで許すかの上限です。ユーザーの操作から直接起きた発火は 0 段目として数えます。

次のステップ / 関連ページ

最終更新:

目次