import { db, ticketMessages, tickets } from "@/database"; import { loggers } from "@/utils/logging"; import { type Client, Events, type Message } from "discord.js"; import { and, eq } from "drizzle-orm"; const logger = loggers.events.child({ name: "messageUpdate" }); export default { event: Events.MessageUpdate, async execute(client: Client, oldMessage: Message, newMessage: Message) { if (!client.user || newMessage.author?.bot) return; if (oldMessage.content === newMessage.content) return; const ticket = db .select() .from(tickets) .where( and( eq(tickets.channelId, newMessage.channelId), eq(tickets.guildId, newMessage.guildId ?? ""), ), ) .get(); if (!ticket) return; try { const anonymisedContent = newMessage.content.replace( new RegExp(ticket.authorId, "g"), "-".repeat(ticket.authorId.length), ); logger.debug( `Anonymised content for message ${newMessage.id}: ${anonymisedContent}`, ); await db .update(ticketMessages) .set({ content: anonymisedContent }) .where(eq(ticketMessages.messageId, newMessage.id)) .returning(); } catch (error) { logger.error(error, "Failed to update ticket message"); } }, };