📝

プロフテンプレートチェック

メッセージが定型フォーマットに沿っているかを自動検証

💡 テンプレートチェックとは? ユーザーが送信したメッセージがあらかじめ定義された テンプレート(定型フォーマット)に従っているかを 自動検証するシステムです。結果に応じてロールの付与・剥奪を 自動実行できます。

概要

テンプレートチェック機能は、指定された形式でメッセージを書いた メンバーを自動で判定し、ロールの付与・剥奪を 行います。例えば「自己紹介テンプレート」を設定しておけば、 必須項目をすべて埋めたメンバーに自動でロールを付与できます。

ユースケース

シナリオ 説明
自己紹介テンプレ 決められた項目(名前・趣味・ひとこと等)をすべて埋めた メンバーにロールを付与
チケット形式 報告フォーマットに沿っているかをチェックし、 違反時は注意ロールを付与
申請フォーム 必須項目の漏れを自動検出、完了者に承認ロールを付与
定時チェック タイマー機能を使い、定期的にメンバーのメッセージを検証

設定の開き方

スラッシュコマンド

管理者権限を持つメンバーは以下のコマンドを実行します:

/プロフィールv2設定

表示されたメニューから「🔍 テンプレチェック」ボタンを クリックすると、テンプレートチェック設定の一覧が表示されます。

オーナーパネル

サーバー管理者はオーナーパネルからも設定できます:

  1. オーナーパネルを開く
  2. 「プロフィール設定」ボタンをクリック
  3. 「テンプレチェック」セクションの「設定」ボタンをクリック

テンプレートの記法

テンプレートは、検証したい 項目名制御構文 で構成されます。

基本構造

名前
&{required}
趣味
&{required}
ひとこと
&{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}

このテンプレートの場合:

空行制御(&{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. 複数設定の評価

複数のテンプレート設定が有効な場合、すべての設定でチェックを実行し、 最もマッチ率の高い結果を採用します。同率の場合はエラーが少ない方が 優先されます。

処理フロー

  1. メンバーがメッセージを送信
  2. サーバーの全テンプレート設定を検索
  3. ロールフィルター(対象/非対象ロール)で対象者を絞り込み
  4. 各設定のテンプレートを使ってメッセージ内容を検証
  5. 最もマッチ率の高い結果を選択
  6. 判定に応じてロールを付与/剥奪
  7. 違反時は設定に応じて通知(スレッド/DM)
  8. タイマー設定がある場合は指定間隔で定期チェックを実行

プロフ審査との連携

プロフ審査とテンプレートチェックの両方が有効になっているチャンネルでは、 テンプレートチェックに合格したメッセージのみプロフ審査が開始されます。 テンプレートに沿っていないメッセージは審査対象になりません。

条件 動作
テンプレートチェック合格 プロフ審査が開始される(転送・スレッド作成・投票受付)
テンプレートチェック不合格 プロフ審査は開始されない
テンプレートチェック未設定(有効でない) 従来どおり、投稿されたメッセージがそのまま審査対象

詳細はプロフ審査機能の 「テンプレートチェックとの連携」も参照してください。

⚠️ 注意: テンプレートチェックは メッセージの内容のみを検証します。添付ファイルや埋め込みコンテンツは チェック対象外です。また、Bot のメッセージはチェック対象外です。