aboutsummaryrefslogtreecommitdiff
path: root/src/events
diff options
context:
space:
mode:
authorJohannes Vääräkangas <[email protected]>2022-02-12 04:05:02 +0200
committerGitHub <[email protected]>2022-02-11 20:05:02 -0600
commit4dbb55a72119a61033d2df6e8cf46f5eaa7bba15 (patch)
treec23bfee7a2c18a18ac8536a6b31e0e22eb1d9c6e /src/events
parent8e5b3cfa432abc4b3e2ef76a139da2586ccb1213 (diff)
downloadmuse-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.ts12
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();
}
}