// @ts-expect-error import type { HaikuClient } from "jshaiku"; import type { GuildAuditLogsEntry, Message } from "discord.js"; export const event = "messageDelete"; export async function callback(client: HaikuClient, message: Message) { try { if (message.author.id === client.user.id) return; if (client.noLog.includes(`${message.id}/${message.channel.id}/${message.id}`)) return; const { getAuditLog, log, NucleusColors, entry, renderUser, renderDelta, renderChannel } = client.logger; const auditLog = await getAuditLog(message.guild, "MEMBER_BAN_ADD"); const audit = auditLog.entries.filter((entry: GuildAuditLogsEntry) => entry.target!.id === message.author.id).first(); if (audit) { if (audit.createdAt - 100 < new Date().getTime()) return; } const replyTo = message.reference; let content = message.cleanContent; content.replace("`", "\\`"); if (content.length > 256) content = content.substring(0, 253) + "..."; const attachments = message.attachments.size + ( message.content.match( /https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&//=]*)/gi ) ?? [] ).length; let attachmentJump = ""; const config = (await client.database.guilds.read(message.guild!.id)).logging.attachments.saved[ message.channel.id + message.id ]; if (config) { attachmentJump = ` [[View attachments]](${config})`; } const data = { meta: { type: "messageDelete", displayName: "Message Deleted", calculateType: "messageDelete", color: NucleusColors.red, emoji: "MESSAGE.DELETE", timestamp: new Date().getTime() }, separate: { start: content ? `**Message:**\n\`\`\`${content}\`\`\`` : "**Message:** *Message had no content*" }, list: { messageId: entry(message.id, `\`${message.id}\``), sentBy: entry(message.author.id, renderUser(message.author)), sentIn: entry(message.channel.id, renderChannel(message.channel)), deleted: entry(new Date().getTime(), renderDelta(new Date().getTime())), mentions: message.mentions.users.size, attachments: entry(attachments, attachments + attachmentJump), repliedTo: entry( replyTo, replyTo ? `[[Jump to message]](https://discord.com/channels/${message.guild!.id}/${message.channel.id}/${replyTo.messageId})` : "None" ) }, hidden: { guild: message.guild!.id } }; log(data); } catch (e) { console.log(e); } }