blob: defb4827d3687a6936d89e76e97908199f2ebe3f [file] [log] [blame]
import getEmojiByName from "../utils/getEmojiByName.js";
export const event = "channelDelete";
export async function callback(client, channel) {
const { getAuditLog, log, NucleusColors, entry, renderDelta, renderUser } =
client.logger;
const auditLog = await getAuditLog(channel.guild, "CHANNEL_DELETE");
const audit = auditLog.entries
.filter((entry) => entry.target.id === channel.id)
.first();
if (audit.executor.id === client.user.id) return;
let emoji;
let readableType;
let displayName;
switch (channel.type) {
case "GUILD_TEXT": {
emoji = "CHANNEL.TEXT.DELETE";
readableType = "Text";
displayName = "Text Channel";
break;
}
case "GUILD_VOICE": {
emoji = "CHANNEL.VOICE.DELETE";
readableType = "Voice";
displayName = "Voice Channel";
break;
}
case "GUILD_CATEGORY": {
emoji = "CHANNEL.CATEGORY.DELETE";
readableType = "Category";
displayName = "Category";
break;
}
default: {
emoji = "CHANNEL.TEXT.DELETE";
readableType = "Channel";
displayName = "Channel";
}
}
const list: {
channelId: string;
name: string;
topic?: string | null;
type: any;
category: any;
nsfw?: boolean | null;
created: any;
deleted: any;
deletedBy: any;
} = {
channelId: entry(channel.id, `\`${channel.id}\``),
name: entry(channel.id, `${channel.name}`),
topic: null,
type: entry(channel.type, readableType),
category: entry(
channel.parent ? channel.parent.id : null,
channel.parent ? channel.parent.name : "Uncategorised"
),
nsfw: null,
created: entry(
channel.createdTimestamp,
renderDelta(channel.createdTimestamp)
),
deleted: entry(new Date().getTime(), renderDelta(new Date().getTime())),
deletedBy: entry(audit.executor.id, renderUser(audit.executor))
};
if (channel.topic !== null ?? false)
list.topic = entry(
channel.topic,
`\`\`\`\n${channel.topic.replace("`", "'")}\n\`\`\``
);
else delete list.topic;
if (channel.nsfw !== null ?? false)
list.nsfw = entry(
channel.nsfw,
channel.nsfw
? `${getEmojiByName("CONTROL.TICK")} Yes`
: `${getEmojiByName("CONTROL.CROSS")} No`
);
else delete list.nsfw;
const data = {
meta: {
type: "channelDelete",
displayName: displayName + " Deleted",
calculateType: "channelUpdate",
color: NucleusColors.red,
emoji: emoji,
timestamp: audit.createdTimestamp
},
list: list,
hidden: {
guild: channel.guild.id
}
};
log(data);
}