3
0
Fork 0
mirror of https://github.com/ZeppelinBot/Zeppelin.git synced 2025-06-17 11:25:03 +00:00

Merge branch 'master' of github.com:ZeppelinBot/Zeppelin into feat/application-commands

This commit is contained in:
Lily Bergonzat 2024-02-16 14:26:34 +01:00
commit 2c0e4b37ca
235 changed files with 3464 additions and 4799 deletions

View file

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

View file

@ -1,10 +1,10 @@
import { Guild, Snowflake } from "discord.js";
import moment from "moment-timezone";
import { isDefaultSticker } from "src/utils/isDefaultSticker";
import { Repository } from "typeorm";
import { TemplateSafeValueContainer, renderTemplate } from "../templateFormatter";
import { renderUsername, trimLines } from "../utils";
import { decrypt, encrypt } from "../utils/crypt";
import { isDefaultSticker } from "../utils/isDefaultSticker";
import { channelToTemplateSafeChannel, guildToTemplateSafeGuild } from "../utils/templateSafeObjects";
import { BaseGuildRepository } from "./BaseGuildRepository";
import { dataSource } from "./dataSource";

View file

@ -12,7 +12,8 @@ import { CounterValue } from "./entities/CounterValue";
const DELETE_UNUSED_COUNTERS_AFTER = 1 * DAYS;
const DELETE_UNUSED_COUNTER_TRIGGERS_AFTER = 1 * DAYS;
const MAX_COUNTER_VALUE = 2147483647; // 2^31-1, for MySQL INT
export const MIN_COUNTER_VALUE = 0;
export const MAX_COUNTER_VALUE = 2147483647; // 2^31-1, for MySQL INT
const decayQueue = new Queue();
@ -115,7 +116,9 @@ export class GuildCounters extends BaseGuildRepository {
userId = userId || "0";
const rawUpdate =
change >= 0 ? `value = LEAST(value + ${change}, ${MAX_COUNTER_VALUE})` : `value = GREATEST(value ${change}, 0)`;
change >= 0
? `value = LEAST(value + ${change}, ${MAX_COUNTER_VALUE})`
: `value = GREATEST(value ${change}, ${MIN_COUNTER_VALUE})`;
await this.counterValues.query(
`
@ -173,7 +176,7 @@ export class GuildCounters extends BaseGuildRepository {
const rawUpdate =
decayAmountToApply >= 0
? `GREATEST(value - ${decayAmountToApply}, 0)`
? `GREATEST(value - ${decayAmountToApply}, ${MIN_COUNTER_VALUE})`
: `LEAST(value + ${Math.abs(decayAmountToApply)}, ${MAX_COUNTER_VALUE})`;
// Using an UPDATE with ORDER BY in an attempt to avoid deadlocks from simultaneous decays

View file

@ -5,7 +5,7 @@ import { LogType } from "./LogType";
const guildInstances: Map<string, GuildLogs> = new Map();
interface IIgnoredLog {
type: LogType;
type: keyof typeof LogType;
ignoreId: any;
}
@ -27,7 +27,7 @@ export class GuildLogs extends events.EventEmitter {
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)) {
this.clearIgnoredLog(type, ignoreId);
return;
@ -36,7 +36,7 @@ export class GuildLogs extends events.EventEmitter {
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 });
// Clear after expiry (15sec by default)
@ -45,11 +45,11 @@ export class GuildLogs extends events.EventEmitter {
}, 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);
}
clearIgnoredLog(type: LogType, ignoreId: any) {
clearIgnoredLog(type: keyof typeof LogType, ignoreId: any) {
this.ignoredLogs.splice(
this.ignoredLogs.findIndex((info) => type === info.type && ignoreId === info.ignoreId),
1,

View file

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

View file

@ -15,3 +15,9 @@ export function connect() {
return connectionPromise;
}
export function disconnect() {
if (connectionPromise) {
connectionPromise.then(() => dataSource.destroy());
}
}