From 2bd00d7845bac907d52c69e9a0d37aaba557d013 Mon Sep 17 00:00:00 2001 From: Essem Date: Sat, 28 Jan 2023 22:58:51 -0600 Subject: [PATCH] Fix restart, slightly stabilize voice leave event --- commands/general/restart.js | 2 +- config/messages.json | 1 - events/voiceChannelLeave.js | 21 ++++++++++++--------- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/commands/general/restart.js b/commands/general/restart.js index 5f4c496..a39cf2a 100644 --- a/commands/general/restart.js +++ b/commands/general/restart.js @@ -7,7 +7,7 @@ class RestartCommand extends Command { this.success = false; return "Only the bot owner can restart me!"; } - await this.message.channel.createMessage(Object.assign({ + await this.channel.createMessage(Object.assign({ content: "esmBot is restarting." }, this.reference)); process.exit(1); diff --git a/config/messages.json b/config/messages.json index d6d5d25..0e4cd71 100644 --- a/config/messages.json +++ b/config/messages.json @@ -128,7 +128,6 @@ "$19 Fortnite Card", "Wild Woody", "RDI Halcyon", - "cry about it", "KFC", "Cave Story", "YouTube ads", diff --git a/events/voiceChannelLeave.js b/events/voiceChannelLeave.js index 137b21b..00e8fdf 100644 --- a/events/voiceChannelLeave.js +++ b/events/voiceChannelLeave.js @@ -1,6 +1,7 @@ import { players, queues, skipVotes } from "../utils/soundplayer.js"; import AwaitRejoin from "../utils/awaitrejoin.js"; import { random } from "../utils/misc.js"; +import { logger } from "../utils/logger.js"; const isWaiting = new Map(); @@ -16,9 +17,10 @@ export default async (client, member, oldChannel) => { content: "🔊 Waiting 10 seconds for someone to return..." }); const awaitRejoin = new AwaitRejoin(oldChannel, true, member.id); - awaitRejoin.on("end", async (rejoined, newMember) => { + awaitRejoin.once("end", async (rejoined, newMember, cancel) => { isWaiting.delete(oldChannel.id); if (rejoined) { + if (cancel) return; connection.player.setPaused(false); if (member.id !== newMember.id) { players.set(connection.voiceChannel.guildID, { player: connection.player, type: connection.type, host: newMember.id, voiceChannel: connection.voiceChannel, originalChannel: connection.originalChannel, loop: connection.loop, shuffle: connection.shuffle, playMessage: connection.playMessage }); @@ -29,19 +31,20 @@ export default async (client, member, oldChannel) => { try { await waitMessage.delete(); } catch { - // no-op + logger.warn(`Failed to delete wait message ${waitMessage.id}`); } } } else { try { if (waitMessage.channel.messages.has(waitMessage.id)) await waitMessage.delete(); } catch { - // no-op + logger.warn(`Failed to delete wait message ${waitMessage.id}`); } + if (cancel) return; try { connection.player.node.leaveChannel(connection.originalChannel.guildID); } catch { - // no-op + logger.warn(`Failed to leave voice channel ${connection.originalChannel.guildID}`); } players.delete(connection.originalChannel.guildID); queues.delete(connection.originalChannel.guildID); @@ -58,13 +61,13 @@ export default async (client, member, oldChannel) => { content: "🔊 Waiting 10 seconds for the host to return..." }); const awaitRejoin = new AwaitRejoin(oldChannel, false, member.id); - awaitRejoin.on("end", async (rejoined) => { + awaitRejoin.once("end", async (rejoined) => { isWaiting.delete(oldChannel.id); if (rejoined) { try { if (waitMessage.channel.messages.has(waitMessage.id)) await waitMessage.delete(); } catch { - // no-op + logger.warn(`Failed to delete wait message ${waitMessage.id}`); } } else { const members = oldChannel.voiceMembers.filter((i) => i.id !== client.user.id && !i.bot); @@ -72,12 +75,12 @@ export default async (client, member, oldChannel) => { try { if (waitMessage.channel.messages.has(waitMessage.id)) await waitMessage.delete(); } catch { - // no-op + logger.warn(`Failed to delete wait message ${waitMessage.id}`); } try { connection.player.node.leaveChannel(connection.originalChannel.guildID); } catch { - // no-op + logger.warn(`Failed to leave voice channel ${connection.originalChannel.guildID}`); } players.delete(connection.originalChannel.guildID); queues.delete(connection.originalChannel.guildID); @@ -99,7 +102,7 @@ export default async (client, member, oldChannel) => { try { connection.player.node.leaveChannel(connection.originalChannel.guildID); } catch { - // no-op + logger.warn(`Failed to leave voice channel ${connection.originalChannel.guildID}`); } players.delete(connection.originalChannel.guildID); queues.delete(connection.originalChannel.guildID);