diff options
Diffstat (limited to 'src/lib/common')
-rw-r--r-- | src/lib/common/AutoMod.ts | 12 | ||||
-rw-r--r-- | src/lib/common/ButtonPaginator.ts | 25 | ||||
-rw-r--r-- | src/lib/common/ConfirmationPrompt.ts | 8 | ||||
-rw-r--r-- | src/lib/common/DeleteButton.ts | 10 | ||||
-rw-r--r-- | src/lib/common/HighlightManager.ts | 10 | ||||
-rw-r--r-- | src/lib/common/util/Arg.ts | 16 | ||||
-rw-r--r-- | src/lib/common/util/Moderation.ts | 51 |
7 files changed, 74 insertions, 58 deletions
diff --git a/src/lib/common/AutoMod.ts b/src/lib/common/AutoMod.ts index f30eab7..982e0e8 100644 --- a/src/lib/common/AutoMod.ts +++ b/src/lib/common/AutoMod.ts @@ -1,4 +1,4 @@ -import { banResponse, Moderation, type BushButtonInteraction, type BushMessage } from '#lib'; +import { banResponse, Moderation } from '#lib'; import assert from 'assert'; import chalk from 'chalk'; import { @@ -8,6 +8,8 @@ import { EmbedBuilder, GuildMember, PermissionFlagsBits, + type ButtonInteraction, + type Message, type TextChannel } from 'discord.js'; @@ -18,7 +20,7 @@ export class AutoMod { /** * The message to check for blacklisted phrases on */ - private message: BushMessage; + private message: Message; /** * Whether or not a punishment has already been given to the user @@ -28,7 +30,7 @@ export class AutoMod { /** * @param message The message to check and potentially perform automod actions to */ - public constructor(message: BushMessage) { + public constructor(message: Message) { this.message = message; if (message.author.id === client.user?.id) return; void this.handle(); @@ -355,7 +357,7 @@ export class AutoMod { * Handles the ban button in the automod log. * @param interaction The button interaction. */ - public static async handleInteraction(interaction: BushButtonInteraction) { + public static async handleInteraction(interaction: ButtonInteraction) { if (!interaction.memberPermissions?.has(PermissionFlagsBits.BanMembers)) return interaction.reply({ content: `${util.emojis.error} You are missing the **Ban Members** permission.`, @@ -382,7 +384,7 @@ export class AutoMod { user: userId, reason, moderator: interaction.user.id, - evidence: (interaction.message as BushMessage).url ?? undefined + evidence: (interaction.message as Message).url ?? undefined }); const victimUserFormatted = (await util.resolveNonCachedUser(userId))?.tag ?? userId; diff --git a/src/lib/common/ButtonPaginator.ts b/src/lib/common/ButtonPaginator.ts index cc95601..64870cf 100644 --- a/src/lib/common/ButtonPaginator.ts +++ b/src/lib/common/ButtonPaginator.ts @@ -1,7 +1,14 @@ -import { DeleteButton, type BushMessage, type BushSlashMessage } from '#lib'; +import { DeleteButton, type CommandMessage, type SlashMessage } from '#lib'; import { CommandUtil } from 'discord-akairo'; -import { APIEmbed } from 'discord-api-types/v10'; -import { ActionRowBuilder, ButtonBuilder, ButtonStyle, EmbedBuilder, type MessageComponentInteraction } from 'discord.js'; +import { + ActionRowBuilder, + ButtonBuilder, + ButtonStyle, + EmbedBuilder, + type APIEmbed, + type Message, + type MessageComponentInteraction +} from 'discord.js'; /** * Sends multiple embeds with controls to switch between them @@ -10,7 +17,7 @@ export class ButtonPaginator { /** * The message that triggered the command */ - protected message: BushMessage | BushSlashMessage; + protected message: CommandMessage | SlashMessage; /** * The embeds to paginate @@ -35,7 +42,7 @@ export class ButtonPaginator { /** * The paginator message */ - protected sentMessage: BushMessage | undefined; + protected sentMessage: Message | undefined; /** * @param message The message to respond to @@ -45,7 +52,7 @@ export class ButtonPaginator { * @param startOn The page to start from (**not** the index) */ protected constructor( - message: BushMessage | BushSlashMessage, + message: CommandMessage | SlashMessage, embeds: EmbedBuilder[] | APIEmbed[], text: string | null, deleteOnExit: boolean, @@ -80,11 +87,11 @@ export class ButtonPaginator { * Sends the paginator message */ protected async send() { - this.sentMessage = (await this.message.util.reply({ + this.sentMessage = await this.message.util.reply({ content: this.text, embeds: [this.embeds[this.curPage]], components: [this.getPaginationRow()] - })) as BushMessage; + }); const collector = this.sentMessage.createMessageComponentCollector({ filter: (i) => i.customId.startsWith('paginate_'), @@ -214,7 +221,7 @@ export class ButtonPaginator { * @param startOn The page to start from (**not** the index) */ public static async send( - message: BushMessage | BushSlashMessage, + message: CommandMessage | SlashMessage, embeds: EmbedBuilder[] | APIEmbed[], text: string | null = null, deleteOnExit = true, diff --git a/src/lib/common/ConfirmationPrompt.ts b/src/lib/common/ConfirmationPrompt.ts index c611fd3..c95dbbc 100644 --- a/src/lib/common/ConfirmationPrompt.ts +++ b/src/lib/common/ConfirmationPrompt.ts @@ -1,4 +1,4 @@ -import { type BushMessage, type BushSlashMessage } from '#lib'; +import { type CommandMessage, type SlashMessage } from '#lib'; import { ActionRowBuilder, ButtonBuilder, ButtonStyle, type MessageComponentInteraction, type MessageOptions } from 'discord.js'; /** @@ -13,13 +13,13 @@ export class ConfirmationPrompt { /** * The message that triggered the command */ - protected message: BushMessage | BushSlashMessage; + protected message: CommandMessage | SlashMessage; /** * @param message The message to respond to * @param options The send message options */ - protected constructor(message: BushMessage | BushSlashMessage, messageOptions: MessageOptions) { + protected constructor(message: CommandMessage | SlashMessage, messageOptions: MessageOptions) { this.message = message; this.messageOptions = messageOptions; } @@ -71,7 +71,7 @@ export class ConfirmationPrompt { * @param message The message to respond to * @param options The send message options */ - public static async send(message: BushMessage | BushSlashMessage, sendOptions: MessageOptions): Promise<boolean> { + public static async send(message: CommandMessage | SlashMessage, sendOptions: MessageOptions): Promise<boolean> { return new ConfirmationPrompt(message, sendOptions).send(); } } diff --git a/src/lib/common/DeleteButton.ts b/src/lib/common/DeleteButton.ts index 03e2639..91f4bfa 100644 --- a/src/lib/common/DeleteButton.ts +++ b/src/lib/common/DeleteButton.ts @@ -1,4 +1,4 @@ -import { PaginateEmojis, type BushMessage, type BushSlashMessage } from '#lib'; +import { PaginateEmojis, type CommandMessage, type SlashMessage } from '#lib'; import { CommandUtil } from 'discord-akairo'; import { ActionRowBuilder, @@ -22,13 +22,13 @@ export class DeleteButton { /** * The message that triggered the command */ - protected message: BushMessage | BushSlashMessage; + protected message: CommandMessage | SlashMessage; /** * @param message The message to respond to * @param options The send message options */ - protected constructor(message: BushMessage | BushSlashMessage, options: MessageOptions) { + protected constructor(message: CommandMessage | SlashMessage, options: MessageOptions) { this.message = message; this.messageOptions = options; } @@ -39,7 +39,7 @@ export class DeleteButton { protected async send() { this.updateComponents(); - const msg = (await this.message.util.reply(this.messageOptions)) as BushMessage; + const msg = await this.message.util.reply(this.messageOptions); const collector = msg.createMessageComponentCollector({ filter: (interaction) => interaction.customId == 'paginate__stop' && interaction.message?.id == msg.id, @@ -85,7 +85,7 @@ export class DeleteButton { * @param message The message to respond to * @param options The send message options */ - public static async send(message: BushMessage | BushSlashMessage, options: Omit<MessageOptions, 'components'>) { + public static async send(message: CommandMessage | SlashMessage, options: Omit<MessageOptions, 'components'>) { return new DeleteButton(message, options).send(); } } diff --git a/src/lib/common/HighlightManager.ts b/src/lib/common/HighlightManager.ts index fffb266..fdec322 100644 --- a/src/lib/common/HighlightManager.ts +++ b/src/lib/common/HighlightManager.ts @@ -1,6 +1,6 @@ -import { Highlight, type BushMessage, type HighlightWord } from '#lib'; +import { Highlight, type HighlightWord } from '#lib'; import assert from 'assert'; -import { Collection, type Snowflake } from 'discord.js'; +import { Collection, type Message, type Snowflake } from 'discord.js'; import { Time } from '../utils/BushConstants.js'; const NOTIFY_COOLDOWN = 5 * Time.Minute; @@ -75,7 +75,7 @@ export class HighlightManager { * @param message The message to check. * @returns A collection users mapped to the highlight matched */ - public checkMessage(message: BushMessage): Collection<Snowflake, HighlightWord> { + public checkMessage(message: Message): Collection<Snowflake, HighlightWord> { // even if there are multiple matches, only the first one is returned const ret = new Collection<Snowflake, HighlightWord>(); if (!message.content || !message.inGuild()) return ret; @@ -225,7 +225,7 @@ export class HighlightManager { * @param hl The highlight that was matched. * @returns Whether or a dm was sent. */ - public async notify(message: BushMessage, user: Snowflake, hl: HighlightWord): Promise<boolean> { + public async notify(message: Message, user: Snowflake, hl: HighlightWord): Promise<boolean> { assert(message.inGuild()); dmCooldown: { @@ -301,7 +301,7 @@ export class HighlightManager { * Updates the time that a user last talked in a particular guild. * @param message The message the user sent. */ - public updateLastTalked(message: BushMessage): void { + public updateLastTalked(message: Message): void { if (!message.inGuild()) return; const lastTalked = ( this.userLastTalkedCooldown.has(message.guildId) diff --git a/src/lib/common/util/Arg.ts b/src/lib/common/util/Arg.ts index 01d3b0b..51d8065 100644 --- a/src/lib/common/util/Arg.ts +++ b/src/lib/common/util/Arg.ts @@ -1,4 +1,10 @@ -import { type BaseBushArgumentType, type BushArgumentType, type BushArgumentTypeCaster, type BushSlashMessage } from '#lib'; +import { + type BaseBushArgumentType, + type BushArgumentType, + type BushArgumentTypeCaster, + type CommandMessage, + type SlashMessage +} from '#lib'; import { Argument, type Flag, type ParsedValuePredicate } from 'discord-akairo'; import { type Message } from 'discord.js'; @@ -12,10 +18,10 @@ export class Arg { * @param message - Message that called the command. * @param phrase - Phrase to process. */ - public static async cast<T extends ATC>(type: T, message: Message | BushSlashMessage, phrase: string): Promise<ATCR<T>>; - public static async cast<T extends KBAT>(type: T, message: Message | BushSlashMessage, phrase: string): Promise<BAT[T]>; - public static async cast(type: AT | ATC, message: Message | BushSlashMessage, phrase: string): Promise<any>; - public static async cast(type: ATC | AT, message: Message | BushSlashMessage, phrase: string): Promise<any> { + public static async cast<T extends ATC>(type: T, message: CommandMessage | SlashMessage, phrase: string): Promise<ATCR<T>>; + public static async cast<T extends KBAT>(type: T, message: CommandMessage | SlashMessage, phrase: string): Promise<BAT[T]>; + public static async cast(type: AT | ATC, message: CommandMessage | SlashMessage, phrase: string): Promise<any>; + public static async cast(type: ATC | AT, message: CommandMessage | SlashMessage, phrase: string): Promise<any> { return Argument.cast(type as any, client.commandHandler.resolver, message as Message, phrase); } diff --git a/src/lib/common/util/Moderation.ts b/src/lib/common/util/Moderation.ts index 9f93375..6cdc141 100644 --- a/src/lib/common/util/Moderation.ts +++ b/src/lib/common/util/Moderation.ts @@ -1,17 +1,18 @@ -import { - ActivePunishment, - ActivePunishmentType, - Guild, - ModLog, - type BushGuild, - type BushGuildMember, - type BushGuildMemberResolvable, - type BushGuildResolvable, - type BushUserResolvable, - type ModLogType -} from '#lib'; +import { ActivePunishment, ActivePunishmentType, Guild as GuildDB, ModLog, type ModLogType } from '#lib'; import assert from 'assert'; -import { ActionRowBuilder, ButtonBuilder, ButtonStyle, EmbedBuilder, PermissionFlagsBits, type Snowflake } from 'discord.js'; +import { + ActionRowBuilder, + ButtonBuilder, + ButtonStyle, + EmbedBuilder, + PermissionFlagsBits, + type Guild, + type GuildMember, + type GuildMemberResolvable, + type GuildResolvable, + type Snowflake, + type UserResolvable +} from 'discord.js'; enum punishMap { 'warned' = 'warn', @@ -52,8 +53,8 @@ export class Moderation { * @returns `true` if the moderator can perform the action otherwise a reason why they can't. */ public static async permissionCheck( - moderator: BushGuildMember, - victim: BushGuildMember, + moderator: GuildMember, + victim: GuildMember, type: | 'mute' | 'unmute' @@ -146,7 +147,7 @@ export class Moderation { getCaseNumber = false ): Promise<{ log: ModLog | null; caseNum: number | null }> { // If guild does not exist create it so the modlog can reference a guild. - await Guild.findOrCreate({ + await GuildDB.findOrCreate({ where: { id: options.guild }, defaults: { id: options.guild } }); @@ -349,17 +350,17 @@ export interface CreateModLogEntryOptions extends BaseCreateModLogEntryOptions { /** * The user that a modlog entry is created for. */ - user: BushGuildMemberResolvable; + user: GuildMemberResolvable; /** * The moderator that created the modlog entry. */ - moderator: BushGuildMemberResolvable; + moderator: GuildMemberResolvable; /** * The guild that the punishment is created for. */ - guild: BushGuildResolvable; + guild: GuildResolvable; } /** @@ -394,7 +395,7 @@ export interface CreatePunishmentEntryOptions { /** * The user that the punishment is created for. */ - user: BushGuildMemberResolvable; + user: GuildMemberResolvable; /** * The length of time the punishment lasts for. @@ -404,7 +405,7 @@ export interface CreatePunishmentEntryOptions { /** * The guild that the punishment is created for. */ - guild: BushGuildResolvable; + guild: GuildResolvable; /** * The id of the modlog that is linked to the punishment entry. @@ -429,12 +430,12 @@ export interface RemovePunishmentEntryOptions { /** * The user that the punishment is destroyed for. */ - user: BushGuildMemberResolvable; + user: GuildMemberResolvable; /** * The guild that the punishment was in. */ - guild: BushGuildResolvable; + guild: GuildResolvable; /** * Extra information for the punishment. The role for role punishments and the channel for blocks. @@ -454,12 +455,12 @@ export interface PunishDMOptions { /** * The guild that the punishment is taking place in. */ - guild: BushGuild; + guild: Guild; /** * The user that is being punished. */ - user: BushUserResolvable; + user: UserResolvable; /** * The punishment that the user has received. |