From a976dd2accc4b74914651245acde0979c30c92f5 Mon Sep 17 00:00:00 2001 From: PalmDevs Date: Mon, 5 Aug 2024 00:41:40 +0700 Subject: [PATCH] fix(bots/discord): some configuration values not applying after running `/reload` --- bots/discord/src/commands/admin/reload.ts | 26 +++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/bots/discord/src/commands/admin/reload.ts b/bots/discord/src/commands/admin/reload.ts index 1a5c920..c8ca185 100644 --- a/bots/discord/src/commands/admin/reload.ts +++ b/bots/discord/src/commands/admin/reload.ts @@ -7,11 +7,29 @@ export default new AdminCommand({ name: 'reload', description: 'Reload configuration', async execute(context, trigger) { + const { api, logger, discord } = context context.config = ((await import(join(dirname(Bun.main), '..', 'config.js'))) as { default: Config }).default - await trigger.reply({ - content: 'Reloaded configuration', - ephemeral: true, - }) + if ('deferReply' in trigger) await trigger.deferReply({ ephemeral: true }) + + logger.info('Reinitializing API client to reload configuration...') + await api.client.ws.setOptions( + { + url: context.config.api.url, + }, + false, + ) + api.intentionallyDisconnecting = true + api.client.disconnect(true) + api.disconnectCount = 0 + api.intentionallyDisconnecting = false + await api.client.connect() + + logger.info('Reinitializing Discord client to reload configuration...') + await discord.client.destroy() + await discord.client.login() + + // @ts-expect-error: TypeScript dum + await trigger[('deferReply' in trigger ? 'editReply' : 'reply')]({ content: 'Reloaded configuration' }) }, })