3
0
Fork 0
mirror of https://github.com/ZeppelinBot/Zeppelin.git synced 2025-05-11 04:45:02 +00:00

Typed log functions + more

This commit is contained in:
Dragory 2021-08-18 01:51:42 +03:00
parent d2ac700143
commit bed6589d48
No known key found for this signature in database
GPG key ID: 5F387BA66DF8AAC1
166 changed files with 4021 additions and 869 deletions

View file

@ -1,14 +1,17 @@
import { LogType } from "../../../data/LogType";
import { differenceToString, getScalarDifference } from "../../../utils";
import { channelToConfigAccessibleChannel } from "../../../utils/configAccessibleObjects";
import { channelToTemplateSafeChannel } from "../../../utils/templateSafeObjects";
import { logsEvt } from "../types";
import { logChannelCreate } from "../logFunctions/logChannelCreate";
import { logChannelDelete } from "../logFunctions/logChannelDelete";
import { logChannelUpdate } from "../logFunctions/logChannelUpdate";
export const LogsChannelCreateEvt = logsEvt({
event: "channelCreate",
async listener(meta) {
meta.pluginData.state.guildLogs.log(LogType.CHANNEL_CREATE, {
channel: channelToConfigAccessibleChannel(meta.args.channel),
logChannelCreate(meta.pluginData, {
channel: meta.args.channel,
});
},
});
@ -17,8 +20,8 @@ export const LogsChannelDeleteEvt = logsEvt({
event: "channelDelete",
async listener(meta) {
meta.pluginData.state.guildLogs.log(LogType.CHANNEL_DELETE, {
channel: channelToConfigAccessibleChannel(meta.args.channel),
logChannelDelete(meta.pluginData, {
channel: meta.args.channel,
});
},
});
@ -30,14 +33,10 @@ export const LogsChannelUpdateEvt = logsEvt({
const diff = getScalarDifference(meta.args.oldChannel, meta.args.newChannel);
const differenceString = differenceToString(diff);
meta.pluginData.state.guildLogs.log(
LogType.CHANNEL_UPDATE,
{
oldChannel: channelToConfigAccessibleChannel(meta.args.oldChannel),
newChannel: channelToConfigAccessibleChannel(meta.args.newChannel),
differenceString,
},
meta.args.newChannel.id,
);
logChannelUpdate(meta.pluginData, {
oldChannel: meta.args.oldChannel,
newChannel: meta.args.newChannel,
differenceString,
});
},
});

View file

@ -1,18 +1,18 @@
import { LogType } from "../../../data/LogType";
import { differenceToString, getScalarDifference } from "../../../utils";
import {
channelToConfigAccessibleChannel,
emojiToConfigAccessibleEmoji,
stickerToConfigAccessibleSticker,
} from "../../../utils/configAccessibleObjects";
import { logsEvt } from "../types";
import { logEmojiCreate } from "../logFunctions/logEmojiCreate";
import { logEmojiDelete } from "../logFunctions/logEmojiDelete";
import { logEmojiUpdate } from "../logFunctions/logEmojiUpdate";
import { logStickerCreate } from "../logFunctions/logStickerCreate";
import { logStickerDelete } from "../logFunctions/logStickerDelete";
import { logStickerUpdate } from "../logFunctions/logStickerUpdate";
export const LogsEmojiCreateEvt = logsEvt({
event: "emojiCreate",
async listener(meta) {
meta.pluginData.state.guildLogs.log(LogType.EMOJI_CREATE, {
emoji: emojiToConfigAccessibleEmoji(meta.args.emoji),
logEmojiCreate(meta.pluginData, {
emoji: meta.args.emoji,
});
},
});
@ -21,8 +21,8 @@ export const LogsEmojiDeleteEvt = logsEvt({
event: "emojiDelete",
async listener(meta) {
meta.pluginData.state.guildLogs.log(LogType.EMOJI_DELETE, {
emoji: emojiToConfigAccessibleEmoji(meta.args.emoji),
logEmojiDelete(meta.pluginData, {
emoji: meta.args.emoji,
});
},
});
@ -34,9 +34,9 @@ export const LogsEmojiUpdateEvt = logsEvt({
const diff = getScalarDifference(meta.args.oldEmoji, meta.args.newEmoji);
const differenceString = differenceToString(diff);
meta.pluginData.state.guildLogs.log(LogType.EMOJI_UPDATE, {
oldEmoji: emojiToConfigAccessibleEmoji(meta.args.oldEmoji),
newEmoji: emojiToConfigAccessibleEmoji(meta.args.newEmoji),
logEmojiUpdate(meta.pluginData, {
oldEmoji: meta.args.oldEmoji,
newEmoji: meta.args.newEmoji,
differenceString,
});
},
@ -46,8 +46,8 @@ export const LogsStickerCreateEvt = logsEvt({
event: "stickerCreate",
async listener(meta) {
meta.pluginData.state.guildLogs.log(LogType.STICKER_CREATE, {
sticker: stickerToConfigAccessibleSticker(meta.args.sticker),
logStickerCreate(meta.pluginData, {
sticker: meta.args.sticker,
});
},
});
@ -56,8 +56,8 @@ export const LogsStickerDeleteEvt = logsEvt({
event: "stickerDelete",
async listener(meta) {
meta.pluginData.state.guildLogs.log(LogType.STICKER_DELETE, {
sticker: stickerToConfigAccessibleSticker(meta.args.sticker),
logStickerDelete(meta.pluginData, {
sticker: meta.args.sticker,
});
},
});
@ -69,14 +69,10 @@ export const LogsStickerUpdateEvt = logsEvt({
const diff = getScalarDifference(meta.args.oldSticker, meta.args.newSticker);
const differenceString = differenceToString(diff);
meta.pluginData.state.guildLogs.log(
LogType.STICKER_UPDATE,
{
oldSticker: stickerToConfigAccessibleSticker(meta.args.oldSticker),
newSticker: stickerToConfigAccessibleSticker(meta.args.newSticker),
differenceString,
},
meta.args.newSticker.id,
);
logStickerUpdate(meta.pluginData, {
oldSticker: meta.args.oldSticker,
newSticker: meta.args.newSticker,
differenceString,
});
},
});

View file

@ -1,8 +1,11 @@
import { GuildAuditLogs } from "discord.js";
import { LogType } from "../../../data/LogType";
import { userToConfigAccessibleUser } from "../../../utils/configAccessibleObjects";
import { userToTemplateSafeUser } from "../../../utils/templateSafeObjects";
import { safeFindRelevantAuditLogEntry } from "../../../utils/safeFindRelevantAuditLogEntry";
import { logsEvt } from "../types";
import { logMemberBan } from "../logFunctions/logMemberBan";
import { isLogIgnored } from "../util/isLogIgnored";
import { logMemberUnban } from "../logFunctions/logMemberUnban";
export const LogsGuildBanAddEvt = logsEvt({
event: "guildBanAdd",
@ -11,21 +14,22 @@ export const LogsGuildBanAddEvt = logsEvt({
const pluginData = meta.pluginData;
const user = meta.args.ban.user;
if (isLogIgnored(pluginData, LogType.MEMBER_BAN, user.id)) {
return;
}
const relevantAuditLogEntry = await safeFindRelevantAuditLogEntry(
pluginData,
GuildAuditLogs.Actions.MEMBER_BAN_ADD as number,
user.id,
);
const mod = relevantAuditLogEntry?.executor ?? null;
pluginData.state.guildLogs.log(
LogType.MEMBER_BAN,
{
mod: mod ? userToConfigAccessibleUser(mod) : {},
user: userToConfigAccessibleUser(user),
},
user.id,
);
logMemberBan(meta.pluginData, {
mod,
user,
caseNumber: 0,
reason: "",
});
},
});
@ -36,6 +40,10 @@ export const LogsGuildBanRemoveEvt = logsEvt({
const pluginData = meta.pluginData;
const user = meta.args.ban.user;
if (isLogIgnored(pluginData, LogType.MEMBER_UNBAN, user.id)) {
return;
}
const relevantAuditLogEntry = await safeFindRelevantAuditLogEntry(
pluginData,
GuildAuditLogs.Actions.MEMBER_BAN_REMOVE as number,
@ -43,13 +51,11 @@ export const LogsGuildBanRemoveEvt = logsEvt({
);
const mod = relevantAuditLogEntry?.executor ?? null;
pluginData.state.guildLogs.log(
LogType.MEMBER_UNBAN,
{
mod: mod ? userToConfigAccessibleUser(mod) : {},
userId: user.id,
},
user.id,
);
logMemberUnban(pluginData, {
mod,
userId: user.id,
caseNumber: 0,
reason: "",
});
},
});

View file

@ -1,9 +1,11 @@
import humanizeDuration from "humanize-duration";
import moment from "moment-timezone";
import { LogType } from "../../../data/LogType";
import { memberToConfigAccessibleMember } from "../../../utils/configAccessibleObjects";
import { memberToTemplateSafeMember } from "../../../utils/templateSafeObjects";
import { CasesPlugin } from "../../Cases/CasesPlugin";
import { logsEvt } from "../types";
import { logMemberJoin } from "../logFunctions/logMemberJoin";
import { logMemberJoinWithPriorRecords } from "../logFunctions/logMemberJoinWithPriorRecords";
export const LogsGuildMemberAddEvt = logsEvt({
event: "guildMemberAdd",
@ -12,16 +14,8 @@ export const LogsGuildMemberAddEvt = logsEvt({
const pluginData = meta.pluginData;
const member = meta.args.member;
const newThreshold = moment.utc().valueOf() - 1000 * 60 * 60;
const accountAge = humanizeDuration(moment.utc().valueOf() - member.user.createdTimestamp, {
largest: 2,
round: true,
});
pluginData.state.guildLogs.log(LogType.MEMBER_JOIN, {
member: memberToConfigAccessibleMember(member),
new: member.user.createdTimestamp >= newThreshold ? " :new:" : "",
account_age: accountAge,
logMemberJoin(pluginData, {
member,
});
const cases = (await pluginData.state.cases.with("notes").getByUserId(member.id)).filter(c => !c.is_hidden);
@ -45,8 +39,8 @@ export const LogsGuildMemberAddEvt = logsEvt({
}
}
pluginData.state.guildLogs.log(LogType.MEMBER_JOIN_WITH_PRIOR_RECORDS, {
member: memberToConfigAccessibleMember(member),
logMemberJoinWithPriorRecords(pluginData, {
member,
recentCaseSummary,
});
}

View file

@ -1,13 +1,14 @@
import { LogType } from "../../../data/LogType";
import { memberToConfigAccessibleMember } from "../../../utils/configAccessibleObjects";
import { memberToTemplateSafeMember } from "../../../utils/templateSafeObjects";
import { logsEvt } from "../types";
import { logMemberLeave } from "../logFunctions/logMemberLeave";
export const LogsGuildMemberRemoveEvt = logsEvt({
event: "guildMemberRemove",
async listener(meta) {
meta.pluginData.state.guildLogs.log(LogType.MEMBER_LEAVE, {
member: memberToConfigAccessibleMember(meta.args.member),
logMemberLeave(meta.pluginData, {
member: meta.args.member,
});
},
});

View file

@ -1,14 +1,17 @@
import { LogType } from "../../../data/LogType";
import { differenceToString, getScalarDifference } from "../../../utils";
import { roleToConfigAccessibleRole } from "../../../utils/configAccessibleObjects";
import { roleToTemplateSafeRole } from "../../../utils/templateSafeObjects";
import { logsEvt } from "../types";
import { logRoleCreate } from "../logFunctions/logRoleCreate";
import { logRoleDelete } from "../logFunctions/logRoleDelete";
import { logRoleUpdate } from "../logFunctions/logRoleUpdate";
export const LogsRoleCreateEvt = logsEvt({
event: "roleCreate",
async listener(meta) {
meta.pluginData.state.guildLogs.log(LogType.ROLE_CREATE, {
role: roleToConfigAccessibleRole(meta.args.role),
logRoleCreate(meta.pluginData, {
role: meta.args.role,
});
},
});
@ -17,8 +20,8 @@ export const LogsRoleDeleteEvt = logsEvt({
event: "roleDelete",
async listener(meta) {
meta.pluginData.state.guildLogs.log(LogType.ROLE_DELETE, {
role: roleToConfigAccessibleRole(meta.args.role),
logRoleDelete(meta.pluginData, {
role: meta.args.role,
});
},
});
@ -30,9 +33,9 @@ export const LogsRoleUpdateEvt = logsEvt({
const diff = getScalarDifference(meta.args.oldRole, meta.args.newRole);
const differenceString = differenceToString(diff);
meta.pluginData.state.guildLogs.log(LogType.ROLE_UPDATE, {
newRole: roleToConfigAccessibleRole(meta.args.newRole),
oldRole: roleToConfigAccessibleRole(meta.args.oldRole),
logRoleUpdate(meta.pluginData, {
newRole: meta.args.newRole,
oldRole: meta.args.oldRole,
differenceString,
});
},

View file

@ -1,7 +1,11 @@
import { LogType } from "../../../data/LogType";
import { differenceToString, getScalarDifference } from "../../../utils";
import { channelToConfigAccessibleChannel, stageToConfigAccessibleStage } from "../../../utils/configAccessibleObjects";
import { channelToTemplateSafeChannel, stageToTemplateSafeStage } from "../../../utils/templateSafeObjects";
import { logsEvt } from "../types";
import { logStageInstanceCreate } from "../logFunctions/logStageInstanceCreate";
import { StageChannel } from "discord.js";
import { logStageInstanceDelete } from "../logFunctions/logStageInstanceDelete";
import { logStageInstanceUpdate } from "../logFunctions/logStageInstanceUpdate";
export const LogsStageInstanceCreateEvt = logsEvt({
event: "stageInstanceCreate",
@ -9,11 +13,11 @@ export const LogsStageInstanceCreateEvt = logsEvt({
async listener(meta) {
const stageChannel =
meta.args.stageInstance.channel ??
(await meta.pluginData.guild.channels.fetch(meta.args.stageInstance.channelId))!;
((await meta.pluginData.guild.channels.fetch(meta.args.stageInstance.channelId)) as StageChannel);
meta.pluginData.state.guildLogs.log(LogType.STAGE_INSTANCE_CREATE, {
stageInstance: stageToConfigAccessibleStage(meta.args.stageInstance),
stageChannel: channelToConfigAccessibleChannel(stageChannel),
logStageInstanceCreate(meta.pluginData, {
stageInstance: meta.args.stageInstance,
stageChannel,
});
},
});
@ -24,11 +28,11 @@ export const LogsStageInstanceDeleteEvt = logsEvt({
async listener(meta) {
const stageChannel =
meta.args.stageInstance.channel ??
(await meta.pluginData.guild.channels.fetch(meta.args.stageInstance.channelId))!;
((await meta.pluginData.guild.channels.fetch(meta.args.stageInstance.channelId)) as StageChannel);
meta.pluginData.state.guildLogs.log(LogType.STAGE_INSTANCE_DELETE, {
stageInstance: stageToConfigAccessibleStage(meta.args.stageInstance),
stageChannel: channelToConfigAccessibleChannel(stageChannel),
logStageInstanceDelete(meta.pluginData, {
stageInstance: meta.args.stageInstance,
stageChannel,
});
},
});
@ -39,15 +43,15 @@ export const LogsStageInstanceUpdateEvt = logsEvt({
async listener(meta) {
const stageChannel =
meta.args.newStageInstance.channel ??
(await meta.pluginData.guild.channels.fetch(meta.args.newStageInstance.channelId))!;
((await meta.pluginData.guild.channels.fetch(meta.args.newStageInstance.channelId)) as StageChannel);
const diff = getScalarDifference(meta.args.oldStageInstance, meta.args.newStageInstance);
const differenceString = differenceToString(diff);
meta.pluginData.state.guildLogs.log(LogType.STAGE_INSTANCE_UPDATE, {
oldStageInstance: stageToConfigAccessibleStage(meta.args.oldStageInstance),
newStageInstance: stageToConfigAccessibleStage(meta.args.newStageInstance),
stageChannel: channelToConfigAccessibleChannel(stageChannel),
logStageInstanceUpdate(meta.pluginData, {
oldStageInstance: meta.args.oldStageInstance,
newStageInstance: meta.args.newStageInstance,
stageChannel,
differenceString,
});
},

View file

@ -1,14 +1,17 @@
import { LogType } from "../../../data/LogType";
import { differenceToString, getScalarDifference } from "../../../utils";
import { channelToConfigAccessibleChannel } from "../../../utils/configAccessibleObjects";
import { channelToTemplateSafeChannel } from "../../../utils/templateSafeObjects";
import { logsEvt } from "../types";
import { logThreadCreate } from "../logFunctions/logThreadCreate";
import { logThreadDelete } from "../logFunctions/logThreadDelete";
import { logThreadUpdate } from "../logFunctions/logThreadUpdate";
export const LogsThreadCreateEvt = logsEvt({
event: "threadCreate",
async listener(meta) {
meta.pluginData.state.guildLogs.log(LogType.THREAD_CREATE, {
thread: channelToConfigAccessibleChannel(meta.args.thread),
logThreadCreate(meta.pluginData, {
thread: meta.args.thread,
});
},
});
@ -17,8 +20,8 @@ export const LogsThreadDeleteEvt = logsEvt({
event: "threadDelete",
async listener(meta) {
meta.pluginData.state.guildLogs.log(LogType.THREAD_DELETE, {
thread: channelToConfigAccessibleChannel(meta.args.thread),
logThreadDelete(meta.pluginData, {
thread: meta.args.thread,
});
},
});
@ -30,14 +33,10 @@ export const LogsThreadUpdateEvt = logsEvt({
const diff = getScalarDifference(meta.args.oldThread, meta.args.newThread, ["messageCount", "archiveTimestamp"]);
const differenceString = differenceToString(diff);
meta.pluginData.state.guildLogs.log(
LogType.THREAD_UPDATE,
{
oldThread: channelToConfigAccessibleChannel(meta.args.oldThread),
newThread: channelToConfigAccessibleChannel(meta.args.newThread),
differenceString,
},
meta.args.newThread.id,
);
logThreadUpdate(meta.pluginData, {
oldThread: meta.args.oldThread,
newThread: meta.args.newThread,
differenceString,
});
},
});

View file

@ -1,10 +1,14 @@
import { GuildAuditLogs } from "discord.js";
import diff from "lodash.difference";
import isEqual from "lodash.isequal";
import { memberToConfigAccessibleMember, userToConfigAccessibleUser } from "../../../utils/configAccessibleObjects";
import { memberToTemplateSafeMember, userToTemplateSafeUser } from "../../../utils/templateSafeObjects";
import { LogType } from "../../../data/LogType";
import { safeFindRelevantAuditLogEntry } from "../../../utils/safeFindRelevantAuditLogEntry";
import { logsEvt } from "../types";
import { logMemberNickChange } from "../logFunctions/logMemberNickChange";
import { logMemberRoleChanges } from "../logFunctions/logMemberRoleChanges";
import { logMemberRoleAdd } from "../logFunctions/logMemberRoleAdd";
import { logMemberRoleRemove } from "../logFunctions/logMemberRoleRemove";
export const LogsGuildMemberUpdateEvt = logsEvt({
event: "guildMemberUpdate",
@ -16,11 +20,9 @@ export const LogsGuildMemberUpdateEvt = logsEvt({
if (!oldMember) return;
const logMember = memberToConfigAccessibleMember(member);
if (member.nickname !== oldMember.nickname) {
pluginData.state.guildLogs.log(LogType.MEMBER_NICK_CHANGE, {
member: logMember,
logMemberNickChange(pluginData, {
member,
oldNick: oldMember.nickname != null ? oldMember.nickname : "<none>",
newNick: member.nickname != null ? member.nickname : "<none>",
});
@ -56,50 +58,38 @@ export const LogsGuildMemberUpdateEvt = logsEvt({
if (addedRoles.length && removedRoles.length) {
// Roles added *and* removed
pluginData.state.guildLogs.log(
LogType.MEMBER_ROLE_CHANGES,
{
member: logMember,
addedRoles: addedRoles
.map(roleId => pluginData.guild.roles.cache.get(roleId) ?? { id: roleId, name: `Unknown (${roleId})` })
.map(r => r.name)
.join(", "),
removedRoles: removedRoles
.map(roleId => pluginData.guild.roles.cache.get(roleId) ?? { id: roleId, name: `Unknown (${roleId})` })
.map(r => r.name)
.join(", "),
mod: mod ? userToConfigAccessibleUser(mod) : {},
},
member.id,
);
logMemberRoleChanges(pluginData, {
member,
addedRoles: addedRoles
.map(roleId => pluginData.guild.roles.cache.get(roleId) ?? { id: roleId, name: `Unknown (${roleId})` })
.map(r => r.name)
.join(", "),
removedRoles: removedRoles
.map(roleId => pluginData.guild.roles.cache.get(roleId) ?? { id: roleId, name: `Unknown (${roleId})` })
.map(r => r.name)
.join(", "),
mod,
});
} else if (addedRoles.length) {
// Roles added
pluginData.state.guildLogs.log(
LogType.MEMBER_ROLE_ADD,
{
member: logMember,
roles: addedRoles
.map(roleId => pluginData.guild.roles.cache.get(roleId) ?? { id: roleId, name: `Unknown (${roleId})` })
.map(r => r.name)
.join(", "),
mod: mod ? userToConfigAccessibleUser(mod) : {},
},
member.id,
);
logMemberRoleAdd(pluginData, {
member,
roles: addedRoles
.map(roleId => pluginData.guild.roles.cache.get(roleId) ?? { id: roleId, name: `Unknown (${roleId})` })
.map(r => r.name)
.join(", "),
mod,
});
} else if (removedRoles.length && !addedRoles.length) {
// Roles removed
pluginData.state.guildLogs.log(
LogType.MEMBER_ROLE_REMOVE,
{
member: logMember,
roles: removedRoles
.map(roleId => pluginData.guild.roles.cache.get(roleId) ?? { id: roleId, name: `Unknown (${roleId})` })
.map(r => r.name)
.join(", "),
mod: mod ? userToConfigAccessibleUser(mod) : {},
},
member.id,
);
logMemberRoleRemove(pluginData, {
member,
roles: removedRoles
.map(roleId => pluginData.guild.roles.cache.get(roleId) ?? { id: roleId, name: `Unknown (${roleId})` })
.map(r => r.name)
.join(", "),
mod,
});
}
}
}

View file

@ -1,9 +1,9 @@
import {
channelToConfigAccessibleChannel,
memberToConfigAccessibleMember,
} from "../../../utils/configAccessibleObjects";
import { channelToTemplateSafeChannel, memberToTemplateSafeMember } from "../../../utils/templateSafeObjects";
import { LogType } from "../../../data/LogType";
import { logsEvt } from "../types";
import { logVoiceChannelLeave } from "../logFunctions/logVoiceChannelLeave";
import { logVoiceChannelJoin } from "../logFunctions/logVoiceChannelJoin";
import { logVoiceChannelMove } from "../logFunctions/logVoiceChannelMove";
export const LogsVoiceStateUpdateEvt = logsEvt({
event: "voiceStateUpdate",
@ -15,21 +15,21 @@ export const LogsVoiceStateUpdateEvt = logsEvt({
if (!newChannel && oldChannel) {
// Leave evt
meta.pluginData.state.guildLogs.log(LogType.VOICE_CHANNEL_LEAVE, {
member: memberToConfigAccessibleMember(member),
channel: channelToConfigAccessibleChannel(oldChannel!),
logVoiceChannelLeave(meta.pluginData, {
member,
channel: oldChannel,
});
} else if (!oldChannel && newChannel) {
// Join Evt
meta.pluginData.state.guildLogs.log(LogType.VOICE_CHANNEL_JOIN, {
member: memberToConfigAccessibleMember(member),
channel: channelToConfigAccessibleChannel(newChannel),
logVoiceChannelJoin(meta.pluginData, {
member,
channel: newChannel,
});
} else {
meta.pluginData.state.guildLogs.log(LogType.VOICE_CHANNEL_MOVE, {
member: memberToConfigAccessibleMember(member),
oldChannel: channelToConfigAccessibleChannel(oldChannel!),
newChannel: channelToConfigAccessibleChannel(newChannel!),
} else if (oldChannel && newChannel) {
logVoiceChannelMove(meta.pluginData, {
member,
oldChannel,
newChannel,
});
}
},