blob: ff36ce0bb14e9ed510b92a4deaecc9f17d73e1ec [file] [log] [blame]
import humanizeDuration from "humanize-duration";
export const event = "threadUpdate";
export async function callback(client, before, after) {
const {
getAuditLog,
log,
NucleusColors,
entry,
renderUser,
renderDelta,
renderChannel
} = after.client.logger;
const auditLog = await getAuditLog(after.guild, "THREAD_UPDATE");
const audit = auditLog.entries
.filter((entry) => entry.target.id === after.id)
.first();
if (audit.executor.id === client.user.id) return;
const list = {
threadId: entry(after.id, `\`${after.id}\``),
thread: entry(after.name, renderChannel(after)),
parentChannel: entry(after.parentId, renderChannel(after.parent))
};
if (before.name !== after.name) {
list.name = entry(
[before.name, after.name],
`${before.name} -> ${after.name}`
);
}
if (before.autoArchiveDuration !== after.autoArchiveDuration) {
list.autoArchiveDuration = entry(
[before.autoArchiveDuration, after.autoArchiveDuration],
`${humanizeDuration(before.autoArchiveDuration * 60 * 1000, {
round: true
})} -> ${humanizeDuration(after.autoArchiveDuration * 60 * 1000, {
round: true
})}`
);
}
if (before.rateLimitPerUser !== after.rateLimitPerUser) {
list.slowmode = entry(
[before.rateLimitPerUser, after.rateLimitPerUser],
`${humanizeDuration(
before.rateLimitPerUser * 1000
)} -> ${humanizeDuration(after.rateLimitPerUser * 1000)}`
);
}
if (!(Object.keys(list).length - 3)) return;
list.updated = entry(
new Date().getTime(),
renderDelta(new Date().getTime())
);
list.updatedBy = entry(audit.executor.id, renderUser(audit.executor));
const data = {
meta: {
type: "channelUpdate",
displayName: "Thread Edited",
calculateType: "channelUpdate",
color: NucleusColors.yellow,
emoji: "CHANNEL.TEXT.EDIT",
timestamp: new Date().getTime()
},
list: list,
hidden: {
guild: after.guild.id
}
};
log(data);
}