diff options
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/extensions/discord-akairo/BushClient.ts | 4 | ||||
-rw-r--r-- | src/lib/extensions/discord-akairo/BushClientUtil.ts | 3 | ||||
-rw-r--r-- | src/lib/extensions/discord.js/BushClientEvents.d.ts | 72 | ||||
-rw-r--r-- | src/lib/extensions/discord.js/BushGuild.ts | 22 | ||||
-rw-r--r-- | src/lib/models/Guild.ts | 12 |
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; |