diff --git a/package.json b/package.json index b910355e7..890b8d62f 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "dependencies": { "@discordjs/builders": "^0.16.0", "@sapphire/discord-utilities": "^2.11.5", - "@sapphire/discord.js-utilities": "^4.11.3", + "@sapphire/discord.js-utilities": "^4.12.0", "@sapphire/lexure": "^1.0.1", "@sapphire/pieces": "^3.5.0", "@sapphire/ratelimits": "^2.4.4", @@ -51,12 +51,12 @@ "@sapphire/prettier-config": "^1.4.3", "@sapphire/ts-config": "^3.3.4", "@types/jest": "^28.1.6", - "@types/node": "^18.6.4", + "@types/node": "^18.7.3", "@types/ws": "^8.5.3", - "@typescript-eslint/eslint-plugin": "^5.32.0", - "@typescript-eslint/parser": "^5.32.0", + "@typescript-eslint/eslint-plugin": "^5.33.0", + "@typescript-eslint/parser": "^5.33.0", "cz-conventional-changelog": "^3.3.0", - "discord.js": "^13.9.2", + "discord.js": "^13.10.2", "eslint": "^8.21.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-prettier": "^4.2.1", @@ -67,7 +67,7 @@ "pinst": "^3.0.0", "prettier": "^2.7.1", "pretty-quick": "^3.1.3", - "rollup": "^2.77.2", + "rollup": "^2.77.3", "rollup-plugin-version-injector": "^1.3.3", "ts-jest": "^28.0.7", "typedoc": "^0.23.10", diff --git a/src/arguments/CoreMessage.ts b/src/arguments/CoreMessage.ts index b78fb13ad..3f9ac917c 100644 --- a/src/arguments/CoreMessage.ts +++ b/src/arguments/CoreMessage.ts @@ -8,9 +8,17 @@ export class CoreArgument extends Argument { super(context, { name: 'message' }); } - public async run(parameter: string, context: Omit & Argument.Context): Argument.AsyncResult { + public async run( + parameter: string, + context: Omit & Argument.Context + ): Argument.AsyncResult { const channel = context.channel ?? context.message.channel; - const resolved = await resolveMessage(parameter, { message: context.message, channel: context.channel, scan: context.scan ?? false }); + const resolved = await resolveMessage(parameter, { + messageOrInteraction: context.message, + channel: context.channel, + scan: context.scan ?? false + }); + return resolved.mapErrInto((identifier) => this.error({ parameter, diff --git a/src/lib/resolvers/boolean.ts b/src/lib/resolvers/boolean.ts index 01ecd2f8e..e5c901a91 100644 --- a/src/lib/resolvers/boolean.ts +++ b/src/lib/resolvers/boolean.ts @@ -9,8 +9,14 @@ export function resolveBoolean( customs?: { truths?: readonly string[]; falses?: readonly string[] } ): Result { const boolean = parameter.toLowerCase(); - if ([...baseTruths, ...(customs?.truths ?? [])].includes(boolean)) return Result.ok(true); - if ([...baseFalses, ...(customs?.falses ?? [])].includes(boolean)) return Result.ok(false); + + if ([...baseTruths, ...(customs?.truths ?? [])].includes(boolean)) { + return Result.ok(true); + } + + if ([...baseFalses, ...(customs?.falses ?? [])].includes(boolean)) { + return Result.ok(false); + } return Result.err(Identifiers.ArgumentBooleanError); } diff --git a/src/lib/resolvers/channel.ts b/src/lib/resolvers/channel.ts index 341645f51..8ec939ca5 100644 --- a/src/lib/resolvers/channel.ts +++ b/src/lib/resolvers/channel.ts @@ -1,12 +1,19 @@ import { ChannelMentionRegex, ChannelTypes } from '@sapphire/discord.js-utilities'; import { container } from '@sapphire/pieces'; import { Result } from '@sapphire/result'; -import type { Message, Snowflake } from 'discord.js'; +import type { BaseCommandInteraction, Message, Snowflake } from 'discord.js'; import { Identifiers } from '../errors/Identifiers'; -export function resolveChannel(parameter: string, message: Message): Result { +export function resolveChannel( + parameter: string, + messageOrInteraction: Message | BaseCommandInteraction +): Result { const channelId = (ChannelMentionRegex.exec(parameter)?.[1] ?? parameter) as Snowflake; - const channel = (message.guild ? message.guild.channels : container.client.channels).cache.get(channelId); - if (channel) return Result.ok(channel as ChannelTypes); + const channel = (messageOrInteraction.guild ? messageOrInteraction.guild.channels : container.client.channels).cache.get(channelId); + + if (channel) { + return Result.ok(channel as ChannelTypes); + } + return Result.err(Identifiers.ArgumentChannelError); } diff --git a/src/lib/resolvers/date.ts b/src/lib/resolvers/date.ts index 6f3b40513..e82ee2637 100644 --- a/src/lib/resolvers/date.ts +++ b/src/lib/resolvers/date.ts @@ -8,10 +8,18 @@ export function resolveDate( const parsed = new Date(parameter); const time = parsed.getTime(); - if (Number.isNaN(time)) return Result.err(Identifiers.ArgumentDateError); - if (typeof options?.minimum === 'number' && time < options.minimum) return Result.err(Identifiers.ArgumentDateTooEarly); - if (typeof options?.maximum === 'number' && time > options.maximum) return Result.err(Identifiers.ArgumentDateTooFar); + if (Number.isNaN(time)) { + return Result.err(Identifiers.ArgumentDateError); + } + + if (typeof options?.minimum === 'number' && time < options.minimum) { + return Result.err(Identifiers.ArgumentDateTooEarly); + } + + if (typeof options?.maximum === 'number' && time > options.maximum) { + return Result.err(Identifiers.ArgumentDateTooFar); + } return Result.ok(parsed); } diff --git a/src/lib/resolvers/dmChannel.ts b/src/lib/resolvers/dmChannel.ts index 53ef7231a..96bc8922d 100644 --- a/src/lib/resolvers/dmChannel.ts +++ b/src/lib/resolvers/dmChannel.ts @@ -1,16 +1,19 @@ import { isDMChannel } from '@sapphire/discord.js-utilities'; import { Result } from '@sapphire/result'; -import type { DMChannel, Message } from 'discord.js'; +import type { BaseCommandInteraction, DMChannel, Message } from 'discord.js'; import { Identifiers } from '../errors/Identifiers'; import { resolveChannel } from './channel'; export function resolveDMChannel( parameter: string, - message: Message + messageOrInteraction: Message | BaseCommandInteraction ): Result { - const result = resolveChannel(parameter, message); + const result = resolveChannel(parameter, messageOrInteraction); return result.mapInto((value) => { - if (isDMChannel(value) && !value.partial) return Result.ok(value); + if (isDMChannel(value) && !value.partial) { + return Result.ok(value); + } + return Result.err(Identifiers.ArgumentDMChannelError); }); } diff --git a/src/lib/resolvers/float.ts b/src/lib/resolvers/float.ts index be57d4640..7dd143476 100644 --- a/src/lib/resolvers/float.ts +++ b/src/lib/resolvers/float.ts @@ -6,10 +6,18 @@ export function resolveFloat( options?: { minimum?: number; maximum?: number } ): Result { const parsed = Number(parameter); - if (Number.isNaN(parsed)) return Result.err(Identifiers.ArgumentFloatError); - if (typeof options?.minimum === 'number' && parsed < options.minimum) return Result.err(Identifiers.ArgumentFloatTooSmall); - if (typeof options?.maximum === 'number' && parsed > options.maximum) return Result.err(Identifiers.ArgumentFloatTooLarge); + if (Number.isNaN(parsed)) { + return Result.err(Identifiers.ArgumentFloatError); + } + + if (typeof options?.minimum === 'number' && parsed < options.minimum) { + return Result.err(Identifiers.ArgumentFloatTooSmall); + } + + if (typeof options?.maximum === 'number' && parsed > options.maximum) { + return Result.err(Identifiers.ArgumentFloatTooLarge); + } return Result.ok(parsed); } diff --git a/src/lib/resolvers/guildChannel.ts b/src/lib/resolvers/guildChannel.ts index 51152627f..3e56c5173 100644 --- a/src/lib/resolvers/guildChannel.ts +++ b/src/lib/resolvers/guildChannel.ts @@ -6,7 +6,11 @@ import { Identifiers } from '../errors/Identifiers'; export function resolveGuildChannel(parameter: string, guild: Guild): Result { const channel = resolveById(parameter, guild) ?? resolveByQuery(parameter, guild); - if (channel) return Result.ok(channel); + + if (channel) { + return Result.ok(channel); + } + return Result.err(Identifiers.ArgumentGuildChannelError); } diff --git a/src/lib/resolvers/integer.ts b/src/lib/resolvers/integer.ts index af54614f6..da01a7206 100644 --- a/src/lib/resolvers/integer.ts +++ b/src/lib/resolvers/integer.ts @@ -6,10 +6,18 @@ export function resolveInteger( options?: { minimum?: number; maximum?: number } ): Result { const parsed = Number(parameter); - if (!Number.isInteger(parsed)) return Result.err(Identifiers.ArgumentIntegerError); - if (typeof options?.minimum === 'number' && parsed < options.minimum) return Result.err(Identifiers.ArgumentIntegerTooSmall); - if (typeof options?.maximum === 'number' && parsed > options.maximum) return Result.err(Identifiers.ArgumentIntegerTooLarge); + if (!Number.isInteger(parsed)) { + return Result.err(Identifiers.ArgumentIntegerError); + } + + if (typeof options?.minimum === 'number' && parsed < options.minimum) { + return Result.err(Identifiers.ArgumentIntegerTooSmall); + } + + if (typeof options?.maximum === 'number' && parsed > options.maximum) { + return Result.err(Identifiers.ArgumentIntegerTooLarge); + } return Result.ok(parsed); } diff --git a/src/lib/resolvers/member.ts b/src/lib/resolvers/member.ts index 4feaa490d..a0ac9ed16 100644 --- a/src/lib/resolvers/member.ts +++ b/src/lib/resolvers/member.ts @@ -5,7 +5,11 @@ import { Identifiers } from '../errors/Identifiers'; export async function resolveMember(parameter: string, guild: Guild): Promise> { const member = (await resolveById(parameter, guild)) ?? (await resolveByQuery(parameter, guild)); - if (member) return Result.ok(member); + + if (member) { + return Result.ok(member); + } + return Result.err(Identifiers.ArgumentMemberError); } diff --git a/src/lib/resolvers/message.ts b/src/lib/resolvers/message.ts index 004d2eb20..b9721c826 100644 --- a/src/lib/resolvers/message.ts +++ b/src/lib/resolvers/message.ts @@ -1,6 +1,8 @@ import { ChannelMessageRegex, MessageLinkRegex, SnowflakeRegex } from '@sapphire/discord-utilities'; import { + AnyInteraction, GuildBasedChannelTypes, + isAnyInteraction, isGuildBasedChannel, isNewsChannel, isTextBasedChannel, @@ -23,9 +25,9 @@ export interface MessageResolverOptions { */ channel?: TextBasedChannelTypes; /** - * Base message to resolve the message from (e.g. pick the channel if not given). + * Base {@link Message} or {@link AnyInteraction} to resolve the message from (e.g. pick the channel if not given). */ - message: Message; + messageOrInteraction: Message | AnyInteraction; /** * Whether to scan the entire guild cache for the message. * If channel is given with this option, this option is ignored. @@ -37,55 +39,94 @@ export interface MessageResolverOptions { export async function resolveMessage(parameter: string, options: MessageResolverOptions): Promise> { const message = (await resolveById(parameter, options)) ?? - (await resolveByLink(parameter, options.message)) ?? - (await resolveByChannelAndMessage(parameter, options.message)); - if (message) return Result.ok(message); + (await resolveByLink(parameter, options)) ?? + (await resolveByChannelAndMessage(parameter, options)); + + if (message) { + return Result.ok(message); + } + return Result.err(Identifiers.ArgumentMessageError); } function resolveById(parameter: string, options: MessageResolverOptions): Awaitable { - if (!SnowflakeRegex.test(parameter)) return null; + if (!SnowflakeRegex.test(parameter)) { + return null; + } - if (options.channel) return options.channel.messages.fetch(parameter as Snowflake); + if (options.channel) { + return options.channel.messages.fetch(parameter as Snowflake); + } - if (options.scan && isGuildBasedChannel(options.message.channel)) { - for (const channel of options.message.channel.guild.channels.cache.values()) { + if (options.scan && isGuildBasedChannel(options.messageOrInteraction.channel)) { + for (const channel of options.messageOrInteraction.channel.guild.channels.cache.values()) { if (!isTextBasedChannel(channel)) continue; const message = channel.messages.cache.get(parameter); - if (message) return message; + if (message) { + return message; + } } } - return options.message.channel.messages.fetch(parameter as Snowflake); + return options.messageOrInteraction.channel?.messages.fetch(parameter as Snowflake) ?? null; } -async function resolveByLink(parameter: string, message: Message): Promise { - if (!message.guild) return null; +async function resolveByLink(parameter: string, options: MessageResolverOptions): Promise { + if (!options.messageOrInteraction.guild) { + return null; + } const matches = MessageLinkRegex.exec(parameter); - if (!matches) return null; + if (!matches) { + return null; + } + const [, guildId, channelId, messageId] = matches; const guild = container.client.guilds.cache.get(guildId as Snowflake); - if (guild !== message.guild) return null; + if (guild !== options.messageOrInteraction.guild) { + return null; + } - return getMessageFromChannel(channelId, messageId, message.author); + return getMessageFromChannel( + channelId, + messageId, + isAnyInteraction(options.messageOrInteraction) ? options.messageOrInteraction.user : options.messageOrInteraction.author + ); } -async function resolveByChannelAndMessage(parameter: string, message: Message): Promise { +async function resolveByChannelAndMessage(parameter: string, options: MessageResolverOptions): Promise { const result = ChannelMessageRegex.exec(parameter)?.groups; - if (!result) return null; - return getMessageFromChannel(result.channelId, result.messageId, message.author); + if (!result) { + return null; + } + + return getMessageFromChannel( + result.channelId, + result.messageId, + isAnyInteraction(options.messageOrInteraction) ? options.messageOrInteraction.user : options.messageOrInteraction.author + ); } async function getMessageFromChannel(channelId: Snowflake, messageId: Snowflake, originalAuthor: User): Promise { const channel = container.client.channels.cache.get(channelId) as GuildBasedChannelTypes; - if (!channel) return null; - if (!(isNewsChannel(channel) || isTextChannel(channel))) return null; - if (!channel.viewable) return null; - if (!channel.permissionsFor(originalAuthor)?.has(Permissions.FLAGS.VIEW_CHANNEL)) return null; + if (!channel) { + return null; + } + + if (!(isNewsChannel(channel) || isTextChannel(channel))) { + return null; + } + + if (!channel.viewable) { + return null; + } + + if (!channel.permissionsFor(originalAuthor)?.has(Permissions.FLAGS.VIEW_CHANNEL)) { + return null; + } return channel.messages.fetch(messageId); } diff --git a/src/lib/resolvers/number.ts b/src/lib/resolvers/number.ts index cbd200abb..bb42f61c5 100644 --- a/src/lib/resolvers/number.ts +++ b/src/lib/resolvers/number.ts @@ -6,10 +6,17 @@ export function resolveNumber( options?: { minimum?: number; maximum?: number } ): Result { const parsed = Number(parameter); - if (Number.isNaN(parsed)) return Result.err(Identifiers.ArgumentNumberError); + if (Number.isNaN(parsed)) { + return Result.err(Identifiers.ArgumentNumberError); + } - if (typeof options?.minimum === 'number' && parsed < options.minimum) return Result.err(Identifiers.ArgumentNumberTooSmall); - if (typeof options?.maximum === 'number' && parsed > options.maximum) return Result.err(Identifiers.ArgumentNumberTooLarge); + if (typeof options?.minimum === 'number' && parsed < options.minimum) { + return Result.err(Identifiers.ArgumentNumberTooSmall); + } + + if (typeof options?.maximum === 'number' && parsed > options.maximum) { + return Result.err(Identifiers.ArgumentNumberTooLarge); + } return Result.ok(parsed); } diff --git a/src/lib/resolvers/partialDMChannel.ts b/src/lib/resolvers/partialDMChannel.ts index c465b7010..8283a40da 100644 --- a/src/lib/resolvers/partialDMChannel.ts +++ b/src/lib/resolvers/partialDMChannel.ts @@ -10,7 +10,10 @@ export function resolvePartialDMChannel( ): Result { const result = resolveChannel(parameter, message); return result.mapInto((channel) => { - if (isDMChannel(channel)) return Result.ok(channel); + if (isDMChannel(channel)) { + return Result.ok(channel); + } + return Result.err(Identifiers.ArgumentDMChannelError); }); } diff --git a/src/lib/resolvers/role.ts b/src/lib/resolvers/role.ts index a2ac75bf1..be2ff7abc 100644 --- a/src/lib/resolvers/role.ts +++ b/src/lib/resolvers/role.ts @@ -5,7 +5,11 @@ import { Identifiers } from '../errors/Identifiers'; export async function resolveRole(parameter: string, guild: Guild): Promise> { const role = (await resolveById(parameter, guild)) ?? resolveByQuery(parameter, guild); - if (role) return Result.ok(role); + + if (role) { + return Result.ok(role); + } + return Result.err(Identifiers.ArgumentRoleError); } diff --git a/src/lib/resolvers/user.ts b/src/lib/resolvers/user.ts index e920ccc46..acb7cca5c 100644 --- a/src/lib/resolvers/user.ts +++ b/src/lib/resolvers/user.ts @@ -7,6 +7,10 @@ import { Identifiers } from '../errors/Identifiers'; export async function resolveUser(parameter: string): Promise> { const userId = UserOrMemberMentionRegex.exec(parameter) ?? SnowflakeRegex.exec(parameter); const user = userId ? await container.client.users.fetch(userId[1] as Snowflake).catch(() => null) : null; - if (user) return Result.ok(user); + + if (user) { + return Result.ok(user); + } + return Result.err(Identifiers.ArgumentUserError); } diff --git a/yarn.lock b/yarn.lock index bd22d9116..891f24de3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1087,22 +1087,22 @@ __metadata: languageName: node linkType: hard -"@sapphire/discord-utilities@npm:^2.11.2, @sapphire/discord-utilities@npm:^2.11.5": +"@sapphire/discord-utilities@npm:^2.11.5": version: 2.11.5 resolution: "@sapphire/discord-utilities@npm:2.11.5" checksum: 5a507d845372f51012486d5bb6ec82fa4ac7e305b49d336517539d05267f82603ce4c0add3d7903afd19f0046efc6986f1837c041d0ec1edecd77cad48d27061 languageName: node linkType: hard -"@sapphire/discord.js-utilities@npm:^4.11.3": - version: 4.11.3 - resolution: "@sapphire/discord.js-utilities@npm:4.11.3" +"@sapphire/discord.js-utilities@npm:^4.12.0": + version: 4.12.0 + resolution: "@sapphire/discord.js-utilities@npm:4.12.0" dependencies: - "@sapphire/discord-utilities": ^2.11.2 - "@sapphire/time-utilities": ^1.7.4 - "@sapphire/utilities": ^3.6.2 + "@sapphire/discord-utilities": ^2.11.5 + "@sapphire/time-utilities": ^1.7.5 + "@sapphire/utilities": ^3.9.0 tslib: ^2.4.0 - checksum: 92a1040ecba4c1b7abfcc33edb7d97406f67f0d030cc7f741284946fa9c0f96517bfdcb8294828eb9590558810bacdeaf49eb8905399757f0b1211afb787bf2b + checksum: 7f71f9205993be15fee97c9128997304cfadc3d5b420885e2588f3ec2c0653fcdda29138d277ec6f13950ecc8ac01fa904c94cf2414e355bb05edcd5fe9b54c9 languageName: node linkType: hard @@ -1141,7 +1141,7 @@ __metadata: "@favware/npm-deprecate": ^1.0.5 "@favware/rollup-type-bundler": ^1.0.10 "@sapphire/discord-utilities": ^2.11.5 - "@sapphire/discord.js-utilities": ^4.11.3 + "@sapphire/discord.js-utilities": ^4.12.0 "@sapphire/eslint-config": ^4.3.7 "@sapphire/lexure": ^1.0.1 "@sapphire/pieces": ^3.5.0 @@ -1152,13 +1152,13 @@ __metadata: "@sapphire/ts-config": ^3.3.4 "@sapphire/utilities": ^3.9.0 "@types/jest": ^28.1.6 - "@types/node": ^18.6.4 + "@types/node": ^18.7.3 "@types/object-hash": ^2.2.1 "@types/ws": ^8.5.3 - "@typescript-eslint/eslint-plugin": ^5.32.0 - "@typescript-eslint/parser": ^5.32.0 + "@typescript-eslint/eslint-plugin": ^5.33.0 + "@typescript-eslint/parser": ^5.33.0 cz-conventional-changelog: ^3.3.0 - discord.js: ^13.9.2 + discord.js: ^13.10.2 eslint: ^8.21.0 eslint-config-prettier: ^8.5.0 eslint-plugin-prettier: ^4.2.1 @@ -1170,7 +1170,7 @@ __metadata: pinst: ^3.0.0 prettier: ^2.7.1 pretty-quick: ^3.1.3 - rollup: ^2.77.2 + rollup: ^2.77.3 rollup-plugin-version-injector: ^1.3.3 ts-jest: ^28.0.7 tslib: ^2.4.0 @@ -1245,7 +1245,7 @@ __metadata: languageName: node linkType: hard -"@sapphire/time-utilities@npm:^1.7.4": +"@sapphire/time-utilities@npm:^1.7.4, @sapphire/time-utilities@npm:^1.7.5": version: 1.7.5 resolution: "@sapphire/time-utilities@npm:1.7.5" dependencies: @@ -1264,7 +1264,7 @@ __metadata: languageName: node linkType: hard -"@sapphire/utilities@npm:^3.6.2, @sapphire/utilities@npm:^3.7.0, @sapphire/utilities@npm:^3.8.0, @sapphire/utilities@npm:^3.9.0": +"@sapphire/utilities@npm:^3.7.0, @sapphire/utilities@npm:^3.8.0, @sapphire/utilities@npm:^3.9.0": version: 3.9.0 resolution: "@sapphire/utilities@npm:3.9.0" checksum: 2d8fdf173abc39d7f8bdeb593daebe8b1e2fb71ffa91951cb4ef57845eec45938bfd1d4f5db2e78a0b9ab212c0d033a4fbefcf6335a28afb8a1cea7f44926160 @@ -1447,10 +1447,10 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:*, @types/node@npm:>=12, @types/node@npm:^18.6.4": - version: 18.6.4 - resolution: "@types/node@npm:18.6.4" - checksum: fc453dd2b541f5812ba1a8f957f577727cf2d8aee886f1d5c03eb153b2b3373d2e0953c5bd2b7a5b184073bc317f54ec91f1ec4830a58eda4a833e90654021de +"@types/node@npm:*, @types/node@npm:>=12, @types/node@npm:^18.7.3": + version: 18.7.3 + resolution: "@types/node@npm:18.7.3" + checksum: f51ed436a112235ac068d739b4823090a37b869cc186b64dd5c250dd285139c286990fcbeff2fb3ecba5d605fa885de4275247d332e5b96eafdfbb1da62e3ced languageName: node linkType: hard @@ -1514,13 +1514,13 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:^5.28.0, @typescript-eslint/eslint-plugin@npm:^5.32.0": - version: 5.32.0 - resolution: "@typescript-eslint/eslint-plugin@npm:5.32.0" +"@typescript-eslint/eslint-plugin@npm:^5.28.0, @typescript-eslint/eslint-plugin@npm:^5.33.0": + version: 5.33.0 + resolution: "@typescript-eslint/eslint-plugin@npm:5.33.0" dependencies: - "@typescript-eslint/scope-manager": 5.32.0 - "@typescript-eslint/type-utils": 5.32.0 - "@typescript-eslint/utils": 5.32.0 + "@typescript-eslint/scope-manager": 5.33.0 + "@typescript-eslint/type-utils": 5.33.0 + "@typescript-eslint/utils": 5.33.0 debug: ^4.3.4 functional-red-black-tree: ^1.0.1 ignore: ^5.2.0 @@ -1533,42 +1533,42 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 9785c34d9742b51130237bfe244924ca6dfd529bdcc5932a5cf81558f0235099c963a11125df393037db51ce451f7ab9442aba3c3a8bb2e0607569a0e31480c8 + checksum: d408f3f474b34fefde8ee65d98deb126949fd7d8e211a7f95c5cc2b507dedbf8eb239f3895e0c37aa6338989531e37c5f35c2e0de36a126c52f0846e89605487 languageName: node linkType: hard -"@typescript-eslint/parser@npm:^5.28.0, @typescript-eslint/parser@npm:^5.32.0": - version: 5.32.0 - resolution: "@typescript-eslint/parser@npm:5.32.0" +"@typescript-eslint/parser@npm:^5.28.0, @typescript-eslint/parser@npm:^5.33.0": + version: 5.33.0 + resolution: "@typescript-eslint/parser@npm:5.33.0" dependencies: - "@typescript-eslint/scope-manager": 5.32.0 - "@typescript-eslint/types": 5.32.0 - "@typescript-eslint/typescript-estree": 5.32.0 + "@typescript-eslint/scope-manager": 5.33.0 + "@typescript-eslint/types": 5.33.0 + "@typescript-eslint/typescript-estree": 5.33.0 debug: ^4.3.4 peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: typescript: optional: true - checksum: 3fcfa183cad125c3198fd63701c6e13dad1cc984d309e8cd40ec9a2eb857902abfd7e9ee3f030b18eb1c18c795a61ea289ef147a7f9dfac38df905e7514316af + checksum: 2617aba987a70ee6b16ecc6afa6d245422df33a9d056018ff2e316159e667a0ab9d9c15fcea95e0ba65832661e71cc2753a221e77f0b0fab278e52c4497b8278 languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:5.32.0": - version: 5.32.0 - resolution: "@typescript-eslint/scope-manager@npm:5.32.0" +"@typescript-eslint/scope-manager@npm:5.33.0": + version: 5.33.0 + resolution: "@typescript-eslint/scope-manager@npm:5.33.0" dependencies: - "@typescript-eslint/types": 5.32.0 - "@typescript-eslint/visitor-keys": 5.32.0 - checksum: 69bdeb029f39d1112299dc0cb0ddef30e51bdb782fdb79cc4e72fa448e00d71e39938d3bff3fa4ee43b3416c2e3b4564de2c37252914772b07eeedafb14412d6 + "@typescript-eslint/types": 5.33.0 + "@typescript-eslint/visitor-keys": 5.33.0 + checksum: b2cbea9abd528d01a5acb2d68a2a5be51ec6827760d3869bdd70920cf6c3a4f9f96d87c77177f8313009d9db71253e4a75f8393f38651e2abaf91ef28e60fb9d languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:5.32.0": - version: 5.32.0 - resolution: "@typescript-eslint/type-utils@npm:5.32.0" +"@typescript-eslint/type-utils@npm:5.33.0": + version: 5.33.0 + resolution: "@typescript-eslint/type-utils@npm:5.33.0" dependencies: - "@typescript-eslint/utils": 5.32.0 + "@typescript-eslint/utils": 5.33.0 debug: ^4.3.4 tsutils: ^3.21.0 peerDependencies: @@ -1576,23 +1576,23 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 4063808ca054789bebc6adb376d15c13e38f8ea14fa2842c38ae616d77fb77681b67a04b77887cf9ceb6f801ab3fc5eddfb6325779ab821404c62f36c56310bb + checksum: a1d1ffb42fe96bfc2339cc2875e218aa82fa9391be04c1a266bb11da1eca6835555687e81cde75477c60e6702049cd4dde7d2638e7e9b9d8cf4b7b2242353a6e languageName: node linkType: hard -"@typescript-eslint/types@npm:5.32.0": - version: 5.32.0 - resolution: "@typescript-eslint/types@npm:5.32.0" - checksum: 6758f54d8d7763893cd7c1753f525ef1777eee8b558bf3d54fd2a2ce691ca0cf813c68a26e4db83a1deae4e4a62b247f1195e15a1f3577f1293849f9e55a232c +"@typescript-eslint/types@npm:5.33.0": + version: 5.33.0 + resolution: "@typescript-eslint/types@npm:5.33.0" + checksum: 8bbddda84cb3adf5c659b0d42547a2d6ab87f4eea574aca5dd63a3bd85169f32796ecbddad3b27f18a609070f6b1d18a54018d488bad746ae0f6ea5c02206109 languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:5.32.0": - version: 5.32.0 - resolution: "@typescript-eslint/typescript-estree@npm:5.32.0" +"@typescript-eslint/typescript-estree@npm:5.33.0": + version: 5.33.0 + resolution: "@typescript-eslint/typescript-estree@npm:5.33.0" dependencies: - "@typescript-eslint/types": 5.32.0 - "@typescript-eslint/visitor-keys": 5.32.0 + "@typescript-eslint/types": 5.33.0 + "@typescript-eslint/visitor-keys": 5.33.0 debug: ^4.3.4 globby: ^11.1.0 is-glob: ^4.0.3 @@ -1601,33 +1601,33 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 6aee08be5d36603d038fb8340f324f5cb38519150c9b37c012f0c1ff2a4d8cf22fbc6835de31d069949c2b3d8ed3e729076a724ef29db4289d9fe73b97c9d310 + checksum: 26f9005cdfb14654125a33d90d872b926820e560dff8970c4629fd5f6f47ad2a31e4c63161564d21bb42a8fc3ced0033994854ee37336ae07d90ccf6300d702b languageName: node linkType: hard -"@typescript-eslint/utils@npm:5.32.0": - version: 5.32.0 - resolution: "@typescript-eslint/utils@npm:5.32.0" +"@typescript-eslint/utils@npm:5.33.0": + version: 5.33.0 + resolution: "@typescript-eslint/utils@npm:5.33.0" dependencies: "@types/json-schema": ^7.0.9 - "@typescript-eslint/scope-manager": 5.32.0 - "@typescript-eslint/types": 5.32.0 - "@typescript-eslint/typescript-estree": 5.32.0 + "@typescript-eslint/scope-manager": 5.33.0 + "@typescript-eslint/types": 5.33.0 + "@typescript-eslint/typescript-estree": 5.33.0 eslint-scope: ^5.1.1 eslint-utils: ^3.0.0 peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: cfd88d93508c8fb0db17d2726691e1383db390357fa0637bd8111558fbe72da5130d995294001d71b1d929d620fbce3f20a70b277a77ca21a4241b3b470dc758 + checksum: 6ce5ee5eabeb6d73538b24e6487f811ecb0ef3467bd366cbd15bf30d904bdedb73fc6f48cf2e2e742dda462b42999ea505e8b59255545825ec9db86f3d423ea7 languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:5.32.0": - version: 5.32.0 - resolution: "@typescript-eslint/visitor-keys@npm:5.32.0" +"@typescript-eslint/visitor-keys@npm:5.33.0": + version: 5.33.0 + resolution: "@typescript-eslint/visitor-keys@npm:5.33.0" dependencies: - "@typescript-eslint/types": 5.32.0 + "@typescript-eslint/types": 5.33.0 eslint-visitor-keys: ^3.3.0 - checksum: 1f9b756d648c2346a6e8538ffde729d3d9ce6621fded3d9f15c96aa0ebf8f511daf8232470423fb36359c2113538a4daaf3336181be78a0cfbfd297af91ce9ba + checksum: d7e3653de6bac6841e6fcc54226b93ad6bdca4aa76ebe7d83459c016c3eebcc50d4f65ee713174bc267d765295b642d1927a778c5de707b8389e3fcc052aa4a1 languageName: node linkType: hard @@ -2738,9 +2738,9 @@ __metadata: languageName: node linkType: hard -"discord.js@npm:^13.9.2": - version: 13.9.2 - resolution: "discord.js@npm:13.9.2" +"discord.js@npm:^13.10.2": + version: 13.10.2 + resolution: "discord.js@npm:13.10.2" dependencies: "@discordjs/builders": ^0.16.0 "@discordjs/collection": ^0.7.0 @@ -2751,7 +2751,7 @@ __metadata: form-data: ^4.0.0 node-fetch: ^2.6.7 ws: ^8.8.1 - checksum: e49228e2d786262ef06e611ba0d0edd3b1a773e04ce19f1536dbb5590eecc26a3667280ac8fe6801df55ae7964d01043c7060034fc306176fbbee97efce9efd6 + checksum: b8033cba91309f454c6018237fd7221913c1b78aea41b24adad8ceac5ee67f14c6da62fa0d747f20bf40f333f34898f8534ec3d1958e2c15e7fe9cf5c5535a77 languageName: node linkType: hard @@ -5932,9 +5932,9 @@ __metadata: languageName: node linkType: hard -"rollup@npm:^2.77.2": - version: 2.77.2 - resolution: "rollup@npm:2.77.2" +"rollup@npm:^2.77.2, rollup@npm:^2.77.3": + version: 2.77.3 + resolution: "rollup@npm:2.77.3" dependencies: fsevents: ~2.3.2 dependenciesMeta: @@ -5942,7 +5942,7 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: 5a84fb98a6f858906bceba091430442f6c1f362b07c5fa9123b708f87e39f52640e34a189cd9a1776ceae61300055c78ba648205fa03188451539ebeb19797df + checksum: b179c68249584565ddb5664a241e8e48c293b2207718d885b08ee25797d98857a383f06b544bb89819407da5a71557f4713309a278f61c4778bb32b1d3321a1c languageName: node linkType: hard