blob: 2cb1de8ca647d5d3d2ec53756681cc24220924ea [file] [log] [blame]
import { callback as statsChannelUpdate } from "../reflex/statsChannelUpdate.js";
export const event = "guildUpdate";
export async function callback(client, before, after) {
await statsChannelUpdate(client, after.me);
const { getAuditLog, log, NucleusColors, entry, renderUser, renderDelta } = after.client.logger;
const auditLog = await getAuditLog(after, "GUILD_UPDATE");
const audit = auditLog.entries.filter(entry => entry.target.id === after.id).first();
if (audit.executor.id === client.user.id) return;
const list = {};
const verificationLevels = {
NONE: "Unrestricted",
LOW: "Verified email",
MEDIUM: "Registered (5 minutes)",
HIGH: "Member (10 minutes)",
VERY_HIGH: "Verified phone"
};
const explicitContentFilterLevels = {
DISABLED: "Disabled",
MEMBERS_WITHOUT_ROLES: "Members without roles",
ALL_MEMBERS: "All members"
};
const MFALevels = {
NONE: "None",
ELEVATED: "Enabled"
};
if (before.name !== after.name) list["name"] = entry([before.name, after.name], `${before.name} -> ${after.name}`);
if (before.icon !== after.icon) list["icon"] = entry([before.icon, after.icon], `[Before](${before.iconURL()}) -> [After](${after.iconURL()})`);
if (before.splash !== after.splash) list["splash"] = entry([before.splash, after.splash], `[Before](${before.splashURL()}) -> [After](${after.splashURL()})`);
if (before.banner !== after.banner) list["banner"] = entry([before.banner, after.banner], `[Before](${before.bannerURL()}) -> [After](${after.bannerURL()})`);
if (before.owner !== after.owner) list["owner"] = entry([before.owner, after.owner], `${renderUser(before.owner.user)} -> ${renderUser(after.owner.user)}`);
if (before.verificationLevel !== after.verificationLevel) list["verificationLevel"] = entry([verificationLevels[before.verificationLevel], verificationLevels[after.verificationLevel]], `${verificationLevels[before.verificationLevel]} -> ${verificationLevels[after.verificationLevel]}`);
if (before.explicitContentFilter !== after.explicitContentFilter) list["explicitContentFilter"] = entry([explicitContentFilterLevels[before.explicitContentFilter], explicitContentFilterLevels[after.explicitContentFilter]], `${explicitContentFilterLevels[before.explicitContentFilter]} -> ${explicitContentFilterLevels[after.explicitContentFilter]}`);
if (before.mfaLevel !== after.mfaLevel) list["2 factor authentication"] = entry([MFALevels[before.mfaLevel], MFALevels[after.mfaLevel]], `${MFALevels[before.mfaLevel]} -> ${MFALevels[after.mfaLevel]}`);
if (!(Object.keys(list).length)) return;
list["updated"] = entry(new Date().getTime(), renderDelta(new Date().getTime()));
list["updatedBy"] = entry(audit.executor.id, renderUser(audit.executor));
const data = {
meta: {
type: "guildUpdate",
displayName: "Guild Edited",
calculateType: "guildUpdate",
color: NucleusColors.yellow,
emoji: "GUILD.YELLOW",
timestamp: new Date().getTime()
},
list: list,
hidden: {
guild: after.id
}
};
log(data);
}