aboutsummaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/extensions/discord-akairo/BushClient.ts4
-rw-r--r--src/lib/extensions/discord-akairo/BushClientUtil.ts3
-rw-r--r--src/lib/extensions/discord.js/BushClientEvents.d.ts72
-rw-r--r--src/lib/extensions/discord.js/BushGuild.ts22
-rw-r--r--src/lib/models/Guild.ts12
5 files changed, 80 insertions, 33 deletions
diff --git a/src/lib/extensions/discord-akairo/BushClient.ts b/src/lib/extensions/discord-akairo/BushClient.ts
index 59c4df8..d488525 100644
--- a/src/lib/extensions/discord-akairo/BushClient.ts
+++ b/src/lib/extensions/discord-akairo/BushClient.ts
@@ -9,6 +9,7 @@ import {
MessageEditOptions,
MessageOptions,
MessagePayload,
+ Options,
PartialDMChannel,
ReplyMessageOptions,
Snowflake,
@@ -219,7 +220,8 @@ export class BushClient<Ready extends boolean = boolean> extends AkairoClient<Re
status: 'online'
},
http: { api: 'https://canary.discord.com/api' },
- allowedMentions: AllowedMentions.users() // No everyone or role mentions by default
+ allowedMentions: AllowedMentions.users(), // No everyone or role mentions by default
+ makeCache: Options.cacheWithLimits({})
});
this.token = config.token;
diff --git a/src/lib/extensions/discord-akairo/BushClientUtil.ts b/src/lib/extensions/discord-akairo/BushClientUtil.ts
index 4028517..38e1a06 100644
--- a/src/lib/extensions/discord-akairo/BushClientUtil.ts
+++ b/src/lib/extensions/discord-akairo/BushClientUtil.ts
@@ -1169,7 +1169,8 @@ export class BushClientUtil extends ClientUtil {
if (!getCaseNumber) return { log: saveResult, caseNum: null };
- const caseNum = (await ModLog.findAll({ where: { type: options.type, user: user, guild: guild, hidden: false } }))?.length;
+ const caseNum = (await ModLog.findAll({ where: { type: options.type, user: user, guild: guild, hidden: 'false' } }))
+ ?.length;
return { log: saveResult, caseNum };
}
diff --git a/src/lib/extensions/discord.js/BushClientEvents.d.ts b/src/lib/extensions/discord.js/BushClientEvents.d.ts
index b797698..0406015 100644
--- a/src/lib/extensions/discord.js/BushClientEvents.d.ts
+++ b/src/lib/extensions/discord.js/BushClientEvents.d.ts
@@ -1,4 +1,31 @@
import {
+ BushApplicationCommand,
+ BushClient,
+ BushDMChannel,
+ BushGuild,
+ BushGuildChannel,
+ BushGuildEmoji,
+ BushGuildMember,
+ BushMessage,
+ BushMessageReaction,
+ BushNewsChannel,
+ BushPresence,
+ BushRole,
+ BushStageInstance,
+ BushTextBasedChannels,
+ BushTextChannel,
+ BushThreadChannel,
+ BushThreadMember,
+ BushUser,
+ BushVoiceState,
+ Guild,
+ GuildSettings,
+ PartialBushGuildMember,
+ PartialBushMessage,
+ PartialBushMessageReaction,
+ PartialBushUser
+} from '@lib';
+import {
ClientEvents,
Collection,
Interaction,
@@ -9,31 +36,7 @@ import {
Sticker,
Typing
} from 'discord.js';
-import {
- BushClient,
- BushTextBasedChannels
-} from '../discord-akairo/BushClient';
-import { BushApplicationCommand } from './BushApplicationCommand';
-import { BushDMChannel } from './BushDMChannel';
-import { BushGuild } from './BushGuild';
import { BushGuildBan } from './BushGuildBan';
-import { BushGuildChannel } from './BushGuildChannel';
-import { BushGuildEmoji } from './BushGuildEmoji';
-import { BushGuildMember, PartialBushGuildMember } from './BushGuildMember';
-import { BushMessage, PartialBushMessage } from './BushMessage';
-import {
- BushMessageReaction,
- PartialBushMessageReaction
-} from './BushMessageReaction';
-import { BushNewsChannel } from './BushNewsChannel';
-import { BushPresence } from './BushPresence';
-import { BushRole } from './BushRole';
-import { BushStageInstance } from './BushStageInstance';
-import { BushTextChannel } from './BushTextChannel';
-import { BushThreadChannel } from './BushThreadChannel';
-import { BushThreadMember } from './BushThreadMember';
-import { BushUser, PartialBushUser } from './BushUser';
-import { BushVoiceState } from './BushVoiceState';
export interface BushClientEvents extends ClientEvents {
applicationCommandCreate: [command: BushApplicationCommand];
@@ -205,6 +208,20 @@ export interface BushClientEvents extends ClientEvents {
caseID: string,
dmSuccess: boolean
];
+ bushUpdateModlog: [
+ moderator: BushGuildMember,
+ modlogID: string,
+ key: 'evidence' | 'hidden',
+ oldModlog: string | boolean,
+ newModlog: string | boolean
+ ];
+ bushUpdateSettings: [
+ setting: Setting,
+ guild: BushGuild,
+ oldValue: Guild[Setting],
+ newValue: Guild[Setting],
+ moderator?: BushGuildMember
+ ];
bushWarn: [
victim: BushGuildMember,
moderator: BushUser,
@@ -214,3 +231,10 @@ export interface BushClientEvents extends ClientEvents {
dmSuccess: boolean
];
}
+
+type Setting =
+ | GuildSettings
+ | 'enabledFeatures'
+ | 'blacklistedChannels'
+ | 'blacklistedUsers'
+ | 'disabledCommands';
diff --git a/src/lib/extensions/discord.js/BushGuild.ts b/src/lib/extensions/discord.js/BushGuild.ts
index 18f6542..256b9dc 100644
--- a/src/lib/extensions/discord.js/BushGuild.ts
+++ b/src/lib/extensions/discord.js/BushGuild.ts
@@ -21,20 +21,22 @@ export class BushGuild extends Guild {
return features.includes(feature);
}
- public async addFeature(feature: GuildFeatures): Promise<GuildModel['enabledFeatures']> {
+ public async addFeature(feature: GuildFeatures, moderator?: BushGuildMember): Promise<GuildModel['enabledFeatures']> {
const features = await this.getSetting('enabledFeatures');
const newFeatures = util.addOrRemoveFromArray('add', features, feature);
- return (await this.setSetting('enabledFeatures', newFeatures)).enabledFeatures;
+ return (await this.setSetting('enabledFeatures', newFeatures, moderator)).enabledFeatures;
}
- public async removeFeature(feature: GuildFeatures): Promise<GuildModel['enabledFeatures']> {
+ public async removeFeature(feature: GuildFeatures, moderator?: BushGuildMember): Promise<GuildModel['enabledFeatures']> {
const features = await this.getSetting('enabledFeatures');
const newFeatures = util.addOrRemoveFromArray('remove', features, feature);
- return (await this.setSetting('enabledFeatures', newFeatures)).enabledFeatures;
+ return (await this.setSetting('enabledFeatures', newFeatures, moderator)).enabledFeatures;
}
- public async toggleFeature(feature: GuildFeatures): Promise<GuildModel['enabledFeatures']> {
- return (await this.hasFeature(feature)) ? await this.removeFeature(feature) : await this.addFeature(feature);
+ public async toggleFeature(feature: GuildFeatures, moderator?: BushGuildMember): Promise<GuildModel['enabledFeatures']> {
+ return (await this.hasFeature(feature))
+ ? await this.removeFeature(feature, moderator)
+ : await this.addFeature(feature, moderator);
}
public async getSetting<K extends keyof GuildModel>(setting: K): Promise<GuildModel[K]> {
@@ -44,10 +46,16 @@ export class BushGuild extends Guild {
);
}
- public async setSetting<K extends keyof GuildModel>(setting: K, value: GuildDB[K]): Promise<GuildDB> {
+ public async setSetting<K extends Exclude<keyof GuildModel, 'id'>>(
+ setting: K,
+ value: GuildDB[K],
+ moderator?: BushGuildMember
+ ): Promise<GuildDB> {
const row = (await GuildDB.findByPk(this.id)) ?? GuildDB.build({ id: this.id });
+ const oldValue = row[setting] as GuildDB[K];
row[setting] = value;
client.cache.guilds.set(this.id, row.toJSON() as GuildDB);
+ client.emit('bushUpdateSettings', setting, this, oldValue, row[setting], moderator);
return await row.save();
}
diff --git a/src/lib/models/Guild.ts b/src/lib/models/Guild.ts
index b155330..9b283ab 100644
--- a/src/lib/models/Guild.ts
+++ b/src/lib/models/Guild.ts
@@ -52,6 +52,18 @@ export const guildSettingsObj = {
description: 'These users will be able to use commands in channels blacklisted.',
type: 'user-array',
configurable: true
+ },
+ logChannels: {
+ name: 'Log Channels',
+ description: 'The channel were logs are sent.',
+ type: 'custom',
+ configurable: false
+ },
+ autoModPhases: {
+ name: 'Automod Phases',
+ description: 'Custom phrases to be detected by automod.',
+ type: 'custom',
+ configurable: false
}
};
export type GuildSettings = keyof typeof guildSettingsObj;