blob: 2c878077bcdc314d380566a0471f3927f254e5dc [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);
}