プロフテンプレートチェック
メッセージが定型フォーマットに沿っているかを自動検証
💡 テンプレートチェックとは? ユーザーが送信したメッセージがあらかじめ定義された テンプレート(定型フォーマット)に従っているかを 自動検証するシステムです。結果に応じてロールの付与・剥奪を 自動実行できます。
概要
テンプレートチェック機能は、指定された形式でメッセージを書いた メンバーを自動で判定し、ロールの付与・剥奪を 行います。例えば「自己紹介テンプレート」を設定しておけば、 必須項目をすべて埋めたメンバーに自動でロールを付与できます。
ユースケース
| シナリオ | 説明 |
|---|---|
| 自己紹介テンプレ | 決められた項目(名前・趣味・ひとこと等)をすべて埋めた メンバーにロールを付与 |
| チケット形式 | 報告フォーマットに沿っているかをチェックし、 違反時は注意ロールを付与 |
| 申請フォーム | 必須項目の漏れを自動検出、完了者に承認ロールを付与 |
| 定時チェック | タイマー機能を使い、定期的にメンバーのメッセージを検証 |
設定の開き方
スラッシュコマンド
管理者権限を持つメンバーは以下のコマンドを実行します:
/プロフィールv2設定
表示されたメニューから「🔍 テンプレチェック」ボタンを クリックすると、テンプレートチェック設定の一覧が表示されます。
オーナーパネル
サーバー管理者はオーナーパネルからも設定できます:
- オーナーパネルを開く
- 「プロフィール設定」ボタンをクリック
- 「テンプレチェック」セクションの「設定」ボタンをクリック
テンプレートの記法
テンプレートは、検証したい 項目名 と 制御構文 で構成されます。
基本構造
名前
&{required}
趣味
&{required}
ひとこと
&{required}
上記の場合、以下のチェックが行われます:
- 「名前」「趣味」「ひとこと」の 3項目がすべて存在すること
- 各項目に 内容が記入されていること
(
&{required}) - 項目の 順番 がテンプレート通りであること
制御構文一覧
| 制御構文 | 説明 |
|---|---|
&{required} |
その項目の記入が必須 |
&{min=N} |
最小 N 文字以上の記入が必要 |
&{max=N} |
最大 N 文字以内 |
&{min=N,max=M} |
N 文字以上 M 文字以内 |
&{regex=/パターン/} |
正規表現にマッチする必要がある |
&{option} |
項目の記入は任意(存在すればチェック) |
&{no_empty_line} |
項目内に空行があるとエラー |
&{line} |
項目ブロック間に区切り(最低1行)を強制 |
記入例
名前
&{required}
年齢
&{required,min=1,max=3}
誕生日
&{required,regex=/(\d{4})年(\d{1,2})月(\d{1,2})日/}
趣味
&{option}
ひとこと
&{required}
このテンプレートの場合:
- 名前: 記入必須
- 年齢: 記入必須、1〜3文字
- 誕生日: 記入必須、
2026年7月18日のような形式にマッチ - 趣味: 任意(書いても書かなくてもOK)
- ひとこと: 記入必須
空行制御(&{no_empty_line})
項目内に空行が含まれているとエラーにする制御です。 名前や年齢のように 1行で完結すべき項目 に使います。
【名前】&{no_empty_line}
【年齢】&{no_empty_line}
【詳細】
✅ 合格例:
【名前】John
【年齢】25
【詳細】
Hello! I'm John.
I like programming.
❌ 不合格例(名前の後に空行がある):
【名前】John
【年齢】25
【詳細】
Hello! I'm John.
I like programming.
❌ 不合格例(年齢の行の後ろに空行がある):
【名前】John
【年齢】25
【詳細】
Hello! I'm John.
行間制御(&{line})
&{line} は項目間の制御行として使い、
前後の項目ブロックの間に最低1行の区切り
(空行・装飾線・区切り線など)があることを強制します。
装飾線の前後に空行があっても問題ありません。
【名前】
【年齢】
&{line}
【自己紹介】
✅ OK(空行で区切る):
【名前】けい
【年齢】23
【自己紹介】
よろしく!
✅ OK(区切り線で区切る):
【名前】けい
【年齢】23
----------
【自己紹介】
よろしく!
❌ NG(区切りなし):
【名前】けい
【年齢】23
【自己紹介】
よろしく!
✅ OK(装飾区切り線+空行):
【名前】けい
【年齢】23
----------
【自己紹介】
よろしく!
設定項目一覧
基本設定
| 項目 | 説明 |
|---|---|
| 有効/無効 | テンプレートチェックのON/OFF |
| 名前 | 設定の名前(管理用) |
| テンプレート | チェックに使用するテンプレート本文 |
| プロフィール設定 | チェックに関連付けるプロフィールv2設定(紐付けは任意) |
ロール設定
| 項目 | 説明 |
|---|---|
| 合格付与ロール | テンプレートに適合したメンバーに付与するロール |
| 合格剥奪ロール | テンプレートに適合したメンバーから剥奪するロール |
| 違反ロール | テンプレートに適合しなかったメンバーに付与するロール |
| 対象ロール | このロールを持つメンバーのみチェック対象にする (省略時は全員) |
| 非対象ロール | このロールを持つメンバーをチェック対象から除外する |
通知設定
| 項目 | 説明 |
|---|---|
| 通知方法 | 違反時の通知方法 (なし / スレッド作成 / DM / DM→スレッドフォールバック) |
| ログメッセージ | 通知時に表示するカスタムメッセージ (プレースホルダー使用可能) |
タイマー設定
| 項目 | 説明 |
|---|---|
| 開始時刻 | タイマーチェックの開始時間(時:分) |
| チェック間隔 | チェックを繰り返す間隔(時間単位)。 未設定の場合は1回のみ |
検証ルール
テンプレートチェックエンジンは以下のルールで検証を行います:
1. 項目の存在チェック
テンプレートに書かれた項目名がメッセージ内に存在するか確認します。 項目名は行頭にあるものとして検出されます。
2. 順番チェック
項目はテンプレートに書かれた順番通りに並んでいる必要があります。 順番が異なる場合はエラーとなります。
3. 記入内容チェック
各項目の右側に続く内容と、次の項目までのブロックを内容として抽出し、
&{required} や &{min=N} などの
制約に従って検証します。
4. 空行チェック
&{no_empty_line} が設定された項目では、
次の項目までの間に空行が含まれていないか検証します。
空行がある場合はエラーとなります。
これは名前や年齢など 1行で完結すべき項目
に空行が入るのを防ぎます。
5. 行間チェック
&{line} がテンプレートの項目間に書かれている場合、
実際のメッセージでその2つの項目の間に
最低1行あるか検証します。
空行・区切り線・装飾線(カスタム絵文字を使ったラインなど)
いずれでも構いません。
0行(密着)のみエラーとなり、複数行あっても許容されます。
6. 複数設定の評価
複数のテンプレート設定が有効な場合、すべての設定でチェックを実行し、 最もマッチ率の高い結果を採用します。同率の場合はエラーが少ない方が 優先されます。
処理フロー
- メンバーがメッセージを送信
- サーバーの全テンプレート設定を検索
- ロールフィルター(対象/非対象ロール)で対象者を絞り込み
- 各設定のテンプレートを使ってメッセージ内容を検証
- 最もマッチ率の高い結果を選択
- 判定に応じてロールを付与/剥奪
- 違反時は設定に応じて通知(スレッド/DM)
- タイマー設定がある場合は指定間隔で定期チェックを実行
プロフ審査との連携
プロフ審査とテンプレートチェックの両方が有効になっているチャンネルでは、 テンプレートチェックに合格したメッセージのみプロフ審査が開始されます。 テンプレートに沿っていないメッセージは審査対象になりません。
| 条件 | 動作 |
|---|---|
| テンプレートチェック合格 | プロフ審査が開始される(転送・スレッド作成・投票受付) |
| テンプレートチェック不合格 | プロフ審査は開始されない |
| テンプレートチェック未設定(有効でない) | 従来どおり、投稿されたメッセージがそのまま審査対象 |
詳細はプロフ審査機能の 「テンプレートチェックとの連携」も参照してください。
⚠️ 注意: テンプレートチェックは メッセージの内容のみを検証します。添付ファイルや埋め込みコンテンツは チェック対象外です。また、Bot のメッセージはチェック対象外です。