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

Migrate Logs to new Plugin structure, also dont ignore it

This commit is contained in:
Dark 2020-07-27 01:53:14 +02:00
parent 140ba84544
commit aea019181c
16 changed files with 764 additions and 1 deletions

View file

@ -0,0 +1,23 @@
import { logsEvent } from "../types";
import { stripObjectToScalars } from "src/utils";
import { LogType } from "src/data/LogType";
export const LogsChannelCreateEvt = logsEvent({
event: "channelCreate",
async listener(meta) {
meta.pluginData.state.guildLogs.log(LogType.CHANNEL_CREATE, {
channel: stripObjectToScalars(meta.args.channel),
});
},
});
export const LogsChannelDeleteEvt = logsEvent({
event: "channelDelete",
async listener(meta) {
meta.pluginData.state.guildLogs.log(LogType.CHANNEL_DELETE, {
channel: stripObjectToScalars(meta.args.channel),
});
},
});

View file

@ -0,0 +1,54 @@
import { logsEvent } from "../types";
import { stripObjectToScalars, findRelevantAuditLogEntry, UnknownUser } from "src/utils";
import { LogType } from "src/data/LogType";
import { Constants as ErisConstants } from "eris";
export const LogsGuildBanAddEvt = logsEvent({
event: "guildBanAdd",
async listener(meta) {
const pluginData = meta.pluginData;
const user = meta.args.user;
const relevantAuditLogEntry = await findRelevantAuditLogEntry(
pluginData.guildConfig,
ErisConstants.AuditLogActions.MEMBER_BAN_ADD,
user.id,
);
const mod = relevantAuditLogEntry ? relevantAuditLogEntry.user : new UnknownUser();
pluginData.state.guildLogs.log(
LogType.MEMBER_BAN,
{
mod: stripObjectToScalars(mod),
user: stripObjectToScalars(user),
},
user.id,
);
},
});
export const LogsGuildBanRemoveEvt = logsEvent({
event: "guildBanRemove",
async listener(meta) {
const pluginData = meta.pluginData;
const user = meta.args.user;
const relevantAuditLogEntry = await findRelevantAuditLogEntry(
pluginData.guild,
ErisConstants.AuditLogActions.MEMBER_BAN_REMOVE,
user.id,
);
const mod = relevantAuditLogEntry ? relevantAuditLogEntry.user : new UnknownUser();
pluginData.state.guildLogs.log(
LogType.MEMBER_UNBAN,
{
mod: stripObjectToScalars(mod),
userId: user.id,
},
user.id,
);
},
});

View file

@ -0,0 +1,52 @@
import { logsEvent } from "../types";
import { stripObjectToScalars } from "src/utils";
import { LogType } from "src/data/LogType";
import moment from "moment-timezone";
import humanizeDuration from "humanize-duration";
export const LogsGuildMemberAddEvt = logsEvent({
event: "guildMemberAdd",
async listener(meta) {
const pluginData = meta.pluginData;
const member = meta.args.member;
const newThreshold = moment().valueOf() - 1000 * 60 * 60;
const accountAge = humanizeDuration(moment().valueOf() - member.createdAt, {
largest: 2,
round: true,
});
pluginData.state.guildLogs.log(LogType.MEMBER_JOIN, {
member: stripObjectToScalars(member, ["user", "roles"]),
new: member.createdAt >= newThreshold ? " :new:" : "",
account_age: accountAge,
});
const cases = (await pluginData.state.cases.with("notes").getByUserId(member.id)).filter(c => !c.is_hidden);
cases.sort((a, b) => (a.created_at > b.created_at ? -1 : 1));
if (cases.length) {
const recentCaseLines = [];
const recentCases = cases.slice(0, 2);
for (const theCase of recentCases) {
recentCaseLines.push(pluginData.state.cases.getSummaryText(theCase));
}
let recentCaseSummary = recentCaseLines.join("\n");
if (recentCases.length < cases.length) {
const remaining = cases.length - recentCases.length;
if (remaining === 1) {
recentCaseSummary += `\n*+${remaining} case*`;
} else {
recentCaseSummary += `\n*+${remaining} cases*`;
}
}
pluginData.state.guildLogs.log(LogType.MEMBER_JOIN_WITH_PRIOR_RECORDS, {
member: stripObjectToScalars(member, ["user", "roles"]),
recentCaseSummary,
});
}
},
});

View file

@ -0,0 +1,13 @@
import { logsEvent } from "../types";
import { stripObjectToScalars } from "src/utils";
import { LogType } from "src/data/LogType";
export const LogsGuildMemberRemoveEvt = logsEvent({
event: "guildMemberRemove",
async listener(meta) {
meta.pluginData.state.guildLogs.log(LogType.MEMBER_LEAVE, {
member: stripObjectToScalars(meta.args.member, ["user", "roles"]),
});
},
});

View file

@ -0,0 +1,23 @@
import { logsEvent } from "../types";
import { stripObjectToScalars } from "src/utils";
import { LogType } from "src/data/LogType";
export const LogsRoleCreateEvt = logsEvent({
event: "guildRoleCreate",
async listener(meta) {
meta.pluginData.state.guildLogs.log(LogType.ROLE_CREATE, {
role: stripObjectToScalars(meta.args.role),
});
},
});
export const LogsRoleDeleteEvt = logsEvent({
event: "guildRoleDelete",
async listener(meta) {
meta.pluginData.state.guildLogs.log(LogType.ROLE_DELETE, {
role: stripObjectToScalars(meta.args.role),
});
},
});

