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:
parent
cbec80981d
commit
82d720d308
5 changed files with 97 additions and 116 deletions
|
@ -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: {
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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,
|
|
||||||
}
|
|
||||||
|
|
|
@ -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(),
|
||||||
})),
|
})),
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue