Bot/create

/create

シナリオテンプレートからカテゴリー/チャンネル/ロールを一括生成するコマンド

/create category

事前に用意したシナリオテンプレートを元に、カテゴリー・チャンネル・(必要なら)ロールを一括で作成します。サーバー管理権限が必要です。

基本的な使い方

# シナリオをオートコンプリートから選択して実行
/create category scenario: ホテル殺人事件

# 新規ロールを自動作成する場合
/create category scenario: ホテル殺人事件 new_role_name: プレイヤー

# 既存ロールを使う場合
/create category scenario: ホテル殺人事件 role: @プレイヤー

# テンプレートのスレッド URL を直接指定する場合(後方互換)
/create category thread: https://discord.com/channels/...

パラメータ

  • scenario ― シナリオ(オートコンプリートで候補を選択)。thread と排他。
  • thread ― テンプレートを書いたスレッドの URL を直接指定(後方互換用)。scenario と排他。
  • role ― 既存ロールを指定。new_role_name と排他。
  • new_role_name ― 新しいロールを作って割り当て。同名が既にあれば (2) 等の接尾辞を自動付与。role と排他。
scenario / thread はいずれか一方を必ず指定します(両方指定はエラー)。
role / new_role_name のどちらも未指定の場合はロール紐づけなしで作成され、全てのチャンネルは管理権限者のみ閲覧できる状態になります。

テンプレート記法

シナリオをオートコンプリートに載せるための基本運用と、スレッド内の 2 つの書き方(Inline / Multiline)を説明します。

