diff options
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/common/typings/BushInspectOptions.d.ts | 10 | ||||
-rw-r--r-- | src/lib/extensions/discord-akairo/BushClient.ts | 92 | ||||
-rw-r--r-- | src/lib/extensions/discord-akairo/BushClientUtil.ts | 3 | ||||
-rw-r--r-- | src/lib/extensions/discord.js/BushGuild.ts | 2 | ||||
-rw-r--r-- | src/lib/utils/BushCache.ts | 18 |
5 files changed, 56 insertions, 69 deletions
diff --git a/src/lib/common/typings/BushInspectOptions.d.ts b/src/lib/common/typings/BushInspectOptions.d.ts index 11c2dc1..e51e758 100644 --- a/src/lib/common/typings/BushInspectOptions.d.ts +++ b/src/lib/common/typings/BushInspectOptions.d.ts @@ -12,6 +12,7 @@ export interface BushInspectOptions extends InspectOptions { * **Default**: `false`. */ showHidden?: boolean | undefined; + /** * Specifies the number of times to recurse while formatting `object`. This is useful * for inspecting large objects. To recurse up to the maximum call stack size pass @@ -20,24 +21,28 @@ export interface BushInspectOptions extends InspectOptions { * **Default**: `2`. */ depth?: number | null | undefined; + /** * If `true`, the output is styled with ANSI color codes. Colors are customizable. See [Customizing util.inspect colors](https://nodejs.org/api/util.html#util_customizing_util_inspect_colors). * * **Default**: `false`. */ colors?: boolean | undefined; + /** * If `false`, `[util.inspect.custom](depth, opts)` functions are not invoked. * * **Default**: `true`. */ customInspect?: boolean | undefined; + /** * If `true`, `Proxy` inspection includes the [`target` and `handler`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy#Terminology) objects. * * **Default**: `false`. */ showProxy?: boolean | undefined; + /** * Specifies the maximum number of `Array`, [`TypedArray`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray), [`WeakMap`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakMap) and * [`WeakSet`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/WeakSet) elements to include when formatting. Set to `null` or `Infinity` to @@ -46,6 +51,7 @@ export interface BushInspectOptions extends InspectOptions { * **Default**: `100`. */ maxArrayLength?: number | null | undefined; + /** * Specifies the maximum number of characters to include when formatting. Set to * `null` or `Infinity` to show all elements. Set to `0` or negative to show no @@ -54,6 +60,7 @@ export interface BushInspectOptions extends InspectOptions { * **Default**: `10000`. */ maxStringLength?: number | null | undefined; + /** * The length at which input values are split across multiple lines. Set to * `Infinity` to format the input as a single line (in combination with compact set @@ -62,6 +69,7 @@ export interface BushInspectOptions extends InspectOptions { * **Default**: `80`. */ breakLength?: number | undefined; + /** * Setting this to `false` causes each object key to be displayed on a new line. It * will break on new lines in text that is longer than `breakLength`. If set to a @@ -71,6 +79,7 @@ export interface BushInspectOptions extends InspectOptions { * **Default**: `3` */ compact?: boolean | number | undefined; + /** * If set to `true` or a function, all properties of an object, and `Set` and `Map` * entries are sorted in the resulting string. If set to `true` the [default sort](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort) is used. @@ -79,6 +88,7 @@ export interface BushInspectOptions extends InspectOptions { * **Default**: `false`. */ sorted?: boolean | ((a: string, b: string) => number) | undefined; + /** * If set to `true`, getters are inspected. If set to `'get'`, only getters without a * corresponding setter are inspected. If set to `'set'`, only getters with a diff --git a/src/lib/extensions/discord-akairo/BushClient.ts b/src/lib/extensions/discord-akairo/BushClient.ts index 39eff3b..93ed9d7 100644 --- a/src/lib/extensions/discord-akairo/BushClient.ts +++ b/src/lib/extensions/discord-akairo/BushClient.ts @@ -34,15 +34,15 @@ import path from 'path'; import readline from 'readline'; import type { Sequelize as SequelizeType } from 'sequelize'; import { fileURLToPath } from 'url'; -import { abbreviatedNumberTypeCaster } from '../../../arguments/abbreviatedNumber.js'; -import { contentWithDurationTypeCaster } from '../../../arguments/contentWithDuration.js'; -import { discordEmojiTypeCaster } from '../../../arguments/discordEmoji.js'; -import { durationTypeCaster } from '../../../arguments/duration.js'; -import { durationSecondsTypeCaster } from '../../../arguments/durationSeconds.js'; -import { globalUserTypeCaster } from '../../../arguments/globalUser.js'; -import { permissionTypeCaster } from '../../../arguments/permission.js'; -import { roleWithDurationTypeCaster } from '../../../arguments/roleWithDuration.js'; -import { snowflakeTypeCaster } from '../../../arguments/snowflake.js'; +import { abbreviatedNumber } from '../../../arguments/abbreviatedNumber.js'; +import { contentWithDuration } from '../../../arguments/contentWithDuration.js'; +import { discordEmoji } from '../../../arguments/discordEmoji.js'; +import { duration } from '../../../arguments/duration.js'; +import { durationSeconds } from '../../../arguments/durationSeconds.js'; +import { globalUser } from '../../../arguments/globalUser.js'; +import { permission } from '../../../arguments/permission.js'; +import { roleWithDuration } from '../../../arguments/roleWithDuration.js'; +import { snowflake } from '../../../arguments/snowflake.js'; import UpdateCacheTask from '../../../tasks/updateCache.js'; import UpdateStatsTask from '../../../tasks/updateStats.js'; import { ActivePunishment } from '../../models/ActivePunishment.js'; @@ -136,7 +136,7 @@ export class BushClient<Ready extends boolean = boolean> extends AkairoClient<Re public db: SequelizeType; public logger = BushLogger; public constants = BushConstants; - public cache = BushCache; + public cache = new BushCache(); public sentry!: typeof Sentry; public constructor(config: Config) { @@ -279,15 +279,15 @@ export class BushClient<Ready extends boolean = boolean> extends AkairoClient<Re gateway: this.ws }); this.commandHandler.resolver.addTypes({ - duration: durationTypeCaster, - contentWithDuration: contentWithDurationTypeCaster, - permission: permissionTypeCaster, - snowflake: snowflakeTypeCaster, - discordEmoji: discordEmojiTypeCaster, - roleWithDuration: roleWithDurationTypeCaster, - abbreviatedNumber: abbreviatedNumberTypeCaster, - durationSeconds: durationSecondsTypeCaster, - globalUser: globalUserTypeCaster + duration, + contentWithDuration, + permission, + snowflake, + discordEmoji, + roleWithDuration, + abbreviatedNumber, + durationSeconds, + globalUser }); this.sentry = Sentry; @@ -384,49 +384,25 @@ export class BushClient<Ready extends boolean = boolean> extends AkairoClient<Re } public override isSuperUser(user: BushUserResolvable): boolean { const userID = this.users.resolveId(user)!; - return !!BushCache?.global?.superUsers?.includes(userID) || this.config.owners.includes(userID); + return !!client.cache?.global?.superUsers?.includes(userID) || this.config.owners.includes(userID); } - public override on<K extends keyof BushClientEvents>( - event: K, - listener: (...args: BushClientEvents[K]) => Awaitable<void> - ): this; - public override on<S extends string | symbol>( - event: Exclude<S, keyof BushClientEvents>, - listener: (...args: any[]) => Awaitable<void> - ): this { - return super.on(event as any, listener); - } - public override once<K extends keyof BushClientEvents>( - event: K, - listener: (...args: BushClientEvents[K]) => Awaitable<void> - ): this; - public override once<S extends string | symbol>( - event: Exclude<S, keyof BushClientEvents>, - listener: (...args: any[]) => Awaitable<void> - ): this { - return super.once(event as any, listener); - } +} - public override emit<K extends keyof BushClientEvents>(event: K, ...args: BushClientEvents[K]): boolean; - public override emit<S extends string | symbol>(event: Exclude<S, keyof BushClientEvents>, ...args: unknown[]): boolean { - return super.emit(event as any, ...args); - } +export interface BushClient { + on<K extends keyof BushClientEvents>(event: K, listener: (...args: BushClientEvents[K]) => Awaitable<void>): this; + on<S extends string | symbol>(event: Exclude<S, keyof BushClientEvents>, listener: (...args: any[]) => Awaitable<void>): this - public override off<K extends keyof BushClientEvents>( - event: K, - listener: (...args: BushClientEvents[K]) => Awaitable<void> - ): this; - public override off<S extends string | symbol>( - event: Exclude<S, keyof BushClientEvents>, - listener: (...args: any[]) => Awaitable<void> - ): this { - return super.off(event as any, listener); - } + once<K extends keyof BushClientEvents>(event: K, listener: (...args: BushClientEvents[K]) => Awaitable<void>): this; + once<S extends string | symbol>(event: Exclude<S, keyof BushClientEvents>, listener: (...args: any[]) => Awaitable<void>): this - public override removeAllListeners<K extends keyof BushClientEvents>(event?: K): this; - public override removeAllListeners<S extends string | symbol>(event?: Exclude<S, keyof BushClientEvents>): this { - return super.removeAllListeners(event as any); - } + emit<K extends keyof BushClientEvents>(event: K, ...args: BushClientEvents[K]): boolean; + emit<S extends string | symbol>(event: Exclude<S, keyof BushClientEvents>, ...args: unknown[]): boolean + + off<K extends keyof BushClientEvents>(event: K, listener: (...args: BushClientEvents[K]) => Awaitable<void>): this; + off<S extends string | symbol>(event: Exclude<S, keyof BushClientEvents>, listener: (...args: any[]) => Awaitable<void>): this + + removeAllListeners<K extends keyof BushClientEvents>(event?: K): this; + removeAllListeners<S extends string | symbol>(event?: Exclude<S, keyof BushClientEvents>): this } diff --git a/src/lib/extensions/discord-akairo/BushClientUtil.ts b/src/lib/extensions/discord-akairo/BushClientUtil.ts index f619b4b..4b68b2e 100644 --- a/src/lib/extensions/discord-akairo/BushClientUtil.ts +++ b/src/lib/extensions/discord-akairo/BushClientUtil.ts @@ -2,7 +2,6 @@ import { Arg, BushConstants, Global, - type BushCache, type BushClient, type BushInspectOptions, type BushMessage, @@ -388,7 +387,7 @@ export class BushClientUtil extends ClientUtil { public async insertOrRemoveFromGlobal( action: 'add' | 'remove', - key: keyof typeof BushCache['global'], + key: keyof typeof client['cache']['global'], value: any ): Promise<Global | void> { const row = diff --git a/src/lib/extensions/discord.js/BushGuild.ts b/src/lib/extensions/discord.js/BushGuild.ts index dd01c55..5849749 100644 --- a/src/lib/extensions/discord.js/BushGuild.ts +++ b/src/lib/extensions/discord.js/BushGuild.ts @@ -191,7 +191,7 @@ export class BushGuild extends Guild { const userObject = client.users.cache.get(user.id); const dmSuccess = await userObject - ?.send(`You have been unbanned from **${this}** for **${options.reason ?? 'No reason provided'}**.`) + ?.send(`You have been unbanned from **${util.discord.escapeMarkdown(this.toString())}** for **${options.reason ?? 'No reason provided'}**.`) .catch(() => false); dmSuccessEvent = !!dmSuccess; diff --git a/src/lib/utils/BushCache.ts b/src/lib/utils/BushCache.ts index d633898..3808538 100644 --- a/src/lib/utils/BushCache.ts +++ b/src/lib/utils/BushCache.ts @@ -2,12 +2,14 @@ import { Collection, type Snowflake } from 'discord.js'; import { Guild } from '../models/Guild.js'; export class BushCache { - public static global = { - superUsers: new Array<Snowflake>(), - disabledCommands: new Array<string>(), - blacklistedChannels: new Array<Snowflake>(), - blacklistedGuilds: new Array<Snowflake>(), - blacklistedUsers: new Array<Snowflake>() - }; - public static guilds = new Collection<Snowflake, Guild>(); + public global = new GlobalCache(); + public guilds = new Collection<Snowflake, Guild>(); +} + +export class GlobalCache { + public superUsers: Snowflake[] = []; + public disabledCommands: string[] = [] + public blacklistedChannels: Snowflake[] = []; + public blacklistedGuilds: Snowflake[] = []; + public blacklistedUsers: Snowflake[] = []; } |