aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFederico Rapetti <[email protected]>2023-03-04 22:38:36 +0100
committerGitHub <[email protected]>2023-03-04 15:38:36 -0600
commit6926e39c5679e75c9ca6ef1a123abdce3d7ff992 (patch)
tree9c095a3bcc84442414e4e1c213047c941cab40a7 /src
parentf7c3d87722f098ee0e3d518261a269992c5e8604 (diff)
downloadmuse-6926e39c5679e75c9ca6ef1a123abdce3d7ff992.tar.xz
muse-6926e39c5679e75c9ca6ef1a123abdce3d7ff992.zip
Temporary workaround for VoiceConnection stuck in signalling state (#907)
Diffstat (limited to 'src')
-rw-r--r--src/services/player.ts16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/services/player.ts b/src/services/player.ts
index 78f72b2..0b57ad7 100644
--- a/src/services/player.ts
+++ b/src/services/player.ts
@@ -84,6 +84,22 @@ export default class {
guildId: channel.guild.id,
adapterCreator: channel.guild.voiceAdapterCreator as DiscordGatewayAdapterCreator,
});
+
+ // Workaround to disable keepAlive
+ this.voiceConnection.on('stateChange', (oldState, newState) => {
+ /* eslint-disable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call */
+ const oldNetworking = Reflect.get(oldState, 'networking');
+ const newNetworking = Reflect.get(newState, 'networking');
+
+ const networkStateChangeHandler = (_: any, newNetworkState: any) => {
+ const newUdp = Reflect.get(newNetworkState, 'udp');
+ clearInterval(newUdp?.keepAliveInterval);
+ };
+
+ oldNetworking?.off('stateChange', networkStateChangeHandler);
+ newNetworking?.on('stateChange', networkStateChangeHandler);
+ /* eslint-enable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call */
+ });
}
disconnect(): void {