基本運用

  • サーバーに「テンプレート収納チャンネル」を 1 つ作成する(例: #シナリオテンプレ
  • 各シナリオを スレッド として立てる(スレッドタイトル = オートコンプリートに出る表示名)
  • スレッドの先頭に category: <カテゴリー名> を書く
  • 以降、下記 Inline / Multiline のいずれかの書き方でチャンネル情報を並べる
オートコンプリートに出る候補は、コマンドを実行したチャンネルと同じカテゴリ内のチャンネルに属するスレッドから集められます。テンプレ収納チャンネルと、実際に /create category を叩くチャンネルは、同じカテゴリに置くのが基本運用です。

Inline 形式(1 メッセージに全部書く)

スレッド先頭のメッセージに全てを詰め込む書き方です。メッセージリンクだけがコピー元として採用され、それ以外の行(装飾・メモ・画像・添付ファイル)は完全に無視されます。

category: ホテル殺人事件
――― 共有部屋 ―――
[全体連絡] | text | allow_view
https://discord.com/channels/.../.../1111...(コピー元メッセージリンク)
https://discord.com/channels/.../.../2222...
――― キャラ別部屋 ―――
[キャラA] | text | allow_write
https://discord.com/channels/.../.../3333...
[キャラB] | text | allow_write
https://discord.com/channels/.../.../4444...
  • 先頭行は必ず category: <カテゴリー名>
  • 各チャンネルの境界は [name] | type | perms 行。
  • コピー元は Discord メッセージリンクに限る。他メッセージを「メッセージリンクをコピー」して貼り付けたものをそのまま採用します。
  • 上記以外の行(見出し・破線・コメント・画像・添付ファイル)はすべて装飾として無視されるため、メモとして自由に書き込めます。
  • 2 件目以降のスレッドメッセージも無視されます。先頭メッセージで完結する設計のため、transfer 等で後続メッセージが追加されても本体は影響を受けません。

Multiline 形式(1 メッセージ = 1 チャンネル)

先頭メッセージに category: のみを書き、2 件目以降のメッセージを 1 チャンネルずつに対応させる書き方です。

(msg 1)
category: ホテル殺人事件

(msg 2)
[全体連絡] | text | allow_view
https://discord.com/channels/.../.../1111...

(msg 3)
[キャラA] | text | allow_write
本文テキストをそのままコピーすることもできます
https://discord.com/channels/.../.../2222...
  • 各メッセージの 1 行目[name] | type | perms になっている必要があります。
  • 2 行目以降は本文としてコピーされます(平文テキスト・メッセージ URL・添付ファイルを出現順に採用)。
  • チャンネルヘッダーとして解釈できないメッセージが 2 件連続した時点で打ち切ります。間に 1 件だけメモを挟むのは許容されるため、transfer 等で混在した配布物は後半にまとめれば safely に無視できます。

形式の自動判別

Bot は先頭メッセージの内容を見て Inline / Multiline を自動で判別します。先頭メッセージに [name] | ... のヘッダー行が 1 つでも含まれていれば Inline 形式、無ければ Multiline 形式として解釈します。明示的な指定は不要です。

使い分けの目安: 雑談・配布物が後半に続くスレッドなら Multiline(2 連続 break が guard)、前半に混ざるなら Inline(先頭メッセージだけで閉じる)が安全です。

チャンネルヘッダーの詳細

ヘッダー行の書式

書式は [<name>] | <attr> | <attr> ...。属性は | 区切りで順不同。

型(省略時は text

  • text ― テキストチャンネル
  • voice ― ボイスチャンネル

権限プリセット(必須)

text 用:

  • private ― 指定ロールにも非公開(管理権限者のみ閲覧可)
  • allow_view ― ロールに閲覧 + メッセージ履歴読み取りを付与
  • allow_write ― 上記 + メッセージ送信を付与
  • allow_all ― 現状 allow_write と同義

voice 用:

  • private ― 指定ロールにも非公開(管理権限者のみ閲覧可)
  • allow_view ― ロールに閲覧のみ付与(接続は不可)
  • allow_speak ― ロールに閲覧 + 接続 + 発言を付与
  • allow_all ― 現状 allow_speak と同義
チャンネル名を # ではなく [ ] で括るのは、Discord が #name を自動的にチャンネルリンクへ変換してしまうのを回避するためです。

/create scenario reload

オートコンプリートの候補 cache を即時再取得します。新しいシナリオを追加してすぐ反映したい場合などに使います。サーバー管理権限が必要です。

基本的な使い方

/create scenario reload

cache の仕組み

  • 候補は 1 時間ごとに自動で再取得されます(TTL 1h)。
  • スレッドがデフォルト 24 時間で自動アーカイブされるギルドでも、オートコンプリートにはアーカイブ済みスレッドも含まれます。
  • Bot 再起動直後の初回オートコンプリートは、先に active なスレッドのみで候補を返し、アーカイブ済みスレッドはバックグラウンドで追加取得します。2 回目以降のオートコンプリートで統合版が出ます。
  • 新規シナリオを追加してすぐ候補に反映したい場合は /create scenario reload を叩くと即時 refresh されます。

応答に表示される情報

  • 候補数category: メタが通ったスレッド数(オートコンプリートに出るもの)。
  • parse 破綻予兆のあるシナリオ一覧 ― 軽量 dry-run で判定した怪しいスレッド。例:
    • Inline 形式だがコピー元 URL が 1 件もない
    • Multiline 形式だが先頭数件以内にチャンネルヘッダーが見つからない
dry-run は軽量のため 100% の検出率ではありません。実行時に解析エラーが出る場合はそのスレッドの記法を確認してください。

UI フロー

実行の流れ

  • /create category を実行する
  • 解析結果がエフェメラル(自分だけに見える)で表示される。カテゴリー名・チャンネル一覧・ロール情報を確認
  • 「✅ 実行」ボタンを押すと作成が始まる
  • 作成結果のサマリーが表示される

ボタン

  • ✅ 実行 ― 即座に作成を開始。レート制限を消費
  • 🔍 詳細プレビュー ― 解析結果の詳細(チャンネルごとのコンテンツ一覧・コピー元情報など)を表示。作成はしない・レート制限を消費しない
ボタンは呼び出した本人のみ操作できます。タイムアウトは 10 分です。

制限事項

権限

  • 「サーバーを管理」(Manage Server)権限の保持者のみ実行できます(/create category / /create scenario reload 共通)。
  • Bot 側に「チャンネルの管理」権限が必要です。new_role_name を指定する場合は「ロールの管理」権限も必要です。

回数制限

  • /create category ― 1日5回まで(ユーザー単位)
  • 連続実行は 60 秒の冷却時間があります(同一サーバー内の同一ユーザー)
  • 詳細プレビューは回数を消費しません
  • 回数は毎日 6:00(JST)にリセットされます

スレッド / チャンネル数

  • スレッドの読み取りは 200 投稿が上限です。それを超える場合は警告が表示されます
  • 1回の実行で作成できるチャンネル数は 30 が上限です

ヘッダー解析エラー

  • 不明なキーワード、型と権限の不整合、権限プリセット未指定などがあると実行はブロックされます
  • エラー内容がエフェメラルで表示されるので、タイポを修正してから再実行してください

コピー元の制約

  • メッセージ URL でコピーできるのは コマンドを実行したギルド内のメッセージに限ります(別ギルドや DM の URL は拒否されます)
  • Bot がそのチャンネルを読める必要があります
  • メンションは無効化されて投稿されます(意図せぬ通知を防ぐため)

ロール

  • role 指定時: そのロールをカテゴリーに紐づけて private 化(@everyone は閲覧不可)
  • new_role_name 指定時: ロールを新規作成してから紐づけ。同名が既にあれば (2) / (3) などの接尾辞を自動付与
  • 両方省略時: ロール紐づけなし、全てのチャンネルは管理権限者のみ閲覧可