Skip to Content
Haven Documentation is the shared home for product guides, plugin setup, and release docs.
PluginsVoiceSupportConfiguration

Configuration

Voice Support is configured through voicesupport. In normal Athena installs, use the dashboard when dashboard-backed config storage is enabled.

Core

OptionTypeDescription
enabledbooleanMaster switch for the voice support system.
debugbooleanEnables additional console logging.
embedColorstringDefault embed color for case and stats embeds.

Channels

OptionTypeDescription
waitingRoomChannelIdstringVoice channel users join to request support.
caseChannelIdstringText channel where new case embeds are posted.
logChannelIdstringText channel where completed or cancelled case logs are posted.
supportCategoryIdstringCategory used when creating temporary support voice channels.

Roles

OptionTypeDescription
supportRoleIdstringRole pinged when a new support case is created.
staffRolesstring[]Roles allowed to take over, transfer, comment on, and close support cases.

Voice Handling

OptionTypeDescription
voiceHandlingModestringmove_to_supporter or create_temp_channel.
tempChannelNameFormatstringName 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

OptionTypeDescription
combinedCases.enabledbooleanWhen true, multiple waiting users can be handled together in one case.
combinedCases.autoAddLatecomersbooleanWhen true, users who join while a combined case is active can be added to that case automatically.
combinedCases.tempChannelNameFormatstringOptional 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

OptionTypeDescription
noSupporterTimeoutnumberSeconds before a waiting case is cancelled when no staff member takes it. Set to 0 or null to disable.
autoCloseTimeoutnumberSeconds before an in-progress case is closed after its temporary channel becomes empty. Set to 0 or null to disable.

Waiting Room Music

OptionTypeDescription
waitingRoomMusic.enabledbooleanEnables music while users wait.
waitingRoomMusic.filePathstringLocal path to the waiting music file.
waitingRoomMusic.loopbooleanLoops the track.
waitingRoomMusic.volumenumberPlayback volume from 0.0 to 1.0.
waitingRoomMusic.disconnectWhenEmptybooleanDisconnects the bot when no humans remain in the waiting room.
waitingRoomMusic.selfDeafbooleanSelf-deafens the bot while connected.

Closed Music

OptionTypeDescription
closedMusic.enabledbooleanEnables a separate loop while support is closed.
closedMusic.filePathstringLocal path to the closed-support music file.
closedMusic.loopbooleanLoops the track.
closedMusic.volumenumberPlayback volume from 0.0 to 1.0.
closedMusic.disconnectWhenEmptybooleanDisconnects the bot when no humans remain in the waiting room.
closedMusic.selfDeafbooleanSelf-deafens the bot while connected.

Buttons

Each button has an emoji and Discord button style.

OptionPurpose
buttons.takeOverStaff accepts a waiting case.
buttons.closeStaff closes an in-progress case.
buttons.transferStaff transfers the case to another supporter.
buttons.commentStaff adds an internal comment to the case.
buttons.cancelUser or staff cancels a waiting case.

Supported styles are Primary, Secondary, Success, and Danger.

Commands

OptionTypeDescription
commands.voicesupport.namestringSlash command name. Usually voicesupport.
commands.voicesupport.descriptionstringSlash command description shown by Discord.

Permissions

OptionTypeDescription
permissions.voicesupport_commandstringAthena permission level required for /voicesupport. Default is usually staff.
permissions.voicesupport_buttonsstringAthena permission level for button interactions. Staff role checks still apply to staff actions.
permissions.voicesupport_eventstringAthena permission level for voice event handling. Usually everyone.

Data Storage

Voice Support stores case history in MongoDB through the plugin models:

  • SupportCase
  • VoiceSupportState

This lets /voicesupport stats, /voicesupport history, /voicesupport case, and persisted open/closed support state survive bot restarts.