View file

@ -0,0 +1,129 @@
import { logsEvent } from "../types";
import { stripObjectToScalars, findRelevantAuditLogEntry, UnknownUser } from "src/utils";
import { Constants as ErisConstants } from "eris";
import { LogType } from "src/data/LogType";
import isEqual from "lodash.isequal";
import diff from "lodash.difference";
export const LogsGuildMemberUpdateEvt = logsEvent({
event: "guildMemberUpdate",
async listener(meta) {
const pluginData = meta.pluginData;
const oldMember = meta.args.oldMember;
const member = meta.args.member;
if (!oldMember) return;
const logMember = stripObjectToScalars(member, ["user", "roles"]);
if (member.nick !== oldMember.nick) {
pluginData.state.guildLogs.log(LogType.MEMBER_NICK_CHANGE, {
member: logMember,
oldNick: oldMember.nick != null ? oldMember.nick : "<none>",
newNick: member.nick != null ? member.nick : "<none>",
});
}
if (!isEqual(oldMember.roles, member.roles)) {
const addedRoles = diff(member.roles, oldMember.roles);
const removedRoles = diff(oldMember.roles, member.roles);
let skip = false;
if (
addedRoles.length &&
removedRoles.length &&
pluginData.state.guildLogs.isLogIgnored(LogType.MEMBER_ROLE_CHANGES, member.id)
) {
skip = true;
} else if (addedRoles.length && pluginData.state.guildLogs.isLogIgnored(LogType.MEMBER_ROLE_ADD, member.id)) {
skip = true;
} else if (
removedRoles.length &&
pluginData.state.guildLogs.isLogIgnored(LogType.MEMBER_ROLE_REMOVE, member.id)
) {
skip = true;
}
if (!skip) {
const relevantAuditLogEntry = await findRelevantAuditLogEntry(
pluginData.guild,
ErisConstants.AuditLogActions.MEMBER_ROLE_UPDATE,
member.id,
);
const mod = relevantAuditLogEntry ? relevantAuditLogEntry.user : new UnknownUser();
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.get(roleId) || { id: roleId, name: `Unknown (${roleId})` })
.map(r => r.name)
.join(", "),
removedRoles: removedRoles
.map(roleId => pluginData.guild.roles.get(roleId) || { id: roleId, name: `Unknown (${roleId})` })
.map(r => r.name)
.join(", "),
mod: stripObjectToScalars(mod),
},
member.id,
);
} else if (addedRoles.length) {
// Roles added
pluginData.state.guildLogs.log(
LogType.MEMBER_ROLE_ADD,
{
member: logMember,
roles: addedRoles
.map(roleId => pluginData.guild.roles.get(roleId) || { id: roleId, name: `Unknown (${roleId})` })
.map(r => r.name)
.join(", "),
mod: stripObjectToScalars(mod),
},
member.id,
);
} 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.get(roleId) || { id: roleId, name: `Unknown (${roleId})` })
.map(r => r.name)
.join(", "),
mod: stripObjectToScalars(mod),
},
member.id,
);
}
}
}
},
});
export const LogsUserUpdateEvt = logsEvent({
event: "userUpdate",
allowSelf: true,
async listener(meta) {
const pluginData = meta.pluginData;
const oldUser = meta.args.oldUser;
const user = meta.args.user;
if (!oldUser) return;
if (!pluginData.guild.members.has(user.id)) return;
if (user.username !== oldUser.username || user.discriminator !== oldUser.discriminator) {
pluginData.state.guildLogs.log(LogType.MEMBER_USERNAME_CHANGE, {
user: stripObjectToScalars(user),
oldName: `${oldUser.username}#${oldUser.discriminator}`,
newName: `${user.username}#${user.discriminator}`,
});
}
},
});

View file

@ -0,0 +1,37 @@
import { logsEvent } from "../types";
import { stripObjectToScalars } from "src/utils";
import { LogType } from "src/data/LogType";
export const LogsVoiceJoinEvt = logsEvent({
event: "voiceChannelJoin",
async listener(meta) {
meta.pluginData.state.guildLogs.log(LogType.VOICE_CHANNEL_JOIN, {
member: stripObjectToScalars(meta.args.member, ["user", "roles"]),
channel: stripObjectToScalars(meta.args.newChannel),
});
},
});
export const LogsVoiceLeaveEvt = logsEvent({
event: "voiceChannelLeave",
async listener(meta) {
meta.pluginData.state.guildLogs.log(LogType.VOICE_CHANNEL_LEAVE, {
member: stripObjectToScalars(meta.args.member, ["user", "roles"]),
channel: stripObjectToScalars(meta.args.oldChannel),
});
},
});
export const LogsVoiceSwitchEvt = logsEvent({
event: "voiceChannelSwitch",
async listener(meta) {
meta.pluginData.state.guildLogs.log(LogType.VOICE_CHANNEL_MOVE, {
member: stripObjectToScalars(meta.args.member, ["user", "roles"]),
oldChannel: stripObjectToScalars(meta.args.oldChannel),
newChannel: stripObjectToScalars(meta.args.newChannel),
});
},
});