Skip to content

✨ Discordロールをプロフィール値に基づいて動的に付与・作成する - #228

Closed
Tivo0921 wants to merge 2 commits into
mainfrom
feature/discord-role-sync
Closed

✨ Discordロールをプロフィール値に基づいて動的に付与・作成する#228
Tivo0921 wants to merge 2 commits into
mainfrom
feature/discord-role-sync

Conversation

@Tivo0921

Copy link
Copy Markdown
Contributor

概要

メンバーのプロフィール(メンバー種別・学年・学部・興味分野)に基づいて Discord
ロールを自動付与する機能を追加。Discord サーバーに対応するロールが存在しない場合は自動作成する。

変更内容

  • lib/discord-role.ts(新規)— ギルドロール取得・作成・付与のコアロジック
  • lib/admin/actions.tssyncAllMemberDiscordRoles() で一括付与、詳細結果を返すよう拡張
  • components/admin/role-sync-panel.tsx(新規)—
    管理者ページのUI、メンバーごとの結果テーブル表示
  • app/api/onboarding/route.ts — オンボーディング完了時にプロフィール値を渡してロール付与

ロールマッチングの仕組み

env var で ID を手動設定する代わりに、Discord
ロール名とプロフィール値を直接マッチング
する。ロールが存在しない場合は Bot が自動作成する。

プロフィール値 Discord ロール名(合わせる)
memberType: 学部生 / 院生 / 卒業生 / その他 学部生 / 院生 / 卒業生 / その他
year: 学部3年 / 修士1年 … 学部3年 / 修士1年
faculty: 理工学部 / 教育学部 … 理工学部 / 教育学部
interests: Python / React … Python / React

本番環境への適用前に確認すべき点

必須設定

  • DISCORD_GUILD_ID を Lumos 本番サーバーの ID に設定(現在はテスト用
    Lusyサーバーを向いている)

Bot の権限確認

  • Bot に 「ロールを管理」権限 があること
  • Discord サーバーのロール順で Bot
    のロールが付与対象ロールより上位
    にあること(下位ロールは付与できない)

運用上の注意

  • 初回実行時にメンバー全員のプロフィール値に対応するロールが自動作成される。本番サーバーで実
    行する前に作成されるロール名(学部名・興味分野タグ等)を確認・整理しておくことを推奨
  • 年度共通の「全員に付与するロール」(例: Member2026)は MEMBER_ROLE_ID
    環境変数で指定する(任意)
  • 現時点でロールの削除・更新は未実装。プロフィール変更時の古いロール除去は今後の課題

テスト

  • Lusyテストサーバーで管理者ページから一括付与を実行 →
    ロールが自動作成され付与されることを確認
  • Discord API でロールが実際に反映されていることを確認

@Tivo0921
Tivo0921 requested a review from Shion1305 April 28, 2026 11:47
@github-actions

Copy link
Copy Markdown

Deployed on https://dev-pr-228-birbz3fm6q-an.a.run.app

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

Deployed on https://dev-pr-228-birbz3fm6q-an.a.run.app

@Shion1305

Copy link
Copy Markdown
Member

興味分野までロール作ってしまうとロールが溢れてしまう気がしていて、

  • 学部ロール ex. 理工学部 環境情報学府
  • 学年/属性ロール ex. 学部3年 修士2年 卒業生 その他X年

これだけでいいかなと思ったんだけどどう?

@Shion1305

Copy link
Copy Markdown
Member

#229 とかぶっているためCloseします

@Shion1305 Shion1305 closed this May 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants