diff options
| author | Fuwn <[email protected]> | 2025-10-09 22:36:53 -0700 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2025-10-09 22:36:53 -0700 |
| commit | 8f82e7f116f421f731d2939ee1287b02c37bbeae (patch) | |
| tree | 694ee61e20af457734de4aece58dac4a09cee3c6 | |
| parent | refactor(gateway:personaRandomMessages): Replace magic number (diff) | |
| download | umabotdiscord-8f82e7f116f421f731d2939ee1287b02c37bbeae.tar.xz umabotdiscord-8f82e7f116f421f731d2939ee1287b02c37bbeae.zip | |
feat(gateway:listeners): Add webhook cleanup routine to uma personas
| -rw-r--r-- | packages/gateway/src/listeners/messageCreate/dailyConversationStarter.ts | 31 | ||||
| -rw-r--r-- | packages/gateway/src/listeners/messageCreate/personaRandomMessage.ts | 30 |
2 files changed, 61 insertions, 0 deletions
diff --git a/packages/gateway/src/listeners/messageCreate/dailyConversationStarter.ts b/packages/gateway/src/listeners/messageCreate/dailyConversationStarter.ts index 3acabd5..3c620ac 100644 --- a/packages/gateway/src/listeners/messageCreate/dailyConversationStarter.ts +++ b/packages/gateway/src/listeners/messageCreate/dailyConversationStarter.ts @@ -33,6 +33,8 @@ class DailyConversationStarterSystem { isActive: false, }; private webhookClient: WebhookClient | null = null; + private webhookId: string | null = null; + private webhookToken: string | null = null; private client: Client | null = null; constructor() { @@ -58,6 +60,8 @@ class DailyConversationStarterSystem { }); this.webhookClient = new WebhookClient({ url: webhook.url }); + this.webhookId = webhook.id; + this.webhookToken = webhook.token; } } catch (error) { console.error("Failed to create conversation starter webhook:", error); @@ -94,6 +98,8 @@ class DailyConversationStarterSystem { await this.webhookClient.send(formattedMessage); this.tracker.lastMessageTime = Date.now(); + + await this.cleanupWebhook(); } catch (error) { console.error( "Failed to send conversation starter primer message:", @@ -146,11 +152,36 @@ class DailyConversationStarterSystem { await this.webhookClient?.send(formattedMessage); this.tracker.lastMessageTime = Date.now(); + + await this.cleanupWebhook(); } catch (error) { console.error("Failed to send conversation starter message:", error); } } + private async cleanupWebhook() { + try { + if (this.webhookId && this.webhookToken && this.client) { + const channel = this.client.channels.cache.get(TARGET_CHANNEL_ID); + + if (channel && "fetchWebhooks" in channel) { + const webhooks = await channel.fetchWebhooks(); + const webhook = webhooks.get(this.webhookId); + + if (webhook) await webhook.delete(); + } + } + } catch (error) { + console.error("Failed to cleanup conversation starter webhook:", error); + } finally { + this.webhookClient?.destroy(); + + this.webhookClient = null; + this.webhookId = null; + this.webhookToken = null; + } + } + public destroy(): void { this.webhookClient?.destroy(); } diff --git a/packages/gateway/src/listeners/messageCreate/personaRandomMessage.ts b/packages/gateway/src/listeners/messageCreate/personaRandomMessage.ts index 1c7fe75..cb9e9e4 100644 --- a/packages/gateway/src/listeners/messageCreate/personaRandomMessage.ts +++ b/packages/gateway/src/listeners/messageCreate/personaRandomMessage.ts @@ -30,6 +30,8 @@ class PersonaRandomMessageSystem { isActive: false, }; private webhookClient: WebhookClient | null = null; + private webhookId: string | null = null; + private webhookToken: string | null = null; private client: Client | null = null; constructor() { @@ -55,6 +57,8 @@ class PersonaRandomMessageSystem { }); this.webhookClient = new WebhookClient({ url: webhook.url }); + this.webhookId = webhook.id; + this.webhookToken = webhook.token; } } catch (error) { console.error("Failed to create persona webhook:", error); @@ -85,6 +89,7 @@ class PersonaRandomMessageSystem { avatar: randomPersona.avatar, }); await this.webhookClient.send(formattedMessage); + await this.cleanupWebhook(); } catch (error) { console.error("Failed to send primer persona message:", error); } @@ -137,11 +142,36 @@ class PersonaRandomMessageSystem { this.tracker.messageCount = 0; this.tracker.lastRandomMessageTime = Date.now(); + + await this.cleanupWebhook(); } catch (error) { console.error("Failed to send persona message:", error); } } + private async cleanupWebhook() { + try { + if (this.webhookId && this.webhookToken && this.client) { + const channel = this.client.channels.cache.get(TARGET_CHANNEL_ID); + + if (channel && "fetchWebhooks" in channel) { + const webhooks = await channel.fetchWebhooks(); + const webhook = webhooks.get(this.webhookId); + + if (webhook) await webhook.delete(); + } + } + } catch (error) { + console.error("Failed to cleanup persona webhook:", error); + } finally { + this.webhookClient?.destroy(); + + this.webhookClient = null; + this.webhookId = null; + this.webhookToken = null; + } + } + public destroy(): void { this.webhookClient?.destroy(); } |