|
|
|
|
import { AuditLogEvent } from 'discord.js';
|
|
|
|
|
import type { NucleusClient } from "../utils/client.js";
|
|
|
|
|
import type { GuildEmoji, GuildAuditLogsEntry } from 'discord.js'
|
|
|
|
|
export const event = "emojiUpdate";
|
|
|
|
|
|
|
|
|
|
export async function callback(client: NucleusClient, oldEmoji: GuildEmoji, newEmoji: GuildEmoji) {
|
|
|
|
|
const { getAuditLog, log, NucleusColors, entry, renderDelta, renderUser, renderEmoji } = client.logger;
|
|
|
|
|
|
|
|
|
|
const auditLog = (await getAuditLog(newEmoji.guild, AuditLogEvent.EmojiCreate))
|
|
|
|
|
.filter((entry: GuildAuditLogsEntry) => (entry.target as GuildEmoji)!.id === newEmoji.id)[0];
|
|
|
|
|
if (!auditLog) return;
|
|
|
|
|
if (auditLog.executor!.id === client.user!.id) return;
|
|
|
|
|
|
|
|
|
|
const changes = {
|
|
|
|
|
emojiId: entry(newEmoji.id, `\`${newEmoji.id}\``),
|
|
|
|
|
emoji: entry(newEmoji.id, renderEmoji(newEmoji)),
|
|
|
|
|
edited: entry(newEmoji.createdTimestamp, renderDelta(newEmoji.createdTimestamp)),
|
|
|
|
|
editedBy: entry(auditLog.executor!.id, renderUser((await newEmoji.guild.members.fetch(auditLog.executor!.id)).user)),
|
|
|
|
|
name: entry([oldEmoji.name!, newEmoji.name!], `\`:${oldEmoji.name}:\` -> \`:${newEmoji.name}:\``)
|
|
|
|
|
};
|
|
|
|
|
const data = {
|
|
|
|
|
meta: {
|
|
|
|
|
type: "emojiUpdate",
|
|
|
|
|
displayName: "Emoji Edited",
|
|
|
|
|
calculateType: "emojiUpdate",
|
|
|
|
|
color: NucleusColors.yellow,
|
|
|
|
|
emoji: "GUILD.EMOJI.EDIT",
|
|
|
|
|
timestamp: auditLog.createdTimestamp
|
|
|
|
|
},
|
|
|
|
|
list: changes,
|
|
|
|
|
hidden: {
|
|
|
|
|
guild: newEmoji.guild.id
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
log(data);
|
|
|
|
|
}
|