6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

VUTD(バーチャル東大Discord)Advent Calendar 2021

Day 6

Discord鯖の権限整備のノウハウとVUTDでの権限実装について

Last updated at Posted at 2021-12-05

これは何

この記事では,一般のDiscordサーバー管理で役に立つであろう,サーバー内の権限管理に必要な概念・知識を説明し,それをもとにVUTDではどのように整備しているかを解説します.

マニュアルを移設してきただけのため,大部分は箇条書きとなっています.ご了承ください.

一般的な権限の説明

この記事はDiscordのロールなどの概念がわかっている方向けの記事です.そうでない方は,こちらに良さげな記事がありましたので共有しておきます→Discordの権限設定について説明してみる

公式資料はこちら→権限をセットアップするには? – Discord - サーバー設定

権限項目

  • テキストチャンネルとボイスチャンネルで異なる
    • カテゴリチャンネルにはどちらの権限も設定できる
  • 管理者」(サーバー設定にのみ存在)がonのロールを持つユーザーは他の全ての設定を無視して,ロールがあれば可能なことは全て可能である
  • わかりにくい項目
    • 「管理者」は上述,「サーバー管理」はサーバーの名前やアイコンの変更・Botの追加のみの権限
    • テキストチャンネルについて,「チャンネルを見る」はチャンネルが存在することとその名前が分かり,かつ見ている間に送信されたメッセージを見られる権限,「メッセージの履歴を見る」は自分がいなかった間のメッセージを見られる権限
    • ボイスチャンネルについて,「チャンネルを見る」はチャンネルが存在することとその名前が分かる権限.「接続」はボイスチャンネルに入って聞くことができる権限

権限設定

  • 権限設定は主に3種類
    1. サーバー設定:ロール
      • 全項目設定必須
      • @everyoneは新しいロールを作るときのデフォルトとなる
    2. チャンネル設定:ロール
      • まずロールを(チャンネル権限設定に)追加してから設定する
        • @everyoneは必ず追加されている状態
      • 許可(✔︎),不許可(✖️),設定なし)が選べる
        • 全て設定なしの状態=そのロールを追加していない状態
      • カテゴリと同期できる
    3. チャンネル設定:ユーザー
        1. の「ロール」を「ユーザー」に読み替えたものと同じ
    1. および2. で,あるユーザーのもつロールのうち複数について設定がある場合,**設定のある項目ごとの論理和(OR)**が採用される
  • 各ユーザーの各項目ついて,3 > 2 > 1 の優先度で適用される(下の権限が設定されていれば上の権限は無視される)

権限のカテゴリ同期

  • カテゴリには権限設定の2. と3. を設定できる
    • カテゴリ内に新しいチャンネルを立てるときのデフォルトとなる
  • カテゴリ内のチャンネルはカテゴリと権限を同期できる
  • 同期している場合
    • 同期すれば同じ設定になるし,同じ設定にすれば自動で同期する
    • カテゴリの権限を編集したとき,同期しているチャンネルの権限も編集される
  • 同期していない場合
    • チャンネルの権限設定で「いますぐ同期する」を押すことで同期できる→チャンネルの設定は消失する
    • カテゴリの権限を編集しても,チャンネルの権限は一切編集されない

ロールの順序

  • ロールはサーバーに属し,順序が存在する
  • 順序は以下に影響を及ぼす
    • ユーザーの表示名の色
      • そのユーザーの持つロールのうち一番上のロールの色を参照する
      • 参照されたロールの色が「既定値」だと,その下の色を参照する
      • @everyoneの色は灰色
    • 「オンラインメンバーとは別にロールメンバーを表示する」場合の順番
      • あるユーザーは,そのユーザーの持つ権限のうちこの項目がonになっているものの中で一番上のロールの場所に表示される
    • 「ロールの管理」の範囲
      • あるユーザーがこの権限を持っている場合,そのユーザーの持っている一番上のロール未満のロールを管理できる
      • 一番上のロールはサーバー管理人のみが管理できる
    • 「メンバーをキック」「メンバーをBAN」の範囲
      • あるユーザーがこれらの権限を持っている場合,そのユーザーの持っている一番上のロール未満のロールしか持っていないユーザーをキック/BANできる
      • 一番上のロールを持っているユーザーはサーバー管理人のみがキック/BANできる

