Configuration
Voice Support is configured through voicesupport. In normal Athena installs,
use the dashboard when dashboard-backed config storage is enabled.
Core
| Option | Type | Description |
|---|---|---|
enabled | boolean | Master switch for the voice support system. |
debug | boolean | Enables additional console logging. |
embedColor | string | Default embed color for case and stats embeds. |
Channels
| Option | Type | Description |
|---|---|---|
waitingRoomChannelId | string | Voice channel users join to request support. |
caseChannelId | string | Text channel where new case embeds are posted. |
logChannelId | string | Text channel where completed or cancelled case logs are posted. |
supportCategoryId | string | Category used when creating temporary support voice channels. |
Roles
| Option | Type | Description |
|---|---|---|
supportRoleId | string | Role pinged when a new support case is created. |
staffRoles | string[] | Roles allowed to take over, transfer, comment on, and close support cases. |
Voice Handling
| Option | Type | Description |
|---|---|---|
voiceHandlingMode | string | move_to_supporter or create_temp_channel. |
tempChannelNameFormat | string | Name format for created temporary channels. Supports {caseId}, {username}, and {supporter}. |
Use move_to_supporter when staff already sit in support voice channels. Use
create_temp_channel when each case should receive a fresh temporary channel.
Combined Cases
| Option | Type | Description |
|---|---|---|
combinedCases.enabled | boolean | When true, multiple waiting users can be handled together in one case. |
combinedCases.autoAddLatecomers | boolean | When true, users who join while a combined case is active can be added to that case automatically. |
combinedCases.tempChannelNameFormat | string | Optional channel name format for combined cases. Supports {caseId}, {userCount}, and {supporter}. |
Combined cases are useful when a team joins together for the same issue, or when staff want to pull everyone currently waiting into one support room.
Timeouts
| Option | Type | Description |
|---|---|---|
noSupporterTimeout | number | Seconds before a waiting case is cancelled when no staff member takes it. Set to 0 or null to disable. |
autoCloseTimeout | number | Seconds before an in-progress case is closed after its temporary channel becomes empty. Set to 0 or null to disable. |
Waiting Room Music
| Option | Type | Description |
|---|---|---|
waitingRoomMusic.enabled | boolean | Enables music while users wait. |
waitingRoomMusic.filePath | string | Local path to the waiting music file. |
waitingRoomMusic.loop | boolean | Loops the track. |
waitingRoomMusic.volume | number | Playback volume from 0.0 to 1.0. |
waitingRoomMusic.disconnectWhenEmpty | boolean | Disconnects the bot when no humans remain in the waiting room. |
waitingRoomMusic.selfDeaf | boolean | Self-deafens the bot while connected. |
Closed Music
| Option | Type | Description |
|---|---|---|
closedMusic.enabled | boolean | Enables a separate loop while support is closed. |
closedMusic.filePath | string | Local path to the closed-support music file. |
closedMusic.loop | boolean | Loops the track. |
closedMusic.volume | number | Playback volume from 0.0 to 1.0. |
closedMusic.disconnectWhenEmpty | boolean | Disconnects the bot when no humans remain in the waiting room. |
closedMusic.selfDeaf | boolean | Self-deafens the bot while connected. |
Buttons
Each button has an emoji and Discord button style.
| Option | Purpose |
|---|---|
buttons.takeOver | Staff accepts a waiting case. |
buttons.close | Staff closes an in-progress case. |
buttons.transfer | Staff transfers the case to another supporter. |
buttons.comment | Staff adds an internal comment to the case. |
buttons.cancel | User or staff cancels a waiting case. |
Supported styles are Primary, Secondary, Success, and Danger.
Commands
| Option | Type | Description |
|---|---|---|
commands.voicesupport.name | string | Slash command name. Usually voicesupport. |
commands.voicesupport.description | string | Slash command description shown by Discord. |
Permissions
| Option | Type | Description |
|---|---|---|
permissions.voicesupport_command | string | Athena permission level required for /voicesupport. Default is usually staff. |
permissions.voicesupport_buttons | string | Athena permission level for button interactions. Staff role checks still apply to staff actions. |
permissions.voicesupport_event | string | Athena permission level for voice event handling. Usually everyone. |
Data Storage
Voice Support stores case history in MongoDB through the plugin models:
SupportCaseVoiceSupportState
This lets /voicesupport stats, /voicesupport history, /voicesupport case,
and persisted open/closed support state survive bot restarts.