You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Several config keys store Discord entity references as names rather than IDs:
voicechannels.category.name — text-channel category lookup by name.
voicetracking.announcements.channel (default "voice-stats") — channel by name.
amikool.role.name — role lookup by name.
voicechannels.lobby.name / voicechannels.lobby.offlinename are cosmetic display strings the bot sets on managed channels (not lookups) and should stay as names, but their descriptions should clarify that.
Name-based references break in two ways:
Names aren't unique — two roles named "Mods" or two categories named "Voice" produce undefined lookup behavior.
Names aren't selector-friendly. WebUI: dropdown selectors for channel/category/role config keys (replace freetext) #439 plans to render channel/role/category keys as <select> dropdowns populated from the guild cache; that fundamentally relies on the stored value being an ID. Without this migration, those specific keys can't actually be dropdowns.
Leave voicechannels.lobby.name / lobby.offlinename alone but tighten their descriptions in settingsMetadata.
Startup migration: for each renamed key, on first start after the upgrade, look up the named entity in the guild cache. If found, store the ID under the new key and delete the old key. If not found, log a warning and leave the new key empty so the operator notices.
Update settingsMetadata for the new keys; remove old entries.
Acceptance
Renamed keys exist in ConfigSchema, defaultConfig, settingsMetadata; old keys removed.
Migration successfully translates existing values on first start; unresolvable names log a warning.
Problem
Several config keys store Discord entity references as names rather than IDs:
voicechannels.category.name— text-channel category lookup by name.voicetracking.announcements.channel(default"voice-stats") — channel by name.amikool.role.name— role lookup by name.voicechannels.lobby.name/voicechannels.lobby.offlinenameare cosmetic display strings the bot sets on managed channels (not lookups) and should stay as names, but their descriptions should clarify that.Name-based references break in two ways:
"Mods"or two categories named"Voice"produce undefined lookup behavior.<select>dropdowns populated from the guild cache; that fundamentally relies on the stored value being an ID. Without this migration, those specific keys can't actually be dropdowns.Proposed change
voicechannels.category.name→voicechannels.category_idvoicetracking.announcements.channel→voicetracking.announcements.channel_idamikool.role.name→amikool.role_idvoicechannels.lobby.name/lobby.offlinenamealone but tighten their descriptions insettingsMetadata.settingsMetadatafor the new keys; remove old entries.Acceptance
ConfigSchema,defaultConfig,settingsMetadata; old keys removed.Notes