VUTDにおける権限管理

原則

以下1. ~ 3. は権限設定のそれを指す.

    1. ~ 3. のうちできるだけ上にある権限で設定する
    • 上の権限の方が依存箇所(編集箇所)が少ない
    • 権限の剥奪がスムーズになる
    1. および3. が必要であればできるだけカテゴリに同期する
    • 理由は上に同じ
    1. および3. が同期できないカテゴリについては,新しいチャンネルを立てるときに設定数が最小限になるようにカテゴリの権限を設定する
    • カテゴリの権限設定はカテゴリ内に新しいチャンネルを立てるときのデフォルトとなることを考慮
    1. および2. については,ある権限項目をonとしたい場合にはできるだけonと設定する部分が少なくなるようにする
    • 権限の剥奪がスムーズになる
  • @everyoneのほぼ全ての権限項目をoffとする
    • 権限の剥奪がスムーズに
    • 新しいロールを作るときのデフォルトとなることを考慮
    • ニックネームの変更のみ1. でしか設定できないためon

実装

  • 大部分の権限を@東大生に集約 し,ほとんどのロールについて全ての権限項目をoffとする
    • OR仕様より,権限の集中管理が可能
    • 例えば「メッセージを送信」権限は@東大生#自己紹介のチャンネル設定でのみonである
  • 多くのカテゴリで2. および3. が不要であるようにする
    • これを達成しつつ@東大生にのみ閲覧可能とするためにも,@everyoneの権限項目は全てoff・大部分の権限を@東大生に集約
    • 権限設定がある必要なカテゴリ
      • 「はじめに読んでね」「つぎに読んでね」(後述)
      • 表示管理カテゴリ(後述)
      • 「運営」
        • @everyoneの「チャンネルを見る」「接続」→✖️
        • @manageの「チャンネルを見る」「接続」→✔︎
        • @Expanderの「チャンネルを見る」→✔︎,「メッセージ履歴を読む」→✖️
          • カテゴリ内リンクを貼ったら展開するが,カテゴリ内リンクを貼っても展開しない
          • botのREADME
      • 「SERVER STATS」
        • @everyoneの「接続」→✖️
        • @Member Countの「接続」→✔︎
  • 「はじめに読んでね」「次に読んでね」を以下のように設定する:
    • カテゴリ設定:
      • @everyone
        • 「チャンネルを見る」→✔︎,
        • 「メッセージ履歴」→✔︎,
        • 「メッセージを送信」→✖️
        • #自己紹介以外を閲覧専用で,かつ@東大生以外にも閲覧可能とするため
    • #自己紹介の設定:
      • @everyone
        • 「チャンネルを見る」→✔︎,
        • 「メッセージ履歴」→✔︎,
        • 「メッセージを送信」→✔︎
        • @東大生以外も閲覧・送信可能とするため
    • #自己紹介以外の設定:カテゴリと同期
  • 表示管理カテゴリを以下のように設定する:
    • 表示管理カテゴリとは:
      • 「リサーチキャンパス(ゼミ)」
      • 「ゲームセンター」
    • カテゴリ設定:
      • @everyoneの「チャンネルを見る」→✖️,
        • 興味のない分野のチャンネルを見せないため
      • @botの「チャンネルを見る」→✔︎
        • 各チャンネルでbotを使えるようにするため
    • ボイスチャンネル・付属テキストチャンネルの設定:設定なし
      • つまり溜まり場などと一致
    • 他の各チャンネルの設定:カテゴリ設定(デフォルト)に加えて,
      • 該当ロールの「チャンネルを見る」→✔︎
      • 主催ユーザーの「チャンネルを管理」→✔︎(ゼミの場合)
        • チャンネル名を変更してもらうため
  • 管理者権限を@manageから外し、@sudoに分離:
    • ロール順位は それ以外 > @sudo > @Sudo Manager > @manageに設定
6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?