3
0
Fork 0
mirror of https://github.com/ZeppelinBot/Zeppelin.git synced 2025-03-15 05:41:51 +00:00

refactor: change LogType to a plain object instead of an enum

This commit is contained in:
Dragory 2024-01-15 22:37:39 +00:00
parent cbec80981d
commit 82d720d308
No known key found for this signature in database
5 changed files with 97 additions and 116 deletions

View file

@ -27,6 +27,12 @@ export class Configs extends BaseRepository {
this.configs = dataSource.getRepository(Config); this.configs = dataSource.getRepository(Config);
} }
getActive() {
return this.configs.find({
where: { is_active: true },
});
}
getActiveByKey(key) { getActiveByKey(key) {
return this.configs.findOne({ return this.configs.findOne({
where: { where: {

View file

@ -5,7 +5,7 @@ import { LogType } from "./LogType";
const guildInstances: Map<string, GuildLogs> = new Map(); const guildInstances: Map<string, GuildLogs> = new Map();
interface IIgnoredLog { interface IIgnoredLog {
type: LogType; type: keyof typeof LogType;
ignoreId: any; ignoreId: any;
} }
@ -27,7 +27,7 @@ export class GuildLogs extends events.EventEmitter {
guildInstances.set(guildId, this); guildInstances.set(guildId, this);
} }
log(type: LogType, data: any, ignoreId?: string) { log(type: keyof typeof LogType, data: any, ignoreId?: string) {
if (ignoreId && this.isLogIgnored(type, ignoreId)) { if (ignoreId && this.isLogIgnored(type, ignoreId)) {
this.clearIgnoredLog(type, ignoreId); this.clearIgnoredLog(type, ignoreId);
return; return;
@ -36,7 +36,7 @@ export class GuildLogs extends events.EventEmitter {
this.emit("log", { type, data }); this.emit("log", { type, data });
} }
ignoreLog(type: LogType, ignoreId: any, timeout?: number) { ignoreLog(type: keyof typeof LogType, ignoreId: any, timeout?: number) {
this.ignoredLogs.push({ type, ignoreId }); this.ignoredLogs.push({ type, ignoreId });
// Clear after expiry (15sec by default) // Clear after expiry (15sec by default)
@ -45,11 +45,11 @@ export class GuildLogs extends events.EventEmitter {
}, timeout || 1000 * 15); }, timeout || 1000 * 15);
} }
isLogIgnored(type: LogType, ignoreId: any) { isLogIgnored(type: keyof typeof LogType, ignoreId: any) {
return this.ignoredLogs.some((info) => type === info.type && ignoreId === info.ignoreId); return this.ignoredLogs.some((info) => type === info.type && ignoreId === info.ignoreId);
} }
clearIgnoredLog(type: LogType, ignoreId: any) { clearIgnoredLog(type: keyof typeof LogType, ignoreId: any) {
this.ignoredLogs.splice( this.ignoredLogs.splice(
this.ignoredLogs.findIndex((info) => type === info.type && ignoreId === info.ignoreId), this.ignoredLogs.findIndex((info) => type === info.type && ignoreId === info.ignoreId),
1, 1,

View file

@ -1,102 +1,74 @@
export enum LogType { export const LogType = {
MEMBER_WARN = 1, MEMBER_WARN: "MEMBER_WARN",
MEMBER_MUTE, MEMBER_MUTE: "MEMBER_MUTE",
MEMBER_UNMUTE, MEMBER_UNMUTE: "MEMBER_UNMUTE",
MEMBER_MUTE_EXPIRED, MEMBER_MUTE_EXPIRED: "MEMBER_MUTE_EXPIRED",
MEMBER_KICK, MEMBER_KICK: "MEMBER_KICK",
MEMBER_BAN, MEMBER_BAN: "MEMBER_BAN",
MEMBER_UNBAN, MEMBER_UNBAN: "MEMBER_UNBAN",
MEMBER_FORCEBAN, MEMBER_FORCEBAN: "MEMBER_FORCEBAN",
MEMBER_SOFTBAN, MEMBER_SOFTBAN: "MEMBER_SOFTBAN",
MEMBER_JOIN, MEMBER_JOIN: "MEMBER_JOIN",
MEMBER_LEAVE, MEMBER_LEAVE: "MEMBER_LEAVE",
MEMBER_ROLE_ADD, MEMBER_ROLE_ADD: "MEMBER_ROLE_ADD",
MEMBER_ROLE_REMOVE, MEMBER_ROLE_REMOVE: "MEMBER_ROLE_REMOVE",
MEMBER_NICK_CHANGE, MEMBER_NICK_CHANGE: "MEMBER_NICK_CHANGE",
MEMBER_USERNAME_CHANGE, MEMBER_USERNAME_CHANGE: "MEMBER_USERNAME_CHANGE",
MEMBER_RESTORE, MEMBER_RESTORE: "MEMBER_RESTORE",
CHANNEL_CREATE: "CHANNEL_CREATE",
CHANNEL_CREATE, CHANNEL_DELETE: "CHANNEL_DELETE",
CHANNEL_DELETE, CHANNEL_UPDATE: "CHANNEL_UPDATE",
CHANNEL_UPDATE, THREAD_CREATE: "THREAD_CREATE",
THREAD_DELETE: "THREAD_DELETE",
THREAD_CREATE, THREAD_UPDATE: "THREAD_UPDATE",
THREAD_DELETE, ROLE_CREATE: "ROLE_CREATE",
THREAD_UPDATE, ROLE_DELETE: "ROLE_DELETE",
ROLE_UPDATE: "ROLE_UPDATE",
ROLE_CREATE, MESSAGE_EDIT: "MESSAGE_EDIT",
ROLE_DELETE, MESSAGE_DELETE: "MESSAGE_DELETE",
ROLE_UPDATE, MESSAGE_DELETE_BULK: "MESSAGE_DELETE_BULK",
MESSAGE_DELETE_BARE: "MESSAGE_DELETE_BARE",
MESSAGE_EDIT, VOICE_CHANNEL_JOIN: "VOICE_CHANNEL_JOIN",
MESSAGE_DELETE, VOICE_CHANNEL_LEAVE: "VOICE_CHANNEL_LEAVE",
MESSAGE_DELETE_BULK, VOICE_CHANNEL_MOVE: "VOICE_CHANNEL_MOVE",
MESSAGE_DELETE_BARE, STAGE_INSTANCE_CREATE: "STAGE_INSTANCE_CREATE",
STAGE_INSTANCE_DELETE: "STAGE_INSTANCE_DELETE",
VOICE_CHANNEL_JOIN, STAGE_INSTANCE_UPDATE: "STAGE_INSTANCE_UPDATE",
VOICE_CHANNEL_LEAVE, EMOJI_CREATE: "EMOJI_CREATE",
VOICE_CHANNEL_MOVE, EMOJI_DELETE: "EMOJI_DELETE",
EMOJI_UPDATE: "EMOJI_UPDATE",
STAGE_INSTANCE_CREATE, STICKER_CREATE: "STICKER_CREATE",
STAGE_INSTANCE_DELETE, STICKER_DELETE: "STICKER_DELETE",
STAGE_INSTANCE_UPDATE, STICKER_UPDATE: "STICKER_UPDATE",
COMMAND: "COMMAND",
EMOJI_CREATE, MESSAGE_SPAM_DETECTED: "MESSAGE_SPAM_DETECTED",
EMOJI_DELETE, CENSOR: "CENSOR",
EMOJI_UPDATE, CLEAN: "CLEAN",
CASE_CREATE: "CASE_CREATE",
STICKER_CREATE, MASSUNBAN: "MASSUNBAN",
STICKER_DELETE, MASSBAN: "MASSBAN",
STICKER_UPDATE, MASSMUTE: "MASSMUTE",
MEMBER_TIMED_MUTE: "MEMBER_TIMED_MUTE",
COMMAND, MEMBER_TIMED_UNMUTE: "MEMBER_TIMED_UNMUTE",
MEMBER_TIMED_BAN: "MEMBER_TIMED_BAN",
MESSAGE_SPAM_DETECTED, MEMBER_TIMED_UNBAN: "MEMBER_TIMED_UNBAN",
CENSOR, MEMBER_JOIN_WITH_PRIOR_RECORDS: "MEMBER_JOIN_WITH_PRIOR_RECORDS",
CLEAN, OTHER_SPAM_DETECTED: "OTHER_SPAM_DETECTED",
MEMBER_ROLE_CHANGES: "MEMBER_ROLE_CHANGES",
CASE_CREATE, VOICE_CHANNEL_FORCE_MOVE: "VOICE_CHANNEL_FORCE_MOVE",
VOICE_CHANNEL_FORCE_DISCONNECT: "VOICE_CHANNEL_FORCE_DISCONNECT",
MASSUNBAN, CASE_UPDATE: "CASE_UPDATE",
MASSBAN, MEMBER_MUTE_REJOIN: "MEMBER_MUTE_REJOIN",
MASSMUTE, SCHEDULED_MESSAGE: "SCHEDULED_MESSAGE",
POSTED_SCHEDULED_MESSAGE: "POSTED_SCHEDULED_MESSAGE",
MEMBER_TIMED_MUTE, BOT_ALERT: "BOT_ALERT",
MEMBER_TIMED_UNMUTE, AUTOMOD_ACTION: "AUTOMOD_ACTION",
MEMBER_TIMED_BAN, SCHEDULED_REPEATED_MESSAGE: "SCHEDULED_REPEATED_MESSAGE",
MEMBER_TIMED_UNBAN, REPEATED_MESSAGE: "REPEATED_MESSAGE",
MESSAGE_DELETE_AUTO: "MESSAGE_DELETE_AUTO",
MEMBER_JOIN_WITH_PRIOR_RECORDS, SET_ANTIRAID_USER: "SET_ANTIRAID_USER",
OTHER_SPAM_DETECTED, SET_ANTIRAID_AUTO: "SET_ANTIRAID_AUTO",
MEMBER_NOTE: "MEMBER_NOTE",
MEMBER_ROLE_CHANGES, CASE_DELETE: "CASE_DELETE",
VOICE_CHANNEL_FORCE_MOVE, DM_FAILED: "DM_FAILED",
VOICE_CHANNEL_FORCE_DISCONNECT, } as const;
CASE_UPDATE,
MEMBER_MUTE_REJOIN,
SCHEDULED_MESSAGE,
POSTED_SCHEDULED_MESSAGE,
BOT_ALERT,
AUTOMOD_ACTION,
SCHEDULED_REPEATED_MESSAGE,
REPEATED_MESSAGE,
MESSAGE_DELETE_AUTO,
SET_ANTIRAID_USER,
SET_ANTIRAID_AUTO,
MASS_ASSIGN_ROLES,
MASS_UNASSIGN_ROLES,
MEMBER_NOTE,
CASE_DELETE,
DM_FAILED,
}

View file

@ -1,12 +1,12 @@
import { BasePluginType, CooldownManager, guildPluginEventListener } from "knub"; import { BasePluginType, CooldownManager, guildPluginEventListener } from "knub";
import { z } from "zod"; import { ZodString, z } from "zod";
import { RegExpRunner } from "../../RegExpRunner"; import { RegExpRunner } from "../../RegExpRunner";
import { GuildArchives } from "../../data/GuildArchives"; import { GuildArchives } from "../../data/GuildArchives";
import { GuildCases } from "../../data/GuildCases"; import { GuildCases } from "../../data/GuildCases";
import { GuildLogs } from "../../data/GuildLogs"; import { GuildLogs } from "../../data/GuildLogs";
import { GuildSavedMessages } from "../../data/GuildSavedMessages"; import { GuildSavedMessages } from "../../data/GuildSavedMessages";
import { LogType } from "../../data/LogType"; import { LogType } from "../../data/LogType";
import { zBoundedCharacters, zMessageContent, zRegex, zSnowflake } from "../../utils"; import { keys, zBoundedCharacters, zMessageContent, zRegex, zSnowflake } from "../../utils";
import { MessageBuffer } from "../../utils/MessageBuffer"; import { MessageBuffer } from "../../utils/MessageBuffer";
import { import {
TemplateSafeCase, TemplateSafeCase,
@ -26,10 +26,13 @@ const DEFAULT_BATCH_TIME = 1000;
const MIN_BATCH_TIME = 250; const MIN_BATCH_TIME = 250;
const MAX_BATCH_TIME = 5000; const MAX_BATCH_TIME = 5000;
export const zLogFormats = z.record( type ZLogFormatsHelper = {
zBoundedCharacters(1, 255), -readonly [K in keyof typeof LogType]: typeof zMessageContent;
zMessageContent, };
); export const zLogFormats = z.strictObject(keys(LogType).reduce((map, logType) => {
map[logType] = zMessageContent;
return map;
}, {} as ZLogFormatsHelper));
export type TLogFormats = z.infer<typeof zLogFormats>; export type TLogFormats = z.infer<typeof zLogFormats>;
const zLogChannel = z.strictObject({ const zLogChannel = z.strictObject({
@ -44,7 +47,7 @@ const zLogChannel = z.strictObject({
excluded_threads: z.array(zSnowflake).nullable().default(null), excluded_threads: z.array(zSnowflake).nullable().default(null),
exclude_bots: z.boolean().default(false), exclude_bots: z.boolean().default(false),
excluded_roles: z.array(zSnowflake).nullable().default(null), excluded_roles: z.array(zSnowflake).nullable().default(null),
format: zLogFormats.default({}), format: zLogFormats.partial().default({}),
timestamp_format: z.string().nullable().default(null), timestamp_format: z.string().nullable().default(null),
include_embed_timestamp: z.boolean().nullable().default(null), include_embed_timestamp: z.boolean().nullable().default(null),
}); });
@ -55,7 +58,7 @@ export type TLogChannelMap = z.infer<typeof zLogChannelMap>;
export const zLogsConfig = z.strictObject({ export const zLogsConfig = z.strictObject({
channels: zLogChannelMap, channels: zLogChannelMap,
format: z.intersection(zLogFormats, z.strictObject({ format: zLogFormats.merge(z.strictObject({
// Legacy/deprecated, use timestamp_format below instead // Legacy/deprecated, use timestamp_format below instead
timestamp: zBoundedCharacters(0, 64).nullable(), timestamp: zBoundedCharacters(0, 64).nullable(),
})), })),

View file

@ -2,6 +2,6 @@ import { GuildPluginData } from "knub";
import { LogType } from "../../../data/LogType"; import { LogType } from "../../../data/LogType";
import { LogsPluginType } from "../types"; import { LogsPluginType } from "../types";
export function isLogIgnored(pluginData: GuildPluginData<LogsPluginType>, type: LogType, ignoreId: string) { export function isLogIgnored(pluginData: GuildPluginData<LogsPluginType>, type: keyof typeof LogType, ignoreId: string) {
return pluginData.state.guildLogs.isLogIgnored(type, ignoreId); return pluginData.state.guildLogs.isLogIgnored(type, ignoreId);
} }