feat: award Discord role to players on each apotheosis #14

Closed
opened 2026-03-07 11:24:34 -08:00 by hikari · 0 comments
Owner

Description

When a player completes an apotheosis, automatically grant them a Discord role in the Elysium server to recognise their achievement.

Behaviour

  • Each apotheosis a player completes awards a corresponding Discord role
  • Roles should be distinct per apotheosis tier (e.g. First Apotheosis, Second Apotheosis, etc.) OR a single cumulative role that gets replaced/upgraded — to be decided
  • Role assignment is triggered server-side at the point the apotheosis is recorded
  • The player must have their Discord account linked (which is required to play, so this should always be available)

Technical Notes

  • Requires Discord Bot token with Manage Roles permission in the Elysium guild
  • Bot token and Guild ID should be stored as 1Password secret references in prod.env
  • Role IDs for each apotheosis tier will need to be created in Discord and stored in config
  • Use Discord API v10: PATCH /guilds/{guild.id}/members/{user.id} to assign roles

Acceptance Criteria

  • Discord bot has Manage Roles permission
  • Bot token and guild ID stored as secrets
  • Role IDs configured (one per apotheosis tier, or a single escalating role)
  • Role is assigned automatically when apotheosis is recorded server-side
  • If role assignment fails, it should log the error but not fail the apotheosis itself (graceful degradation)

This issue was created with help from Hikari~ 🌸

## Description When a player completes an apotheosis, automatically grant them a Discord role in the Elysium server to recognise their achievement. ## Behaviour - Each apotheosis a player completes awards a corresponding Discord role - Roles should be distinct per apotheosis tier (e.g. First Apotheosis, Second Apotheosis, etc.) OR a single cumulative role that gets replaced/upgraded — to be decided - Role assignment is triggered server-side at the point the apotheosis is recorded - The player must have their Discord account linked (which is required to play, so this should always be available) ## Technical Notes - Requires Discord Bot token with `Manage Roles` permission in the Elysium guild - Bot token and Guild ID should be stored as 1Password secret references in `prod.env` - Role IDs for each apotheosis tier will need to be created in Discord and stored in config - Use Discord API v10: `PATCH /guilds/{guild.id}/members/{user.id}` to assign roles ## Acceptance Criteria - [ ] Discord bot has `Manage Roles` permission - [ ] Bot token and guild ID stored as secrets - [ ] Role IDs configured (one per apotheosis tier, or a single escalating role) - [ ] Role is assigned automatically when apotheosis is recorded server-side - [ ] If role assignment fails, it should log the error but not fail the apotheosis itself (graceful degradation) ✨ This issue was created with help from Hikari~ 🌸
naomi closed this issue 2026-03-08 15:53:41 -07:00
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: nhcarrigan/elysium#14