diff --git a/src/events/handleDmMessage.ts b/src/events/handleDmMessage.ts index eb46b55..5c2134e 100644 --- a/src/events/handleDmMessage.ts +++ b/src/events/handleDmMessage.ts @@ -22,7 +22,7 @@ import type { MessageParam } from "@anthropic-ai/sdk/resources/index.js"; * @param message - The message payload from Discord. */ export const handleDmMessage -// eslint-disable-next-line max-lines-per-function -- We're off by one bloody line. +// eslint-disable-next-line max-lines-per-function, max-statements -- We're off by one bloody line. = async(message: OmitPartialGroupDMChannel): Promise => { try { if (message.author.bot) { @@ -74,6 +74,7 @@ export const handleDmMessage await message.channel.send( `${response?.text ?? "There was an error. Please try again later."}\n\n${cost}`, ); + await logger.metric("dm_message", 1, { cost }); } catch (error) { await logger.error("message event", error instanceof Error ? error diff --git a/src/events/handleGuildMessage.ts b/src/events/handleGuildMessage.ts index 51abd4f..481b6c5 100644 --- a/src/events/handleGuildMessage.ts +++ b/src/events/handleGuildMessage.ts @@ -21,6 +21,7 @@ import { logger } from "../utils/logger.js"; */ export const handleThreadMessage + // eslint-disable-next-line max-lines-per-function -- We're off by one bloody line. = async(message: Message): Promise => { try { if (message.author.bot) { @@ -57,6 +58,7 @@ export const handleThreadMessage await message.channel.send( `${response?.text ?? "There was an error. Please try again later."}\n\n${cost}`, ); + await logger.metric("guild_message", 1, { cost }); } catch (error) { await logger.error("message event", error instanceof Error ? error diff --git a/src/events/handleThreadMessage.ts b/src/events/handleThreadMessage.ts index 6a78802..9ccb708 100644 --- a/src/events/handleThreadMessage.ts +++ b/src/events/handleThreadMessage.ts @@ -21,7 +21,7 @@ import type { MessageParam } from "@anthropic-ai/sdk/resources/index.js"; * @param message - The message payload from Discord. */ export const handleThreadMessage -// eslint-disable-next-line max-lines-per-function, complexity -- We're off by one bloody line. +// eslint-disable-next-line max-lines-per-function, complexity, max-statements -- We're off by one bloody line. = async(message: Message): Promise => { try { if (message.author.bot) { @@ -67,6 +67,7 @@ export const handleThreadMessage await message.channel.send( `${response?.text ?? "There was an error. Please try again later."}\n\n${cost}`, ); + await logger.metric("thread_message", 1, { cost }); } catch (error) { await logger.error("message event", error instanceof Error ? error diff --git a/src/index.ts b/src/index.ts index f3e6485..8599342 100644 --- a/src/index.ts +++ b/src/index.ts @@ -3,6 +3,7 @@ * @license Naomi's Public License * @author Naomi Carrigan */ +import { DiscordAnalytics } from "@nhcarrigan/discord-analytics"; import { Client, Events, @@ -39,6 +40,8 @@ const client = new Client({ partials: [ Partials.Channel ], }); +const analytics = new DiscordAnalytics(client, logger); + client.on(Events.InteractionCreate, (interaction) => { if (interaction.isChatInputCommand()) { switch (interaction.commandName) { @@ -72,6 +75,7 @@ client.on(Events.EntitlementDelete, (entitlement) => { client.on(Events.ClientReady, () => { void logger.log("debug", "Bot is ready."); + analytics.startCron(); }); instantiateServer();