diff options
author | IRONM00N <64110067+IRONM00N@users.noreply.github.com> | 2022-07-06 22:10:58 +0200 |
---|---|---|
committer | IRONM00N <64110067+IRONM00N@users.noreply.github.com> | 2022-07-06 22:10:58 +0200 |
commit | adbb5e939cebcf4c0479d66162377957f2a845af (patch) | |
tree | e69b237c79fac2701f162fce6076ec1f85f617a9 /src/lib/extensions | |
parent | 22b3a8af49dc16bf5d8f9c3ce48b4770505ea33b (diff) | |
download | tanzanite-adbb5e939cebcf4c0479d66162377957f2a845af.tar.gz tanzanite-adbb5e939cebcf4c0479d66162377957f2a845af.tar.bz2 tanzanite-adbb5e939cebcf4c0479d66162377957f2a845af.zip |
feat(automod): unmute button
Diffstat (limited to 'src/lib/extensions')
-rw-r--r-- | src/lib/extensions/discord.js/ExtendedGuildMember.ts | 32 |
1 files changed, 13 insertions, 19 deletions
diff --git a/src/lib/extensions/discord.js/ExtendedGuildMember.ts b/src/lib/extensions/discord.js/ExtendedGuildMember.ts index 947f9cd..f8add83 100644 --- a/src/lib/extensions/discord.js/ExtendedGuildMember.ts +++ b/src/lib/extensions/discord.js/ExtendedGuildMember.ts @@ -1,11 +1,11 @@ /* eslint-disable @typescript-eslint/no-unused-vars */ -import { BushClientEvents, formatError, Moderation, ModLogType, PunishmentTypeDM, Time } from '#lib'; +import { formatError, Moderation, ModLogType, Time, type BushClientEvents, type PunishmentTypeDM, type ValueOf } from '#lib'; import { ChannelType, - GuildChannelResolvable, GuildMember, - GuildTextBasedChannel, PermissionFlagsBits, + type GuildChannelResolvable, + type GuildTextBasedChannel, type Role } from 'discord.js'; /* eslint-enable @typescript-eslint/no-unused-vars */ @@ -358,13 +358,11 @@ export class ExtendedGuildMember extends GuildMember { */ public override async bushMute(options: BushTimedPunishmentOptions): Promise<MuteResponse> { // checks - if (!this.guild.members.me!.permissions.has(PermissionFlagsBits.ManageRoles)) return muteResponse.MISSING_PERMISSIONS; - const muteRoleID = await this.guild.getSetting('muteRole'); - if (!muteRoleID) return muteResponse.NO_MUTE_ROLE; - const muteRole = this.guild.roles.cache.get(muteRoleID); - if (!muteRole) return muteResponse.MUTE_ROLE_INVALID; - if (muteRole.position >= this.guild.members.me!.roles.highest.position || muteRole.managed) - return muteResponse.MUTE_ROLE_NOT_MANAGEABLE; + const checks = await Moderation.checkMutePermissions(this.guild); + if (checks !== true) return checks; + + const muteRoleID = (await this.guild.getSetting('muteRole'))!; + const muteRole = this.guild.roles.cache.get(muteRoleID)!; let caseID: string | undefined = undefined; let dmSuccessEvent: boolean | undefined = undefined; @@ -446,13 +444,11 @@ export class ExtendedGuildMember extends GuildMember { */ public override async bushUnmute(options: BushPunishmentOptions): Promise<UnmuteResponse> { // checks - if (!this.guild.members.me!.permissions.has(PermissionFlagsBits.ManageRoles)) return unmuteResponse.MISSING_PERMISSIONS; - const muteRoleID = await this.guild.getSetting('muteRole'); - if (!muteRoleID) return unmuteResponse.NO_MUTE_ROLE; - const muteRole = this.guild.roles.cache.get(muteRoleID); - if (!muteRole) return unmuteResponse.MUTE_ROLE_INVALID; - if (muteRole.position >= this.guild.members.me!.roles.highest.position || muteRole.managed) - return unmuteResponse.MUTE_ROLE_NOT_MANAGEABLE; + const checks = await Moderation.checkMutePermissions(this.guild); + if (checks !== true) return checks; + + const muteRoleID = (await this.guild.getSetting('muteRole'))!; + const muteRole = this.guild.roles.cache.get(muteRoleID)!; let caseID: string | undefined = undefined; let dmSuccessEvent: boolean | undefined = undefined; @@ -1090,8 +1086,6 @@ export interface BushTimeoutOptions extends BushPunishmentOptions { duration: number; } -type ValueOf<T> = T[keyof T]; - export const basePunishmentResponse = Object.freeze({ SUCCESS: 'success', MODLOG_ERROR: 'error creating modlog entry', |