diff options
| author | Johannes Vääräkangas <[email protected]> | 2022-02-12 04:05:02 +0200 |
|---|---|---|
| committer | GitHub <[email protected]> | 2022-02-11 20:05:02 -0600 |
| commit | 4dbb55a72119a61033d2df6e8cf46f5eaa7bba15 (patch) | |
| tree | c23bfee7a2c18a18ac8536a6b31e0e22eb1d9c6e /src/events | |
| parent | 8e5b3cfa432abc4b3e2ef76a139da2586ccb1213 (diff) | |
| download | muse-4dbb55a72119a61033d2df6e8cf46f5eaa7bba15.tar.xz muse-4dbb55a72119a61033d2df6e8cf46f5eaa7bba15.zip | |
Configurable voice channel leave behavior (#514)
Co-authored-by: Max Isom <[email protected]>
Diffstat (limited to 'src/events')
| -rw-r--r-- | src/events/voice-state-update.ts | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/events/voice-state-update.ts b/src/events/voice-state-update.ts index 69b4504..60a40b1 100644 --- a/src/events/voice-state-update.ts +++ b/src/events/voice-state-update.ts @@ -3,15 +3,23 @@ import container from '../inversify.config.js'; import {TYPES} from '../types.js'; import PlayerManager from '../managers/player.js'; import {getSizeWithoutBots} from '../utils/channels.js'; +import {prisma} from '../utils/db.js'; -export default (oldState: VoiceState, _: VoiceState): void => { +export default async (oldState: VoiceState, _: VoiceState): Promise<void> => { const playerManager = container.get<PlayerManager>(TYPES.Managers.Player); const player = playerManager.get(oldState.guild.id); if (player.voiceConnection) { const voiceChannel: VoiceChannel = oldState.guild.channels.cache.get(player.voiceConnection.joinConfig.channelId!) as VoiceChannel; - if (!voiceChannel || getSizeWithoutBots(voiceChannel) === 0) { + const settings = await prisma.setting.findUnique({where: {guildId: player.guildId}}); + + if (!settings) { + throw new Error('Could not find settings for guild'); + } + + const {leaveIfNoListeners} = settings; + if (!voiceChannel || (getSizeWithoutBots(voiceChannel) === 0 && leaveIfNoListeners)) { player.disconnect(); } } |
