src/events/messageUpdate.ts (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
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 {
let anonymisedContent = newMessage.content.replace(
new RegExp(ticket.authorId, "g"),
"Reporter",
);
for (const [index, userId] of (ticket.addedUsers || []).entries()) {
anonymisedContent = anonymisedContent.replace(
new RegExp(userId, "g"),
`Guest_${index + 1}`,
);
}
await db
.update(ticketMessages)
.set({ content: anonymisedContent })
.where(eq(ticketMessages.messageId, newMessage.id))
.returning();
} catch (error) {
logger.error(error, "Failed to update ticket message");
}
},
};
|