From 13306f17accea5d3653dd4b8670ba0d6ab69c7c5 Mon Sep 17 00:00:00 2001 From: IRONM00N <64110067+IRONM00N@users.noreply.github.com> Date: Mon, 6 Sep 2021 15:20:46 -0400 Subject: evidence command and more logging --- src/lib/extensions/discord-akairo/BushClient.ts | 4 +- .../extensions/discord-akairo/BushClientUtil.ts | 3 +- .../extensions/discord.js/BushClientEvents.d.ts | 72 ++++++++++++++-------- src/lib/extensions/discord.js/BushGuild.ts | 22 ++++--- src/lib/models/Guild.ts | 12 ++++ 5 files changed, 80 insertions(+), 33 deletions(-) (limited to 'src/lib') 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 extends AkairoClient { + public async addFeature(feature: GuildFeatures, moderator?: BushGuildMember): Promise { 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 { + public async removeFeature(feature: GuildFeatures, moderator?: BushGuildMember): Promise { 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 { - return (await this.hasFeature(feature)) ? await this.removeFeature(feature) : await this.addFeature(feature); + public async toggleFeature(feature: GuildFeatures, moderator?: BushGuildMember): Promise { + return (await this.hasFeature(feature)) + ? await this.removeFeature(feature, moderator) + : await this.addFeature(feature, moderator); } public async getSetting(setting: K): Promise { @@ -44,10 +46,16 @@ export class BushGuild extends Guild { ); } - public async setSetting(setting: K, value: GuildDB[K]): Promise { + public async setSetting>( + setting: K, + value: GuildDB[K], + moderator?: BushGuildMember + ): Promise { 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; -- cgit