aboutsummaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/common/typings/BushInspectOptions.d.ts10
-rw-r--r--src/lib/extensions/discord-akairo/BushClient.ts92
-rw-r--r--src/lib/extensions/discord-akairo/BushClientUtil.ts3
-rw-r--r--src/lib/extensions/discord.js/BushGuild.ts2
-rw-r--r--src/lib/utils/BushCache.ts18
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[] = [];
}