Discord Verify
An Andrew ID Verification bot!
Development
# Set up environment variables
cp .env.example .env
# Edit .env with your personal Discord bot credentials
Create a new Discord bot or use one of your current ones, and put its token in .env. Everything else resolves from Vault when you enter the dev shell.
Data Model
# Guild Configuration
guild:{guild_id}:log_channel -> string (channel_id)
guild:{guild_id}:role:verified -> string (role_id)
guild:{guild_id}:role:unverified -> string (role_id)
guild:{guild_id}:role:level:Undergrad -> string (role_id)
guild:{guild_id}:role:level:Graduate -> string (role_id)
guild:{guild_id}:role:class:First-Year -> string (role_id)
guild:{guild_id}:role:class:Sophomore -> string (role_id)
guild:{guild_id}:role:class:Junior -> string (role_id)
guild:{guild_id}:role:class:Senior -> string (role_id)
guild:{guild_id}:role:class:Fifth-Year Senior -> string (role_id)
guild:{guild_id}:role:class:Masters -> string (role_id)
guild:{guild_id}:role:class:Doctoral -> string (role_id)
# Role assignment mode
guild:{guild_id}:role_mode -> string ("none" | "levels" | "classes" | "custom")
guild:{guild_id}:custom_levels -> set (enabled level names)
guild:{guild_id}:custom_classes -> set (enabled class names)
# User Verification Mappings
discord:{discord_id}:keycloak -> string (keycloak_id)
discord:{discord_id}:verified_at -> string (unix_timestamp)
keycloak:{keycloak_id}:discord -> string (discord_id)
# Temporary Verification State (TTL: 10 minutes)
verify:{state_token} -> json (PendingVerification)