diff options
106 files changed, 875 insertions, 982 deletions
diff --git a/.eslintrc.cjs b/.eslintrc.cjs index 1da6f41..7ea97f7 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -69,11 +69,6 @@ module.exports = { { paths: [ { - name: 'discord-api-types', - message: 'Please use discord-api-types/v9 instead.', - allowTypeImports: true - }, - { name: 'console', importNames: ['assert'], message: 'Import from the assert module instead.' diff --git a/.vscode/settings.json b/.vscode/settings.json index d2bbf71..53249d1 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -96,5 +96,6 @@ "discord.removeDetails": false, "discord.removeLowerDetails": false, "discord.removeRemoteRepository": false, - "discord.removeTimestamp": false + "discord.removeTimestamp": false, + "cSpell.words": ["Embedbuilder"] } diff --git a/package.json b/package.json index 36b2f35..e5fb508 100644 --- a/package.json +++ b/package.json @@ -60,59 +60,59 @@ "@notenoughupdates/humanize-duration": "^4.0.1", "@notenoughupdates/simplify-number": "^1.0.1", "@notenoughupdates/wolfram-alpha-api": "^1.0.1", - "@sentry/integrations": "^6.19.3", - "@sentry/node": "^6.19.3", - "@sentry/tracing": "^6.19.3", + "@sentry/integrations": "^6.19.6", + "@sentry/node": "^6.19.6", + "@sentry/tracing": "^6.19.6", "canvas": "^2.9.1", "chalk": "^5.0.1", "common-tags": "^1.8.2", "deep-lock": "^1.0.0", "discord-akairo": "npm:@notenoughupdates/discord-akairo@dev", - "discord-api-types": "0.27.3", + "discord-api-types": "0.31.2", "discord.js": "npm:@notenoughupdates/discord.js@dev", "fuse.js": "^6.5.3", - "googleapis": "^99.0.0", + "googleapis": "^100.0.0", "got": "^12.0.3", "lodash": "^4.17.21", - "mathjs": "^10.4.2", - "nanoid": "^3.3.2", + "mathjs": "^10.5.0", + "nanoid": "^3.3.3", "node-os-utils": "^1.3.6", "numeral": "^2.0.6", "pg": "^8.7.3", "pg-hstore": "^2.3.4", - "prettier": "^2.6.1", + "prettier": "^2.6.2", "pretty-bytes": "^6.0.0", "rimraf": "^3.0.2", - "sequelize": "6.17.0", + "sequelize": "6.19.0", "tinycolor2": "^1.4.2", "typescript": "^4.6.3", "vm2": "^3.9.9" }, "devDependencies": { - "@sapphire/snowflake": "^3.2.0", - "@sentry/types": "^6.19.3", + "@sapphire/snowflake": "^3.2.1", + "@sentry/types": "^6.19.6", "@types/common-tags": "^1.8.1", "@types/eslint": "^8.4.1", "@types/express": "^4.17.13", - "@types/lodash": "^4.14.181", - "@types/node": "^17.0.23", + "@types/lodash": "^4.14.182", + "@types/node": "^17.0.25", "@types/node-os-utils": "^1.2.0", "@types/numeral": "^2.0.2", "@types/pg": "^8.6.5", - "@types/prettier": "^2.4.4", + "@types/prettier": "^2.6.0", "@types/rimraf": "^3.0.2", "@types/tinycolor2": "^1.4.3", "@types/validator": "^13.7.2", - "@typescript-eslint/eslint-plugin": "^5.17.0", - "@typescript-eslint/parser": "^5.17.0", - "eslint": "^8.12.0", + "@typescript-eslint/eslint-plugin": "^5.20.0", + "@typescript-eslint/parser": "^5.20.0", + "eslint": "^8.13.0", "eslint-config-prettier": "^8.5.0", "eslint-plugin-deprecation": "^1.3.2", - "eslint-plugin-import": "^2.25.4", + "eslint-plugin-import": "^2.26.0", "node-fetch": "^3.2.3" }, "packageManager": "yarn@3.2.0", "resolutions": { - "discord-api-types": "0.27.3" + "discord-api-types": "0.31.2" } } diff --git a/src/arguments/discordEmoji.ts b/src/arguments/discordEmoji.ts index 9c4991f..3edf123 100644 --- a/src/arguments/discordEmoji.ts +++ b/src/arguments/discordEmoji.ts @@ -1,5 +1,5 @@ import type { BushArgumentTypeCaster } from '#lib'; -import type { Snowflake } from 'discord-api-types/v9'; +import type { Snowflake } from 'discord-api-types/v10'; export const discordEmoji: BushArgumentTypeCaster<DiscordEmojiInfo | null> = (_, phrase) => { if (!phrase) return null; diff --git a/src/commands/admin/channelPermissions.ts b/src/commands/admin/channelPermissions.ts index 37610b3..c06b5fa 100644 --- a/src/commands/admin/channelPermissions.ts +++ b/src/commands/admin/channelPermissions.ts @@ -1,6 +1,6 @@ import { BushCommand, ButtonPaginator, type ArgType, type BushMessage, type BushSlashMessage } from '#lib'; import assert from 'assert'; -import { ApplicationCommandOptionType, Embed, PermissionFlagsBits } from 'discord.js'; +import { ApplicationCommandOptionType, EmbedBuilder, PermissionFlagsBits } from 'discord.js'; export default class ChannelPermissionsCommand extends BushCommand { public constructor() { @@ -88,9 +88,9 @@ export default class ChannelPermissionsCommand extends BushCommand { } const failure = failedChannels.map((c) => `<#${c.id}>`).join(' '); if (failure.length > 2000) { - const paginate: Embed[] = []; + const paginate: EmbedBuilder[] = []; for (let i = 0; i < failure.length; i += 4000) { - paginate.push(new Embed().setDescription(failure.substring(i, Math.min(failure.length, i + 4000)))); + paginate.push(new EmbedBuilder().setDescription(failure.substring(i, Math.min(failure.length, i + 4000)))); } const normalMessage = `Finished changing perms! Failed channels:`; return await ButtonPaginator.send(message, paginate, normalMessage); diff --git a/src/commands/config/config.ts b/src/commands/config/config.ts index a90a267..c1dd142 100644 --- a/src/commands/config/config.ts +++ b/src/commands/config/config.ts @@ -12,19 +12,19 @@ import { import assert from 'assert'; import { type ArgumentGeneratorReturn, type SlashOption } from 'discord-akairo'; import { - ActionRow, + ActionRowBuilder, ApplicationCommandOptionType, - ButtonComponent, + ButtonBuilder, ButtonStyle, Channel, - Embed, + EmbedBuilder, Formatters, GuildMember, InteractionUpdateOptions, PermissionFlagsBits, Role, - SelectMenuComponent, - SelectMenuOption, + SelectMenuBuilder, + UnsafeSelectMenuOptionBuilder, User, type Message, type MessageComponentInteraction, @@ -285,18 +285,21 @@ export default class ConfigCommand extends BushCommand { case 'command_settingsSel': { if (!interaction.isSelectMenu()) return; - return interaction.update( + await interaction.update( await this.generateMessageOptions(message, interaction.values[0] as keyof typeof guildSettingsObj) ); + return; } case 'command_settingsBack': { if (!interaction.isButton()) return; - return interaction.update(await this.generateMessageOptions(message)); + await interaction.update(await this.generateMessageOptions(message)); + return; } } } else { - return await interaction?.deferUpdate().catch(() => undefined); + await interaction?.deferUpdate().catch(() => undefined); + return; } }); } @@ -307,17 +310,17 @@ export default class ConfigCommand extends BushCommand { ): Promise<MessageOptions & InteractionUpdateOptions> { assert(message.inGuild()); - const settingsEmbed = new Embed().setColor(util.colors.default); + const settingsEmbed = new EmbedBuilder().setColor(util.colors.default); if (!setting) { settingsEmbed.setTitle(`${message.guild.name}'s Settings`); const desc = settingsArr.map((s) => `:wrench: **${guildSettingsObj[s].name}**`).join('\n'); settingsEmbed.setDescription(desc); - const selMenu = new ActionRow().addComponents( - new SelectMenuComponent() + const selMenu = new ActionRowBuilder<SelectMenuBuilder>().addComponents( + new SelectMenuBuilder() .addOptions( ...settingsArr.map((s) => - new SelectMenuOption() + new UnsafeSelectMenuOptionBuilder() .setLabel(guildSettingsObj[s].name) .setValue(s) .setDescription(guildSettingsObj[s].description) @@ -360,8 +363,8 @@ export default class ConfigCommand extends BushCommand { : '[No Value Set]'; }; - const components = new ActionRow().addComponents( - new ButtonComponent({ style: ButtonStyle.Primary, customId: 'command_settingsBack', label: 'Back' }) + const components = new ActionRowBuilder<ButtonBuilder>().addComponents( + new ButtonBuilder({ style: ButtonStyle.Primary, customId: 'command_settingsBack', label: 'Back' }) ); settingsEmbed.setDescription( `${Formatters.italic(guildSettingsObj[setting].description)}\n\n**Type:** ${guildSettingsObj[setting].type}` diff --git a/src/commands/config/features.ts b/src/commands/config/features.ts index c022a3a..5218bcf 100644 --- a/src/commands/config/features.ts +++ b/src/commands/config/features.ts @@ -8,11 +8,11 @@ import { } from '#lib'; import assert from 'assert'; import { - ActionRow, + ActionRowBuilder, ComponentType, - Embed, + EmbedBuilder, PermissionFlagsBits, - SelectMenuComponent, + SelectMenuBuilder, type Message, type SelectMenuInteraction } from 'discord.js'; @@ -35,7 +35,7 @@ export default class FeaturesCommand extends BushCommand { public override async exec(message: BushMessage | BushSlashMessage) { assert(message.inGuild()); - const featureEmbed = new Embed().setTitle(`${message.guild.name}'s Features`).setColor(util.colors.default); + const featureEmbed = new EmbedBuilder().setTitle(`${message.guild.name}'s Features`).setColor(util.colors.default); const enabledFeatures = await message.guild.getSetting('enabledFeatures'); this.generateDescription(guildFeaturesArr, enabledFeatures, featureEmbed); @@ -62,7 +62,8 @@ export default class FeaturesCommand extends BushCommand { await interaction.update({ embeds: [featureEmbed] }).catch(() => undefined); return; } else { - return await interaction?.deferUpdate().catch(() => undefined); + await interaction?.deferUpdate().catch(() => undefined); + return; } }); @@ -71,7 +72,7 @@ export default class FeaturesCommand extends BushCommand { }); } - public generateDescription(allFeatures: GuildFeatures[], currentFeatures: GuildFeatures[], embed: Embed): void { + public generateDescription(allFeatures: GuildFeatures[], currentFeatures: GuildFeatures[], embed: EmbedBuilder): void { embed.setDescription( allFeatures .map( @@ -83,8 +84,8 @@ export default class FeaturesCommand extends BushCommand { } public generateComponents(guildFeatures: GuildFeatures[], disable: boolean) { - return new ActionRow().addComponents( - new SelectMenuComponent({ + return new ActionRowBuilder<SelectMenuBuilder>().addComponents( + new SelectMenuBuilder({ customId: 'command_selectFeature', disabled: disable, maxValues: 1, diff --git a/src/commands/dev/eval.ts b/src/commands/dev/eval.ts index 8742246..a32aa8e 100644 --- a/src/commands/dev/eval.ts +++ b/src/commands/dev/eval.ts @@ -21,6 +21,7 @@ import { exec } from 'child_process'; import { ActionRow, ApplicationCommandOptionType, + Attachment, ButtonComponent, ButtonInteraction, Collection, @@ -29,12 +30,14 @@ import { ContextMenuCommandInteraction, DMChannel, Embed, + EmbedBuilder, Emoji, Interaction, InteractionCollector, Message, - MessageAttachment, MessageCollector, + OAuth2Scopes, + PermissionFlagsBits, PermissionsBitField, ReactionCollector, SelectMenuComponent, @@ -54,7 +57,7 @@ const { transpile } = ts, /* eslint-enable @typescript-eslint/no-unused-vars */ // prettier-ignore -util.assertAll(ActivePunishment, BushCommand, BushMessage, BushSlashMessage, Global, Guild, Level, ModLog, Shared, StickyRole, Snowflake_, Canvas, exec, ActionRow, ButtonComponent, ButtonInteraction, Collection, Collector, CommandInteraction, ContextMenuCommandInteraction, DMChannel, Embed, Emoji, Interaction, InteractionCollector, Message, MessageAttachment, MessageCollector, PermissionsBitField, ReactionCollector, SelectMenuComponent, Util, path, ts, fileURLToPath, promisify, assert, got, transpile, emojis, colors, sh, SnowflakeUtil, __dirname); +util.assertAll(ActivePunishment, BushCommand, BushMessage, BushSlashMessage, Global, Guild, Level, ModLog, Shared, StickyRole, Snowflake_, Canvas, exec, ActionRow, ButtonComponent, ButtonInteraction, Collection, Collector, CommandInteraction, ContextMenuCommandInteraction, DMChannel, Embed, Emoji, Interaction, InteractionCollector, Message, Attachment, MessageCollector, OAuth2Scopes, PermissionFlagsBits, PermissionsBitField, ReactionCollector, SelectMenuComponent, Util, path, ts, fileURLToPath, promisify, assert, got, transpile, emojis, colors, sh, SnowflakeUtil, __dirname); export default class EvalCommand extends BushCommand { public constructor() { @@ -226,7 +229,10 @@ export default class EvalCommand extends BushCommand { lang: isTypescript ? ('ts' as const) : ('js' as const) }; - const embed = new Embed().setFooter({ text: message.author.tag, iconURL: message.author.displayAvatarURL() ?? undefined }); + const embed = new EmbedBuilder().setFooter({ + text: message.author.tag, + iconURL: message.author.displayAvatarURL() ?? undefined + }); let err = false; let rawResult: any; @@ -316,4 +322,4 @@ interface CodeBlockCustomOptions extends CodeBlockOptions { methods?: boolean; } -/** @typedef {ActivePunishment|Global|Guild|Level|ModLog|StickyRole|ButtonInteraction|Collection|Collector|CommandInteraction|ContextMenuCommandInteraction|DMChannel|Emoji|Interaction|InteractionCollector|Message|ActionRow|MessageAttachment|ButtonComponent|MessageCollector|SelectMenuComponent|ReactionCollector|Util|Canvas|Shared|PermissionsBitField|got} VSCodePleaseDontRemove */ +/** @typedef {ActivePunishment|Global|Guild|Level|ModLog|StickyRole|ButtonInteraction|Collection|Collector|CommandInteraction|ContextMenuCommandInteraction|DMChannel|Emoji|Interaction|InteractionCollector|Message|ActionRow|Attachment|ButtonComponent|MessageCollector|SelectMenuComponent|ReactionCollector|Util|Canvas|Shared|PermissionsBitField|got} VSCodePleaseDontRemove */ diff --git a/src/commands/dev/javascript.ts b/src/commands/dev/javascript.ts index b0ba0c4..046d9ab 100644 --- a/src/commands/dev/javascript.ts +++ b/src/commands/dev/javascript.ts @@ -1,6 +1,6 @@ import { BushCommand, type ArgType, type BushMessage, type BushSlashMessage } from '#lib'; import assert from 'assert'; -import { ApplicationCommandOptionType, Embed } from 'discord.js'; +import { ApplicationCommandOptionType, EmbedBuilder } from 'discord.js'; import { VM } from 'vm2'; assert(VM); @@ -53,7 +53,7 @@ export default class JavascriptCommand extends BushCommand { await message.interaction.deferReply({ ephemeral: false }); } const code = args.code.replace(/[“”]/g, '"').replace(/```*(?:js)?/g, ''); - const embed = new Embed(); + const embed = new EmbedBuilder(); const input = await util.inspectCleanRedactCodeblock(code, 'js'); try { diff --git a/src/commands/dev/servers.ts b/src/commands/dev/servers.ts index dddbac4..72fc7d7 100644 --- a/src/commands/dev/servers.ts +++ b/src/commands/dev/servers.ts @@ -1,5 +1,5 @@ import { BushCommand, ButtonPaginator, type BushMessage, type BushSlashMessage } from '#lib'; -import type { APIEmbed } from 'discord-api-types/v9'; +import type { APIEmbed } from 'discord-api-types/v10'; import type { Guild } from 'discord.js'; export default class ServersCommand extends BushCommand { diff --git a/src/commands/dev/sh.ts b/src/commands/dev/sh.ts index 7134b6b..f3fe86b 100644 --- a/src/commands/dev/sh.ts +++ b/src/commands/dev/sh.ts @@ -2,7 +2,7 @@ import { BushCommand, type BushMessage, type BushSlashMessage } from '#lib'; import assert from 'assert'; import chalk from 'chalk'; import { exec } from 'child_process'; -import { ApplicationCommandOptionType, Embed, Util } from 'discord.js'; +import { ApplicationCommandOptionType, EmbedBuilder, Util } from 'discord.js'; import { promisify } from 'util'; assert(chalk); @@ -45,7 +45,7 @@ export default class ShCommand extends BushCommand { return await message.util.reply(`${util.emojis.error} Only my developers can run this command.`); const input = clean(command); - const embed = new Embed() + const embed = new EmbedBuilder() .setColor(util.colors.gray) .setFooter({ text: message.author.tag, iconURL: message.author.avatarURL() ?? undefined }) .setTimestamp() diff --git a/src/commands/dev/test.ts b/src/commands/dev/test.ts index 3f9cd80..deca6f1 100644 --- a/src/commands/dev/test.ts +++ b/src/commands/dev/test.ts @@ -1,14 +1,13 @@ import { BushCommand, ButtonPaginator, Shared, type BushMessage } from '#lib'; import { Routes } from 'discord-api-types/rest/v9'; import { - ActionRow, - ButtonComponent, + ActionRowBuilder, + ButtonBuilder, ButtonStyle, - Embed, + EmbedBuilder, GatewayDispatchEvents, type ApplicationCommand, - type Collection, - type MessageActionRowComponent + type Collection } from 'discord.js'; import badLinksSecretArray from '../../lib/badlinks-secret.js'; import badLinksArray from '../../lib/badlinks.js'; @@ -53,16 +52,16 @@ export default class TestCommand extends BushCommand { } if (['button', 'buttons'].includes(args?.feature?.toLowerCase())) { - const ButtonRow = new ActionRow().addComponents( - new ButtonComponent({ style: ButtonStyle.Primary, customId: 'primaryButton', label: 'Primary' }), - new ButtonComponent({ style: ButtonStyle.Secondary, customId: 'secondaryButton', label: 'Secondary' }), - new ButtonComponent({ style: ButtonStyle.Success, customId: 'successButton', label: 'Success' }), - new ButtonComponent({ style: ButtonStyle.Danger, customId: 'dangerButton', label: 'Danger' }), - new ButtonComponent({ style: ButtonStyle.Link, label: 'Link', url: 'https://www.youtube.com/watch?v=dQw4w9WgXcQ' }) + const buttonRow = new ActionRowBuilder<ButtonBuilder>().addComponents( + new ButtonBuilder({ style: ButtonStyle.Primary, customId: 'primaryButton', label: 'Primary' }), + new ButtonBuilder({ style: ButtonStyle.Secondary, customId: 'secondaryButton', label: 'Secondary' }), + new ButtonBuilder({ style: ButtonStyle.Success, customId: 'successButton', label: 'Success' }), + new ButtonBuilder({ style: ButtonStyle.Danger, customId: 'dangerButton', label: 'Danger' }), + new ButtonBuilder({ style: ButtonStyle.Link, label: 'Link', url: 'https://www.youtube.com/watch?v=dQw4w9WgXcQ' }) ); - return await message.util.reply({ content: 'buttons', components: [ButtonRow] }); + return await message.util.reply({ content: 'buttons', components: [buttonRow] }); } else if (['embed', 'button embed'].includes(args?.feature?.toLowerCase())) { - const embed = new Embed() + const embed = new EmbedBuilder() .addFields({ name: 'Field Name', value: 'Field Content' }) .setAuthor({ name: 'Author', iconURL: 'https://www.w3schools.com/w3css/img_snowtops.jpg', url: 'https://google.com/' }) .setColor(message.member?.displayColor ?? util.colors.default) @@ -76,26 +75,26 @@ export default class TestCommand extends BushCommand { ) .setTitle('Title'); - const buttonRow = new ActionRow().addComponents( - new ButtonComponent({ style: ButtonStyle.Link, label: 'Link', url: 'https://google.com/' }) + const buttonRow = new ActionRowBuilder<ButtonBuilder>().addComponents( + new ButtonBuilder({ style: ButtonStyle.Link, label: 'Link', url: 'https://google.com/' }) ); return await message.util.reply({ content: 'Test', embeds: [embed], components: [buttonRow] }); } else if (['lots of buttons'].includes(args?.feature?.toLowerCase())) { - const ButtonRows: ActionRow<MessageActionRowComponent>[] = []; + const buttonRows: ActionRowBuilder<ButtonBuilder>[] = []; for (let a = 1; a <= 5; a++) { - const row = new ActionRow(); + const row = new ActionRowBuilder<ButtonBuilder>(); for (let b = 1; b <= 5; b++) { const id = (a + 5 * (b - 1)).toString(); - const button = new ButtonComponent({ style: ButtonStyle.Primary, customId: id, label: id }); + const button = new ButtonBuilder({ style: ButtonStyle.Primary, customId: id, label: id }); row.addComponents(button); } - ButtonRows.push(row); + buttonRows.push(row); } - return await message.util.reply({ content: 'buttons', components: ButtonRows }); + return await message.util.reply({ content: 'buttons', components: buttonRows }); } else if (['paginate'].includes(args?.feature?.toLowerCase())) { const embeds = []; for (let i = 1; i <= 5; i++) { - embeds.push(new Embed().setDescription(i.toString())); + embeds.push(new EmbedBuilder().setDescription(i.toString())); } return await ButtonPaginator.send(message, embeds); } else if (['lots of embeds'].includes(args?.feature?.toLowerCase())) { @@ -113,12 +112,12 @@ export default class TestCommand extends BushCommand { const embeds = colors.map((c, i) => ({ ...o, title: `Embed Title ${i}`, color: c })); - const ButtonRows: ActionRow<MessageActionRowComponent>[] = []; + const ButtonRows: ActionRowBuilder<ButtonBuilder>[] = []; for (let a = 1; a <= 5; a++) { - const row = new ActionRow(); + const row = new ActionRowBuilder<ButtonBuilder>(); for (let b = 1; b <= 5; b++) { const id = (a + 5 * (b - 1)).toString(); - const button = new ButtonComponent({ style: ButtonStyle.Secondary, customId: id, label: id }); + const button = new ButtonBuilder({ style: ButtonStyle.Secondary, customId: id, label: id }); row.addComponents(button); } ButtonRows.push(row); @@ -150,8 +149,8 @@ export default class TestCommand extends BushCommand { const m = await message.util.reply({ content: 'Click for modal', components: [ - new ActionRow().addComponents( - new ButtonComponent({ style: ButtonStyle.Primary, label: 'Modal', customId: 'test;modal' }) + new ActionRowBuilder<ButtonBuilder>().addComponents( + new ButtonBuilder({ style: ButtonStyle.Primary, label: 'Modal', customId: 'test;modal' }) ) ] }); diff --git a/src/commands/info/avatar.ts b/src/commands/info/avatar.ts index 6b4afa1..870908d 100644 --- a/src/commands/info/avatar.ts +++ b/src/commands/info/avatar.ts @@ -1,5 +1,5 @@ import { BushCommand, type ArgType, type BushMessage, type BushSlashMessage } from '#lib'; -import { ApplicationCommandOptionType, Embed, GuildMember, PermissionFlagsBits } from 'discord.js'; +import { ApplicationCommandOptionType, EmbedBuilder, GuildMember, PermissionFlagsBits } from 'discord.js'; export default class AvatarCommand extends BushCommand { public constructor() { @@ -36,7 +36,7 @@ export default class AvatarCommand extends BushCommand { const guildAvatar = member?.avatarURL(params); - const embed = new Embed().setTimestamp().setColor(util.colors.default).setTitle(`${user.tag}'s Avatar`); + const embed = new EmbedBuilder().setTimestamp().setColor(util.colors.default).setTitle(`${user.tag}'s Avatar`); guildAvatar ? embed.setImage(guildAvatar).setThumbnail(user.avatarURL(params) ?? defaultAvatar) : embed.setImage(user.avatarURL(params) ?? defaultAvatar); diff --git a/src/commands/info/botInfo.ts b/src/commands/info/botInfo.ts index 4d914e4..1ea54f3 100644 --- a/src/commands/info/botInfo.ts +++ b/src/commands/info/botInfo.ts @@ -1,6 +1,6 @@ import { BushCommand, type BushMessage, type BushSlashMessage } from '#lib'; import assert from 'assert'; -import { Embed, PermissionFlagsBits, version as discordJSVersion } from 'discord.js'; +import { EmbedBuilder, PermissionFlagsBits, version as discordJSVersion } from 'discord.js'; import * as os from 'os'; const { default: prettyBytes } = await import('pretty-bytes'); assert(prettyBytes); @@ -39,7 +39,7 @@ export default class BotInfoCommand extends BushCommand { const currentCommit = (await util.shell('git rev-parse HEAD')).stdout.replace('\n', ''); let repoUrl = (await util.shell('git remote get-url origin')).stdout.replace('\n', ''); if (repoUrl.includes('.git')) repoUrl = repoUrl.substring(0, repoUrl.length - 4); - const embed = new Embed() + const embed = new EmbedBuilder() .setTitle('Bot Info:') .addFields({ name: '**Uptime**', value: util.humanizeDuration(client.uptime!, 2), inline: true }) .addFields({ diff --git a/src/commands/info/color.ts b/src/commands/info/color.ts index 49e827d..cc4fcc3 100644 --- a/src/commands/info/color.ts +++ b/src/commands/info/color.ts @@ -9,7 +9,7 @@ import { type BushSlashMessage } from '#lib'; import assert from 'assert'; -import { ApplicationCommandOptionType, Embed, PermissionFlagsBits, Role } from 'discord.js'; +import { ApplicationCommandOptionType, EmbedBuilder, PermissionFlagsBits, Role } from 'discord.js'; import tinycolor from 'tinycolor2'; assert(tinycolor); @@ -75,7 +75,7 @@ export default class ColorCommand extends BushCommand { }); } - const embed = new Embed() + const embed = new EmbedBuilder() .addFields({ name: '» Hexadecimal', value: color.toHexString() }) .addFields({ name: '» Decimal', value: `${parseInt(color.toHex(), 16)}` }) .addFields({ name: '» HSL', value: this.removePrefixAndParenthesis(color.toHslString()) }) diff --git a/src/commands/info/guildInfo.ts b/src/commands/info/guildInfo.ts index e026d1c..4049250 100644 --- a/src/commands/info/guildInfo.ts +++ b/src/commands/info/guildInfo.ts @@ -1,9 +1,9 @@ import { BushCommand, type ArgType, type BushMessage, type BushSlashMessage, type OptionalArgType } from '#lib'; import assert from 'assert'; -import { GuildDefaultMessageNotifications, GuildExplicitContentFilter } from 'discord-api-types/v9'; +import { GuildDefaultMessageNotifications, GuildExplicitContentFilter } from 'discord-api-types/v10'; import { ApplicationCommandOptionType, - Embed, + EmbedBuilder, Guild, GuildMFALevel, GuildPremiumTier, @@ -64,7 +64,7 @@ export default class GuildInfoCommand extends BushCommand { await guild.fetch(); } - const guildInfoEmbed = new Embed().setTitle(guild.name).setColor(util.colors.default); + const guildInfoEmbed = new EmbedBuilder().setTitle(guild.name).setColor(util.colors.default); if (guild.icon) guildInfoEmbed.setThumbnail(guild.iconURL({ size: 2048, extension: 'png' })); await this.generateAboutField(guildInfoEmbed, guild); @@ -78,7 +78,7 @@ export default class GuildInfoCommand extends BushCommand { return await message.util.reply({ embeds: [guildInfoEmbed] }); } - private generateDescription(embed: Embed, guild: Guild | GuildPreview) { + private generateDescription(embed: EmbedBuilder, guild: Guild | GuildPreview) { const description: string[] = []; const otherEmojis = client.consts.mappings.otherEmojis; @@ -115,7 +115,7 @@ export default class GuildInfoCommand extends BushCommand { embed.setDescription(`\u200B${/*zero width space*/ description.join(' ')}`); } - private async generateAboutField(embed: Embed, guild: Guild | GuildPreview) { + private async generateAboutField(embed: EmbedBuilder, guild: Guild | GuildPreview) { const guildAbout = []; if (guild instanceof Guild) { @@ -158,12 +158,12 @@ export default class GuildInfoCommand extends BushCommand { embed.addFields({ name: '» About', value: guildAbout.join('\n') }); } - private generateStatsField(embed: Embed, guild: Guild | GuildPreview) { + private generateStatsField(embed: EmbedBuilder, guild: Guild | GuildPreview) { if (!(guild instanceof Guild)) return; const guildStats: string[] = []; - const channelTypes = (['Text', 'Voice', 'News', 'Stage', 'Store', 'Category', 'Thread'] as const).map( + const channelTypes = (['Text', 'Voice', 'News', 'Stage', 'Category', 'Thread'] as const).map( (type) => `${client.consts.mappings.otherEmojis[`Channel${type}`]} ${guild.channels.cache .filter((channel) => channel[`is${type}`]()) @@ -194,7 +194,7 @@ export default class GuildInfoCommand extends BushCommand { embed.addFields({ name: '» Stats', value: guildStats.join('\n') }); } - private generateSecurityField(embed: Embed, guild: Guild | GuildPreview) { + private generateSecurityField(embed: EmbedBuilder, guild: Guild | GuildPreview) { if (!(guild instanceof Guild)) return; const guildSecurity: string[] = []; diff --git a/src/commands/info/help.ts b/src/commands/info/help.ts index 04abd18..93979ac 100644 --- a/src/commands/info/help.ts +++ b/src/commands/info/help.ts @@ -1,12 +1,12 @@ import { BushCommand, type ArgType, type BushMessage, type BushSlashMessage } from '#lib'; +import { ButtonBuilder } from '@discordjs/builders'; import assert from 'assert'; import { - ActionRow, + ActionRowBuilder, ApplicationCommandOptionType, AutocompleteInteraction, - ButtonComponent, ButtonStyle, - Embed, + EmbedBuilder, PermissionFlagsBits } from 'discord.js'; import Fuse from 'fuse.js'; @@ -68,7 +68,7 @@ export default class HelpCommand extends BushCommand { : null; if (!isOwner) args.showHidden = false; if (!command || command.pseudo) { - const embed = new Embed().setColor(util.colors.default).setTimestamp(); + const embed = new EmbedBuilder().setColor(util.colors.default).setTimestamp(); embed.setFooter({ text: `For more information about a command use ${prefix}help <command>` }); for (const [, category] of this.handler.categories) { const categoryFilter = category.filter((command) => { @@ -93,7 +93,7 @@ export default class HelpCommand extends BushCommand { return await message.util.reply({ embeds: [embed], components: row.components.length ? [row] : undefined }); } - const embed = new Embed() + const embed = new EmbedBuilder() .setColor(util.colors.default) .setTitle(`${command.id} Command`) .setDescription(`${command.description ?? '*This command does not have a description.*'}`); @@ -140,18 +140,18 @@ export default class HelpCommand extends BushCommand { } private addLinks(message: BushMessage | BushSlashMessage) { - const row = new ActionRow(); + const row = new ActionRowBuilder<ButtonBuilder>(); if (!client.config.isDevelopment && !client.guilds.cache.some((guild) => guild.ownerId === message.author.id)) { - row.addComponents(new ButtonComponent({ style: ButtonStyle.Link, label: 'Invite Me', url: util.invite })); + row.addComponents(new ButtonBuilder({ style: ButtonStyle.Link, label: 'Invite Me', url: util.invite })); } if (!client.guilds.cache.get(client.config.supportGuild.id)?.members.cache.has(message.author.id)) { row.addComponents( - new ButtonComponent({ style: ButtonStyle.Link, label: 'Support Server', url: client.config.supportGuild.invite }) + new ButtonBuilder({ style: ButtonStyle.Link, label: 'Support Server', url: client.config.supportGuild.invite }) ); } if (packageDotJSON?.repository) - row.addComponents(new ButtonComponent({ style: ButtonStyle.Link, label: 'GitHub', url: packageDotJSON.repository })); + row.addComponents(new ButtonBuilder({ style: ButtonStyle.Link, label: 'GitHub', url: packageDotJSON.repository })); else void message.channel?.send('Error importing package.json, please report this to my developer.'); return row; diff --git a/src/commands/info/icon.ts b/src/commands/info/icon.ts index 72e82d8..db390a5 100644 --- a/src/commands/info/icon.ts +++ b/src/commands/info/icon.ts @@ -1,6 +1,6 @@ import { BushCommand, type BushMessage, type BushSlashMessage } from '#lib'; import assert from 'assert'; -import { Embed, PermissionFlagsBits } from 'discord.js'; +import { EmbedBuilder, PermissionFlagsBits } from 'discord.js'; export default class IconCommand extends BushCommand { public constructor() { @@ -20,7 +20,7 @@ export default class IconCommand extends BushCommand { public override async exec(message: BushMessage | BushSlashMessage) { assert(message.inGuild()); - const embed = new Embed() + const embed = new EmbedBuilder() .setTimestamp() .setColor(util.colors.default) .setImage( diff --git a/src/commands/info/links.ts b/src/commands/info/links.ts index e14195e..1cb6de0 100644 --- a/src/commands/info/links.ts +++ b/src/commands/info/links.ts @@ -1,6 +1,6 @@ import { BushCommand, type BushMessage, type BushSlashMessage } from '#lib'; import assert from 'assert'; -import { ActionRow, ButtonComponent, ButtonStyle } from 'discord.js'; +import { ActionRowBuilder, ButtonBuilder, ButtonStyle } from 'discord.js'; import packageDotJSON from '../../../package.json' assert { type: 'json' }; assert(packageDotJSON); @@ -20,13 +20,13 @@ export default class LinksCommand extends BushCommand { } public override async exec(message: BushMessage | BushSlashMessage) { - const buttonRow = new ActionRow(); + const buttonRow = new ActionRowBuilder<ButtonBuilder>(); if (!client.config.isDevelopment || message.author.isOwner()) { - buttonRow.addComponents(new ButtonComponent({ style: ButtonStyle.Link, label: 'Invite Me', url: util.invite })); + buttonRow.addComponents(new ButtonBuilder({ style: ButtonStyle.Link, label: 'Invite Me', url: util.invite })); } buttonRow.addComponents( - new ButtonComponent({ style: ButtonStyle.Link, label: 'Support Server', url: client.config.supportGuild.invite }), - new ButtonComponent({ style: ButtonStyle.Link, label: 'GitHub', url: packageDotJSON.repository }) + new ButtonBuilder({ style: ButtonStyle.Link, label: 'Support Server', url: client.config.supportGuild.invite }), + new ButtonBuilder({ style: ButtonStyle.Link, label: 'GitHub', url: packageDotJSON.repository }) ); return await message.util.reply({ content: 'Here are some useful links:', components: [buttonRow] }); } diff --git a/src/commands/info/ping.ts b/src/commands/info/ping.ts index 1b5e45a..04ceedd 100644 --- a/src/commands/info/ping.ts +++ b/src/commands/info/ping.ts @@ -1,5 +1,5 @@ import { BushCommand, type BushMessage, type BushSlashMessage } from '#lib'; -import { Embed, PermissionFlagsBits, type Message } from 'discord.js'; +import { EmbedBuilder, PermissionFlagsBits, type Message } from 'discord.js'; export default class PingCommand extends BushCommand { public constructor() { @@ -20,7 +20,7 @@ export default class PingCommand extends BushCommand { const timestamp: number = message.editedTimestamp ? message.editedTimestamp : message.createdTimestamp; const botLatency = `${'```'}\n ${Math.round(sentMessage.createdTimestamp - timestamp)}ms ${'```'}`; const apiLatency = `${'```'}\n ${Math.round(message.client.ws.ping)}ms ${'```'}`; - const embed = new Embed() + const embed = new EmbedBuilder() .setTitle('Pong! 🏓') .addFields({ name: 'Bot Latency', value: botLatency, inline: true }) .addFields({ name: 'API Latency', value: apiLatency, inline: true }) @@ -39,7 +39,7 @@ export default class PingCommand extends BushCommand { const timestamp2 = await message.interaction.fetchReply().then((m) => (m as Message).createdTimestamp); const botLatency = `${'```'}\n ${Math.round(timestamp2 - timestamp1)}ms ${'```'}`; const apiLatency = `${'```'}\n ${Math.round(client.ws.ping)}ms ${'```'}`; - const embed = new Embed() + const embed = new EmbedBuilder() .setTitle('Pong! 🏓') .addFields({ name: 'Bot Latency', value: botLatency, inline: true }) .addFields({ name: 'API Latency', value: apiLatency, inline: true }) diff --git a/src/commands/info/pronouns.ts b/src/commands/info/pronouns.ts index 3eccd85..043b660 100644 --- a/src/commands/info/pronouns.ts +++ b/src/commands/info/pronouns.ts @@ -1,5 +1,5 @@ import { BushCommand, type ArgType, type BushMessage, type BushSlashMessage } from '#lib'; -import { ApplicationCommandOptionType, Embed, PermissionFlagsBits } from 'discord.js'; +import { ApplicationCommandOptionType, EmbedBuilder, PermissionFlagsBits } from 'discord.js'; export default class PronounsCommand extends BushCommand { public constructor() { @@ -42,7 +42,7 @@ export default class PronounsCommand extends BushCommand { } else { return await message.util.reply({ embeds: [ - new Embed({ + new EmbedBuilder({ title: `${author ? 'Your' : `${util.discord.escapeMarkdown(user.tag)}'s`} pronouns:`, description: pronouns, footer: { diff --git a/src/commands/info/snowflake.ts b/src/commands/info/snowflake.ts index d9ca5fc..71ae80d 100644 --- a/src/commands/info/snowflake.ts +++ b/src/commands/info/snowflake.ts @@ -1,7 +1,7 @@ import { BushCommand, type ArgType, type BushMessage, type BushSlashMessage } from '#lib'; import { ApplicationCommandOptionType, - Embed, + EmbedBuilder, PermissionFlagsBits, SnowflakeUtil, type DeconstructedSnowflake, @@ -37,7 +37,7 @@ export default class SnowflakeCommand extends BushCommand { public override async exec(message: BushMessage | BushSlashMessage, args: { snowflake: ArgType<'snowflake'> }) { const snowflake = `${args.snowflake}` as Snowflake; - const snowflakeEmbed = new Embed().setTitle('Unknown :snowflake:').setColor(util.colors.default); + const snowflakeEmbed = new EmbedBuilder().setTitle('Unknown :snowflake:').setColor(util.colors.default); // Channel if (client.channels.cache.has(snowflake)) { @@ -57,7 +57,6 @@ export default class SnowflakeCommand extends BushCommand { channel.isNews() || channel.isText() || channel.isVoice() || - channel.isStore() || channel.isStage() || channel.isThread() ) { diff --git a/src/commands/info/userInfo.ts b/src/commands/info/userInfo.ts index edf2b6d..0d6c891 100644 --- a/src/commands/info/userInfo.ts +++ b/src/commands/info/userInfo.ts @@ -8,13 +8,13 @@ import { type BushSlashMessage, type BushUser } from '#lib'; -import { TeamMemberMembershipState, type APIApplication } from 'discord-api-types/v9'; +import { TeamMemberMembershipState, type APIApplication } from 'discord-api-types/v10'; import { ActivityType, ApplicationCommandOptionType, ApplicationFlagsBitField, ApplicationFlagsString, - Embed, + EmbedBuilder, PermissionFlagsBits, UserFlags } from 'discord.js'; @@ -65,7 +65,7 @@ export default class UserInfoCommand extends BushCommand { const emojis = []; const superUsers = util.getShared('superUsers'); - const userEmbed = new Embed() + const userEmbed = new EmbedBuilder() .setTitle(util.discord.escapeMarkdown(user.tag)) .setThumbnail(user.displayAvatarURL({ size: 2048, extension: 'png' })) .setTimestamp() @@ -114,12 +114,14 @@ export default class UserInfoCommand extends BushCommand { if (emojis) userEmbed.setDescription( - `\u200B${emojis.filter((e) => e).join(' ')}${userEmbed.description?.length ? `\n\n${userEmbed.description}` : ''}` + `\u200B${emojis.filter((e) => e).join(' ')}${ + userEmbed.data.description?.length ? `\n\n${userEmbed.data.description}` : '' + }` ); // zero width space return userEmbed; } - public static async generateGeneralInfoField(embed: Embed, user: BushUser, title = '» General Information') { + public static async generateGeneralInfoField(embed: EmbedBuilder, user: BushUser, title = '» General Information') { // General Info const generalInfo = [ `**Mention:** <@${user.id}>`, @@ -136,7 +138,11 @@ export default class UserInfoCommand extends BushCommand { embed.addFields({ name: title, value: generalInfo.join('\n') }); } - public static generateServerInfoField(embed: Embed, member?: BushGuildMember | undefined, title = '» Server Information') { + public static generateServerInfoField( + embed: EmbedBuilder, + member?: BushGuildMember | undefined, + title = '» Server Information' + ) { if (!member) return; // Server User Info @@ -161,7 +167,7 @@ export default class UserInfoCommand extends BushCommand { if (serverUserInfo.length) embed.addFields({ name: title, value: serverUserInfo.join('\n') }); } - public static generatePresenceField(embed: Embed, member?: BushGuildMember | undefined, title = '» Presence') { + public static generatePresenceField(embed: EmbedBuilder, member?: BushGuildMember | undefined, title = '» Presence') { if (!member || !member.presence) return; if (!member.presence.status && !member.presence.clientStatus && !member.presence.activities) return; @@ -201,7 +207,7 @@ export default class UserInfoCommand extends BushCommand { }); } - public static generateRolesField(embed: Embed, member?: BushGuildMember | undefined) { + public static generateRolesField(embed: EmbedBuilder, member?: BushGuildMember | undefined) { if (!member || member.roles.cache.size <= 1) return; // roles @@ -217,7 +223,11 @@ export default class UserInfoCommand extends BushCommand { }); } - public static generatePermissionsField(embed: Embed, member: BushGuildMember | undefined, title = '» Important Permissions') { + public static generatePermissionsField( + embed: EmbedBuilder, + member: BushGuildMember | undefined, + title = '» Important Permissions' + ) { if (!member) return; // Important Perms @@ -235,7 +245,7 @@ export default class UserInfoCommand extends BushCommand { if (perms.length) embed.addFields({ name: title, value: perms.join(' ') }); } - public static async generateBotField(embed: Embed, user: BushUser, title = '» Bot Information') { + public static async generateBotField(embed: EmbedBuilder, user: BushUser, title = '» Bot Information') { if (!user.bot) return; const applicationInfo = (await client.rest.get(`/applications/${user.id}/rpc`).catch(() => null)) as APIApplication | null; diff --git a/src/commands/leveling/leaderboard.ts b/src/commands/leveling/leaderboard.ts index 0871811..c79a4e3 100644 --- a/src/commands/leveling/leaderboard.ts +++ b/src/commands/leveling/leaderboard.ts @@ -1,6 +1,6 @@ import { BushCommand, ButtonPaginator, Level, type ArgType, type BushMessage, type BushSlashMessage } from '#lib'; import assert from 'assert'; -import { ApplicationCommandOptionType, Embed, PermissionFlagsBits } from 'discord.js'; +import { ApplicationCommandOptionType, EmbedBuilder, PermissionFlagsBits } from 'discord.js'; export default class LeaderboardCommand extends BushCommand { public constructor() { @@ -45,7 +45,9 @@ export default class LeaderboardCommand extends BushCommand { (val, index) => `\`${index + 1}\` <@${val.user}> - Level ${val.level} (${val.xp.toLocaleString()} xp)` ); const chunked = util.chunk(mappedRanks, 25); - const embeds = chunked.map((c) => new Embed().setTitle(`${message.guild.name}'s Leaderboard`).setDescription(c.join('\n'))); + const embeds = chunked.map((c) => + new EmbedBuilder().setTitle(`${message.guild.name}'s Leaderboard`).setDescription(c.join('\n')) + ); return await ButtonPaginator.send(message, embeds, undefined, true, args?.page ?? undefined); } } diff --git a/src/commands/leveling/level.ts b/src/commands/leveling/level.ts index 803703e..50742e9 100644 --- a/src/commands/leveling/level.ts +++ b/src/commands/leveling/level.ts @@ -12,7 +12,7 @@ import { import { SimplifyNumber } from '@notenoughupdates/simplify-number'; import assert from 'assert'; import canvas from 'canvas'; -import { ApplicationCommandOptionType, MessageAttachment, PermissionFlagsBits } from 'discord.js'; +import { ApplicationCommandOptionType, Attachment, PermissionFlagsBits } from 'discord.js'; import got from 'got'; import { dirname, join } from 'path'; import { fileURLToPath } from 'url'; @@ -60,7 +60,7 @@ export default class LevelCommand extends BushCommand { const user = args.user ?? message.author; try { return await message.util.reply({ - files: [new MessageAttachment(await this.getImage(user, message.guild), 'level.png')] + files: [new Attachment(await this.getImage(user, message.guild), 'level.png')] }); } catch (e) { if (e instanceof Error && e.message === 'User does not have a level') { diff --git a/src/commands/moulberry-bush/capePermissions.ts b/src/commands/moulberry-bush/capePermissions.ts index 7bf3926..93cfb99 100644 --- a/src/commands/moulberry-bush/capePermissions.ts +++ b/src/commands/moulberry-bush/capePermissions.ts @@ -1,5 +1,5 @@ import { BushCommand, type ArgType, type BushMessage, type BushSlashMessage } from '#lib'; -import { ApplicationCommandOptionType, Embed, PermissionFlagsBits } from 'discord.js'; +import { ApplicationCommandOptionType, EmbedBuilder, PermissionFlagsBits } from 'discord.js'; import got from 'got'; export default class CapePermissionsCommand extends BushCommand { @@ -62,7 +62,7 @@ export default class CapePermissionsCommand extends BushCommand { `${util.emojis.error} ${util.format.input(args.ign)} does not appear to have any capes.` ); const userPerm: string[] = capePerms.perms[index].perms; - const embed = new Embed() + const embed = new EmbedBuilder() .setTitle(`${args.ign}'s Capes`) .setDescription(userPerm.join('\n')) .setColor(util.colors.default); diff --git a/src/commands/moulberry-bush/capes.ts b/src/commands/moulberry-bush/capes.ts index ab9e8a7..5564279 100644 --- a/src/commands/moulberry-bush/capes.ts +++ b/src/commands/moulberry-bush/capes.ts @@ -1,6 +1,6 @@ import { BushCommand, ButtonPaginator, DeleteButton, type BushMessage, type OptionalArgType } from '#lib'; import assert from 'assert'; -import { APIEmbed } from 'discord-api-types/v9'; +import { APIEmbed } from 'discord-api-types/v10'; import { ApplicationCommandOptionType, AutocompleteInteraction, PermissionFlagsBits } from 'discord.js'; import Fuse from 'fuse.js'; import got from 'got'; diff --git a/src/commands/moulberry-bush/moulHammer.ts b/src/commands/moulberry-bush/moulHammer.ts index 9a16545..7a5a91c 100644 --- a/src/commands/moulberry-bush/moulHammer.ts +++ b/src/commands/moulberry-bush/moulHammer.ts @@ -1,5 +1,5 @@ import { BushCommand, type ArgType, type BushMessage, type BushSlashMessage } from '#lib'; -import { ApplicationCommandOptionType, Embed, PermissionFlagsBits } from 'discord.js'; +import { ApplicationCommandOptionType, EmbedBuilder, PermissionFlagsBits } from 'discord.js'; export default class MoulHammerCommand extends BushCommand { public constructor() { @@ -29,7 +29,7 @@ export default class MoulHammerCommand extends BushCommand { public override async exec(message: BushMessage | BushSlashMessage, { user }: { user: ArgType<'user'> }) { await message.delete(); - const embed = new Embed() + const embed = new EmbedBuilder() .setTitle('L') .setDescription(`${user.username} got moul'ed <:wideberry1:756223352598691942><:wideberry2:756223336832303154>`) .setColor(util.colors.purple); diff --git a/src/commands/moulberry-bush/report.ts b/src/commands/moulberry-bush/report.ts index ed25df4..4d57fcd 100644 --- a/src/commands/moulberry-bush/report.ts +++ b/src/commands/moulberry-bush/report.ts @@ -1,6 +1,6 @@ import { AllowedMentions, BushCommand, type ArgType, type BushMessage } from '#lib'; import assert from 'assert'; -import { ApplicationCommandOptionType, Embed, PermissionFlagsBits } from 'discord.js'; +import { ApplicationCommandOptionType, EmbedBuilder, PermissionFlagsBits } from 'discord.js'; export default class ReportCommand extends BushCommand { public constructor() { @@ -61,7 +61,7 @@ export default class ReportCommand extends BushCommand { ); //The formatting of the report is mostly copied from carl since it is pretty good when it actually works - const reportEmbed = new Embed() + const reportEmbed = new EmbedBuilder() .setFooter({ text: `Reporter ID: ${message.author.id} Reported ID: ${member.user.id}` }) .setTimestamp() .setAuthor({ diff --git a/src/commands/moulberry-bush/rule.ts b/src/commands/moulberry-bush/rule.ts index 913a4b6..ca0bba0 100644 --- a/src/commands/moulberry-bush/rule.ts +++ b/src/commands/moulberry-bush/rule.ts @@ -1,5 +1,5 @@ import { AllowedMentions, BushCommand, BushSlashMessage, type BushMessage, type OptionalArgType } from '#lib'; -import { ApplicationCommandOptionType, Embed, PermissionFlagsBits } from 'discord.js'; +import { ApplicationCommandOptionType, EmbedBuilder, PermissionFlagsBits } from 'discord.js'; const rules = [ { @@ -95,7 +95,7 @@ export default class RuleCommand extends BushCommand { message: BushMessage | BushSlashMessage, { rule, user }: { rule: OptionalArgType<'integer'>; user: OptionalArgType<'user'> } ) { - const rulesEmbed = new Embed() + const rulesEmbed = new EmbedBuilder() .setColor(0xef3929) .setFooter({ text: `Triggered by ${message.author.tag}`, diff --git a/src/commands/moulberry-bush/serverStatus.ts b/src/commands/moulberry-bush/serverStatus.ts index 703dfc4..5e9184a 100644 --- a/src/commands/moulberry-bush/serverStatus.ts +++ b/src/commands/moulberry-bush/serverStatus.ts @@ -1,6 +1,6 @@ import { BushCommand, type BushMessage } from '#lib'; import assert from 'assert'; -import { Embed, PermissionFlagsBits } from 'discord.js'; +import { EmbedBuilder, PermissionFlagsBits } from 'discord.js'; import got from 'got'; assert(got); @@ -20,7 +20,7 @@ export default class ServerStatusCommand extends BushCommand { } public override async exec(message: BushMessage) { - const msgEmbed: Embed = new Embed() + const msgEmbed = new EmbedBuilder() .setTitle('Server status') .setDescription(`Checking server:\n${util.emojis.loading}`) .setColor(util.colors.default) diff --git a/src/commands/utilities/calculator.ts b/src/commands/utilities/calculator.ts index 75dc63f..1a9d352 100644 --- a/src/commands/utilities/calculator.ts +++ b/src/commands/utilities/calculator.ts @@ -1,6 +1,6 @@ import { AllowedMentions, BushCommand, type BushMessage, type BushSlashMessage } from '#lib'; import assert from 'assert'; -import { ApplicationCommandOptionType, Embed } from 'discord.js'; +import { ApplicationCommandOptionType, EmbedBuilder } from 'discord.js'; import { evaluate } from 'mathjs'; assert(evaluate); @@ -31,7 +31,7 @@ export default class CalculatorCommand extends BushCommand { } public override async exec(message: BushMessage | BushSlashMessage, args: { expression: string }) { - const decodedEmbed = new Embed().addFields({ + const decodedEmbed = new EmbedBuilder().addFields({ name: '📥 Input', value: await util.inspectCleanRedactCodeblock(args.expression, 'mma') }); diff --git a/src/commands/utilities/decode.ts b/src/commands/utilities/decode.ts index 1d64145..978c1c6 100644 --- a/src/commands/utilities/decode.ts +++ b/src/commands/utilities/decode.ts @@ -1,6 +1,6 @@ import { AllowedMentions, BushCommand, type BushMessage } from '#lib'; import { type AkairoMessage } from 'discord-akairo'; -import { ApplicationCommandOptionType, Embed } from 'discord.js'; +import { ApplicationCommandOptionType, EmbedBuilder } from 'discord.js'; const encodingTypesArray = ['ascii', 'utf8', 'utf-8', 'utf16le', 'ucs2', 'ucs-2', 'base64', 'latin1', 'binary', 'hex']; const encodingTypesString = encodingTypesArray.map((e) => `\`${e}\``).join(', '); @@ -53,7 +53,7 @@ export default class DecodeCommand extends BushCommand { { from, to, data }: { from: BufferEncoding; to: BufferEncoding; data: string } ) { const encodeOrDecode = util.capitalizeFirstLetter(message?.util?.parsed?.alias ?? 'decoded'); - const decodedEmbed = new Embed() + const decodedEmbed = new EmbedBuilder() .setTitle(`${encodeOrDecode} Information`) .addFields({ name: '📥 Input', value: await util.inspectCleanRedactCodeblock(data) }); try { diff --git a/src/commands/utilities/highlight-!.ts b/src/commands/utilities/highlight-!.ts index 2ec1a29..2b18198 100644 --- a/src/commands/utilities/highlight-!.ts +++ b/src/commands/utilities/highlight-!.ts @@ -1,6 +1,6 @@ import { BushCommand, Highlight, HighlightWord, type BushSlashMessage } from '#lib'; import { Flag, type ArgumentGeneratorReturn, type SlashOption } from 'discord-akairo'; -import { ApplicationCommandOptionType } from 'discord-api-types/v9'; +import { ApplicationCommandOptionType } from 'discord-api-types/v10'; import { ApplicationCommandSubCommandData, AutocompleteInteraction, CacheType } from 'discord.js'; type Unpacked<T> = T extends (infer U)[] ? U : T; diff --git a/src/commands/utilities/highlight-matches.ts b/src/commands/utilities/highlight-matches.ts index aa8308c..0e98c8d 100644 --- a/src/commands/utilities/highlight-matches.ts +++ b/src/commands/utilities/highlight-matches.ts @@ -1,7 +1,7 @@ import { BushCommand, ButtonPaginator, type ArgType, type BushMessage, type BushSlashMessage } from '#lib'; import assert from 'assert'; import { ArgumentGeneratorReturn } from 'discord-akairo'; -import { APIEmbed } from 'discord-api-types/v9'; +import { APIEmbed } from 'discord-api-types/v10'; import { highlightCommandArgs, highlightSubcommands } from './highlight-!.js'; export default class HighlightMatchesCommand extends BushCommand { diff --git a/src/commands/utilities/highlight-show.ts b/src/commands/utilities/highlight-show.ts index 7058675..1eb9fd0 100644 --- a/src/commands/utilities/highlight-show.ts +++ b/src/commands/utilities/highlight-show.ts @@ -1,6 +1,6 @@ import { AllowedMentions, BushCommand, Highlight, type BushMessage, type BushSlashMessage } from '#lib'; import assert from 'assert'; -import { Embed } from 'discord.js'; +import { EmbedBuilder } from 'discord.js'; import { highlightSubcommands } from './highlight-!.js'; export default class HighlightShowCommand extends BushCommand { @@ -28,7 +28,7 @@ export default class HighlightShowCommand extends BushCommand { if (!highlight.words.length) return message.util.reply(`${util.emojis.error} You are not highlighting any words.`); - const embed = new Embed() + const embed = new EmbedBuilder() .setTitle('Highlight List') .setDescription( highlight.words diff --git a/src/commands/utilities/price.ts b/src/commands/utilities/price.ts index f6d1104..0117715 100644 --- a/src/commands/utilities/price.ts +++ b/src/commands/utilities/price.ts @@ -1,6 +1,6 @@ import { BushCommand, type BushMessage } from '#lib'; import assert from 'assert'; -import { ApplicationCommandOptionType, AutocompleteInteraction, Embed, PermissionFlagsBits } from 'discord.js'; +import { ApplicationCommandOptionType, AutocompleteInteraction, EmbedBuilder, PermissionFlagsBits } from 'discord.js'; import Fuse from 'fuse.js'; import got from 'got'; @@ -58,7 +58,7 @@ export default class PriceCommand extends BushCommand { ])) as [Bazaar | undefined, LowestBIN | undefined, LowestBIN | undefined, AuctionAverages | undefined]; let parsedItem = item.toString().toUpperCase().replace(/ /g, '_').replace(/'S/g, ''); - const priceEmbed = new Embed().setColor(errors?.length ? util.colors.warn : util.colors.success).setTimestamp(); + const priceEmbed = new EmbedBuilder().setColor(errors?.length ? util.colors.warn : util.colors.success).setTimestamp(); if (bazaar?.success === false) errors.push('bazaar'); @@ -104,10 +104,12 @@ export default class PriceCommand extends BushCommand { // checks if the item exists in any of the action information otherwise it is not a valid item if (currentLowestBIN?.[parsedItem] || averageLowestBIN?.[parsedItem] || auctionAverages?.[parsedItem]) { priceEmbed.setTitle(`Price Information for ${util.format.input(parsedItem)}`).setFooter({ - text: `${priceEmbed.footer?.text ? `${priceEmbed.footer.text} | ` : ''}All information is based on the last 3 days.` + text: `${ + priceEmbed.data.footer?.text ? `${priceEmbed.data.footer.text} | ` : '' + }All information is based on the last 3 days.` }); } else { - const errorEmbed = new Embed(); + const errorEmbed = new EmbedBuilder(); errorEmbed .setColor(util.colors.error) .setDescription( diff --git a/src/commands/utilities/reminders.ts b/src/commands/utilities/reminders.ts index 10206c1..653274a 100644 --- a/src/commands/utilities/reminders.ts +++ b/src/commands/utilities/reminders.ts @@ -1,6 +1,6 @@ import { BushCommand, ButtonPaginator, Reminder, type BushMessage, type BushSlashMessage } from '#lib'; import assert from 'assert'; -import { APIEmbed } from 'discord-api-types/v9'; +import { APIEmbed } from 'discord-api-types/v10'; import { PermissionFlagsBits } from 'discord.js'; import { Op } from 'sequelize'; diff --git a/src/commands/utilities/suicide.ts b/src/commands/utilities/suicide.ts index be6730b..136de78 100644 --- a/src/commands/utilities/suicide.ts +++ b/src/commands/utilities/suicide.ts @@ -1,5 +1,5 @@ import { AllowedMentions, BushCommand, type BushMessage, type BushSlashMessage } from '#lib'; -import { Embed } from 'discord.js'; +import { EmbedBuilder } from 'discord.js'; export default class SuicideCommand extends BushCommand { public constructor() { @@ -18,7 +18,7 @@ export default class SuicideCommand extends BushCommand { public override async exec(message: BushMessage | BushSlashMessage) { // stolen from https://github.com/dexbiobot/Zeppelin - const suicideEmbed = new Embed() + const suicideEmbed = new EmbedBuilder() .setTitle('Mental Health Resources') .setColor(util.colors.red) .setAuthor({ diff --git a/src/commands/utilities/viewRaw.ts b/src/commands/utilities/viewRaw.ts index be79499..1da26f9 100644 --- a/src/commands/utilities/viewRaw.ts +++ b/src/commands/utilities/viewRaw.ts @@ -1,6 +1,6 @@ import { BushCommand, type ArgType, type BushMessage, type BushSlashMessage, type OptionalArgType } from '#lib'; import assert from 'assert'; -import { ApplicationCommandOptionType, ChannelType, Embed, Message, PermissionFlagsBits } from 'discord.js'; +import { ApplicationCommandOptionType, ChannelType, EmbedBuilder, Message, PermissionFlagsBits } from 'discord.js'; export default class ViewRawCommand extends BushCommand { public constructor() { @@ -88,7 +88,7 @@ export default class ViewRawCommand extends BushCommand { return await message.util.reply({ embeds: [Embed] }); } - public static async getRawData(message: BushMessage, options: { json?: boolean; js: boolean }): Promise<Embed> { + public static async getRawData(message: BushMessage, options: { json?: boolean; js: boolean }): Promise<EmbedBuilder> { const content = options.json || options.js ? options.json @@ -96,7 +96,7 @@ export default class ViewRawCommand extends BushCommand { : util.inspect(message.toJSON()) || '[No Content]' : message.content || '[No Content]'; const lang = options.json ? 'json' : options.js ? 'js' : undefined; - return new Embed() + return new EmbedBuilder() .setFooter({ text: message.author.tag, iconURL: message.author.avatarURL() ?? undefined }) .setTimestamp(message.createdTimestamp) .setColor(message.member?.roles?.color?.color ?? util.colors.default) diff --git a/src/commands/utilities/wolframAlpha.ts b/src/commands/utilities/wolframAlpha.ts index 948aec6..95df5e8 100644 --- a/src/commands/utilities/wolframAlpha.ts +++ b/src/commands/utilities/wolframAlpha.ts @@ -1,7 +1,7 @@ import { AllowedMentions, BushCommand, type BushMessage, type BushSlashMessage } from '#lib'; import { initializeClass as WolframAlphaAPI } from '@notenoughupdates/wolfram-alpha-api'; import assert from 'assert'; -import { ApplicationCommandOptionType, Embed, type MessageOptions } from 'discord.js'; +import { ApplicationCommandOptionType, EmbedBuilder, type MessageOptions } from 'discord.js'; assert(WolframAlphaAPI); @@ -45,7 +45,7 @@ export default class WolframAlphaCommand extends BushCommand { args.image && void message.util.reply({ content: `${util.emojis.loading} Loading...`, embeds: [] }); const waApi = WolframAlphaAPI(client.config.credentials.wolframAlphaAppId); - const decodedEmbed = new Embed().addFields({ + const decodedEmbed = new EmbedBuilder().addFields({ name: '📥 Input', value: await util.inspectCleanRedactCodeblock(args.expression) }); diff --git a/src/lib/common/AutoMod.ts b/src/lib/common/AutoMod.ts index db3e709..5534728 100644 --- a/src/lib/common/AutoMod.ts +++ b/src/lib/common/AutoMod.ts @@ -1,7 +1,15 @@ import { banResponse, Moderation, type BushButtonInteraction, type BushMessage } from '#lib'; import assert from 'assert'; import chalk from 'chalk'; -import { ActionRow, ButtonComponent, ButtonStyle, Embed, GuildMember, PermissionFlagsBits, type TextChannel } from 'discord.js'; +import { + ActionRowBuilder, + ButtonBuilder, + ButtonStyle, + EmbedBuilder, + GuildMember, + PermissionFlagsBits, + type TextChannel +} from 'discord.js'; /** * Handles auto moderation functionality. @@ -153,7 +161,7 @@ export class AutoMod { const color = this.punish({ severity: Severity.TEMP_MUTE, reason: 'everyone mention and scam phrase' } as BadWordDetails); void this.message.guild!.sendLogChannel('automod', { embeds: [ - new Embed() + new EmbedBuilder() .setTitle(`[Severity ${Severity.TEMP_MUTE}] Mention Scam Deleted`) .setDescription( `**User:** ${this.message.author} (${this.message.author.tag})\n**Sent From:** <#${this.message.channel.id}> [Jump to context](${this.message.url})` @@ -163,8 +171,8 @@ export class AutoMod { .setTimestamp() ], components: [ - new ActionRow().addComponents( - new ButtonComponent({ + new ActionRowBuilder<ButtonBuilder>().addComponents( + new ButtonBuilder({ style: ButtonStyle.Danger, label: 'Ban User', customId: `automod;ban;${this.message.author.id};everyone mention and scam phrase` @@ -316,7 +324,7 @@ export class AutoMod { await this.message.guild!.sendLogChannel('automod', { embeds: [ - new Embed() + new EmbedBuilder() .setTitle(`[Severity ${highestOffence.severity}] Automod Action Performed`) .setDescription( `**User:** ${this.message.author} (${this.message.author.tag})\n**Sent From:** <#${ @@ -331,8 +339,8 @@ export class AutoMod { components: highestOffence.severity >= 2 ? [ - new ActionRow().addComponents( - new ButtonComponent({ + new ActionRowBuilder<ButtonBuilder>().addComponents( + new ButtonBuilder({ style: ButtonStyle.Danger, label: 'Ban User', customId: `automod;ban;${this.message.author.id};${highestOffence.reason}` diff --git a/src/lib/common/ButtonPaginator.ts b/src/lib/common/ButtonPaginator.ts index e3d4207..59dcb68 100644 --- a/src/lib/common/ButtonPaginator.ts +++ b/src/lib/common/ButtonPaginator.ts @@ -1,14 +1,7 @@ import { DeleteButton, type BushMessage, type BushSlashMessage } from '#lib'; import { CommandUtil } from 'discord-akairo'; -import { APIEmbed } from 'discord-api-types/v9'; -import { - ActionRow, - ButtonComponent, - ButtonStyle, - Embed, - type MessageActionRowComponent, - type MessageComponentInteraction -} from 'discord.js'; +import { APIEmbed } from 'discord-api-types/v10'; +import { ActionRowBuilder, ButtonBuilder, ButtonStyle, EmbedBuilder, type MessageComponentInteraction } from 'discord.js'; /** * Sends multiple embeds with controls to switch between them @@ -22,7 +15,7 @@ export class ButtonPaginator { /** * The embeds to paginate */ - protected embeds: Embed[] | APIEmbed[]; + protected embeds: EmbedBuilder[] | APIEmbed[]; /** * The optional text to send with the paginator @@ -53,7 +46,7 @@ export class ButtonPaginator { */ protected constructor( message: BushMessage | BushSlashMessage, - embeds: Embed[] | APIEmbed[], + embeds: EmbedBuilder[] | APIEmbed[], text: string | null, deleteOnExit: boolean, startOn: number @@ -66,8 +59,8 @@ export class ButtonPaginator { // add footers for (let i = 0; i < embeds.length; i++) { - if (embeds[i] instanceof Embed) { - (embeds[i] as Embed).setFooter({ text: `Page ${(i + 1).toLocaleString()}/${embeds.length.toLocaleString()}` }); + if (embeds[i] instanceof EmbedBuilder) { + (embeds[i] as EmbedBuilder).setFooter({ text: `Page ${(i + 1).toLocaleString()}/${embeds.length.toLocaleString()}` }); } else { (embeds[i] as APIEmbed).footer = { text: `Page ${(i + 1).toLocaleString()}/${embeds.length.toLocaleString()}` @@ -177,33 +170,33 @@ export class ButtonPaginator { * @param disableAll Whether to disable all buttons * @returns The generated {@link ActionRow} */ - protected getPaginationRow(disableAll = false): ActionRow<MessageActionRowComponent> { - return new ActionRow().addComponents( - new ButtonComponent({ + protected getPaginationRow(disableAll = false) { + return new ActionRowBuilder<ButtonBuilder>().addComponents( + new ButtonBuilder({ style: ButtonStyle.Primary, customId: 'paginate_beginning', emoji: PaginateEmojis.BEGINNING, disabled: disableAll || this.curPage === 0 }), - new ButtonComponent({ + new ButtonBuilder({ style: ButtonStyle.Primary, customId: 'paginate_back', emoji: PaginateEmojis.BACK, disabled: disableAll || this.curPage === 0 }), - new ButtonComponent({ + new ButtonBuilder({ style: ButtonStyle.Primary, customId: 'paginate_stop', emoji: PaginateEmojis.STOP, disabled: disableAll }), - new ButtonComponent({ + new ButtonBuilder({ style: ButtonStyle.Primary, customId: 'paginate_next', emoji: PaginateEmojis.FORWARD, disabled: disableAll || this.curPage === this.numPages - 1 }), - new ButtonComponent({ + new ButtonBuilder({ style: ButtonStyle.Primary, customId: 'paginate_end', emoji: PaginateEmojis.END, @@ -222,7 +215,7 @@ export class ButtonPaginator { */ public static async send( message: BushMessage | BushSlashMessage, - embeds: (Embed | APIEmbed)[], + embeds: EmbedBuilder[] | APIEmbed[], text: string | null = null, deleteOnExit = true, startOn = 1 diff --git a/src/lib/common/ConfirmationPrompt.ts b/src/lib/common/ConfirmationPrompt.ts index 4ff00ce..e86c236 100644 --- a/src/lib/common/ConfirmationPrompt.ts +++ b/src/lib/common/ConfirmationPrompt.ts @@ -1,5 +1,5 @@ import { type BushMessage, type BushSlashMessage } from '#lib'; -import { ActionRow, ButtonComponent, ButtonStyle, type MessageComponentInteraction, type MessageOptions } from 'discord.js'; +import { ActionRowBuilder, ButtonBuilder, ButtonStyle, type MessageComponentInteraction, type MessageOptions } from 'discord.js'; /** * Sends a message with buttons for the user to confirm or cancel the action. @@ -29,9 +29,9 @@ export class ConfirmationPrompt { */ protected async send(): Promise<boolean> { this.messageOptions.components = [ - new ActionRow().addComponents( - new ButtonComponent({ style: ButtonStyle.Success, customId: 'confirmationPrompt_confirm', label: 'Yes' }), - new ButtonComponent({ style: ButtonStyle.Danger, customId: 'confirmationPrompt_cancel', label: 'No' }) + new ActionRowBuilder<ButtonBuilder>().addComponents( + new ButtonBuilder({ style: ButtonStyle.Success, customId: 'confirmationPrompt_confirm', label: 'Yes' }), + new ButtonBuilder({ style: ButtonStyle.Danger, customId: 'confirmationPrompt_cancel', label: 'No' }) ) ]; diff --git a/src/lib/common/DeleteButton.ts b/src/lib/common/DeleteButton.ts index 0a9fd79..4874f78 100644 --- a/src/lib/common/DeleteButton.ts +++ b/src/lib/common/DeleteButton.ts @@ -1,8 +1,8 @@ import { PaginateEmojis, type BushMessage, type BushSlashMessage } from '#lib'; import { CommandUtil } from 'discord-akairo'; import { - ActionRow, - ButtonComponent, + ActionRowBuilder, + ButtonBuilder, ButtonStyle, MessageComponentInteraction, MessageEditOptions, @@ -66,8 +66,8 @@ export class DeleteButton { */ protected updateComponents(edit = false, disable = false): void { this.messageOptions.components = [ - new ActionRow().addComponents( - new ButtonComponent({ + new ActionRowBuilder<ButtonBuilder>().addComponents( + new ButtonBuilder({ style: ButtonStyle.Primary, customId: 'paginate__stop', emoji: PaginateEmojis.STOP, diff --git a/src/lib/common/util/Moderation.ts b/src/lib/common/util/Moderation.ts index afe220c..f388121 100644 --- a/src/lib/common/util/Moderation.ts +++ b/src/lib/common/util/Moderation.ts @@ -11,7 +11,7 @@ import { type ModLogType } from '#lib'; import assert from 'assert'; -import { ActionRow, ButtonComponent, ButtonStyle, Embed, PermissionFlagsBits, type Snowflake } from 'discord.js'; +import { ActionRowBuilder, ButtonBuilder, ButtonStyle, EmbedBuilder, PermissionFlagsBits, type Snowflake } from 'discord.js'; enum punishMap { 'warned' = 'warn', @@ -265,7 +265,7 @@ export class Moderation { const ending = await options.guild.getSetting('punishmentEnding'); const dmEmbed = ending && ending.length && options.sendFooter - ? new Embed().setDescription(ending).setColor(util.colors.newBlurple) + ? new EmbedBuilder().setDescription(ending).setColor(util.colors.newBlurple) : undefined; const appealsEnabled = !!( @@ -286,9 +286,9 @@ export class Moderation { let components; if (appealsEnabled && options.modlog) components = [ - new ActionRow({ + new ActionRowBuilder<ButtonBuilder>({ components: [ - new ButtonComponent({ + new ButtonBuilder({ customId: `appeal;${this.punishmentToPresentTense(options.punishment)};${options.guild.id};${client.users.resolveId( options.user )};${options.modlog}`, diff --git a/src/lib/extensions/discord-akairo/BushClient.ts b/src/lib/extensions/discord-akairo/BushClient.ts index 2fb559c..6516161 100644 --- a/src/lib/extensions/discord-akairo/BushClient.ts +++ b/src/lib/extensions/discord-akairo/BushClient.ts @@ -22,10 +22,11 @@ import type { } from '#lib'; import { patch, type PatchedElements } from '@notenoughupdates/events-intercept'; import * as Sentry from '@sentry/node'; -import { AkairoClient, ContextMenuCommandHandler, version as akairoVersion } from 'discord-akairo'; -import { GatewayIntentBits } from 'discord-api-types/v9'; +import { AkairoClient, ContextMenuCommandHandler, PromptContentModifier, version as akairoVersion } from 'discord-akairo'; +import { GatewayIntentBits } from 'discord-api-types/v10'; import { ActivityType, + MessagePayload, Options, Partials, Structures, @@ -36,7 +37,6 @@ import { type Message, type MessageEditOptions, type MessageOptions, - type MessagePayload, type ReplyMessageOptions, type Snowflake, type WebhookEditMessageOptions @@ -78,7 +78,6 @@ import { BushNewsChannel } from '../discord.js/BushNewsChannel.js'; import { BushPresence } from '../discord.js/BushPresence.js'; import { BushRole } from '../discord.js/BushRole.js'; import { BushSelectMenuInteraction } from '../discord.js/BushSelectMenuInteraction.js'; -import { BushStoreChannel } from '../discord.js/BushStoreChannel.js'; import { BushTextChannel } from '../discord.js/BushTextChannel.js'; import { BushThreadChannel } from '../discord.js/BushThreadChannel.js'; import { BushThreadMember } from '../discord.js/BushThreadMember.js'; @@ -235,6 +234,17 @@ export class BushClient<Ready extends boolean = boolean> extends AkairoClient<Re directory: path.join(__dirname, '..', '..', '..', 'tasks'), automateCategories: true }); + + const modify: PromptContentModifier = async (message, text, data) => { + const ending = '\n\n Type **cancel** to cancel the command'; + const options = typeof text === 'function' ? await text(message, data) : text; + if (typeof options === 'string') return text + ending; + if (options instanceof MessagePayload) { + if (options.options.content) options.options.content += ending; + } else options.content += ending; + return options; + }; + this.commandHandler = new BushCommandHandler(this, { directory: path.join(__dirname, '..', '..', '..', 'commands'), prefix: async ({ guild }: Message) => { @@ -251,9 +261,8 @@ export class BushClient<Ready extends boolean = boolean> extends AkairoClient<Re prompt: { start: 'Placeholder argument prompt. **If you see this please tell my developers**.', retry: 'Placeholder failed argument prompt. **If you see this please tell my developers**.', - modifyStart: (_: Message, str: string): string => `${str}\n\n Type \`cancel\` to cancel the command`, - modifyRetry: (_: Message, str: string): string => - `${str.replace('{error}', this.util.emojis.error)}\n\n Type \`cancel\` to cancel the command`, + modifyStart: modify, + modifyRetry: modify, timeout: ':hourglass: You took too long the command has been cancelled.', ended: 'You exceeded the maximum amount of tries the command has been cancelled', cancel: 'The command has been cancelled', @@ -317,7 +326,6 @@ export class BushClient<Ready extends boolean = boolean> extends AkairoClient<Re Structures.extend('VoiceChannel', () => BushVoiceChannel); Structures.extend('CategoryChannel', () => BushCategoryChannel); Structures.extend('NewsChannel', () => BushNewsChannel); - Structures.extend('StoreChannel', () => BushStoreChannel); Structures.extend('ThreadChannel', () => BushThreadChannel); Structures.extend('GuildMember', () => BushGuildMember); Structures.extend('ThreadMember', () => BushThreadMember); diff --git a/src/lib/extensions/discord-akairo/BushClientUtil.ts b/src/lib/extensions/discord-akairo/BushClientUtil.ts index e92abe7..563df3d 100644 --- a/src/lib/extensions/discord-akairo/BushClientUtil.ts +++ b/src/lib/extensions/discord-akairo/BushClientUtil.ts @@ -22,10 +22,10 @@ import assert from 'assert'; import { exec } from 'child_process'; import deepLock from 'deep-lock'; import { ClientUtil, Util as AkairoUtil } from 'discord-akairo'; -import { APIEmbed, APIMessage, OAuth2Scopes, Routes } from 'discord-api-types/v9'; +import { APIEmbed, APIMessage, OAuth2Scopes, Routes } from 'discord-api-types/v10'; import { Constants as DiscordConstants, - Embed, + EmbedBuilder, GuildMember, Message, PermissionFlagsBits, @@ -920,7 +920,11 @@ export class BushClientUtil extends ClientUtil { */ public get invite() { return client.generateInvite({ - permissions: PermissionsBitField.All, + permissions: + PermissionsBitField.All - + PermissionFlagsBits.UseEmbeddedActivities - + PermissionFlagsBits.ViewGuildInsights - + PermissionFlagsBits.Stream, scopes: [OAuth2Scopes.Bot, OAuth2Scopes.ApplicationsCommands] }); } @@ -970,17 +974,17 @@ export class BushClientUtil extends ClientUtil { * @param embed The options to be applied to the (first) embed. * @param lines Each line of the description as an element in an array. */ - public overflowEmbed(embed: Omit<APIEmbed, 'description'>, lines: string[], maxLength = 4096): Embed[] { - const embeds: Embed[] = []; + public overflowEmbed(embed: Omit<APIEmbed, 'description'>, lines: string[], maxLength = 4096): EmbedBuilder[] { + const embeds: EmbedBuilder[] = []; const makeEmbed = () => { - embeds.push(new Embed().setColor(embed.color ?? null)); + embeds.push(new EmbedBuilder().setColor(embed.color ?? null)); return embeds.at(-1)!; }; for (const line of lines) { let current = embeds.length ? embeds.at(-1)! : makeEmbed(); - const joined = current.description ? `${current.description}\n${line}` : line; + const joined = current.data.description ? `${current.data.description}\n${line}` : line; if (joined.length >= maxLength) current = makeEmbed(); current.setDescription(joined); diff --git a/src/lib/extensions/discord-akairo/BushCommand.ts b/src/lib/extensions/discord-akairo/BushCommand.ts index ff3748e..febe95a 100644 --- a/src/lib/extensions/discord-akairo/BushCommand.ts +++ b/src/lib/extensions/discord-akairo/BushCommand.ts @@ -18,7 +18,6 @@ import { type BushRole, type BushSlashMessage, type BushStageChannel, - type BushStoreChannel, type BushTask, type BushTextChannel, type BushThreadChannel, @@ -72,10 +71,6 @@ export interface OverriddenBaseArgumentType extends BaseArgumentType { categoryChannels: Collection<string, BushCategoryChannel> | null; newsChannel: BushNewsChannel | null; newsChannels: Collection<string, BushNewsChannel> | null; - // eslint-disable-next-line deprecation/deprecation - storeChannel: BushStoreChannel | null; - // eslint-disable-next-line deprecation/deprecation - storeChannels: Collection<string, BushStoreChannel> | null; stageChannel: BushStageChannel | null; stageChannels: Collection<string, BushStageChannel> | null; threadChannel: BushThreadChannel | null; diff --git a/src/lib/extensions/discord.js/BushApplicationCommandManager.ts b/src/lib/extensions/discord.js/BushApplicationCommandManager.ts index 68153b9..dc27dbf 100644 --- a/src/lib/extensions/discord.js/BushApplicationCommandManager.ts +++ b/src/lib/extensions/discord.js/BushApplicationCommandManager.ts @@ -6,7 +6,7 @@ import type { BushGuildResolvable, StripPrivate } from '#lib'; -import type { APIApplicationCommand } from 'discord-api-types/v9'; +import type { APIApplicationCommand } from 'discord-api-types/v10'; import { ApplicationCommandManager, CachedManager, diff --git a/src/lib/extensions/discord.js/BushApplicationCommandPermissionsManager.ts b/src/lib/extensions/discord.js/BushApplicationCommandPermissionsManager.ts index 49d4234..401f3e2 100644 --- a/src/lib/extensions/discord.js/BushApplicationCommandPermissionsManager.ts +++ b/src/lib/extensions/discord.js/BushApplicationCommandPermissionsManager.ts @@ -1,5 +1,5 @@ import type { BushClient, BushRoleResolvable, BushUserResolvable } from '#lib'; -import type { APIApplicationCommandPermission } from 'discord-api-types/v9'; +import type { APIApplicationCommandPermission } from 'discord-api-types/v10'; import { ApplicationCommandPermissionType, BaseManager, diff --git a/src/lib/extensions/discord.js/BushButtonInteraction.ts b/src/lib/extensions/discord.js/BushButtonInteraction.ts index 89cfabd..368d19d 100644 --- a/src/lib/extensions/discord.js/BushButtonInteraction.ts +++ b/src/lib/extensions/discord.js/BushButtonInteraction.ts @@ -1,5 +1,5 @@ import type { BushClient, BushGuild, BushGuildMember, BushGuildTextBasedChannel, BushTextBasedChannel, BushUser } from '#lib'; -import type { APIInteractionGuildMember } from 'discord-api-types/v9'; +import type { APIInteractionGuildMember } from 'discord-api-types/v10'; import { ButtonInteraction, type CacheType, type CacheTypeReducer } from 'discord.js'; import type { RawMessageButtonInteractionData } from 'discord.js/typings/rawDataTypes'; diff --git a/src/lib/extensions/discord.js/BushCategoryChannel.ts b/src/lib/extensions/discord.js/BushCategoryChannel.ts index 8c02a68..a2e1e1c 100644 --- a/src/lib/extensions/discord.js/BushCategoryChannel.ts +++ b/src/lib/extensions/discord.js/BushCategoryChannel.ts @@ -3,7 +3,6 @@ import { BushGuildBasedChannel, BushNewsChannel, BushStageChannel, - BushStoreChannel, BushTextBasedChannel, BushTextChannel, BushThreadChannel, @@ -35,8 +34,6 @@ export interface BushCategoryChannel extends CategoryChannel { isVoice(): this is BushVoiceChannel; isCategory(): this is BushCategoryChannel; isNews(): this is BushNewsChannel; - // eslint-disable-next-line deprecation/deprecation - isStore(): this is BushStoreChannel; isThread(): this is BushThreadChannel; isStage(): this is BushStageChannel; isTextBased(): this is BushGuildBasedChannel & BushTextBasedChannel; diff --git a/src/lib/extensions/discord.js/BushCategoryChannelChildManager.ts b/src/lib/extensions/discord.js/BushCategoryChannelChildManager.ts index b9a7ac7..2b0d56b 100644 --- a/src/lib/extensions/discord.js/BushCategoryChannelChildManager.ts +++ b/src/lib/extensions/discord.js/BushCategoryChannelChildManager.ts @@ -1,20 +1,23 @@ -/* eslint-disable deprecation/deprecation */ import type { BushCategoryChannel, BushGuild, BushGuildChannelResolvable, BushMappedChannelCategoryTypes, BushNonCategoryGuildBasedChannel, - BushStoreChannel, BushTextChannel } from '#lib'; -import type { CategoryChannelType, CategoryCreateChannelOptions, ChannelType, DataManager, Snowflake } from 'discord.js'; +import type { + CategoryChannelChildManager, + CategoryChannelType, + CategoryCreateChannelOptions, + DataManager, + Snowflake +} from 'discord.js'; -export declare class BushCategoryChannelChildManager extends DataManager< - Snowflake, - BushNonCategoryGuildBasedChannel, - BushGuildChannelResolvable -> { +export declare class BushCategoryChannelChildManager + extends DataManager<Snowflake, BushNonCategoryGuildBasedChannel, BushGuildChannelResolvable> + implements CategoryChannelChildManager +{ private constructor(channel: BushCategoryChannel); /** @@ -33,20 +36,9 @@ export declare class BushCategoryChannelChildManager extends DataManager< * @param name The name of the new channel * @param options Options for creating the new channel */ - public create<T extends Exclude<CategoryChannelType, ChannelType.GuildStore>>( + public create<T extends CategoryChannelType>( name: string, options: CategoryCreateChannelOptions & { type: T } ): Promise<BushMappedChannelCategoryTypes[T]>; - /** - * Creates a new channel within this category. - * <info>You cannot create a channel of type {@link ChannelType.GuildCategory} inside a CategoryChannel.</info> - * @param name The name of the new channel - * @param options Options for creating the new channel - * @deprecated See [Self-serve Game Selling Deprecation](https://support-dev.discord.com/hc/en-us/articles/4414590563479) for more information - */ - public create( - name: string, - options: CategoryCreateChannelOptions & { type: ChannelType.GuildStore } - ): Promise<BushStoreChannel>; public create(name: string, options?: CategoryCreateChannelOptions): Promise<BushTextChannel>; } diff --git a/src/lib/extensions/discord.js/BushChannel.ts b/src/lib/extensions/discord.js/BushChannel.ts index 3f0d070..e66135c 100644 --- a/src/lib/extensions/discord.js/BushChannel.ts +++ b/src/lib/extensions/discord.js/BushChannel.ts @@ -1,11 +1,9 @@ -/* eslint-disable deprecation/deprecation */ import type { BushCategoryChannel, BushClient, BushDMChannel, BushNewsChannel, BushStageChannel, - BushStoreChannel, BushTextBasedChannel, BushTextChannel, BushThreadChannel, @@ -34,7 +32,6 @@ export declare class BushChannel extends Channel { public isVoice(): this is BushVoiceChannel; public isCategory(): this is BushCategoryChannel; public isNews(): this is BushNewsChannel; - public isStore(): this is BushStoreChannel; public isThread(): this is BushThreadChannel; public isStage(): this is BushStageChannel; public isTextBased(): this is BushTextBasedChannel; diff --git a/src/lib/extensions/discord.js/BushChatInputCommandInteraction.ts b/src/lib/extensions/discord.js/BushChatInputCommandInteraction.ts index 5dbf7b9..2491a68 100644 --- a/src/lib/extensions/discord.js/BushChatInputCommandInteraction.ts +++ b/src/lib/extensions/discord.js/BushChatInputCommandInteraction.ts @@ -10,7 +10,7 @@ import type { BushTextBasedChannel, BushUser } from '#lib'; -import type { APIInteractionGuildMember } from 'discord-api-types/v9'; +import type { APIInteractionGuildMember } from 'discord-api-types/v10'; import { ChatInputCommandInteraction, type CacheType, type CacheTypeReducer, type Invite, type Snowflake } from 'discord.js'; import type { RawCommandInteractionData } from 'discord.js/typings/rawDataTypes'; diff --git a/src/lib/extensions/discord.js/BushClientEvents.ts b/src/lib/extensions/discord.js/BushClientEvents.ts index 4a10ce5..fc9993e 100644 --- a/src/lib/extensions/discord.js/BushClientEvents.ts +++ b/src/lib/extensions/discord.js/BushClientEvents.ts @@ -97,7 +97,8 @@ export interface BushClientEvents extends AkairoClientEvents { reaction: BushMessageReaction | PartialBushMessageReaction ]; messageDeleteBulk: [ - messages: Collection<Snowflake, BushMessage | PartialBushMessage> + messages: Collection<Snowflake, BushMessage | PartialBushMessage>, + channel: BushTextBasedChannel ]; messageReactionAdd: [ reaction: BushMessageReaction | PartialBushMessageReaction, @@ -119,14 +120,18 @@ export interface BushClientEvents extends AkairoClientEvents { roleUpdate: [oldRole: BushRole, newRole: BushRole]; threadCreate: [thread: BushThreadChannel, newlyCreated: boolean]; threadDelete: [thread: BushThreadChannel]; - threadListSync: [threads: Collection<Snowflake, BushThreadChannel>]; + threadListSync: [ + threads: Collection<Snowflake, BushThreadChannel>, + guild: BushGuild + ]; threadMemberUpdate: [ oldMember: BushThreadMember, newMember: BushThreadMember ]; threadMembersUpdate: [ oldMembers: Collection<Snowflake, BushThreadMember>, - newMembers: Collection<Snowflake, BushThreadMember> + newMembers: Collection<Snowflake, BushThreadMember>, + thread: BushThreadChannel ]; threadUpdate: [oldThread: BushThreadChannel, newThread: BushThreadChannel]; typingStart: [typing: Typing]; diff --git a/src/lib/extensions/discord.js/BushDMChannel.ts b/src/lib/extensions/discord.js/BushDMChannel.ts index dc7d309..87382ec 100644 --- a/src/lib/extensions/discord.js/BushDMChannel.ts +++ b/src/lib/extensions/discord.js/BushDMChannel.ts @@ -1,11 +1,9 @@ -/* eslint-disable deprecation/deprecation */ import type { BushCategoryChannel, BushClient, BushMessageManager, BushNewsChannel, BushStageChannel, - BushStoreChannel, BushTextBasedChannel, BushTextChannel, BushThreadChannel, @@ -36,7 +34,6 @@ export interface BushDMChannel extends DMChannel { isVoice(): this is BushVoiceChannel; isCategory(): this is BushCategoryChannel; isNews(): this is BushNewsChannel; - isStore(): this is BushStoreChannel; isThread(): this is BushThreadChannel; isStage(): this is BushStageChannel; isTextBased(): this is BushTextBasedChannel; diff --git a/src/lib/extensions/discord.js/BushGuild.ts b/src/lib/extensions/discord.js/BushGuild.ts index b0a34e7..8b1b5fa 100644 --- a/src/lib/extensions/discord.js/BushGuild.ts +++ b/src/lib/extensions/discord.js/BushGuild.ts @@ -20,7 +20,7 @@ import { type GuildLogType, type GuildModel } from '#lib'; -import { APIMessage } from 'discord-api-types/v9'; +import { APIMessage } from 'discord-api-types/v10'; import { Collection, Guild, diff --git a/src/lib/extensions/discord.js/BushGuildChannel.ts b/src/lib/extensions/discord.js/BushGuildChannel.ts index dd523e5..62bf05a 100644 --- a/src/lib/extensions/discord.js/BushGuildChannel.ts +++ b/src/lib/extensions/discord.js/BushGuildChannel.ts @@ -1,4 +1,3 @@ -/* eslint-disable deprecation/deprecation */ import type { BushCategoryChannel, BushClient, @@ -7,7 +6,6 @@ import type { BushGuildBasedChannel, BushNewsChannel, BushStageChannel, - BushStoreChannel, BushTextBasedChannel, BushTextChannel, BushThreadChannel, @@ -42,7 +40,6 @@ export interface BushGuildChannel extends GuildChannel { isVoice(): this is BushVoiceChannel; isCategory(): this is BushCategoryChannel; isNews(): this is BushNewsChannel; - isStore(): this is BushStoreChannel; isThread(): this is BushThreadChannel; isStage(): this is BushStageChannel; isTextBased(): this is BushGuildBasedChannel & BushTextBasedChannel; diff --git a/src/lib/extensions/discord.js/BushGuildChannelManager.ts b/src/lib/extensions/discord.js/BushGuildChannelManager.ts index 91bff07..4048b98 100644 --- a/src/lib/extensions/discord.js/BushGuildChannelManager.ts +++ b/src/lib/extensions/discord.js/BushGuildChannelManager.ts @@ -5,13 +5,11 @@ import type { BushGuildChannel, BushMappedGuildChannelTypes, BushNonThreadGuildBasedChannel, - BushStoreChannel, BushTextChannel } from '#lib'; import { CachedManager, ChannelData, - ChannelType, ChannelWebhookCreateOptions, SetChannelPositionOptions, Webhook, @@ -67,38 +65,10 @@ export declare class BushGuildChannelManager * ], * }) */ - public create<T extends Exclude<GuildChannelTypes, ChannelType.GuildStore>>( + public create<T extends GuildChannelTypes>( name: string, options: GuildChannelCreateOptions & { type: T } ): Promise<BushMappedGuildChannelTypes[T]>; - - /** - * Creates a new channel in the guild. - * @param name The name of the new channel - * @param options Options for creating the new channel - * @example - * // Create a new text channel - * guild.channels.create('new-general', { reason: 'Needed a cool new channel' }) - * .then(console.log) - * .catch(console.error); - * @example - * // Create a new channel with permission overwrites - * guild.channels.create('new-voice', { - * type: 'GuildVoice', - * permissionOverwrites: [ - * { - * id: message.author.id, - * deny: [PermissionFlagsBits.ViewChannel], - * }, - * ], - * }) - * @deprecated See [Self-serve Game Selling Deprecation](https://support-dev.discord.com/hc/en-us/articles/4414590563479) for more information - */ - public create( - name: string, - options: GuildChannelCreateOptions & { type: ChannelType.GuildStore } - ): // eslint-disable-next-line deprecation/deprecation - Promise<BushStoreChannel>; public create(name: string, options?: GuildChannelCreateOptions): Promise<BushTextChannel>; /** diff --git a/src/lib/extensions/discord.js/BushMessageManager.ts b/src/lib/extensions/discord.js/BushMessageManager.ts index 80b7a21..edb7982 100644 --- a/src/lib/extensions/discord.js/BushMessageManager.ts +++ b/src/lib/extensions/discord.js/BushMessageManager.ts @@ -1,9 +1,9 @@ import { BushMessageResolvable, BushTextBasedChannel, type BushMessage } from '#lib'; import { CachedManager, + FetchMessageOptions, + FetchMessagesOptions, MessageManager, - type BaseFetchOptions, - type ChannelLogsQueryOptions, type Collection, type EmojiIdentifierResolvable, type MessageEditOptions, @@ -72,8 +72,8 @@ export declare class BushMessageManager * .then(messages => console.log(`${messages.filter(m => m.author.id === '84484653687267328').size} messages`)) * .catch(console.error); */ - public fetch(message: Snowflake, options?: BaseFetchOptions): Promise<BushMessage>; - public fetch(options?: ChannelLogsQueryOptions, cacheOptions?: BaseFetchOptions): Promise<Collection<Snowflake, BushMessage>>; + public fetch(options: BushMessageResolvable | FetchMessageOptions): Promise<BushMessage>; + public fetch(options?: FetchMessagesOptions): Promise<Collection<Snowflake, BushMessage>>; /** * Fetches the pinned messages of this channel and returns a collection of them. @@ -107,3 +107,7 @@ export declare class BushMessageManager */ public unpin(message: BushMessageResolvable): Promise<void>; } + +export interface BushFetchMessageOptions extends FetchMessageOptions { + message: BushMessageResolvable; +} diff --git a/src/lib/extensions/discord.js/BushModalSubmitInteraction.ts b/src/lib/extensions/discord.js/BushModalSubmitInteraction.ts index b05c0d7..9bdc9e5 100644 --- a/src/lib/extensions/discord.js/BushModalSubmitInteraction.ts +++ b/src/lib/extensions/discord.js/BushModalSubmitInteraction.ts @@ -7,9 +7,10 @@ import type { BushTextBasedChannel, BushUser } from '#lib'; -import type { APIInteractionGuildMember, APIModalSubmitInteraction } from 'discord-api-types/v9'; +import type { APIInteractionGuildMember, APIModalSubmitInteraction } from 'discord-api-types/v10'; import { InteractionDeferUpdateOptions, + InteractionResponse, InteractionUpdateOptions, MessagePayload, ModalSubmitInteraction, @@ -49,7 +50,7 @@ export interface BushModalMessageModalSubmitInteraction<Cached extends CacheType /** * The message associated with this interaction */ - message: BushGuildCacheMessage<Cached> | null; + message: BushGuildCacheMessage<Cached>; /** * Updates the original message of the component on which the interaction was received on. @@ -64,7 +65,7 @@ export interface BushModalMessageModalSubmitInteraction<Cached extends CacheType * .catch(console.error); */ update(options: InteractionUpdateOptions & { fetchReply: true }): Promise<BushGuildCacheMessage<Cached>>; - update(options: string | MessagePayload | InteractionUpdateOptions): Promise<void>; + update(options: string | MessagePayload | InteractionUpdateOptions): Promise<InteractionResponse>; /** * Defers an update to the message to which the component was attached. @@ -76,7 +77,7 @@ export interface BushModalMessageModalSubmitInteraction<Cached extends CacheType * .catch(console.error); */ deferUpdate(options: InteractionDeferUpdateOptions & { fetchReply: true }): Promise<BushGuildCacheMessage<Cached>>; - deferUpdate(options?: InteractionDeferUpdateOptions): Promise<void>; + deferUpdate(options?: InteractionDeferUpdateOptions): Promise<InteractionResponse>; /** * Indicates whether this interaction is received from a guild. diff --git a/src/lib/extensions/discord.js/BushSelectMenuInteraction.ts b/src/lib/extensions/discord.js/BushSelectMenuInteraction.ts index 35e6301..66a5ea9 100644 --- a/src/lib/extensions/discord.js/BushSelectMenuInteraction.ts +++ b/src/lib/extensions/discord.js/BushSelectMenuInteraction.ts @@ -1,5 +1,5 @@ import type { BushClient, BushGuild, BushGuildMember, BushGuildTextBasedChannel, BushTextBasedChannel, BushUser } from '#lib'; -import type { APIInteractionGuildMember } from 'discord-api-types/v9'; +import type { APIInteractionGuildMember } from 'discord-api-types/v10'; import { SelectMenuInteraction, type CacheType, type CacheTypeReducer } from 'discord.js'; import type { RawMessageSelectMenuInteractionData } from 'discord.js/typings/rawDataTypes'; diff --git a/src/lib/extensions/discord.js/BushStoreChannel.ts b/src/lib/extensions/discord.js/BushStoreChannel.ts deleted file mode 100644 index a2cc114..0000000 --- a/src/lib/extensions/discord.js/BushStoreChannel.ts +++ /dev/null @@ -1,46 +0,0 @@ -/* eslint-disable deprecation/deprecation */ -import type { - BushCategoryChannel, - BushClient, - BushDMChannel, - BushGuild, - BushGuildBasedChannel, - BushGuildMember, - BushNewsChannel, - BushStageChannel, - BushTextBasedChannel, - BushTextChannel, - BushThreadChannel, - BushVoiceBasedChannel, - BushVoiceChannel -} from '#lib'; -import { PartialGroupDMChannel, StoreChannel, type Collection, type Snowflake } from 'discord.js'; -import type { RawGuildChannelData } from 'discord.js/typings/rawDataTypes'; - -/** - * Represents a guild store channel on Discord. - * @deprecated Store channels are deprecated and will be removed from Discord in March 2022. See [Self-serve Game Selling Deprecation](https://support-dev.discord.com/hc/en-us/articles/4414590563479) for more information - */ -export class BushStoreChannel extends StoreChannel { - public declare guild: BushGuild; - - public constructor(guild: BushGuild, data?: RawGuildChannelData, client?: BushClient) { - super(guild, data, client); - } -} - -export interface BushStoreChannel extends StoreChannel { - get members(): Collection<Snowflake, BushGuildMember>; - get parent(): BushCategoryChannel | null; - isText(): this is BushTextChannel; - isDM(): this is BushDMChannel; - isDMBased(): this is PartialGroupDMChannel | BushDMChannel; - isVoice(): this is BushVoiceChannel; - isCategory(): this is BushCategoryChannel; - isNews(): this is BushNewsChannel; - isStore(): this is BushStoreChannel; - isThread(): this is BushThreadChannel; - isStage(): this is BushStageChannel; - isTextBased(): this is BushGuildBasedChannel & BushTextBasedChannel; - isVoiceBased(): this is BushVoiceBasedChannel; -} diff --git a/src/lib/extensions/discord.js/BushTextChannel.ts b/src/lib/extensions/discord.js/BushTextChannel.ts index ad54b76..575de20 100644 --- a/src/lib/extensions/discord.js/BushTextChannel.ts +++ b/src/lib/extensions/discord.js/BushTextChannel.ts @@ -1,4 +1,3 @@ -/* eslint-disable deprecation/deprecation */ import type { BushCategoryChannel, BushDMChannel, @@ -7,7 +6,6 @@ import type { BushMessageManager, BushNewsChannel, BushStageChannel, - BushStoreChannel, BushTextBasedChannel, BushThreadChannel, BushThreadManager, @@ -37,7 +35,6 @@ export interface BushTextChannel extends TextChannel { isVoice(): this is BushVoiceChannel; isCategory(): this is BushCategoryChannel; isNews(): this is BushNewsChannel; - isStore(): this is BushStoreChannel; isThread(): this is BushThreadChannel; isStage(): this is BushStageChannel; isTextBased(): this is BushGuildBasedChannel & BushTextBasedChannel; diff --git a/src/lib/extensions/discord.js/BushThreadChannel.ts b/src/lib/extensions/discord.js/BushThreadChannel.ts index 5663ba4..8b941f9 100644 --- a/src/lib/extensions/discord.js/BushThreadChannel.ts +++ b/src/lib/extensions/discord.js/BushThreadChannel.ts @@ -1,4 +1,3 @@ -/* eslint-disable deprecation/deprecation */ import type { BushCategoryChannel, BushClient, @@ -9,7 +8,6 @@ import type { BushMessageManager, BushNewsChannel, BushStageChannel, - BushStoreChannel, BushTextBasedChannel, BushTextChannel, BushThreadMemberManager, @@ -42,7 +40,6 @@ export interface BushThreadChannel extends ThreadChannel { isVoice(): this is BushVoiceChannel; isCategory(): this is BushCategoryChannel; isNews(): this is BushNewsChannel; - isStore(): this is BushStoreChannel; isThread(): this is BushThreadChannel; isStage(): this is BushStageChannel; isTextBased(): this is BushGuildBasedChannel & BushTextBasedChannel; diff --git a/src/lib/extensions/discord.js/BushVoiceChannel.ts b/src/lib/extensions/discord.js/BushVoiceChannel.ts index 6691045..6966727 100644 --- a/src/lib/extensions/discord.js/BushVoiceChannel.ts +++ b/src/lib/extensions/discord.js/BushVoiceChannel.ts @@ -1,4 +1,3 @@ -/* eslint-disable deprecation/deprecation */ import type { BushCategoryChannel, BushClient, @@ -8,7 +7,6 @@ import type { BushGuildMember, BushNewsChannel, BushStageChannel, - BushStoreChannel, BushTextBasedChannel, BushTextChannel, BushThreadChannel, @@ -35,7 +33,6 @@ export interface BushVoiceChannel extends VoiceChannel { isVoice(): this is BushVoiceChannel; isCategory(): this is BushCategoryChannel; isNews(): this is BushNewsChannel; - isStore(): this is BushStoreChannel; isThread(): this is BushThreadChannel; isStage(): this is BushStageChannel; isTextBased(): this is BushGuildBasedChannel & BushTextBasedChannel; diff --git a/src/lib/extensions/discord.js/other.ts b/src/lib/extensions/discord.js/other.ts index d7fb15b..086ace0 100644 --- a/src/lib/extensions/discord.js/other.ts +++ b/src/lib/extensions/discord.js/other.ts @@ -1,4 +1,3 @@ -/* eslint-disable deprecation/deprecation */ import type { BushApplicationCommand, BushCategoryChannel, @@ -11,7 +10,6 @@ import type { BushReactionEmoji, BushRole, BushStageChannel, - BushStoreChannel, BushTextChannel, BushThreadChannel, BushThreadMember, @@ -19,7 +17,7 @@ import type { BushVoiceChannel, PartialBushDMChannel } from '#lib'; -import { APIMessage } from 'discord-api-types/v9'; +import { APIMessage } from 'discord-api-types/v10'; import type { ApplicationCommandResolvable, CacheType, @@ -109,7 +107,6 @@ export type BushAnyChannel = | PartialBushDMChannel | BushNewsChannel | BushStageChannel - | BushStoreChannel | BushTextChannel | BushThreadChannel | BushVoiceChannel; @@ -146,8 +143,8 @@ export interface BushMappedChannelCategoryTypes { [ChannelType.GuildNews]: BushNewsChannel; [ChannelType.GuildVoice]: BushVoiceChannel; [ChannelType.GuildText]: BushTextChannel; - [ChannelType.GuildStore]: BushStoreChannel; [ChannelType.GuildStageVoice]: BushStageChannel; + [ChannelType.GuildForum]: never; // TODO: Fix when guild forums come out } export type BushMappedGuildChannelTypes = { diff --git a/src/lib/index.ts b/src/lib/index.ts index eb7cf76..59d8b53 100644 --- a/src/lib/index.ts +++ b/src/lib/index.ts @@ -57,7 +57,6 @@ export * from './extensions/discord.js/BushRole.js'; export * from './extensions/discord.js/BushSelectMenuInteraction.js'; export * from './extensions/discord.js/BushStageChannel.js'; export * from './extensions/discord.js/BushStageInstance.js'; -export * from './extensions/discord.js/BushStoreChannel.js'; export * from './extensions/discord.js/BushTextChannel.js'; export * from './extensions/discord.js/BushThreadChannel.js'; export type { BushThreadManager } from './extensions/discord.js/BushThreadManager.js'; diff --git a/src/lib/utils/BushConstants.ts b/src/lib/utils/BushConstants.ts index df69806..9befc5a 100644 --- a/src/lib/utils/BushConstants.ts +++ b/src/lib/utils/BushConstants.ts @@ -1,4 +1,4 @@ -import { Colors } from 'discord.js'; +import { Colors, GuildFeature } from 'discord.js'; import { BushClientUtil } from '../extensions/discord-akairo/BushClientUtil.js'; const rawCapeUrl = 'https://raw.githubusercontent.com/NotEnoughUpdates/capes/master/'; @@ -243,38 +243,43 @@ export class BushConstants { UseExternalStickers: { name: 'Use External Stickers', important: false }, SendMessagesInThreads: { name: 'Send Messages In Threads', important: false }, StartEmbeddedActivities: { name: 'Start Activities', important: false }, - ModerateMembers: { name: 'Timeout Members', important: true } + ModerateMembers: { name: 'Timeout Members', important: true }, + UseEmbeddedActivities: { name: 'Use Activities', important: false } }, // prettier-ignore features: { - VERIFIED: { name: 'Verified', important: true, emoji: '<:verified:850795049817473066>', weight: 0 }, - PARTNERED: { name: 'Partnered', important: true, emoji: '<:partneredServer:850794851955507240>', weight: 1 }, - MORE_STICKERS: { name: 'More Stickers', important: true, emoji: null, weight: 2 }, - MORE_EMOJI: { name: 'More Emoji', important: true, emoji: '<:moreEmoji:850786853497602080>', weight: 3 }, - FEATURABLE: { name: 'Featurable', important: true, emoji: '<:featurable:850786776372084756>', weight: 4 }, - RELAY_ENABLED: { name: 'Relay Enabled', important: true, emoji: '<:relayEnabled:850790531441229834>', weight: 5 }, - DISCOVERABLE: { name: 'Discoverable', important: true, emoji: '<:discoverable:850786735360966656>', weight: 6 }, + [GuildFeature.Verified]: { name: 'Verified', important: true, emoji: '<:verified:850795049817473066>', weight: 0 }, + [GuildFeature.Partnered]: { name: 'Partnered', important: true, emoji: '<:partneredServer:850794851955507240>', weight: 1 }, + [GuildFeature.MoreStickers]: { name: 'More Stickers', important: true, emoji: null, weight: 2 }, + 'MORE_EMOJIS': { name: 'More Emoji', important: true, emoji: '<:moreEmoji:850786853497602080>', weight: 3 }, + [GuildFeature.Featurable]: { name: 'Featurable', important: true, emoji: '<:featurable:850786776372084756>', weight: 4 }, + [GuildFeature.RelayEnabled]: { name: 'Relay Enabled', important: true, emoji: '<:relayEnabled:850790531441229834>', weight: 5 }, + [GuildFeature.Discoverable]: { name: 'Discoverable', important: true, emoji: '<:discoverable:850786735360966656>', weight: 6 }, ENABLED_DISCOVERABLE_BEFORE: { name: 'Enabled Discovery Before', important: false, emoji: '<:enabledDiscoverableBefore:850786754670624828>', weight: 7 }, - MONETIZATION_ENABLED: { name: 'Monetization Enabled', important: true, emoji: null, weight: 8 }, - TICKETED_EVENTS_ENABLED: { name: 'Ticketed Events Enabled', important: true, emoji: null, weight: 9 }, - PREVIEW_ENABLED: { name: 'Preview Enabled', important: true, emoji: '<:previewEnabled:850790508266913823>', weight: 10 }, - COMMERCE: { name: 'Store Channels', important: true, emoji: '<:storeChannels:850786692432396338>', weight: 11 }, - VANITY_URL: { name: 'Vanity URL', important: false, emoji: '<:vanityURL:850790553079644160>', weight: 12 }, - VIP_REGIONS: { name: 'VIP Regions', important: false, emoji: '<:VIPRegions:850794697496854538>', weight: 13 }, - ANIMATED_ICON: { name: 'Animated Icon', important: false, emoji: '<:animatedIcon:850774498071412746>', weight: 14 }, - BANNER: { name: 'Banner', important: false, emoji: '<:banner:850786673150787614>', weight: 15 }, - INVITE_SPLASH: { name: 'Invite Splash', important: false, emoji: '<:inviteSplash:850786798246559754>', weight: 16 }, - PRIVATE_THREADS: { name: 'Private Threads', important: false, emoji: '<:privateThreads:869763711894700093>', weight: 17 }, - THREE_DAY_THREAD_ARCHIVE: { name: 'Three Day Thread Archive', important: false, emoji: '<:threeDayThreadArchive:869767841652564008>', weight: 19 }, - SEVEN_DAY_THREAD_ARCHIVE: { name: 'Seven Day Thread Archive', important: false, emoji: '<:sevenDayThreadArchive:869767896123998288>', weight: 20 }, - ROLE_ICONS: { name: 'Role Icons', important: false, emoji: '<:roleIcons:876993381929222175>', weight: 21 }, - NEWS: { name: 'Announcement Channels', important: false, emoji: '<:announcementChannels:850790491796013067>', weight: 22 }, - MEMBER_VERIFICATION_GATE_ENABLED: { name: 'Membership Verification Gate', important: false, emoji: '<:memberVerificationGateEnabled:850786829984858212>', weight: 23 }, - WELCOME_SCREEN_ENABLED: { name: 'Welcome Screen Enabled', important: false, emoji: '<:welcomeScreenEnabled:850790575875817504>', weight: 24 }, - COMMUNITY: { name: 'Community', important: false, emoji: '<:community:850786714271875094>', weight: 25 }, + [GuildFeature.MonetizationEnabled]: { name: 'Monetization Enabled', important: true, emoji: null, weight: 8 }, + [GuildFeature.TicketedEventsEnabled]: { name: 'Ticketed Events Enabled', important: true, emoji: null, weight: 9 }, + [GuildFeature.PreviewEnabled]: { name: 'Preview Enabled', important: true, emoji: '<:previewEnabled:850790508266913823>', weight: 10 }, + [GuildFeature.Commerce]: { name: 'Store Channels', important: true, emoji: '<:storeChannels:850786692432396338>', weight: 11 }, + [GuildFeature.VanityURL]: { name: 'Vanity URL', important: false, emoji: '<:vanityURL:850790553079644160>', weight: 12 }, + [GuildFeature.VIPRegions]: { name: 'VIP Regions', important: false, emoji: '<:VIPRegions:850794697496854538>', weight: 13 }, + [GuildFeature.AnimatedIcon]: { name: 'Animated Icon', important: false, emoji: '<:animatedIcon:850774498071412746>', weight: 14 }, + [GuildFeature.Banner]: { name: 'Banner', important: false, emoji: '<:banner:850786673150787614>', weight: 15 }, + [GuildFeature.InviteSplash]: { name: 'Invite Splash', important: false, emoji: '<:inviteSplash:850786798246559754>', weight: 16 }, + [GuildFeature.PrivateThreads]: { name: 'Private Threads', important: false, emoji: '<:privateThreads:869763711894700093>', weight: 17 }, + [GuildFeature.ThreeDayThreadArchive]: { name: 'Three Day Thread Archive', important: false, emoji: '<:threeDayThreadArchive:869767841652564008>', weight: 19 }, + [GuildFeature.SevenDayThreadArchive]: { name: 'Seven Day Thread Archive', important: false, emoji: '<:sevenDayThreadArchive:869767896123998288>', weight: 20 }, + [GuildFeature.RoleIcons]: { name: 'Role Icons', important: false, emoji: '<:roleIcons:876993381929222175>', weight: 21 }, + [GuildFeature.News]: { name: 'Announcement Channels', important: false, emoji: '<:announcementChannels:850790491796013067>', weight: 22 }, + [GuildFeature.MemberVerificationGateEnabled]: { name: 'Membership Verification Gate', important: false, emoji: '<:memberVerificationGateEnabled:850786829984858212>', weight: 23 }, + [GuildFeature.WelcomeScreenEnabled]: { name: 'Welcome Screen Enabled', important: false, emoji: '<:welcomeScreenEnabled:850790575875817504>', weight: 24 }, + [GuildFeature.Community]: { name: 'Community', important: false, emoji: '<:community:850786714271875094>', weight: 25 }, THREADS_ENABLED: {name: 'Threads Enabled', important: false, emoji: '<:threadsEnabled:869756035345317919>', weight: 26 }, THREADS_ENABLED_TESTING: {name: 'Threads Enabled Testing', important: false, emoji: null, weight: 27 }, + [GuildFeature.AnimatedBanner]: { name: 'Animated Banner', important: false, emoji: null, weight: 28 }, + [GuildFeature.HasDirectoryEntry]: { name: 'Has Directory Entry', important: false, emoji: null, weight: 29 }, + [GuildFeature.Hub]: { name: 'Hub', important: false, emoji: null, weight: 30 }, + [GuildFeature.LinkedToHub]: { name: 'Linked To Hub', important: false, emoji: null, weight: 31 }, }, regions: { @@ -318,7 +323,7 @@ export class BushConstants { ChannelNews: '<:announcements:853375553531674644>', ChannelVoice: '<:voice:853375566735212584>', ChannelStage: '<:stage:853375583521210468>', - ChannelStore: '<:store:853375601175691266>', + // ChannelStore: '<:store:853375601175691266>', ChannelCategory: '<:category:853375615260819476>', ChannelThread: '<:thread:865033845753249813>' }, diff --git a/src/lib/utils/BushLogger.ts b/src/lib/utils/BushLogger.ts index 5effb52..91c23d3 100644 --- a/src/lib/utils/BushLogger.ts +++ b/src/lib/utils/BushLogger.ts @@ -1,6 +1,6 @@ import chalk from 'chalk'; // eslint-disable-next-line @typescript-eslint/no-unused-vars -import { Embed, Util, type Message, type PartialTextBasedChannelFields } from 'discord.js'; +import { EmbedBuilder, Util, type Message, type PartialTextBasedChannelFields } from 'discord.js'; import repl, { REPLServer, REPL_MODE_STRICT } from 'repl'; import { WriteStream } from 'tty'; import { inspect } from 'util'; @@ -206,7 +206,7 @@ export class BushLogger { `${chalk.bgGrey(this.#getTimeStamp())} ${chalk.grey(`[${header}]`)} ${this.#parseFormatting(newContent, 'blackBright')}` ); if (!sendChannel) return; - const embed = new Embed() + const embed = new EmbedBuilder() .setDescription(`**[${header}]** ${this.#parseFormatting(this.#stripColor(newContent), '', true)}`) .setColor(util.colors.gray) .setTimestamp(); @@ -251,7 +251,7 @@ export class BushLogger { `${chalk.bgCyan(this.#getTimeStamp())} ${chalk.cyan(`[${header}]`)} ${this.#parseFormatting(newContent, 'blueBright')}` ); if (!sendChannel) return; - const embed = new Embed() + const embed = new EmbedBuilder() .setDescription(`**[${header}]** ${this.#parseFormatting(this.#stripColor(newContent), '', true)}`) .setColor(util.colors.info) .setTimestamp(); @@ -275,7 +275,7 @@ export class BushLogger { ); if (!sendChannel) return; - const embed = new Embed() + const embed = new EmbedBuilder() .setDescription(`**[${header}]** ${this.#parseFormatting(this.#stripColor(newContent), '', true)}`) .setColor(util.colors.warn) .setTimestamp(); @@ -298,7 +298,7 @@ export class BushLogger { )}` ); if (!sendChannel) return; - const embed = new Embed() + const embed = new EmbedBuilder() .setDescription(`**[${header}]** ${this.#parseFormatting(this.#stripColor(newContent), '', true)}`) .setColor(util.colors.error) .setTimestamp(); @@ -322,7 +322,7 @@ export class BushLogger { )}` ); if (!sendChannel) return; - const embed = new Embed() + const embed = new EmbedBuilder() .setDescription(`**[${header}]** ${this.#parseFormatting(this.#stripColor(newContent), '', true)}`) .setColor(util.colors.success) .setTimestamp(); diff --git a/src/listeners/bush/appealListener.ts b/src/listeners/bush/appealListener.ts index 1dacb19..b50b3c5 100644 --- a/src/listeners/bush/appealListener.ts +++ b/src/listeners/bush/appealListener.ts @@ -1,7 +1,7 @@ /* eslint-disable no-control-regex */ import { BushListener, ModLog, type BushClientEvents } from '#lib'; import assert from 'assert'; -import { Embed } from 'discord.js'; +import { EmbedBuilder } from 'discord.js'; import UserInfoCommand from '../../commands/info/userInfo.js'; import ModlogCommand from '../../commands/moderation/modlog.js'; @@ -30,7 +30,7 @@ export default class AppealListener extends BushListener { if (!user) return await thread.send({ embeds: [ - new Embed() + new EmbedBuilder() .setTimestamp() .setColor(util.colors.error) .setTitle( @@ -55,7 +55,7 @@ export default class AppealListener extends BushListener { .slice(0, 3) .reverse(); - const embed = new Embed() + const embed = new EmbedBuilder() .setTimestamp() .setColor(util.colors.default) .setTitle(`${message.embeds[0].fields!.find((f) => f.name === 'What type of punishment are you appealing?')!.value} appeal`) diff --git a/src/listeners/bush/supportThread.ts b/src/listeners/bush/supportThread.ts index d408eef..23c1e44 100644 --- a/src/listeners/bush/supportThread.ts +++ b/src/listeners/bush/supportThread.ts @@ -1,7 +1,7 @@ import { BushListener, BushTextChannel, type BushClientEvents } from '#lib'; import assert from 'assert'; import { stripIndent } from 'common-tags'; -import { Embed, MessageType, PermissionFlagsBits } from 'discord.js'; +import { EmbedBuilder, MessageType, PermissionFlagsBits } from 'discord.js'; export default class SupportThreadListener extends BushListener { public constructor() { @@ -41,7 +41,7 @@ export default class SupportThreadListener extends BushListener { }) .catch(() => null); if (!thread) return; - const embed = new Embed() + const embed = new EmbedBuilder() .setTitle('NotEnoughUpdates Support') .setDescription( stripIndent` diff --git a/src/listeners/commands/commandError.ts b/src/listeners/commands/commandError.ts index 048c597..6a66375 100644 --- a/src/listeners/commands/commandError.ts +++ b/src/listeners/commands/commandError.ts @@ -1,7 +1,7 @@ import { type BushCommandHandlerEvents } from '#lib'; import { Severity } from '@sentry/types'; import { type AkairoMessage, type Command } from 'discord-akairo'; -import { Embed, Formatters, GuildTextBasedChannel, type Message } from 'discord.js'; +import { EmbedBuilder, Formatters, GuildTextBasedChannel, type Message } from 'discord.js'; import { BushListener } from '../../lib/extensions/discord-akairo/BushListener.js'; export default class CommandErrorListener extends BushListener { @@ -94,7 +94,7 @@ export default class CommandErrorListener extends BushListener { channel?: string; } | { error: Error | any; type: 'uncaughtException' | 'unhandledRejection'; context?: string } - ): Promise<Embed> { + ): Promise<EmbedBuilder> { const _haste = CommandErrorListener.getErrorHaste(options.error); const _stack = CommandErrorListener.getErrorStack(options.error); const [haste, stack] = await Promise.all([_haste, _stack]); @@ -122,8 +122,8 @@ export default class CommandErrorListener extends BushListener { haste: string[]; stack: string; } - ): Embed { - const embed = new Embed().setColor(util.colors.error).setTimestamp(); + ): EmbedBuilder { + const embed = new EmbedBuilder().setColor(util.colors.error).setTimestamp(); if (options.type === 'command-user') { return embed .setTitle('An Error Occurred') diff --git a/src/listeners/commands/commandStarted.ts b/src/listeners/commands/commandStarted.ts index 833eff0..4d2f0ad 100644 --- a/src/listeners/commands/commandStarted.ts +++ b/src/listeners/commands/commandStarted.ts @@ -22,7 +22,8 @@ export default class CommandStartedListener extends BushListener { 'message.type': message.util.isSlash ? 'slash' : 'normal', 'message.parsed.content': message.util.parsed?.content, 'channel.id': (message.channel.isDMBased() ? message.channel.recipient?.id : message.channel?.id) ?? '¯_(ツ)_/¯', - 'channel.name': (message.channel.isDMBased() ? message.channel.recipient?.tag : message.channel?.name) ?? '¯_(ツ)_/¯', + 'channel.name': + (message.channel.isDMBased() ? message.channel.recipient?.tag : (<any>message.channel)?.name) ?? '¯_(ツ)_/¯', 'guild.id': message.guild?.id ?? '¯_(ツ)_/¯', 'guild.name': message.guild?.name ?? '¯_(ツ)_/¯', 'environment': client.config.environment diff --git a/src/listeners/guild-custom/bushLockdown.ts b/src/listeners/guild-custom/bushLockdown.ts index b27dfba..54e1ab1 100644 --- a/src/listeners/guild-custom/bushLockdown.ts +++ b/src/listeners/guild-custom/bushLockdown.ts @@ -1,5 +1,5 @@ import { BushListener, type BushClientEvents } from '#lib'; -import { Embed } from 'discord.js'; +import { EmbedBuilder } from 'discord.js'; export default class BushLockdownListener extends BushListener { public constructor() { @@ -14,7 +14,7 @@ export default class BushLockdownListener extends BushListener { const logChannel = await moderator.guild.getLogChannel('moderation'); if (!logChannel) return; - const logEmbed = new Embed() + const logEmbed = new EmbedBuilder() .setColor(util.colors.Blurple) .setTimestamp() .addFields({ name: '**Action**', value: `${'Lockdown'}` }) diff --git a/src/listeners/guild-custom/bushUnlockdown.ts b/src/listeners/guild-custom/bushUnlockdown.ts index 0de83d2..4697c92 100644 --- a/src/listeners/guild-custom/bushUnlockdown.ts +++ b/src/listeners/guild-custom/bushUnlockdown.ts @@ -1,5 +1,5 @@ import { BushListener, type BushClientEvents } from '#lib'; -import { Embed } from 'discord.js'; +import { EmbedBuilder } from 'discord.js'; export default class BushUnlockdownListener extends BushListener { public constructor() { @@ -14,7 +14,7 @@ export default class BushUnlockdownListener extends BushListener { const logChannel = await moderator.guild.getLogChannel('moderation'); if (!logChannel) return; - const logEmbed = new Embed() + const logEmbed = new EmbedBuilder() .setColor(util.colors.Blurple) .setTimestamp() .addFields({ name: '**Action**', value: `${'Unlockdown'}` }) diff --git a/src/listeners/guild/guildMemberAdd.ts b/src/listeners/guild/guildMemberAdd.ts index adbca0f..27d5be2 100644 --- a/src/listeners/guild/guildMemberAdd.ts +++ b/src/listeners/guild/guildMemberAdd.ts @@ -1,5 +1,5 @@ import { BushListener, type BushClientEvents, type BushGuildMember, type BushTextChannel } from '#lib'; -import { Embed } from 'discord.js'; +import { EmbedBuilder } from 'discord.js'; export default class GuildMemberAddListener extends BushListener { public constructor() { @@ -28,7 +28,7 @@ export default class GuildMemberAddListener extends BushListener { // eslint-disable-next-line @typescript-eslint/no-base-to-string return welcome.guild.error('Send Welcome Message', `I do not have permission to send messages in ${welcome}.`); - const embed = new Embed() + const embed = new EmbedBuilder() .setDescription( `${util.emojis.join} ${util.format.input( member.user.tag diff --git a/src/listeners/guild/guildMemberRemove.ts b/src/listeners/guild/guildMemberRemove.ts index d71f3fd..8e7ce0d 100644 --- a/src/listeners/guild/guildMemberRemove.ts +++ b/src/listeners/guild/guildMemberRemove.ts @@ -7,7 +7,7 @@ import { type BushTextChannel, type PartialBushGuildMember } from '#lib'; -import { Embed } from 'discord.js'; +import { EmbedBuilder } from 'discord.js'; export default class GuildMemberRemoveListener extends BushListener { public constructor() { @@ -32,7 +32,7 @@ export default class GuildMemberRemoveListener extends BushListener { if (!welcomeChannel) return; const welcome = client.channels.cache.get(welcomeChannel) as BushTextChannel | undefined; if (member.guild.id !== welcome?.guild.id) throw new Error('Welcome channel must be in the guild.'); - const embed: Embed = new Embed() + const embed: EmbedBuilder = new EmbedBuilder() .setDescription( `${util.emojis.leave} ${util.format.input(user.tag)} ${ isBan ? 'got banned from' : 'left' diff --git a/src/listeners/interaction/interactionCreate.ts b/src/listeners/interaction/interactionCreate.ts index 6916134..f3b786c 100644 --- a/src/listeners/interaction/interactionCreate.ts +++ b/src/listeners/interaction/interactionCreate.ts @@ -1,5 +1,5 @@ import { AutoMod, BushListener, type BushButtonInteraction, type BushClientEvents } from '#lib'; -import { InteractionType } from 'discord-api-types/v9'; +import { InteractionType } from 'discord-api-types/v10'; export default class InteractionCreateListener extends BushListener { public constructor() { diff --git a/src/listeners/member-custom/bushBan.ts b/src/listeners/member-custom/bushBan.ts index cd700a9..efdabb9 100644 --- a/src/listeners/member-custom/bushBan.ts +++ b/src/listeners/member-custom/bushBan.ts @@ -1,5 +1,5 @@ import { BushListener, type BushClientEvents } from '#lib'; -import { Embed, GuildMember } from 'discord.js'; +import { EmbedBuilder, GuildMember } from 'discord.js'; export default class BushBanListener extends BushListener { public constructor() { @@ -15,7 +15,7 @@ export default class BushBanListener extends BushListener { if (!logChannel) return; const user = victim instanceof GuildMember ? victim.user : victim; - const logEmbed = new Embed() + const logEmbed = new EmbedBuilder() .setColor(util.colors.Red) .setTimestamp() .setFooter({ text: `CaseID: ${caseID}` }) diff --git a/src/listeners/member-custom/bushBlock.ts b/src/listeners/member-custom/bushBlock.ts index 111c945..26de816 100644 --- a/src/listeners/member-custom/bushBlock.ts +++ b/src/listeners/member-custom/bushBlock.ts @@ -1,5 +1,5 @@ import { BushListener, type BushClientEvents } from '#lib'; -import { Embed, GuildMember } from 'discord.js'; +import { EmbedBuilder, GuildMember } from 'discord.js'; export default class BushBlockListener extends BushListener { public constructor() { @@ -17,7 +17,7 @@ export default class BushBlockListener extends BushListener { if (!logChannel) return; const user = victim instanceof GuildMember ? victim.user : victim; - const logEmbed = new Embed() + const logEmbed = new EmbedBuilder() .setColor(util.colors.Purple) .setTimestamp() .setFooter({ text: `CaseID: ${caseID}` }) diff --git a/src/listeners/member-custom/bushKick.ts b/src/listeners/member-custom/bushKick.ts index f3e5df1..5494db3 100644 --- a/src/listeners/member-custom/bushKick.ts +++ b/src/listeners/member-custom/bushKick.ts @@ -1,5 +1,5 @@ import { BushListener, type BushClientEvents } from '#lib'; -import { Embed, GuildMember } from 'discord.js'; +import { EmbedBuilder, GuildMember } from 'discord.js'; export default class BushKickListener extends BushListener { public constructor() { @@ -15,7 +15,7 @@ export default class BushKickListener extends BushListener { if (!logChannel) return; const user = victim instanceof GuildMember ? victim.user : victim; - const logEmbed = new Embed() + const logEmbed = new EmbedBuilder() .setColor(util.colors.Red) .setTimestamp() .setFooter({ text: `CaseID: ${caseID}` }) diff --git a/src/listeners/member-custom/bushMute.ts b/src/listeners/member-custom/bushMute.ts index 6f05fcc..df723eb 100644 --- a/src/listeners/member-custom/bushMute.ts +++ b/src/listeners/member-custom/bushMute.ts @@ -1,5 +1,5 @@ import { BushListener, type BushClientEvents } from '#lib'; -import { Embed, GuildMember } from 'discord.js'; +import { EmbedBuilder, GuildMember } from 'discord.js'; export default class BushMuteListener extends BushListener { public constructor() { @@ -15,7 +15,7 @@ export default class BushMuteListener extends BushListener { if (!logChannel) return; const user = victim instanceof GuildMember ? victim.user : victim; - const logEmbed = new Embed() + const logEmbed = new EmbedBuilder() .setColor(util.colors.Orange) .setTimestamp() .setFooter({ text: `CaseID: ${caseID}` }) diff --git a/src/listeners/member-custom/bushPunishRole.ts b/src/listeners/member-custom/bushPunishRole.ts index b3eeef0..716488e 100644 --- a/src/listeners/member-custom/bushPunishRole.ts +++ b/src/listeners/member-custom/bushPunishRole.ts @@ -1,5 +1,5 @@ import { BushListener, type BushClientEvents } from '#lib'; -import { Embed, GuildMember } from 'discord.js'; +import { EmbedBuilder, GuildMember } from 'discord.js'; export default class BushPunishRoleListener extends BushListener { public constructor() { @@ -15,7 +15,7 @@ export default class BushPunishRoleListener extends BushListener { if (!logChannel) return; const user = victim instanceof GuildMember ? victim.user : victim; - const logEmbed = new Embed() + const logEmbed = new EmbedBuilder() .setColor(util.colors.Yellow) .setTimestamp() .setFooter({ text: `CaseID: ${caseID}` }) diff --git a/src/listeners/member-custom/bushPunishRoleRemove.ts b/src/listeners/member-custom/bushPunishRoleRemove.ts index 22b17a7..c5103e3 100644 --- a/src/listeners/member-custom/bushPunishRoleRemove.ts +++ b/src/listeners/member-custom/bushPunishRoleRemove.ts @@ -1,5 +1,5 @@ import { BushListener, type BushClientEvents } from '#lib'; -import { Embed, GuildMember } from 'discord.js'; +import { EmbedBuilder, GuildMember } from 'discord.js'; export default class BushPunishRoleRemoveListener extends BushListener { public constructor() { @@ -15,7 +15,7 @@ export default class BushPunishRoleRemoveListener extends BushListener { if (!logChannel) return; const user = victim instanceof GuildMember ? victim.user : victim; - const logEmbed = new Embed() + const logEmbed = new EmbedBuilder() .setColor(util.colors.Green) .setTimestamp() .setFooter({ text: `CaseID: ${caseID}` }) diff --git a/src/listeners/member-custom/bushPurge.ts b/src/listeners/member-custom/bushPurge.ts index 2834397..1c373fb 100644 --- a/src/listeners/member-custom/bushPurge.ts +++ b/src/listeners/member-custom/bushPurge.ts @@ -1,5 +1,5 @@ import { BushListener, type BushClientEvents } from '#lib'; -import { Embed } from 'discord.js'; +import { EmbedBuilder } from '@discordjs/builders'; export default class BushPurgeListener extends BushListener { public constructor() { @@ -23,7 +23,7 @@ export default class BushPurgeListener extends BushListener { })); const haste = await util.inspectCleanRedactHaste(mappedMessages); - const logEmbed = new Embed() + const logEmbed = new EmbedBuilder() .setColor(util.colors.DarkPurple) .setTimestamp() .setFooter({ text: `${messages.size.toLocaleString()} Messages` }) diff --git a/src/listeners/member-custom/bushRemoveTimeout.ts b/src/listeners/member-custom/bushRemoveTimeout.ts index f2a20ed..bf2e402 100644 --- a/src/listeners/member-custom/bushRemoveTimeout.ts +++ b/src/listeners/member-custom/bushRemoveTimeout.ts @@ -1,5 +1,5 @@ import { BushListener, type BushClientEvents } from '#lib'; -import { Embed, GuildMember } from 'discord.js'; +import { EmbedBuilder, GuildMember } from 'discord.js'; export default class BushRemoveTimeoutListener extends BushListener { public constructor() { @@ -15,7 +15,7 @@ export default class BushRemoveTimeoutListener extends BushListener { if (!logChannel) return; const user = victim instanceof GuildMember ? victim.user : victim; - const logEmbed = new Embed() + const logEmbed = new EmbedBuilder() .setColor(util.colors.Green) .setTimestamp() .setFooter({ text: `CaseID: ${caseID}` }) diff --git a/src/listeners/member-custom/bushTimeout.ts b/src/listeners/member-custom/bushTimeout.ts index d0eedf2..d319eb6 100644 --- a/src/listeners/member-custom/bushTimeout.ts +++ b/src/listeners/member-custom/bushTimeout.ts @@ -1,5 +1,5 @@ import { BushListener, type BushClientEvents } from '#lib'; -import { Embed, GuildMember } from 'discord.js'; +import { EmbedBuilder, GuildMember } from 'discord.js'; export default class BushTimeoutListener extends BushListener { public constructor() { @@ -17,7 +17,7 @@ export default class BushTimeoutListener extends BushListener { if (!logChannel) return; const user = victim instanceof GuildMember ? victim.user : victim; - const logEmbed = new Embed() + const logEmbed = new EmbedBuilder() .setColor(util.colors.Orange) .setTimestamp() .setFooter({ text: `CaseID: ${caseID}` }) diff --git a/src/listeners/member-custom/bushUnban.ts b/src/listeners/member-custom/bushUnban.ts index a3370c8..f7701b2 100644 --- a/src/listeners/member-custom/bushUnban.ts +++ b/src/listeners/member-custom/bushUnban.ts @@ -1,5 +1,5 @@ import { BushListener, type BushClientEvents } from '#lib'; -import { Embed, GuildMember } from 'discord.js'; +import { EmbedBuilder, GuildMember } from 'discord.js'; export default class BushUnbanListener extends BushListener { public constructor() { @@ -15,7 +15,7 @@ export default class BushUnbanListener extends BushListener { if (!logChannel) return; const user = victim instanceof GuildMember ? victim.user : victim; - const logEmbed = new Embed() + const logEmbed = new EmbedBuilder() .setColor(util.colors.Green) .setTimestamp() .setFooter({ text: `CaseID: ${caseID}` }) diff --git a/src/listeners/member-custom/bushUnblock.ts b/src/listeners/member-custom/bushUnblock.ts index 19d7fad..4b6ce11 100644 --- a/src/listeners/member-custom/bushUnblock.ts +++ b/src/listeners/member-custom/bushUnblock.ts @@ -1,5 +1,5 @@ import { BushListener, type BushClientEvents } from '#lib'; -import { Embed, GuildMember } from 'discord.js'; +import { EmbedBuilder, GuildMember } from 'discord.js'; export default class BushUnblockListener extends BushListener { public constructor() { @@ -15,7 +15,7 @@ export default class BushUnblockListener extends BushListener { if (!logChannel) return; const user = victim instanceof GuildMember ? victim.user : victim; - const logEmbed = new Embed() + const logEmbed = new EmbedBuilder() .setColor(util.colors.Green) .setTimestamp() .setFooter({ text: `CaseID: ${caseID}` }) diff --git a/src/listeners/member-custom/bushUnmute.ts b/src/listeners/member-custom/bushUnmute.ts index 791fa19..9857f64 100644 --- a/src/listeners/member-custom/bushUnmute.ts +++ b/src/listeners/member-custom/bushUnmute.ts @@ -1,5 +1,5 @@ import { BushListener, type BushClientEvents } from '#lib'; -import { Embed, GuildMember } from 'discord.js'; +import { EmbedBuilder, GuildMember } from 'discord.js'; export default class BushUnmuteListener extends BushListener { public constructor() { @@ -15,7 +15,7 @@ export default class BushUnmuteListener extends BushListener { if (!logChannel) return; const user = victim instanceof GuildMember ? victim.user : victim; - const logEmbed = new Embed() + const logEmbed = new EmbedBuilder() .setColor(util.colors.Green) .setTimestamp() .setFooter({ text: `CaseID: ${caseID}` }) diff --git a/src/listeners/member-custom/bushUpdateModlog.ts b/src/listeners/member-custom/bushUpdateModlog.ts index a8fb277..2cc5e48 100644 --- a/src/listeners/member-custom/bushUpdateModlog.ts +++ b/src/listeners/member-custom/bushUpdateModlog.ts @@ -1,5 +1,5 @@ import { BushListener, type BushClientEvents } from '#lib'; -import { Embed } from 'discord.js'; +import { EmbedBuilder } from 'discord.js'; export default class BushUpdateModlogListener extends BushListener { public constructor() { @@ -14,7 +14,7 @@ export default class BushUpdateModlogListener extends BushListener { const logChannel = await moderator.guild.getLogChannel('moderation'); if (!logChannel) return; - const logEmbed = new Embed() + const logEmbed = new EmbedBuilder() .setColor(util.colors.Blurple) .setTimestamp() .setAuthor({ diff --git a/src/listeners/member-custom/bushUpdateSettings.ts b/src/listeners/member-custom/bushUpdateSettings.ts index 1ce8806..7c7828e 100644 --- a/src/listeners/member-custom/bushUpdateSettings.ts +++ b/src/listeners/member-custom/bushUpdateSettings.ts @@ -1,5 +1,5 @@ import { BushListener, type BushClientEvents } from '#lib'; -import { Embed } from 'discord.js'; +import { EmbedBuilder } from 'discord.js'; export default class BushUpdateSettingsListener extends BushListener { public constructor() { @@ -14,7 +14,7 @@ export default class BushUpdateSettingsListener extends BushListener { const logChannel = await guild.getLogChannel('moderation'); if (!logChannel) return; - const logEmbed = new Embed().setColor(util.colors.Blurple).setTimestamp(); + const logEmbed = new EmbedBuilder().setColor(util.colors.Blurple).setTimestamp(); if (moderator) logEmbed.setAuthor({ diff --git a/src/listeners/member-custom/bushWarn.ts b/src/listeners/member-custom/bushWarn.ts index c22f61f..724a266 100644 --- a/src/listeners/member-custom/bushWarn.ts +++ b/src/listeners/member-custom/bushWarn.ts @@ -1,5 +1,5 @@ import { BushListener, type BushClientEvents } from '#lib'; -import { Embed, GuildMember } from 'discord.js'; +import { EmbedBuilder, GuildMember } from 'discord.js'; export default class BushWarnListener extends BushListener { public constructor() { @@ -15,7 +15,7 @@ export default class BushWarnListener extends BushListener { if (!logChannel) return; const user = victim instanceof GuildMember ? victim.user : victim; - const logEmbed = new Embed() + const logEmbed = new EmbedBuilder() .setColor(util.colors.Yellow) .setTimestamp() .setFooter({ text: `CaseID: ${caseID}` }) diff --git a/src/listeners/message/blacklistedFile.ts b/src/listeners/message/blacklistedFile.ts index 77c4971..a6216a5 100644 --- a/src/listeners/message/blacklistedFile.ts +++ b/src/listeners/message/blacklistedFile.ts @@ -67,7 +67,6 @@ export default class BlacklistedFileListener extends BushListener { public override async exec(...[message]: BushClientEvents['messageCreate']) { if (!message.guild || !(await message.guild.hasFeature('blacklistedFile'))) return; - // eslint-disable-next-line deprecation/deprecation // const embedAttachments = message.embeds.filter((e) => ['image', 'video', 'gifv'].includes(e.type)); const foundEmojis = [...message.content.matchAll(/<(?<animated>a?):\w+:(?<id>\d+)>/g)]; if (message.attachments.size + /* embedAttachments.length + */ foundEmojis.length < 1) return; diff --git a/src/listeners/message/directMessage.ts b/src/listeners/message/directMessage.ts index 575fbda..dd0c8ae 100644 --- a/src/listeners/message/directMessage.ts +++ b/src/listeners/message/directMessage.ts @@ -1,5 +1,5 @@ import { BushListener, type BushClientEvents } from '#lib'; -import { ChannelType, Embed } from 'discord.js'; +import { ChannelType, EmbedBuilder } from 'discord.js'; export default class DirectMessageListener extends BushListener { public constructor() { @@ -14,7 +14,7 @@ export default class DirectMessageListener extends BushListener { if (message.channel.type === ChannelType.DM) { if (!(message.author.id == client.user!.id) && message.author.bot) return; if (client.cache.global.blacklistedUsers.includes(message.author.id)) return; - const dmLogEmbed = new Embed().setTimestamp().setFooter({ text: `User ID • ${message.channel.recipientId}` }); + const dmLogEmbed = new EmbedBuilder().setTimestamp().setFooter({ text: `User ID • ${message.channel.recipientId}` }); if (message.author.id != client.user!.id) { dmLogEmbed diff --git a/src/listeners/other/consoleListener.ts b/src/listeners/other/consoleListener.ts index 15461f2..0c30724 100644 --- a/src/listeners/other/consoleListener.ts +++ b/src/listeners/other/consoleListener.ts @@ -25,7 +25,7 @@ import { promisify } from 'util'; Interaction, Message, ActionRow, - MessageAttachment, + Attachment, ButtonComponent, MessageCollector, InteractionCollector, diff --git a/src/listeners/track-manual-punishments/modlogSyncBan.ts b/src/listeners/track-manual-punishments/modlogSyncBan.ts index b1bdcee..106224a 100644 --- a/src/listeners/track-manual-punishments/modlogSyncBan.ts +++ b/src/listeners/track-manual-punishments/modlogSyncBan.ts @@ -1,6 +1,7 @@ import { BushListener, BushUser, Moderation, ModLogType, Time, type BushClientEvents } from '#lib'; -import { AuditLogEvent } from 'discord-api-types/v9'; -import { Embed, PermissionFlagsBits } from 'discord.js'; +import { EmbedBuilder } from '@discordjs/builders'; +import { AuditLogEvent } from 'discord-api-types/v10'; +import { PermissionFlagsBits } from 'discord.js'; export default class ModlogSyncBanListener extends BushListener { public constructor() { @@ -51,7 +52,7 @@ export default class ModlogSyncBanListener extends BushListener { const logChannel = await ban.guild.getLogChannel('moderation'); if (!logChannel) return; - const logEmbed = new Embed() + const logEmbed = new EmbedBuilder() .setColor(util.colors.Red) .setTimestamp() .setFooter({ text: `CaseID: ${log.id}` }) diff --git a/src/listeners/track-manual-punishments/modlogSyncKick.ts b/src/listeners/track-manual-punishments/modlogSyncKick.ts index 59b43bc..cff397b 100644 --- a/src/listeners/track-manual-punishments/modlogSyncKick.ts +++ b/src/listeners/track-manual-punishments/modlogSyncKick.ts @@ -1,6 +1,6 @@ import { BushListener, BushUser, Moderation, ModLogType, Time, type BushClientEvents } from '#lib'; -import { AuditLogEvent } from 'discord-api-types/v9'; -import { Embed, PermissionFlagsBits } from 'discord.js'; +import { AuditLogEvent } from 'discord-api-types/v10'; +import { EmbedBuilder, PermissionFlagsBits } from 'discord.js'; export default class ModlogSyncKickListener extends BushListener { public constructor() { @@ -51,7 +51,7 @@ export default class ModlogSyncKickListener extends BushListener { const logChannel = await member.guild.getLogChannel('moderation'); if (!logChannel) return; - const logEmbed = new Embed() + const logEmbed = new EmbedBuilder() .setColor(util.colors.Red) .setTimestamp() .setFooter({ text: `CaseID: ${log.id}` }) diff --git a/src/listeners/track-manual-punishments/modlogSyncTimeout.ts b/src/listeners/track-manual-punishments/modlogSyncTimeout.ts index 8ad8b79..57e7ae6 100644 --- a/src/listeners/track-manual-punishments/modlogSyncTimeout.ts +++ b/src/listeners/track-manual-punishments/modlogSyncTimeout.ts @@ -1,6 +1,6 @@ import { BushListener, BushUser, Moderation, ModLogType, Time, type BushClientEvents } from '#lib'; -import { AuditLogEvent } from 'discord-api-types/v9'; -import { Embed, PermissionFlagsBits } from 'discord.js'; +import { AuditLogEvent } from 'discord-api-types/v10'; +import { EmbedBuilder, PermissionFlagsBits } from 'discord.js'; export default class ModlogSyncTimeoutListener extends BushListener { public constructor() { @@ -56,7 +56,7 @@ export default class ModlogSyncTimeoutListener extends BushListener { const logChannel = await newMember.guild.getLogChannel('moderation'); if (!logChannel) return; - const logEmbed = new Embed() + const logEmbed = new EmbedBuilder() .setColor(util.colors[newTime ? 'Orange' : 'Green']) .setTimestamp() .setFooter({ text: `CaseID: ${log.id}` }) diff --git a/src/listeners/track-manual-punishments/modlogSyncUnban.ts b/src/listeners/track-manual-punishments/modlogSyncUnban.ts index 1c5de1d..f7b9730 100644 --- a/src/listeners/track-manual-punishments/modlogSyncUnban.ts +++ b/src/listeners/track-manual-punishments/modlogSyncUnban.ts @@ -1,6 +1,7 @@ import { BushListener, BushUser, Moderation, ModLogType, Time, type BushClientEvents } from '#lib'; -import { AuditLogEvent } from 'discord-api-types/v9'; -import { Embed, PermissionFlagsBits } from 'discord.js'; +import { EmbedBuilder } from '@discordjs/builders'; +import { AuditLogEvent } from 'discord-api-types/v10'; +import { PermissionFlagsBits } from 'discord.js'; export default class ModlogSyncUnbanListener extends BushListener { public constructor() { @@ -50,7 +51,7 @@ export default class ModlogSyncUnbanListener extends BushListener { const logChannel = await ban.guild.getLogChannel('moderation'); if (!logChannel) return; - const logEmbed = new Embed() + const logEmbed = new EmbedBuilder() .setColor(util.colors.Orange) .setTimestamp() .setFooter({ text: `CaseID: ${log.id}` }) diff --git a/src/listeners/ws/INTERACTION_CREATE.ts b/src/listeners/ws/INTERACTION_CREATE.ts index c245418..76b5a0e 100644 --- a/src/listeners/ws/INTERACTION_CREATE.ts +++ b/src/listeners/ws/INTERACTION_CREATE.ts @@ -1,4 +1,5 @@ import { BushListener, BushUser, Moderation, ModLog, PunishmentTypePresent } from '#lib'; +import { EmbedBuilder } from '@discordjs/builders'; import assert from 'assert'; import { APIEmbed, @@ -14,8 +15,8 @@ import { InteractionType, Routes, TextInputStyle -} from 'discord-api-types/v9'; -import { ActionRow, ButtonComponent, Embed, Snowflake } from 'discord.js'; +} from 'discord-api-types/v10'; +import { ActionRowBuilder, ButtonBuilder, Snowflake } from 'discord.js'; export default class WsInteractionCreateListener extends BushListener { public constructor() { @@ -192,7 +193,7 @@ export default class WsInteractionCreateListener extends BushListener { const caseId = await ModLog.findOne({ where: { user: userId, guild: guildId, id: modlogCase } }); - const embed = new Embed() + const embed = new EmbedBuilder() .setTitle(`${util.capitalize(punishment)} Appeal`) .setColor(util.colors.newBlurple) .setTimestamp() @@ -213,14 +214,14 @@ export default class WsInteractionCreateListener extends BushListener { .toJSON() as APIEmbed; const components = [ - new ActionRow({ + new ActionRowBuilder<ButtonBuilder>({ components: [ - new ButtonComponent({ + new ButtonBuilder({ customId: `appeal_accept;${punishment};${guildId};${userId};${modlogCase}`, label: 'Accept', style: ButtonStyle.Success }).toJSON(), - new ButtonComponent({ + new ButtonBuilder({ customId: `appeal_deny;${punishment};${guildId};${userId};${modlogCase}`, label: 'Deny', style: ButtonStyle.Danger diff --git a/tsconfig.json b/tsconfig.json index 32b9b83..d07ba21 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -24,8 +24,7 @@ "#constants": ["./src/lib/utils/BushConstants.ts"], "#args": ["./src/arguments/index.ts"], "#commands": ["./src/commands/index.ts"] - }, - "skipLibCheck": true + } }, "include": ["src/**/*.ts", "src/**/*d.ts", "lib/**/*.ts", "ecosystem.config.cjs", ".eslintrc.cjs"], "exclude": ["dist", "node_modules"] @@ -5,49 +5,49 @@ __metadata: version: 6 cacheKey: 8 -"@babel/runtime@npm:^7.17.8": - version: 7.17.8 - resolution: "@babel/runtime@npm:7.17.8" +"@babel/runtime@npm:^7.17.9": + version: 7.17.9 + resolution: "@babel/runtime@npm:7.17.9" dependencies: regenerator-runtime: ^0.13.4 - checksum: 68d195c1630bb91ac20e86635d292a17ebab7f361cfe79406b3f5a6cc2e59fa283ae5006568899abf869312c2b35b744bd407aea8ffdb650f1a68d07785d47e9 + checksum: 4d56bdb82890f386d5a57c40ef985a0ed7f0a78f789377a2d0c3e8826819e0f7f16ba0fe906d9b2241c5f7ca56630ef0653f5bb99f03771f7b87ff8af4bf5fe3 languageName: node linkType: hard -"@discordjs/builders@npm:^0.13.0-dev": - version: 0.13.0-dev.1646395406.6f7a366 - resolution: "@discordjs/builders@npm:0.13.0-dev.1646395406.6f7a366" +"@discordjs/builders@npm:^0.14.0-dev": + version: 0.14.0-dev.1650413406-585169f + resolution: "@discordjs/builders@npm:0.14.0-dev.1650413406-585169f" dependencies: - "@sindresorhus/is": ^4.4.0 - discord-api-types: ^0.27.3 + "@sapphire/shapeshift": ^2.0.0 + "@sindresorhus/is": ^4.6.0 + discord-api-types: ^0.31.1 fast-deep-equal: ^3.1.3 - ts-mixer: ^6.0.0 + ts-mixer: ^6.0.1 tslib: ^2.3.1 - zod: ^3.11.6 - checksum: 5ba9fb41c52dbf598a88e43d729843f75e7102889cffabb3f89b35b12142fcd1e8ea33253fd3a5cac96cb2f1c8dc14c7d1c22e7ff3ae1ee46a4aaba0335b8f80 + checksum: 30fd6e8bff8fbdde6c3b1c2d504fac1c92e2b199e7768c6e3059b603311d42a2aa4a27b9c36f51550f1b594aa56782a79b30786e127dd8370bab817f8d61acba languageName: node linkType: hard -"@discordjs/collection@npm:^0.6.0-dev": - version: 0.6.0-dev.1646395404.6f7a366 - resolution: "@discordjs/collection@npm:0.6.0-dev.1646395404.6f7a366" - checksum: 28bf42e241a0e66aa3e1184cd18452e661c18ed3cbee832e6bc6ee1b1494c2ea61a9037ae1c55920b5e694edebf62deca7d149115d126225c3a7b715b353c146 +"@discordjs/collection@npm:^0.7.0-dev": + version: 0.7.0-dev.1650413395-585169f + resolution: "@discordjs/collection@npm:0.7.0-dev.1650413395-585169f" + checksum: f5e4fea1d8f32c027c143ae2236370b4f2a7a7c3ba4106780b7a27ec79566e1a7dd2c6490a49c925c9ffda21e1fb81e0015105c01647377accc67477c4e42a84 languageName: node linkType: hard -"@discordjs/rest@npm:^0.4.0-dev": - version: 0.4.0-dev.1646395403.6f7a366 - resolution: "@discordjs/rest@npm:0.4.0-dev.1646395403.6f7a366" +"@discordjs/rest@npm:^0.5.0-dev": + version: 0.5.0-dev.1650413393-585169f + resolution: "@discordjs/rest@npm:0.5.0-dev.1650413393-585169f" dependencies: - "@discordjs/collection": ^0.6.0-dev - "@sapphire/async-queue": ^1.2.0 - "@sapphire/snowflake": ^3.1.0 - "@types/node-fetch": ^2.5.12 - discord-api-types: ^0.27.0 + "@discordjs/collection": ^0.7.0-dev + "@sapphire/async-queue": ^1.3.1 + "@sapphire/snowflake": ^3.2.1 + "@types/node-fetch": ^2.6.1 + discord-api-types: ^0.29.0 form-data: ^4.0.0 node-fetch: ^2.6.7 tslib: ^2.3.1 - checksum: 77f046a299098a24f10dc2c175c1bfcbf51b014d8043d776136a49cbc0d4d840d1e388f7256592a09be2c959db2e80a531f9c77fc2e8e61d9f13127b364d950f + checksum: 44490c6f561af6756e79b7ed9d9fac7fae7fccae099942a2552aba440c421702f030b674a17bd61535f68cf94916aa8ad21f55b6dbb23f8379c4a2b9cba1ddcc languageName: node linkType: hard @@ -68,7 +68,7 @@ __metadata: languageName: node linkType: hard -"@gar/promisify@npm:^1.0.1": +"@gar/promisify@npm:^1.1.3": version: 1.1.3 resolution: "@gar/promisify@npm:1.1.3" checksum: 4059f790e2d07bf3c3ff3e0fec0daa8144fe35c1f6e0111c9921bd32106adaa97a4ab096ad7dab1e28ee6a9060083c4d1a4ada42a7f5f3f7a96b8812e2b757c1 @@ -94,13 +94,13 @@ __metadata: linkType: hard "@mapbox/node-pre-gyp@npm:^1.0.0": - version: 1.0.8 - resolution: "@mapbox/node-pre-gyp@npm:1.0.8" + version: 1.0.9 + resolution: "@mapbox/node-pre-gyp@npm:1.0.9" dependencies: - detect-libc: ^1.0.3 + detect-libc: ^2.0.0 https-proxy-agent: ^5.0.0 make-dir: ^3.1.0 - node-fetch: ^2.6.5 + node-fetch: ^2.6.7 nopt: ^5.0.0 npmlog: ^5.0.1 rimraf: ^3.0.2 @@ -108,7 +108,7 @@ __metadata: tar: ^6.1.11 bin: node-pre-gyp: bin/node-pre-gyp - checksum: 29a38f39575107fa1665edf14defcfdf62e12bb38e9c27f7457ba42be84060125015171d12b8de3065155a465992f1854a363e2985f071fcbea9ff0701362b05 + checksum: 1b9c4c87a68d200daa13151d0fe033aa7aa8f7b26f3585255424dd8dfee2ec672c3e9bea4071c624469bc0aebbbcde08f8a300c8a958db52c50abadd5fb56920 languageName: node linkType: hard @@ -174,141 +174,141 @@ __metadata: languageName: node linkType: hard -"@npmcli/fs@npm:^1.0.0": - version: 1.1.1 - resolution: "@npmcli/fs@npm:1.1.1" +"@npmcli/fs@npm:^2.1.0": + version: 2.1.0 + resolution: "@npmcli/fs@npm:2.1.0" dependencies: - "@gar/promisify": ^1.0.1 + "@gar/promisify": ^1.1.3 semver: ^7.3.5 - checksum: f5ad92f157ed222e4e31c352333d0901df02c7c04311e42a81d8eb555d4ec4276ea9c635011757de20cc476755af33e91622838de573b17e52e2e7703f0a9965 + checksum: 6ec6d678af6da49f9dac50cd882d7f661934dd278972ffbaacde40d9eaa2871292d634000a0cca9510f6fc29855fbd4af433e1adbff90a524ec3eaf140f1219b languageName: node linkType: hard -"@npmcli/move-file@npm:^1.0.1": - version: 1.1.2 - resolution: "@npmcli/move-file@npm:1.1.2" +"@npmcli/move-file@npm:^2.0.0": + version: 2.0.0 + resolution: "@npmcli/move-file@npm:2.0.0" dependencies: mkdirp: ^1.0.4 rimraf: ^3.0.2 - checksum: c96381d4a37448ea280951e46233f7e541058cf57a57d4094dd4bdcaae43fa5872b5f2eb6bfb004591a68e29c5877abe3cdc210cb3588cbf20ab2877f31a7de7 + checksum: 1388777b507b0c592d53f41b9d182e1a8de7763bc625fc07999b8edbc22325f074e5b3ec90af79c89d6987fdb2325bc66d59f483258543c14a43661621f841b0 languageName: node linkType: hard -"@sapphire/async-queue@npm:^1.2.0": - version: 1.2.0 - resolution: "@sapphire/async-queue@npm:1.2.0" - checksum: 9959c91fe031e9350134740b68e64798eff1f72f1417f312a4f7bebbd875035a406ba5ae1e71640c3819dec10d0f86a0588b494088f353f85701f2f1196e4560 +"@sapphire/async-queue@npm:^1.3.1": + version: 1.3.1 + resolution: "@sapphire/async-queue@npm:1.3.1" + checksum: 4016010a8b6f2896ce7694eb04c1839b613387cbfb104028a4a1bea471afb1dc4d569b66d3c9770319c47be55035dc786c072c32656d467fc2cded4347055d92 languageName: node linkType: hard -"@sapphire/snowflake@npm:^3.1.0": - version: 3.1.0 - resolution: "@sapphire/snowflake@npm:3.1.0" - checksum: 979d41f531983b992e65f79a75016e92bb4f3984148bd7e2164059b4e8e18df0206c36c5a1a02f32c39c425b268f2e7871d9eef1eb5f1690f8837e451cc00812 +"@sapphire/shapeshift@npm:^2.0.0": + version: 2.0.0 + resolution: "@sapphire/shapeshift@npm:2.0.0" + checksum: e866aa714d70b0c0d607ed9ad831c039b396cca30611691c59a6e43cb369cf23d69404560105101231f56128022b0030a5201c074193da324ad4345c6d06992c languageName: node linkType: hard -"@sapphire/snowflake@npm:^3.2.0": - version: 3.2.0 - resolution: "@sapphire/snowflake@npm:3.2.0" - checksum: dbc14a732514778e7d8188f0e42582bd99a839c489163e2c83bc250d46e93c79ee6e9c380f7361c3b5c658972cdbf9951bb2355859dfc85845cfa635d6ec96d5 +"@sapphire/snowflake@npm:^3.2.1": + version: 3.2.1 + resolution: "@sapphire/snowflake@npm:3.2.1" + checksum: 90b876f836de74e1d5b6c90ebd6ca2d4825057471017d70b6170e1d143375365d23691f64843b465ca17174a5c638d6e83b51d53bf0dcbd2fc33ca0d6e1e7187 languageName: node linkType: hard -"@sentry/core@npm:6.19.3": - version: 6.19.3 - resolution: "@sentry/core@npm:6.19.3" +"@sentry/core@npm:6.19.6": + version: 6.19.6 + resolution: "@sentry/core@npm:6.19.6" dependencies: - "@sentry/hub": 6.19.3 - "@sentry/minimal": 6.19.3 - "@sentry/types": 6.19.3 - "@sentry/utils": 6.19.3 + "@sentry/hub": 6.19.6 + "@sentry/minimal": 6.19.6 + "@sentry/types": 6.19.6 + "@sentry/utils": 6.19.6 tslib: ^1.9.3 - checksum: a4fd7a9724387ed760867e2779b457398c12122530b2d946e3cde3e88d92dd93045aa638ff07771b922536766322b5a824ff123dc594cc4cb17b2f29e8d05631 + checksum: b714f12c8a59db845cbc05074818725dd37d0a5f31f2abdb12a07c1b7f0a759e8d876b1a6e58e5c4af8a593754bb8b7c66810d3e59a7cf7ead76f439b4802105 languageName: node linkType: hard -"@sentry/hub@npm:6.19.3": - version: 6.19.3 - resolution: "@sentry/hub@npm:6.19.3" +"@sentry/hub@npm:6.19.6": + version: 6.19.6 + resolution: "@sentry/hub@npm:6.19.6" dependencies: - "@sentry/types": 6.19.3 - "@sentry/utils": 6.19.3 + "@sentry/types": 6.19.6 + "@sentry/utils": 6.19.6 tslib: ^1.9.3 - checksum: c11435dabe6d53e741539dfb88267de152bfb37170425ee91354b17cf1fd1f23a57d87e5a7468c6c9e5e7bc3a7a63f0e5023ea35421fb562910f0efc7248ff84 + checksum: 150fdcb06c3107016aedf880e7c806aa8279a1d91c2651d9e3439bc752335ce5eec5ac8af4e515b73d29ec5a9f4bc717f7537245cb3675be89f15e01195a21a8 languageName: node linkType: hard -"@sentry/integrations@npm:^6.19.3": - version: 6.19.3 - resolution: "@sentry/integrations@npm:6.19.3" +"@sentry/integrations@npm:^6.19.6": + version: 6.19.6 + resolution: "@sentry/integrations@npm:6.19.6" dependencies: - "@sentry/types": 6.19.3 - "@sentry/utils": 6.19.3 + "@sentry/types": 6.19.6 + "@sentry/utils": 6.19.6 localforage: ^1.8.1 tslib: ^1.9.3 - checksum: 4d47cdf0b6a83695acdd8de36964f04ba92672923377c9058f6a7b7614c240c35ccb055608e0b754554d5192076ef72d4b1f8d687725e5b3a349cfabd035cab1 + checksum: 77c18a7164507934431f7d7ddd27868f867ea2dac957aff7c1571dbd94da3710b7cc7dfe4a195ee87e4d7a0ab3a2d7f49669c1ec2d5b5f5150bf9b256a28b9be languageName: node linkType: hard -"@sentry/minimal@npm:6.19.3": - version: 6.19.3 - resolution: "@sentry/minimal@npm:6.19.3" +"@sentry/minimal@npm:6.19.6": + version: 6.19.6 + resolution: "@sentry/minimal@npm:6.19.6" dependencies: - "@sentry/hub": 6.19.3 - "@sentry/types": 6.19.3 + "@sentry/hub": 6.19.6 + "@sentry/types": 6.19.6 tslib: ^1.9.3 - checksum: 6cde9b7a3fe3e6121e237681340d137a5725554ba01558d8b44e32e3f4604e833fb7c835ab5c26fe19b7bce318a57efe8eb2b44454e763a947d9ee6abf21926b + checksum: f6ee93095076b4ec2906fa6e796b91b461e33ed172222bc717e5621a7042c74eb2358e0b7c4b68079a60ae790c19de103f14207058a986eb0612fc79dcbba4c8 languageName: node linkType: hard -"@sentry/node@npm:^6.19.3": - version: 6.19.3 - resolution: "@sentry/node@npm:6.19.3" +"@sentry/node@npm:^6.19.6": + version: 6.19.6 + resolution: "@sentry/node@npm:6.19.6" dependencies: - "@sentry/core": 6.19.3 - "@sentry/hub": 6.19.3 - "@sentry/types": 6.19.3 - "@sentry/utils": 6.19.3 + "@sentry/core": 6.19.6 + "@sentry/hub": 6.19.6 + "@sentry/types": 6.19.6 + "@sentry/utils": 6.19.6 cookie: ^0.4.1 https-proxy-agent: ^5.0.0 lru_map: ^0.3.3 tslib: ^1.9.3 - checksum: 06307c1a6543b2121382fa308f7dbfecffb99d62e5aff44fb28bd8767c33f68dbf5b9375098bb28f2f92d2a0ad2eb6222565c16465d1411ce87f48315ba9c0c3 + checksum: ede3290ba4dd72582afe375d4b188caa8c9084019d58485376d864472ee83b9194a6fb24da3e0ced7f2396f9a5b7518adbf89fe34397d17bb654ddd5195a336f languageName: node linkType: hard -"@sentry/tracing@npm:^6.19.3": - version: 6.19.3 - resolution: "@sentry/tracing@npm:6.19.3" +"@sentry/tracing@npm:^6.19.6": + version: 6.19.6 + resolution: "@sentry/tracing@npm:6.19.6" dependencies: - "@sentry/hub": 6.19.3 - "@sentry/minimal": 6.19.3 - "@sentry/types": 6.19.3 - "@sentry/utils": 6.19.3 + "@sentry/hub": 6.19.6 + "@sentry/minimal": 6.19.6 + "@sentry/types": 6.19.6 + "@sentry/utils": 6.19.6 tslib: ^1.9.3 - checksum: 3fdd4b2c441fb5c9509bfb5a9b6e257e92db97ad8629b955466217d5c34f727e97b03f477eadb4b52fdd17b774cf0a19823f3ef3ec43ff6b008a4c363394a5f2 + checksum: ba41cd4079266c7bfebb327654579ce7f52fcc0ec67581b28c330e3b26dfb79c47d2a944ff86a91c2a150ec41f378047ec188727c4fa4ab8762a44d46c47af5f languageName: node linkType: hard -"@sentry/types@npm:6.19.3, @sentry/types@npm:^6.19.3": - version: 6.19.3 - resolution: "@sentry/types@npm:6.19.3" - checksum: 8a2705eed16fb7fa660c36417a41ca4106829821024be534f74b40a00b6c96b27a84343b101c7478e0b4458f71c280d4fa508d10928a3eccdb30baff49f5827e +"@sentry/types@npm:6.19.6, @sentry/types@npm:^6.19.6": + version: 6.19.6 + resolution: "@sentry/types@npm:6.19.6" + checksum: a1564dabb657bf44a6ee380eb58dabcc6ea1c21b4060127469f8d39c76376d0e3f8c6b3fa27193fc50d9f1415ce63312fc3926d271918bba3e75f1f39691223a languageName: node linkType: hard -"@sentry/utils@npm:6.19.3": - version: 6.19.3 - resolution: "@sentry/utils@npm:6.19.3" +"@sentry/utils@npm:6.19.6": + version: 6.19.6 + resolution: "@sentry/utils@npm:6.19.6" dependencies: - "@sentry/types": 6.19.3 + "@sentry/types": 6.19.6 tslib: ^1.9.3 - checksum: 6c0dd60a24554e9dbe11d5acd18d808f5a0f4c648c45b74818fbf009c9404c6e0d943cfbe62dea6a94c70fec9e1a0aedbd5579b8981f85fcfe0103527c9c5c5a + checksum: 73a582b6827ea519f8a352f3bdc8b0f22fbbced99506af56f566a6567ad0d6df2f8c3e39532f8588bdccb93f9bf03289681ae90404fd1dd9904c3175d314136a languageName: node linkType: hard -"@sindresorhus/is@npm:^4.4.0, @sindresorhus/is@npm:^4.6.0": +"@sindresorhus/is@npm:^4.6.0": version: 4.6.0 resolution: "@sindresorhus/is@npm:4.6.0" checksum: 83839f13da2c29d55c97abc3bc2c55b250d33a0447554997a85c539e058e57b8da092da396e252b11ec24a0279a0bed1f537fa26302209327060643e327f81d2 @@ -435,10 +435,17 @@ __metadata: languageName: node linkType: hard +"@types/json-buffer@npm:~3.0.0": + version: 3.0.0 + resolution: "@types/json-buffer@npm:3.0.0" + checksum: 6b0a371dd603f0eec9d00874574bae195382570e832560dadf2193ee0d1062b8e0694bbae9798bc758632361c227b1e3b19e3bd914043b498640470a2da38b77 + languageName: node + linkType: hard + "@types/json-schema@npm:*, @types/json-schema@npm:^7.0.9": - version: 7.0.9 - resolution: "@types/json-schema@npm:7.0.9" - checksum: 259d0e25f11a21ba5c708f7ea47196bd396e379fddb79c76f9f4f62c945879dc21657904914313ec2754e443c5018ea8372362f323f30e0792897fdb2098a705 + version: 7.0.11 + resolution: "@types/json-schema@npm:7.0.11" + checksum: 527bddfe62db9012fccd7627794bd4c71beb77601861055d87e3ee464f2217c85fca7a4b56ae677478367bbd248dbde13553312b7d4dbc702a2f2bbf60c4018d languageName: node linkType: hard @@ -450,18 +457,18 @@ __metadata: linkType: hard "@types/keyv@npm:*": - version: 3.1.3 - resolution: "@types/keyv@npm:3.1.3" + version: 3.1.4 + resolution: "@types/keyv@npm:3.1.4" dependencies: "@types/node": "*" - checksum: b5f8aa592cc21c16d99e69aec0976f12b893b055e4456d90148a610a6b6088e297b2ba5f38f8c8280cef006cfd8f9ec99e069905020882619dc5fc8aa46f5f27 + checksum: e009a2bfb50e90ca9b7c6e8f648f8464067271fd99116f881073fa6fa76dc8d0133181dd65e6614d5fb1220d671d67b0124aef7d97dc02d7e342ab143a47779d languageName: node linkType: hard -"@types/lodash@npm:^4.14.181": - version: 4.14.181 - resolution: "@types/lodash@npm:4.14.181" - checksum: 0d1863d8383fd2f8bb42e9e3fc1d6255bb88ff034d6df848941063698944313dae944fc1270315613e3d303fae7c7a9a86085ad3235ed6204c56c4b0b3699aa9 +"@types/lodash@npm:^4.14.182": + version: 4.14.182 + resolution: "@types/lodash@npm:4.14.182" + checksum: 7dd137aa9dbabd632408bd37009d984655164fa1ecc3f2b6eb94afe35bf0a5852cbab6183148d883e9c73a958b7fec9a9bcf7c8e45d41195add6a18c34958209 languageName: node linkType: hard @@ -486,7 +493,7 @@ __metadata: languageName: node linkType: hard -"@types/node-fetch@npm:^2.5.12": +"@types/node-fetch@npm:^2.6.1": version: 2.6.1 resolution: "@types/node-fetch@npm:2.6.1" dependencies: @@ -503,17 +510,10 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:*": - version: 17.0.21 - resolution: "@types/node@npm:17.0.21" - checksum: 89dcd2fe82f21d3634266f8384e9c865cf8af49685639fbdbd799bdd1040480fb1e8eeda2d3b9fce41edbe704d2a4be9f427118c4ae872e8d9bb7cbeb3c41a94 - languageName: node - linkType: hard - -"@types/node@npm:^17.0.23": - version: 17.0.23 - resolution: "@types/node@npm:17.0.23" - checksum: a3517554737cbb042e76c30d0e5482192ac4d9bea0eeb086e2622d9cabf460a0eb52a696b99fcd18e7fcc93c96db6cc7ae507f6608f256ef0b5c1d8c87a5a470 +"@types/node@npm:*, @types/node@npm:^17.0.25": + version: 17.0.25 + resolution: "@types/node@npm:17.0.25" + checksum: 6a820bd624e69ea772f52a6cdb326484eff5829443dc981939373929ade109f58c21698b9f0a831bd6ceea799e722a75dc49c5fa7a6bc32a81e1cbdfc6507b64 languageName: node linkType: hard @@ -535,10 +535,10 @@ __metadata: languageName: node linkType: hard -"@types/prettier@npm:^2.4.4": - version: 2.4.4 - resolution: "@types/prettier@npm:2.4.4" - checksum: 2c2cc57efd49c7d8907415a72f96c84a6dd8696dd3bf8aa4ca3a667427bebf71cbfbc912673624bdfc935d272d1c008c639cf155f6449315990a4dc110f0d216 +"@types/prettier@npm:^2.6.0": + version: 2.6.0 + resolution: "@types/prettier@npm:2.6.0" + checksum: 946f1f82ce6f31664e023a5d65931c31b7d677b454f528f67dce851d72e7fcfe713076f4251b16c3646eecf1545f5f5b909b4962966341ed9ddf5b80113b3674 languageName: node linkType: hard @@ -592,36 +592,29 @@ __metadata: languageName: node linkType: hard -"@types/validator@npm:^13.7.1": - version: 13.7.1 - resolution: "@types/validator@npm:13.7.1" - checksum: 810649a23bc46928c85d933be73b106bacb651a412c4172e30a70e84c63cada595d391042274b16e1c05b391af3a4f157b360890fbc5462ee347275222d59b64 - languageName: node - linkType: hard - -"@types/validator@npm:^13.7.2": +"@types/validator@npm:^13.7.1, @types/validator@npm:^13.7.2": version: 13.7.2 resolution: "@types/validator@npm:13.7.2" checksum: e679261dd5392adfeb9b20ba2eaf7d668049ad03b24409a6921bb6a3ee4c3135d46cc536a0eafbbda7f642b196696a6e3e1e615b2d1194330d49b22f1f0acb59 languageName: node linkType: hard -"@types/ws@npm:^8.2.2": - version: 8.5.2 - resolution: "@types/ws@npm:8.5.2" +"@types/ws@npm:^8.5.3": + version: 8.5.3 + resolution: "@types/ws@npm:8.5.3" dependencies: "@types/node": "*" - checksum: 3182db3a84474636cd990482b451c1e247bb2c4524eb85f937e3734c9600af34dfc07f9a2d973d4a39dfe433339f9afd8c5824e32a597e7cffba475cbbd487c9 + checksum: 0ce46f850d41383fcdc2149bcacc86d7232fa7a233f903d2246dff86e31701a02f8566f40af5f8b56d1834779255c04ec6ec78660fe0f9b2a69cf3d71937e4ae languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:^5.17.0": - version: 5.17.0 - resolution: "@typescript-eslint/eslint-plugin@npm:5.17.0" +"@typescript-eslint/eslint-plugin@npm:^5.20.0": + version: 5.20.0 + resolution: "@typescript-eslint/eslint-plugin@npm:5.20.0" dependencies: - "@typescript-eslint/scope-manager": 5.17.0 - "@typescript-eslint/type-utils": 5.17.0 - "@typescript-eslint/utils": 5.17.0 + "@typescript-eslint/scope-manager": 5.20.0 + "@typescript-eslint/type-utils": 5.20.0 + "@typescript-eslint/utils": 5.20.0 debug: ^4.3.2 functional-red-black-tree: ^1.0.1 ignore: ^5.1.8 @@ -634,63 +627,53 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 62ec611fb384f27fc5b101fc8a0642ae94b2975618d37d3157c2f887cf89b389624e9d476bff303073d038076c05e6c00f3b205af3b2302967e720e99cd18d38 + checksum: 276251535b38dc5e9165c86d7f9b0a6d601cef82f02dc2a94b4133ad08d8825cb3e27bfd3b686b21b0627e05fa25c5e456c89cc3a66583b109637d1cf2d6c06a languageName: node linkType: hard "@typescript-eslint/experimental-utils@npm:^5.0.0": - version: 5.13.0 - resolution: "@typescript-eslint/experimental-utils@npm:5.13.0" + version: 5.20.0 + resolution: "@typescript-eslint/experimental-utils@npm:5.20.0" dependencies: - "@typescript-eslint/utils": 5.13.0 + "@typescript-eslint/utils": 5.20.0 peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: 8d2b944ebd7cb125a8d36587be6f73b6aaceb81580edfc825a1aaa98ded7dec2bcec75145677cd703c6780bf1aad619f49dd00bc6a735aa4af270c4b56f9af75 + checksum: 43ab538ad58c36c1b1bc2048797c613d4fb25311ea7ae831968e7a06fc7594b3aeff2f6f74aa4d15dc56ab6f4b181524598697d11a657a419057e5f3b733aa20 languageName: node linkType: hard -"@typescript-eslint/parser@npm:^5.17.0": - version: 5.17.0 - resolution: "@typescript-eslint/parser@npm:5.17.0" +"@typescript-eslint/parser@npm:^5.20.0": + version: 5.20.0 + resolution: "@typescript-eslint/parser@npm:5.20.0" dependencies: - "@typescript-eslint/scope-manager": 5.17.0 - "@typescript-eslint/types": 5.17.0 - "@typescript-eslint/typescript-estree": 5.17.0 + "@typescript-eslint/scope-manager": 5.20.0 + "@typescript-eslint/types": 5.20.0 + "@typescript-eslint/typescript-estree": 5.20.0 debug: ^4.3.2 peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: typescript: optional: true - checksum: 15b855ea84e44371366d44b5add87ed0dc34b856ca8a6949ecc4066faaf3ea3d7e016ea92db06ab97a637530148c472c38c19cc5eff68b691701ff89dc5c1abc + checksum: 0a72c5c0fbea3ef30332a20a7fc673461a4106225d7d4b78e1d4eb3cd0343d26132deb0cdaa17fd31b90711c63978996216faf1fb9a7abdee367e3b42f812e21 languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:5.13.0": - version: 5.13.0 - resolution: "@typescript-eslint/scope-manager@npm:5.13.0" +"@typescript-eslint/scope-manager@npm:5.20.0": + version: 5.20.0 + resolution: "@typescript-eslint/scope-manager@npm:5.20.0" dependencies: - "@typescript-eslint/types": 5.13.0 - "@typescript-eslint/visitor-keys": 5.13.0 - checksum: 43fade6759e751387ee91f85033c036f122b5051f7ad7baf35fe5db68e2129afc1cc1c12c2b0b8a25eb206092ad1073d8e640b21f6b04824413f40751d8e0d42 + "@typescript-eslint/types": 5.20.0 + "@typescript-eslint/visitor-keys": 5.20.0 + checksum: 904fd43f559dc2579958496ffad837eca124940b4a172666f0ea54ed606074d9ec7d2bec0f2141c3f9a8b894dd2644817cb86809e79a7a73ecba2b7babcdb5c9 languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:5.17.0": - version: 5.17.0 - resolution: "@typescript-eslint/scope-manager@npm:5.17.0" +"@typescript-eslint/type-utils@npm:5.20.0": + version: 5.20.0 + resolution: "@typescript-eslint/type-utils@npm:5.20.0" dependencies: - "@typescript-eslint/types": 5.17.0 - "@typescript-eslint/visitor-keys": 5.17.0 - checksum: 8fc28d5742f36994ce05f09b0000f696a600d6f757f39ccae7875c08398b266f21d48ed1dfb027549d9c6692255a1fb3e8482ef94d765bb134371824da7d5ba7 - languageName: node - linkType: hard - -"@typescript-eslint/type-utils@npm:5.17.0": - version: 5.17.0 - resolution: "@typescript-eslint/type-utils@npm:5.17.0" - dependencies: - "@typescript-eslint/utils": 5.17.0 + "@typescript-eslint/utils": 5.20.0 debug: ^4.3.2 tsutils: ^3.21.0 peerDependencies: @@ -698,30 +681,23 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 9aad46ea7a757ec4584b9d9c995e94543bf40af7d85b2f502d66db08d7f03468c858320fccb4942238b0bb9e2d432df3d9861cf21624b0c57660c88b1d91a7d4 - languageName: node - linkType: hard - -"@typescript-eslint/types@npm:5.13.0": - version: 5.13.0 - resolution: "@typescript-eslint/types@npm:5.13.0" - checksum: 2228935a9f7e80264a554ffadc458ee184259b56cd987bf10f12754183e032953fb93b7b31f8261dd0a40dbac4f341d4904ae7aa1f1aba9f2a92b1062f05c8dc + checksum: c9c436122b715d144edae9d36ebd34e9b02b282ada829382770e15170c58f4f27cfde2d5847ea3c4a1b70ca42e2460a204e920eea50b3d05e9d342e8836d4d12 languageName: node linkType: hard -"@typescript-eslint/types@npm:5.17.0": - version: 5.17.0 - resolution: "@typescript-eslint/types@npm:5.17.0" - checksum: 06ed4c3c3f0a05bee9c23b6cb5eb679336c0f4769beb28848e8ce674f726fec88adba059f20e0b0f7271685d7f5480931b3bcafcf6b60044b93da162e29f3f68 +"@typescript-eslint/types@npm:5.20.0": + version: 5.20.0 + resolution: "@typescript-eslint/types@npm:5.20.0" + checksum: d7f6e51e23f59feee8857340828c47a98a0dd5eaa1b045e936dc11199b55754cf78ae5cd8d56c1fafb1b5a40a6f472c1ac921072951217caffe3f06a717fa61c languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:5.13.0": - version: 5.13.0 - resolution: "@typescript-eslint/typescript-estree@npm:5.13.0" +"@typescript-eslint/typescript-estree@npm:5.20.0": + version: 5.20.0 + resolution: "@typescript-eslint/typescript-estree@npm:5.20.0" dependencies: - "@typescript-eslint/types": 5.13.0 - "@typescript-eslint/visitor-keys": 5.13.0 + "@typescript-eslint/types": 5.20.0 + "@typescript-eslint/visitor-keys": 5.20.0 debug: ^4.3.2 globby: ^11.0.4 is-glob: ^4.0.3 @@ -730,77 +706,33 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: bcf2f94eb4b8e0a5f47fa1e04478aa3f36c8d2b629300bf3d3a375f87e8046cd7f2364cd7df8fceb97855e7789721de5c66dafcf17cfd93552a93a7d7733dfdb + checksum: 2b709292b7df3675d1f8eaf2f4e1ecf491f70fc525012c6a0fb5164aa893c165317b0a419022b8b00aaed502864d5b5b84092b58a9950d2633248e8d7627abd8 languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:5.17.0": - version: 5.17.0 - resolution: "@typescript-eslint/typescript-estree@npm:5.17.0" - dependencies: - "@typescript-eslint/types": 5.17.0 - "@typescript-eslint/visitor-keys": 5.17.0 - debug: ^4.3.2 - globby: ^11.0.4 - is-glob: ^4.0.3 - semver: ^7.3.5 - tsutils: ^3.21.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 589829b1bb1d7e704de6a35dd9a39c70a3ca54b0885b68aad54a864bc5e5a11ce43f917c3f15f0afe9bc734a250288efdf03dfbed70b8fe0cc12f759e2e1f8ef - languageName: node - linkType: hard - -"@typescript-eslint/utils@npm:5.13.0": - version: 5.13.0 - resolution: "@typescript-eslint/utils@npm:5.13.0" - dependencies: - "@types/json-schema": ^7.0.9 - "@typescript-eslint/scope-manager": 5.13.0 - "@typescript-eslint/types": 5.13.0 - "@typescript-eslint/typescript-estree": 5.13.0 - eslint-scope: ^5.1.1 - eslint-utils: ^3.0.0 - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: cb93cddc83bd5f9cee7fc72ab64c509b285392a005fb1315522374991f18a1cb8f233ee0d1e828cc18570c3fe27e81cc28471c36142284bd39351b8a3f8a83bd - languageName: node - linkType: hard - -"@typescript-eslint/utils@npm:5.17.0": - version: 5.17.0 - resolution: "@typescript-eslint/utils@npm:5.17.0" +"@typescript-eslint/utils@npm:5.20.0": + version: 5.20.0 + resolution: "@typescript-eslint/utils@npm:5.20.0" dependencies: "@types/json-schema": ^7.0.9 - "@typescript-eslint/scope-manager": 5.17.0 - "@typescript-eslint/types": 5.17.0 - "@typescript-eslint/typescript-estree": 5.17.0 + "@typescript-eslint/scope-manager": 5.20.0 + "@typescript-eslint/types": 5.20.0 + "@typescript-eslint/typescript-estree": 5.20.0 eslint-scope: ^5.1.1 eslint-utils: ^3.0.0 peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - checksum: 88de02eafb7d39950c520c53aa07ffe63c95ca7ef2262c39d2afd3c6aabcd5d717ba61f74314f5bc9c27588b721ff016b45af6fc1de88801c6ac4bf5ebaf8775 + checksum: e387cf96124e34d079804220c5cb9134148fb3efc68d852a344453e285e3016e0b7e37b11308ef58c0e7afc638f145002cebc27c5da0fd03e0c074ff97d8210e languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:5.13.0": - version: 5.13.0 - resolution: "@typescript-eslint/visitor-keys@npm:5.13.0" +"@typescript-eslint/visitor-keys@npm:5.20.0": + version: 5.20.0 + resolution: "@typescript-eslint/visitor-keys@npm:5.20.0" dependencies: - "@typescript-eslint/types": 5.13.0 + "@typescript-eslint/types": 5.20.0 eslint-visitor-keys: ^3.0.0 - checksum: 3987217053e22a86f9105efe6250ca028ef437483b79d0dad45850edacfc273835b82178e77e5012a3c045df18561fef3eb4417cc26c328c901fbaa0da09e922 - languageName: node - linkType: hard - -"@typescript-eslint/visitor-keys@npm:5.17.0": - version: 5.17.0 - resolution: "@typescript-eslint/visitor-keys@npm:5.17.0" - dependencies: - "@typescript-eslint/types": 5.17.0 - eslint-visitor-keys: ^3.0.0 - checksum: 333468277b50e2fc381ba1b99ccb410046c422e0329c791c51bea62e705edd16ba97f75b668c6945a3ea3dc43b89a1739693ea60bfa241c67ce42e8b474e5048 + checksum: 1e1aa5f14fd60f1846ee26947d571953898dc82eb635a7eab3984c6b7db9bb8897743416713a129cc95c8cd63325cc0c64b3935d264f73100911fc5da76fc65f languageName: node linkType: hard @@ -958,13 +890,14 @@ __metadata: linkType: hard "array.prototype.flat@npm:^1.2.5": - version: 1.2.5 - resolution: "array.prototype.flat@npm:1.2.5" + version: 1.3.0 + resolution: "array.prototype.flat@npm:1.3.0" dependencies: call-bind: ^1.0.2 define-properties: ^1.1.3 - es-abstract: ^1.19.0 - checksum: 9cc6414b111abfc7717e39546e4887b1e5ec74df8f1618d83425deaa95752bf05d475d1d241253b4d88d4a01f8e1bc84845ad5b7cc2047f8db2f614512acd40e + es-abstract: ^1.19.2 + es-shim-unscopables: ^1.0.0 + checksum: 2a652b3e8dc0bebb6117e42a5ab5738af0203a14c27341d7bb2431467bdb4b348e2c5dc555dfcda8af0a5e4075c400b85311ded73861c87290a71a17c3e0a257 languageName: node linkType: hard @@ -1013,7 +946,7 @@ __metadata: languageName: node linkType: hard -"braces@npm:^3.0.1": +"braces@npm:^3.0.2": version: 3.0.2 resolution: "braces@npm:3.0.2" dependencies: @@ -1045,80 +978,80 @@ __metadata: "@notenoughupdates/humanize-duration": ^4.0.1 "@notenoughupdates/simplify-number": ^1.0.1 "@notenoughupdates/wolfram-alpha-api": ^1.0.1 - "@sapphire/snowflake": ^3.2.0 - "@sentry/integrations": ^6.19.3 - "@sentry/node": ^6.19.3 - "@sentry/tracing": ^6.19.3 - "@sentry/types": ^6.19.3 + "@sapphire/snowflake": ^3.2.1 + "@sentry/integrations": ^6.19.6 + "@sentry/node": ^6.19.6 + "@sentry/tracing": ^6.19.6 + "@sentry/types": ^6.19.6 "@types/common-tags": ^1.8.1 "@types/eslint": ^8.4.1 "@types/express": ^4.17.13 - "@types/lodash": ^4.14.181 - "@types/node": ^17.0.23 + "@types/lodash": ^4.14.182 + "@types/node": ^17.0.25 "@types/node-os-utils": ^1.2.0 "@types/numeral": ^2.0.2 "@types/pg": ^8.6.5 - "@types/prettier": ^2.4.4 + "@types/prettier": ^2.6.0 "@types/rimraf": ^3.0.2 "@types/tinycolor2": ^1.4.3 "@types/validator": ^13.7.2 - "@typescript-eslint/eslint-plugin": ^5.17.0 - "@typescript-eslint/parser": ^5.17.0 + "@typescript-eslint/eslint-plugin": ^5.20.0 + "@typescript-eslint/parser": ^5.20.0 canvas: ^2.9.1 chalk: ^5.0.1 common-tags: ^1.8.2 deep-lock: ^1.0.0 discord-akairo: "npm:@notenoughupdates/discord-akairo@dev" - discord-api-types: 0.27.3 + discord-api-types: 0.31.2 discord.js: "npm:@notenoughupdates/discord.js@dev" - eslint: ^8.12.0 + eslint: ^8.13.0 eslint-config-prettier: ^8.5.0 eslint-plugin-deprecation: ^1.3.2 - eslint-plugin-import: ^2.25.4 + eslint-plugin-import: ^2.26.0 fuse.js: ^6.5.3 - googleapis: ^99.0.0 + googleapis: ^100.0.0 got: ^12.0.3 lodash: ^4.17.21 - mathjs: ^10.4.2 - nanoid: ^3.3.2 + mathjs: ^10.5.0 + nanoid: ^3.3.3 node-fetch: ^3.2.3 node-os-utils: ^1.3.6 numeral: ^2.0.6 pg: ^8.7.3 pg-hstore: ^2.3.4 - prettier: ^2.6.1 + prettier: ^2.6.2 pretty-bytes: ^6.0.0 rimraf: ^3.0.2 - sequelize: 6.17.0 + sequelize: 6.19.0 tinycolor2: ^1.4.2 typescript: ^4.6.3 vm2: ^3.9.9 languageName: unknown linkType: soft -"cacache@npm:^15.3.0": - version: 15.3.0 - resolution: "cacache@npm:15.3.0" +"cacache@npm:^16.0.2": + version: 16.0.4 + resolution: "cacache@npm:16.0.4" dependencies: - "@npmcli/fs": ^1.0.0 - "@npmcli/move-file": ^1.0.1 + "@npmcli/fs": ^2.1.0 + "@npmcli/move-file": ^2.0.0 chownr: ^2.0.0 - fs-minipass: ^2.0.0 - glob: ^7.1.4 + fs-minipass: ^2.1.0 + glob: ^7.2.0 infer-owner: ^1.0.4 - lru-cache: ^6.0.0 - minipass: ^3.1.1 + lru-cache: ^7.7.1 + minipass: ^3.1.6 minipass-collect: ^1.0.2 minipass-flush: ^1.0.5 - minipass-pipeline: ^1.2.2 - mkdirp: ^1.0.3 + minipass-pipeline: ^1.2.4 + mkdirp: ^1.0.4 p-map: ^4.0.0 promise-inflight: ^1.0.1 rimraf: ^3.0.2 - ssri: ^8.0.1 - tar: ^6.0.2 + ssri: ^9.0.0 + tar: ^6.1.11 unique-filename: ^1.1.1 - checksum: a07327c27a4152c04eb0a831c63c00390d90f94d51bb80624a66f4e14a6b6360bbf02a84421267bd4d00ca73ac9773287d8d7169e8d2eafe378d2ce140579db8 + checksum: f5ddd45e5b1ff5001f9d1fcbc95f1dc210e6b04fbaf92782dd16a514e9a8082efba6eac43dac3d881e2ab5829f5ad857d7deda58cbef235e93d075e8f378214a languageName: node linkType: hard @@ -1254,10 +1187,20 @@ __metadata: languageName: node linkType: hard -"complex.js@npm:^2.1.0": - version: 2.1.0 - resolution: "complex.js@npm:2.1.0" - checksum: 8a31a0d8191d793e08c8bac5065b8146f2243d8f15b81736c07211f7e2b73e5d71c5d010ed38525985d83ac37027d66dbe51704e8070a59df6cf8130d55562b7 +"complex.js@npm:^2.1.1": + version: 2.1.1 + resolution: "complex.js@npm:2.1.1" + checksum: a0802cc3f0eb7703088edfc3fe209ae7be5ce93c0e710a0f288be2e29ee31b3530a8c0d3330d7c2a668410dfe4293a4038554d66c7f1f1165997941bdc1092aa + languageName: node + linkType: hard + +"compress-brotli@npm:^1.3.6": + version: 1.3.6 + resolution: "compress-brotli@npm:1.3.6" + dependencies: + "@types/json-buffer": ~3.0.0 + json-buffer: ~3.0.1 + checksum: 9db8e082a3286bd6a0da2b6b2929c62a827c5a1bee8f0d1c777cccfcef14c9e751d93ae46329f1529bfbfab9b6f241465e3a1c895be235c6e923f5017d952d00 languageName: node linkType: hard @@ -1300,15 +1243,15 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3": - version: 4.3.3 - resolution: "debug@npm:4.3.3" +"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.2, debug@npm:^4.3.3": + version: 4.3.4 + resolution: "debug@npm:4.3.4" dependencies: ms: 2.1.2 peerDependenciesMeta: supports-color: optional: true - checksum: 14472d56fe4a94dbcfaa6dbed2dd3849f1d72ba78104a1a328047bb564643ca49df0224c3a17fa63533fd11dd3d4c8636cd861191232a2c6735af00cc2d4de16 + checksum: 3dbad3f94ea64f34431a9cbf0bafb61853eda57bff2880036153438f50fb5a84f27683ba0d8e5426bf41a8c6ff03879488120cf5b3a761e77953169c0600a708 languageName: node linkType: hard @@ -1377,11 +1320,12 @@ __metadata: linkType: hard "define-properties@npm:^1.1.3": - version: 1.1.3 - resolution: "define-properties@npm:1.1.3" + version: 1.1.4 + resolution: "define-properties@npm:1.1.4" dependencies: - object-keys: ^1.0.12 - checksum: da80dba55d0cd76a5a7ab71ef6ea0ebcb7b941f803793e4e0257b384cb772038faa0c31659d244e82c4342edef841c1a1212580006a05a5068ee48223d787317 + has-property-descriptors: ^1.0.0 + object-keys: ^1.1.1 + checksum: ce0aef3f9eb193562b5cfb79b2d2c86b6a109dfc9fdcb5f45d680631a1a908c06824ddcdb72b7573b54e26ace07f0a23420aaba0d5c627b34d2c1de8ef527e2b languageName: node linkType: hard @@ -1406,12 +1350,10 @@ __metadata: languageName: node linkType: hard -"detect-libc@npm:^1.0.3": - version: 1.0.3 - resolution: "detect-libc@npm:1.0.3" - bin: - detect-libc: ./bin/detect-libc.js - checksum: daaaed925ffa7889bd91d56e9624e6c8033911bb60f3a50a74a87500680652969dbaab9526d1e200a4c94acf80fc862a22131841145a0a8482d60a99c24f4a3e +"detect-libc@npm:^2.0.0": + version: 2.0.1 + resolution: "detect-libc@npm:2.0.1" + checksum: ccb05fcabbb555beb544d48080179c18523a343face9ee4e1a86605a8715b4169f94d663c21a03c310ac824592f2ba9a5270218819bb411ad7be578a527593d7 languageName: node linkType: hard @@ -1425,33 +1367,37 @@ __metadata: linkType: hard "discord-akairo@npm:@notenoughupdates/discord-akairo@dev": - version: 9.1.3-dev.1644799330.8fbaf39 - resolution: "@notenoughupdates/discord-akairo@npm:9.1.3-dev.1644799330.8fbaf39" - checksum: 85cedfc65ce7dfce1ae34fe8df2c99b66ff8376e7b51679da39cb5c31592bb386b06b51adbbe47c5b0b9f95c4fa7824986a24e4bb64d0287cc68b8bbb2715829 + version: 9.1.3-dev.1650422274.21fe21d + resolution: "@notenoughupdates/discord-akairo@npm:9.1.3-dev.1650422274.21fe21d" + dependencies: + "@sapphire/shapeshift": ^2.0.0 + checksum: 59fa10c43beea70bd9f51d5997e44819f3d99b92eacd64dfc822ebea3e9834aef05327a6e1c38c19ba588f1a0000adeb35ac7af919a071711bb638eabb5b0d20 languageName: node linkType: hard -"discord-api-types@npm:0.27.3": - version: 0.27.3 - resolution: "discord-api-types@npm:0.27.3" - checksum: c22d87e787fae6cffd9d23972a3d196d4b43f2fb6deeed50181e7c9d4e823a4fd30a3e1d0e0b3b48a7c284ae2b39fbe960dee988375c7d4072df445f30ac440e +"discord-api-types@npm:0.31.2": + version: 0.31.2 + resolution: "discord-api-types@npm:0.31.2" + checksum: 928d4f57f4c1ace0baf1d3b2c3ab4a4a5107f100217ce889a6e00ad365115fd328a0b922dbc62af6b6ccac9552ffd7ec3d07f4c8820502c5b55d9f2e5382dfba languageName: node linkType: hard "discord.js@npm:@notenoughupdates/discord.js@dev": - version: 14.0.0-dev.1646516972.f238a8e - resolution: "@notenoughupdates/discord.js@npm:14.0.0-dev.1646516972.f238a8e" - dependencies: - "@discordjs/builders": ^0.13.0-dev - "@discordjs/collection": ^0.6.0-dev - "@discordjs/rest": ^0.4.0-dev - "@sapphire/snowflake": ^3.1.0 - "@types/ws": ^8.2.2 - discord-api-types: ^0.27.3 + version: 14.0.0-dev.1650419864-560cef6 + resolution: "@notenoughupdates/discord.js@npm:14.0.0-dev.1650419864-560cef6" + dependencies: + "@discordjs/builders": ^0.14.0-dev + "@discordjs/collection": ^0.7.0-dev + "@discordjs/rest": ^0.5.0-dev + "@sapphire/snowflake": ^3.2.1 + "@types/ws": ^8.5.3 + discord-api-types: ^0.31.1 + fast-deep-equal: ^3.1.3 lodash.snakecase: ^4.1.1 - undici: ^4.14.1 + tslib: ^2.3.1 + undici: ^4.16.0 ws: ^8.5.0 - checksum: 5894516eb8f8725ebdff86af6b545b7cd0a9bf3eceae121de33b27f83ddbfa5912e878dd2218caab99248a857c2f22a3159654fabea9f1db5b6f6e26b71a4d5d + checksum: a1bb4ad14c23eca844168163ea82f42107c5f6c1fbaa2bc971e220189137fd9de13862c1b2499a33af50594765f266872f6eacc368d4ee368f4fc258b763e7d7 languageName: node linkType: hard @@ -1528,9 +1474,9 @@ __metadata: languageName: node linkType: hard -"es-abstract@npm:^1.19.0, es-abstract@npm:^1.19.1": - version: 1.19.1 - resolution: "es-abstract@npm:1.19.1" +"es-abstract@npm:^1.19.1, es-abstract@npm:^1.19.2": + version: 1.19.5 + resolution: "es-abstract@npm:1.19.5" dependencies: call-bind: ^1.0.2 es-to-primitive: ^1.2.1 @@ -1538,21 +1484,30 @@ __metadata: get-intrinsic: ^1.1.1 get-symbol-description: ^1.0.0 has: ^1.0.3 - has-symbols: ^1.0.2 + has-symbols: ^1.0.3 internal-slot: ^1.0.3 is-callable: ^1.2.4 - is-negative-zero: ^2.0.1 + is-negative-zero: ^2.0.2 is-regex: ^1.1.4 - is-shared-array-buffer: ^1.0.1 + is-shared-array-buffer: ^1.0.2 is-string: ^1.0.7 - is-weakref: ^1.0.1 - object-inspect: ^1.11.0 + is-weakref: ^1.0.2 + object-inspect: ^1.12.0 object-keys: ^1.1.1 object.assign: ^4.1.2 string.prototype.trimend: ^1.0.4 string.prototype.trimstart: ^1.0.4 unbox-primitive: ^1.0.1 - checksum: b6be8410672c5364db3fb01eb786e30c7b4bb32b4af63d381c08840f4382c4a168e7855cd338bf59d4f1a1a1138f4d748d1fd40ec65aaa071876f9e9fbfed949 + checksum: 55199b0f179a12b3b0ec9c9f2e3a27a7561686e4f88d46f9ef32c836448a336e367c14d8f792612fc83a64113896e478259e4dffbbcffb3efdd06650f6360324 + languageName: node + linkType: hard + +"es-shim-unscopables@npm:^1.0.0": + version: 1.0.0 + resolution: "es-shim-unscopables@npm:1.0.0" + dependencies: + has: ^1.0.3 + checksum: 83e95cadbb6ee44d3644dfad60dcad7929edbc42c85e66c3e99aefd68a3a5c5665f2686885cddb47dfeabfd77bd5ea5a7060f2092a955a729bbd8834f0d86fa1 languageName: node linkType: hard @@ -1602,7 +1557,7 @@ __metadata: languageName: node linkType: hard -"eslint-module-utils@npm:^2.7.2": +"eslint-module-utils@npm:^2.7.3": version: 2.7.3 resolution: "eslint-module-utils@npm:2.7.3" dependencies: @@ -1626,26 +1581,26 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-import@npm:^2.25.4": - version: 2.25.4 - resolution: "eslint-plugin-import@npm:2.25.4" +"eslint-plugin-import@npm:^2.26.0": + version: 2.26.0 + resolution: "eslint-plugin-import@npm:2.26.0" dependencies: array-includes: ^3.1.4 array.prototype.flat: ^1.2.5 debug: ^2.6.9 doctrine: ^2.1.0 eslint-import-resolver-node: ^0.3.6 - eslint-module-utils: ^2.7.2 + eslint-module-utils: ^2.7.3 has: ^1.0.3 - is-core-module: ^2.8.0 + is-core-module: ^2.8.1 is-glob: ^4.0.3 - minimatch: ^3.0.4 + minimatch: ^3.1.2 object.values: ^1.1.5 - resolve: ^1.20.0 - tsconfig-paths: ^3.12.0 + resolve: ^1.22.0 + tsconfig-paths: ^3.14.1 peerDependencies: eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - checksum: 0af24f5c7c6ca692f42e3947127f0ae7dfe44f1e02740f7cbe988b510a9c52bab0065d7df04e2d953dcc88a4595a00cbdcf14018acf8cd75cfd47b72efcbb734 + checksum: 0bf77ad80339554481eafa2b1967449e1f816b94c7a6f9614ce33fb4083c4e6c050f10d241dd50b4975d47922880a34de1e42ea9d8e6fd663ebb768baa67e655 languageName: node linkType: hard @@ -1694,9 +1649,9 @@ __metadata: languageName: node linkType: hard -"eslint@npm:^8.12.0": - version: 8.12.0 - resolution: "eslint@npm:8.12.0" +"eslint@npm:^8.13.0": + version: 8.13.0 + resolution: "eslint@npm:8.13.0" dependencies: "@eslint/eslintrc": ^1.2.1 "@humanwhocodes/config-array": ^0.9.2 @@ -1735,7 +1690,7 @@ __metadata: v8-compile-cache: ^2.0.3 bin: eslint: bin/eslint.js - checksum: 111bf9046b7a463049788dd00d7f4cd91e024029982352dff4811ce5dfa8cb1136aa127cd8a7a91508234d3e1b4fb6f638a1f5ef9ea08b1af93a18703a4a8dc1 + checksum: bc7d2fc9a046d42cb2c8987573ecaf534c1fae14747c4695e32388e179c5f21b83eefdb3e4f35924bf76152e226d7cc9dfb21f12348baf12c803109005b17439 languageName: node linkType: hard @@ -1854,12 +1809,12 @@ __metadata: linkType: hard "fetch-blob@npm:^3.1.2, fetch-blob@npm:^3.1.4": - version: 3.1.4 - resolution: "fetch-blob@npm:3.1.4" + version: 3.1.5 + resolution: "fetch-blob@npm:3.1.5" dependencies: node-domexception: ^1.0.0 web-streams-polyfill: ^3.0.3 - checksum: 81b074f38a2dbfd546dd58e482cefe14e605abd609e272804bf089d588d84f39e3e95b35640bfb376f71d5038c123d4d41be49d9cdf87e5ec8939d37738df0b6 + checksum: 6493f21bfe196798343431d20c0284835202728d076dd2cbf502a2846679f9265f3b0c3a7224750ae1a770b925da09e592b05fe7c3a22ca27794a39a0039ab21 languageName: node linkType: hard @@ -1952,7 +1907,7 @@ __metadata: languageName: node linkType: hard -"fs-minipass@npm:^2.0.0": +"fs-minipass@npm:^2.0.0, fs-minipass@npm:^2.1.0": version: 2.1.0 resolution: "fs-minipass@npm:2.1.0" dependencies: @@ -2007,10 +1962,9 @@ __metadata: linkType: hard "gauge@npm:^4.0.0": - version: 4.0.2 - resolution: "gauge@npm:4.0.2" + version: 4.0.4 + resolution: "gauge@npm:4.0.4" dependencies: - ansi-regex: ^5.0.1 aproba: ^1.0.3 || ^2.0.0 color-support: ^1.1.3 console-control-strings: ^1.1.0 @@ -2019,20 +1973,20 @@ __metadata: string-width: ^4.2.3 strip-ansi: ^6.0.1 wide-align: ^1.1.5 - checksum: 65077b87a7138bf465c7ea9541a81cdaeba42224f8650427529d47dda99c0a9273b596a8ee54a62af2a04a31682fa49de9b35ef7dd52ed8da5f0436d288ead23 + checksum: 788b6bfe52f1dd8e263cda800c26ac0ca2ff6de0b6eee2fe0d9e3abf15e149b651bd27bf5226be10e6e3edb5c4e5d5985a5a1a98137e7a892f75eff76467ad2d languageName: node linkType: hard "gaxios@npm:^4.0.0": - version: 4.3.2 - resolution: "gaxios@npm:4.3.2" + version: 4.3.3 + resolution: "gaxios@npm:4.3.3" dependencies: abort-controller: ^3.0.0 extend: ^3.0.2 https-proxy-agent: ^5.0.0 is-stream: ^2.0.0 - node-fetch: ^2.6.1 - checksum: 1305fc6a4b9f888a7424ed160084d1f253a54bec04b4986ecb7929d8aa52382e737fc65feb03f0b0b47c524575286d765806d829868ec49fd383a1be8a973870 + node-fetch: ^2.6.7 + checksum: 0b72a00875404e2c3d7aca9f32535e931d7b0ebb850dc92fafc1685b99a109b04205c63e4637a2d0d9a261ac50adf83f7d33435f73e256dcca32564ef9358fee languageName: node linkType: hard @@ -2101,7 +2055,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^7.1.3, glob@npm:^7.1.4": +"glob@npm:^7.1.3, glob@npm:^7.1.4, glob@npm:^7.2.0": version: 7.2.0 resolution: "glob@npm:7.2.0" dependencies: @@ -2116,11 +2070,11 @@ __metadata: linkType: hard "globals@npm:^13.6.0, globals@npm:^13.9.0": - version: 13.12.1 - resolution: "globals@npm:13.12.1" + version: 13.13.0 + resolution: "globals@npm:13.13.0" dependencies: type-fest: ^0.20.2 - checksum: cf7877629c8f2a293b0a7d09d1dcce7f2d426ec2528600c481c5b3f3d070b0a120eb2499439ac0404990fb8a5742c0165b1bf1f52603364001ddc89bea3dda24 + checksum: c55ea8fd3afecb72567bac41605577e19e68476993dfb0ca4c49b86075af5f0ae3f0f5502525f69010f7c5ea5db6a1c540a80a4f80ebdfb2f686d87b0f05d7e9 languageName: node linkType: hard @@ -2139,8 +2093,8 @@ __metadata: linkType: hard "google-auth-library@npm:^7.0.2, google-auth-library@npm:^7.14.0": - version: 7.14.0 - resolution: "google-auth-library@npm:7.14.0" + version: 7.14.1 + resolution: "google-auth-library@npm:7.14.1" dependencies: arrify: ^2.0.0 base64-js: ^1.3.0 @@ -2151,18 +2105,18 @@ __metadata: gtoken: ^5.0.4 jws: ^4.0.0 lru-cache: ^6.0.0 - checksum: 0fe254bc985c7b3be5ae6708afae9cd8a92cb468d956458e8fb6ec76ce8900ee90dbf1c8aa51790039c388682db6a6b510b6bef48ae6e1cea6f5d893b163381c + checksum: 78376eb2d424151dea7e3e162e20e06c11f0133451dd5ee3ea759dcb514d946acf2e0238ff08f002bdb3bf9d43c619793939feff9bc1d92025206ee836a641cf languageName: node linkType: hard "google-p12-pem@npm:^3.1.3": - version: 3.1.3 - resolution: "google-p12-pem@npm:3.1.3" + version: 3.1.4 + resolution: "google-p12-pem@npm:3.1.4" dependencies: - node-forge: ^1.0.0 + node-forge: ^1.3.1 bin: gp12-pem: build/src/bin/gp12-pem.js - checksum: 8628f2bf9b4c9b3bfc7220906c15af2b306e2ef30c7c398327a9cff9d4a12285f104545f00c46b716dd23966615f446d7e5efde44d590f9483d345be78ea115e + checksum: 72ce13b9536c69f21584cb7477ed4c34674325639a5dac42e8d774b78d367cb196ae7d37a52bba868235205760df353ac678a5e1756a4f4ded82e16d29d6cbb1 languageName: node linkType: hard @@ -2180,13 +2134,13 @@ __metadata: languageName: node linkType: hard -"googleapis@npm:^99.0.0": - version: 99.0.0 - resolution: "googleapis@npm:99.0.0" +"googleapis@npm:^100.0.0": + version: 100.0.0 + resolution: "googleapis@npm:100.0.0" dependencies: google-auth-library: ^7.0.2 googleapis-common: ^5.0.2 - checksum: 2a2d6165cb7ead74dc799d097e9feb11df171b13608da6a789995d1f6f79c584b9853636cbfb675bb5ada486fb3f218ae679af23bedf200c4c3dd720f3690655 + checksum: a9d3fc0ef4a59cd15623b7b5afc1add63ea015a17ec7e2edbbb42f9335df0f5ddf37b9f3a93096465ac65772a285878e9fe0e270894ce4a1b3a575c70c5c86c4 languageName: node linkType: hard @@ -2212,9 +2166,9 @@ __metadata: linkType: hard "graceful-fs@npm:^4.2.6": - version: 4.2.9 - resolution: "graceful-fs@npm:4.2.9" - checksum: 68ea4e07ff2c041ada184f9278b830375f8e0b75154e3f080af6b70f66172fabb4108d19b3863a96b53fc068a310b9b6493d86d1291acc5f3861eb4b79d26ad6 + version: 4.2.10 + resolution: "graceful-fs@npm:4.2.10" + checksum: 3f109d70ae123951905d85032ebeae3c2a5a7a997430df00ea30df0e3a6c60cf6689b109654d6fdacd28810a053348c4d14642da1d075049e6be1ba5216218da languageName: node linkType: hard @@ -2230,9 +2184,9 @@ __metadata: linkType: hard "has-bigints@npm:^1.0.1": - version: 1.0.1 - resolution: "has-bigints@npm:1.0.1" - checksum: 44ab55868174470065d2e0f8f6def1c990d12b82162a8803c679699fa8a39f966e336f2a33c185092fe8aea7e8bf2e85f1c26add5f29d98f2318bd270096b183 + version: 1.0.2 + resolution: "has-bigints@npm:1.0.2" + checksum: 390e31e7be7e5c6fe68b81babb73dfc35d413604d7ee5f56da101417027a4b4ce6a27e46eff97ad040c835b5d228676eae99a9b5c3bc0e23c8e81a49241ff45b languageName: node linkType: hard @@ -2243,7 +2197,16 @@ __metadata: languageName: node linkType: hard -"has-symbols@npm:^1.0.1, has-symbols@npm:^1.0.2": +"has-property-descriptors@npm:^1.0.0": + version: 1.0.0 + resolution: "has-property-descriptors@npm:1.0.0" + dependencies: + get-intrinsic: ^1.1.1 + checksum: a6d3f0a266d0294d972e354782e872e2fe1b6495b321e6ef678c9b7a06a40408a6891817350c62e752adced73a94ac903c54734fee05bf65b1905ee1368194bb + languageName: node + linkType: hard + +"has-symbols@npm:^1.0.1, has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": version: 1.0.3 resolution: "has-symbols@npm:1.0.3" checksum: a054c40c631c0d5741a8285010a0777ea0c068f99ed43e5d6eb12972da223f8af553a455132fdb0801bdcfa0e0f443c0c03a68d8555aa529b3144b446c3f2410 @@ -2304,12 +2267,12 @@ __metadata: linkType: hard "https-proxy-agent@npm:^5.0.0": - version: 5.0.0 - resolution: "https-proxy-agent@npm:5.0.0" + version: 5.0.1 + resolution: "https-proxy-agent@npm:5.0.1" dependencies: agent-base: 6 debug: 4 - checksum: 165bfb090bd26d47693597661298006841ab733d0c7383a8cb2f17373387a94c903a3ac687090aa739de05e379ab6f868bae84ab4eac288ad85c328cd1ec9e53 + checksum: 571fccdf38184f05943e12d37d6ce38197becdd69e58d03f43637f7fa1269cf303a7d228aa27e5b27bbd3af8f09fd938e1c91dcfefff2df7ba77c20ed8dfc765 languageName: node linkType: hard @@ -2444,12 +2407,12 @@ __metadata: languageName: node linkType: hard -"is-core-module@npm:^2.8.0, is-core-module@npm:^2.8.1": - version: 2.8.1 - resolution: "is-core-module@npm:2.8.1" +"is-core-module@npm:^2.8.1": + version: 2.9.0 + resolution: "is-core-module@npm:2.9.0" dependencies: has: ^1.0.3 - checksum: 418b7bc10768a73c41c7ef497e293719604007f88934a6ffc5f7c78702791b8528102fb4c9e56d006d69361549b3d9519440214a74aefc7e0b79e5e4411d377f + checksum: b27034318b4b462f1c8f1dfb1b32baecd651d891a4e2d1922135daeff4141dfced2b82b07aef83ef54275c4a3526aa38da859223664d0868ca24182badb784ce languageName: node linkType: hard @@ -2492,7 +2455,7 @@ __metadata: languageName: node linkType: hard -"is-negative-zero@npm:^2.0.1": +"is-negative-zero@npm:^2.0.2": version: 2.0.2 resolution: "is-negative-zero@npm:2.0.2" checksum: f3232194c47a549da60c3d509c9a09be442507616b69454716692e37ae9f37c4dea264fb208ad0c9f3efd15a796a46b79df07c7e53c6227c32170608b809149a @@ -2500,11 +2463,11 @@ __metadata: linkType: hard "is-number-object@npm:^1.0.4": - version: 1.0.6 - resolution: "is-number-object@npm:1.0.6" + version: 1.0.7 + resolution: "is-number-object@npm:1.0.7" dependencies: has-tostringtag: ^1.0.0 - checksum: c697704e8fc2027fc41cb81d29805de4e8b6dc9c3efee93741dbf126a8ecc8443fef85adbc581415ae7e55d325e51d0a942324ae35c829131748cce39cba55f3 + checksum: d1e8d01bb0a7134c74649c4e62da0c6118a0bfc6771ea3c560914d52a627873e6920dd0fd0ebc0e12ad2ff4687eac4c308f7e80320b973b2c8a2c8f97a7524f7 languageName: node linkType: hard @@ -2525,10 +2488,12 @@ __metadata: languageName: node linkType: hard -"is-shared-array-buffer@npm:^1.0.1": - version: 1.0.1 - resolution: "is-shared-array-buffer@npm:1.0.1" - checksum: 2ffb92533e64e2876e6cfe6906871d28400b6f1a53130fe652ec8007bc0e5044d05e7af8e31bdc992fbba520bd92938cfbeedd0f286be92f250c7c76191c4d90 +"is-shared-array-buffer@npm:^1.0.2": + version: 1.0.2 + resolution: "is-shared-array-buffer@npm:1.0.2" + dependencies: + call-bind: ^1.0.2 + checksum: 9508929cf14fdc1afc9d61d723c6e8d34f5e117f0bffda4d97e7a5d88c3a8681f633a74f8e3ad1fe92d5113f9b921dc5ca44356492079612f9a247efbce7032a languageName: node linkType: hard @@ -2557,7 +2522,7 @@ __metadata: languageName: node linkType: hard -"is-weakref@npm:^1.0.1": +"is-weakref@npm:^1.0.2": version: 1.0.2 resolution: "is-weakref@npm:1.0.2" dependencies: @@ -2600,7 +2565,7 @@ __metadata: languageName: node linkType: hard -"json-buffer@npm:3.0.1": +"json-buffer@npm:3.0.1, json-buffer@npm:~3.0.1": version: 3.0.1 resolution: "json-buffer@npm:3.0.1" checksum: 9026b03edc2847eefa2e37646c579300a1f3a4586cfb62bf857832b60c852042d0d6ae55d1afb8926163fa54c2b01d83ae24705f34990348bdac6273a29d4581 @@ -2654,11 +2619,12 @@ __metadata: linkType: hard "keyv@npm:^4.0.0": - version: 4.1.1 - resolution: "keyv@npm:4.1.1" + version: 4.2.2 + resolution: "keyv@npm:4.2.2" dependencies: + compress-brotli: ^1.3.6 json-buffer: 3.0.1 - checksum: b141fe29405413e7ca4ea0dfd19a48e25d909834f032aafdf4b0c6be177087cc1177b9c0ffdabd41ac8a65c13b92dcd2ec8688f540fbb458efdb9c8730bbd102 + checksum: 1d03674145339cb6d7509fd7791a2ea93c0a9b7ec10e475d621f4443b8bf877c21dc391ae1002dd1bade4f44e2093f850f1da81d08c03812b4592cd5ff028db7 languageName: node linkType: hard @@ -2744,10 +2710,10 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^7.4.0": - version: 7.4.1 - resolution: "lru-cache@npm:7.4.1" - checksum: de6d8aa83b0a304943a1e1ec2a982d9b44ef36963c20bd01950f13dcb3eb482c57bfa15ab49b1baa15c682d6d33a10842bb7b33d8a449845009ffab6a2faec3c +"lru-cache@npm:^7.7.1": + version: 7.8.1 + resolution: "lru-cache@npm:7.8.1" + checksum: 31ea67388c9774300331d70f4affd5a433869bcf0fae5405f967d19d7b447930b713b0566a2e95362c9082034a8b496f3671ccf8f0c061d8e8048412663f9432 languageName: node linkType: hard @@ -2768,35 +2734,35 @@ __metadata: linkType: hard "make-fetch-happen@npm:^10.0.3": - version: 10.0.4 - resolution: "make-fetch-happen@npm:10.0.4" + version: 10.1.2 + resolution: "make-fetch-happen@npm:10.1.2" dependencies: agentkeepalive: ^4.2.1 - cacache: ^15.3.0 + cacache: ^16.0.2 http-cache-semantics: ^4.1.0 http-proxy-agent: ^5.0.0 https-proxy-agent: ^5.0.0 is-lambda: ^1.0.1 - lru-cache: ^7.4.0 + lru-cache: ^7.7.1 minipass: ^3.1.6 minipass-collect: ^1.0.2 - minipass-fetch: ^2.0.1 + minipass-fetch: ^2.0.3 minipass-flush: ^1.0.5 minipass-pipeline: ^1.2.4 negotiator: ^0.6.3 promise-retry: ^2.0.1 socks-proxy-agent: ^6.1.1 - ssri: ^8.0.1 - checksum: 036fcfaec18b69ce6384644275850b0871aff105663aecc0130b5c45fe318542d7e2004cf1f4cd26b7c6842c282f8b37f00da67aa3bae13c13693e405480ac74 + ssri: ^9.0.0 + checksum: 42825d119a7e4f5b1a8e7048a86d328cd36bb1ff875d155ce7079d9a0afdd310c198fb310096af358cfa9ecdf643cecf960380686792457dccb36e17efe89eb0 languageName: node linkType: hard -"mathjs@npm:^10.4.2": - version: 10.4.2 - resolution: "mathjs@npm:10.4.2" +"mathjs@npm:^10.5.0": + version: 10.5.0 + resolution: "mathjs@npm:10.5.0" dependencies: - "@babel/runtime": ^7.17.8 - complex.js: ^2.1.0 + "@babel/runtime": ^7.17.9 + complex.js: ^2.1.1 decimal.js: ^10.3.1 escape-latex: ^1.2.0 fraction.js: ^4.2.0 @@ -2806,7 +2772,7 @@ __metadata: typed-function: ^2.1.0 bin: mathjs: bin/cli.js - checksum: 5cbf1d9c35c0d4f635be080fce4a9bd12a3bc1875405ff0c22445b039acdc269f2b2e116ca66a2f258cd33f6dd5ca4b694ecffa2d574418915fdd78794b8f4cb + checksum: c97b076889054e492fb803d634aa72c30186c61194e8a9dd2c89098f6c97639feeb3f3d107d35368b42694dcc9586b5cce0d0a1bf2e3d8e71f2276daa9d449c7 languageName: node linkType: hard @@ -2818,28 +2784,28 @@ __metadata: linkType: hard "micromatch@npm:^4.0.4": - version: 4.0.4 - resolution: "micromatch@npm:4.0.4" + version: 4.0.5 + resolution: "micromatch@npm:4.0.5" dependencies: - braces: ^3.0.1 - picomatch: ^2.2.3 - checksum: ef3d1c88e79e0a68b0e94a03137676f3324ac18a908c245a9e5936f838079fcc108ac7170a5fadc265a9c2596963462e402841406bda1a4bb7b68805601d631c + braces: ^3.0.2 + picomatch: ^2.3.1 + checksum: 02a17b671c06e8fefeeb6ef996119c1e597c942e632a21ef589154f23898c9c6a9858526246abb14f8bca6e77734aa9dcf65476fca47cedfb80d9577d52843fc languageName: node linkType: hard -"mime-db@npm:1.51.0": - version: 1.51.0 - resolution: "mime-db@npm:1.51.0" - checksum: 613b1ac9d6e725cc24444600b124a7f1ce6c60b1baa654f39a3e260d0995a6dffc5693190217e271af7e2a5612dae19f2a73f3e316707d797a7391165f7ef423 +"mime-db@npm:1.52.0": + version: 1.52.0 + resolution: "mime-db@npm:1.52.0" + checksum: 0d99a03585f8b39d68182803b12ac601d9c01abfa28ec56204fa330bc9f3d1c5e14beb049bafadb3dbdf646dfb94b87e24d4ec7b31b7279ef906a8ea9b6a513f languageName: node linkType: hard "mime-types@npm:^2.1.12": - version: 2.1.34 - resolution: "mime-types@npm:2.1.34" + version: 2.1.35 + resolution: "mime-types@npm:2.1.35" dependencies: - mime-db: 1.51.0 - checksum: 67013de9e9d6799bde6d669d18785b7e18bcd212e710d3e04a4727f92f67a8ad4e74aee24be28b685adb794944814bde649119b58ee3282ffdbee58f9278d9f3 + mime-db: 1.52.0 + checksum: 89a5b7f1def9f3af5dad6496c5ed50191ae4331cc5389d7c521c8ad28d5fdad2d06fd81baf38fed813dc4e46bb55c8145bb0ff406330818c9cf712fb2e9b3836 languageName: node linkType: hard @@ -2864,7 +2830,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^3.0.4": +"minimatch@npm:^3.0.4, minimatch@npm:^3.1.2": version: 3.1.2 resolution: "minimatch@npm:3.1.2" dependencies: @@ -2873,10 +2839,10 @@ __metadata: languageName: node linkType: hard -"minimist@npm:^1.2.0": - version: 1.2.5 - resolution: "minimist@npm:1.2.5" - checksum: 86706ce5b36c16bfc35c5fe3dbb01d5acdc9a22f2b6cc810b6680656a1d2c0e44a0159c9a3ba51fb072bb5c203e49e10b51dcd0eec39c481f4c42086719bae52 +"minimist@npm:^1.2.0, minimist@npm:^1.2.6": + version: 1.2.6 + resolution: "minimist@npm:1.2.6" + checksum: d15428cd1e11eb14e1233bcfb88ae07ed7a147de251441d61158619dfb32c4d7e9061d09cab4825fdee18ecd6fce323228c8c47b5ba7cd20af378ca4048fb3fb languageName: node linkType: hard @@ -2889,9 +2855,9 @@ __metadata: languageName: node linkType: hard -"minipass-fetch@npm:^2.0.1": - version: 2.0.2 - resolution: "minipass-fetch@npm:2.0.2" +"minipass-fetch@npm:^2.0.3": + version: 2.1.0 + resolution: "minipass-fetch@npm:2.1.0" dependencies: encoding: ^0.1.13 minipass: ^3.1.6 @@ -2900,7 +2866,7 @@ __metadata: dependenciesMeta: encoding: optional: true - checksum: 0613b0a6ef427609707c2b73b69230348fe3c24b33c144622e8e248404534fa1f125b94c324c555cd665ef623abedab0f7891e460b1c9ac6babc3ab2385b3c18 + checksum: 1334732859a3f7959ed22589bafd9c40384b885aebb5932328071c33f86b3eb181d54c86919675d1825ab5f1c8e4f328878c863873258d113c29d79a4b0c9c9f languageName: node linkType: hard @@ -2913,7 +2879,7 @@ __metadata: languageName: node linkType: hard -"minipass-pipeline@npm:^1.2.2, minipass-pipeline@npm:^1.2.4": +"minipass-pipeline@npm:^1.2.4": version: 1.2.4 resolution: "minipass-pipeline@npm:1.2.4" dependencies: @@ -2969,9 +2935,9 @@ __metadata: linkType: hard "moment@npm:>= 2.9.0, moment@npm:^2.29.1": - version: 2.29.1 - resolution: "moment@npm:2.29.1" - checksum: 1e14d5f422a2687996be11dd2d50c8de3bd577c4a4ca79ba5d02c397242a933e5b941655de6c8cb90ac18f01cc4127e55b4a12ae3c527a6c0a274e455979345e + version: 2.29.3 + resolution: "moment@npm:2.29.3" + checksum: 2e780e36d9a1823c08a1b6313cbb08bd01ecbb2a9062095820a34f42c878991ccba53abaa6abb103fd5c01e763724f295162a8c50b7e95b4f1c992ef0772d3f0 languageName: node linkType: hard @@ -3005,12 +2971,12 @@ __metadata: languageName: node linkType: hard -"nanoid@npm:^3.3.2": - version: 3.3.2 - resolution: "nanoid@npm:3.3.2" +"nanoid@npm:^3.3.3": + version: 3.3.3 + resolution: "nanoid@npm:3.3.3" bin: nanoid: bin/nanoid.cjs - checksum: 376717f0685251fad77850bd84c6b8d57837c71eeb1c05be7c742140cc1835a5a2953562add05166d6dbc8fb65f3fdffa356213037b967a470e1691dc3e7b9cc + checksum: ada019402a07464a694553c61d2dca8a4353645a7d92f2830f0d487fedff403678a0bee5323a46522752b2eab95a0bc3da98b6cccaa7c0c55cd9975130e6d6f0 languageName: node linkType: hard @@ -3035,7 +3001,7 @@ __metadata: languageName: node linkType: hard -"node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.5, node-fetch@npm:^2.6.7": +"node-fetch@npm:^2.6.7": version: 2.6.7 resolution: "node-fetch@npm:2.6.7" dependencies: @@ -3060,10 +3026,10 @@ __metadata: languageName: node linkType: hard -"node-forge@npm:^1.0.0": - version: 1.2.1 - resolution: "node-forge@npm:1.2.1" - checksum: af4f88c3f69362359f35f6a9e231b35c96d906eeb6e976fb92742afe7fcdd76439dc22b41ce3755389d171f6320756ec7505bdfa7b252466c091b8c519a22674 +"node-forge@npm:^1.3.1": + version: 1.3.1 + resolution: "node-forge@npm:1.3.1" + checksum: 08fb072d3d670599c89a1704b3e9c649ff1b998256737f0e06fbd1a5bf41cae4457ccaee32d95052d80bbafd9ffe01284e078c8071f0267dc9744e51c5ed42a9 languageName: node linkType: hard @@ -3150,14 +3116,14 @@ __metadata: languageName: node linkType: hard -"object-inspect@npm:^1.11.0, object-inspect@npm:^1.9.0": +"object-inspect@npm:^1.12.0, object-inspect@npm:^1.9.0": version: 1.12.0 resolution: "object-inspect@npm:1.12.0" checksum: 2b36d4001a9c921c6b342e2965734519c9c58c355822243c3207fbf0aac271f8d44d30d2d570d450b2cc6f0f00b72bcdba515c37827d2560e5f22b1899a31cf4 languageName: node linkType: hard -"object-keys@npm:^1.0.12, object-keys@npm:^1.1.1": +"object-keys@npm:^1.1.1": version: 1.1.1 resolution: "object-keys@npm:1.1.1" checksum: b363c5e7644b1e1b04aa507e88dcb8e3a2f52b6ffd0ea801e4c7a62d5aa559affe21c55a07fd4b1fd55fc03a33c610d73426664b20032405d7b92a1414c34d6a @@ -3383,7 +3349,7 @@ __metadata: languageName: node linkType: hard -"picomatch@npm:^2.2.3": +"picomatch@npm:^2.3.1": version: 2.3.1 resolution: "picomatch@npm:2.3.1" checksum: 050c865ce81119c4822c45d3c84f1ced46f93a0126febae20737bd05ca20589c564d6e9226977df859ed5e03dc73f02584a2b0faad36e896936238238b0446cf @@ -3427,12 +3393,12 @@ __metadata: languageName: node linkType: hard -"prettier@npm:^2.6.1": - version: 2.6.1 - resolution: "prettier@npm:2.6.1" +"prettier@npm:^2.6.2": + version: 2.6.2 + resolution: "prettier@npm:2.6.2" bin: prettier: bin-prettier.js - checksum: 78be1f8a3ddfad7c3d8a854b6c8941a3bb1ddfca4225c38d778e0fe1029a55368f71b3bbefff82c689015fbb4d391ec44add957f01308ad2725e01a7c1f37cb6 + checksum: 48d08dde8e9fb1f5bccdd205baa7f192e9fc8bc98f86e1b97d919de804e28c806b0e6cc685e4a88211aa7987fa9668f30baae19580d87ced3ed0f2ec6572106f languageName: node linkType: hard @@ -3539,7 +3505,7 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.20.0": +"resolve@npm:^1.20.0, resolve@npm:^1.22.0": version: 1.22.0 resolution: "resolve@npm:1.22.0" dependencies: @@ -3552,7 +3518,7 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@^1.20.0#~builtin<compat/resolve>": +"resolve@patch:resolve@^1.20.0#~builtin<compat/resolve>, resolve@patch:resolve@^1.22.0#~builtin<compat/resolve>": version: 1.22.0 resolution: "resolve@patch:resolve@npm%3A1.22.0#~builtin<compat/resolve>::version=1.22.0&hash=07638b" dependencies: @@ -3646,13 +3612,13 @@ __metadata: linkType: hard "semver@npm:^7.3.5": - version: 7.3.5 - resolution: "semver@npm:7.3.5" + version: 7.3.7 + resolution: "semver@npm:7.3.7" dependencies: lru-cache: ^6.0.0 bin: semver: bin/semver.js - checksum: 5eafe6102bea2a7439897c1856362e31cc348ccf96efd455c8b5bc2c61e6f7e7b8250dc26b8828c1d76a56f818a7ee907a36ae9fb37a599d3d24609207001d60 + checksum: 2fa3e877568cd6ce769c75c211beaed1f9fce80b28338cadd9d0b6c40f2e2862bafd62c19a6cff42f3d54292b7c623277bcab8816a2b5521cf15210d43e75232 languageName: node linkType: hard @@ -3663,9 +3629,9 @@ __metadata: languageName: node linkType: hard -"sequelize@npm:6.17.0": - version: 6.17.0 - resolution: "sequelize@npm:6.17.0" +"sequelize@npm:6.19.0": + version: 6.19.0 + resolution: "sequelize@npm:6.19.0" dependencies: "@types/debug": ^4.1.7 "@types/validator": ^13.7.1 @@ -3700,7 +3666,7 @@ __metadata: optional: true tedious: optional: true - checksum: 54bef508cff51e1330604dfeb926dc3f0618ec28ddcc9f97c3a6d9e94d1d4ce625e66c3f40d50e91f028239a7ecb5d85aeb11ee7f402666448b25991d249b21b + checksum: e1faa389fe8bf4e58f4781763d313e6a28b5cf8376f9c34ba6a6af9f158a309d8fa30277706bbee004caa8068a5f3030cf1620735a2d9f84a33f204ab2dae2f2 languageName: node linkType: hard @@ -3778,17 +3744,17 @@ __metadata: linkType: hard "socks-proxy-agent@npm:^6.1.1": - version: 6.1.1 - resolution: "socks-proxy-agent@npm:6.1.1" + version: 6.2.0 + resolution: "socks-proxy-agent@npm:6.2.0" dependencies: agent-base: ^6.0.2 - debug: ^4.3.1 - socks: ^2.6.1 - checksum: 9a8a4f791bba0060315cf7291ca6f9db37d6fc280fd0860d73d8887d3efe4c22e823aa25a8d5375f6079279f8dc91b50c075345179bf832bfe3c7c26d3582e3c + debug: ^4.3.3 + socks: ^2.6.2 + checksum: 6723fd64fb50334e2b340fd0a80fd8488ffc5bc43d85b7cf1d25612044f814dd7d6ea417fd47602159941236f7f4bd15669fa5d7e1f852598a31288e1a43967b languageName: node linkType: hard -"socks@npm:^2.6.1": +"socks@npm:^2.6.2": version: 2.6.2 resolution: "socks@npm:2.6.2" dependencies: @@ -3805,12 +3771,12 @@ __metadata: languageName: node linkType: hard -"ssri@npm:^8.0.1": - version: 8.0.1 - resolution: "ssri@npm:8.0.1" +"ssri@npm:^9.0.0": + version: 9.0.0 + resolution: "ssri@npm:9.0.0" dependencies: minipass: ^3.1.1 - checksum: bc447f5af814fa9713aa201ec2522208ae0f4d8f3bda7a1f445a797c7b929a02720436ff7c478fb5edc4045adb02b1b88d2341b436a80798734e2494f1067b36 + checksum: bf33174232d07cc64e77ab1c51b55d28352273380c503d35642a19627e88a2c5f160039bb0a28608a353485075dda084dbf0390c7070f9f284559eb71d01b84b languageName: node linkType: hard @@ -3893,7 +3859,7 @@ __metadata: languageName: node linkType: hard -"tar@npm:^6.0.2, tar@npm:^6.1.11, tar@npm:^6.1.2": +"tar@npm:^6.1.11, tar@npm:^6.1.2": version: 6.1.11 resolution: "tar@npm:6.1.11" dependencies: @@ -3951,22 +3917,22 @@ __metadata: languageName: node linkType: hard -"ts-mixer@npm:^6.0.0": - version: 6.0.0 - resolution: "ts-mixer@npm:6.0.0" - checksum: 791a513c9ca318a979928f5265fd6029858fa21595153a9386063c11239a6b1c352db1e277c19f0544d017a67cf78d120a7438b86b2c828b1115eb607538eff8 +"ts-mixer@npm:^6.0.1": + version: 6.0.1 + resolution: "ts-mixer@npm:6.0.1" + checksum: 7050f6e85a24155d18cecdcc0a098d1038991cc498317fcffa9d7a8654c776d417fb97e65de1ce8e7ed54ef4814abd8057d0efb9c3b24e9cc78ac3c0f48bbf53 languageName: node linkType: hard -"tsconfig-paths@npm:^3.12.0": - version: 3.13.0 - resolution: "tsconfig-paths@npm:3.13.0" +"tsconfig-paths@npm:^3.14.1": + version: 3.14.1 + resolution: "tsconfig-paths@npm:3.14.1" dependencies: "@types/json5": ^0.0.29 json5: ^1.0.1 - minimist: ^1.2.0 + minimist: ^1.2.6 strip-bom: ^3.0.0 - checksum: 64f0de3c882c016cdfe34d5261087fcf0c75048c4206ee32540e36df9f99d82d2caa5872135d3b6704324f5fd7d9032131caf316c1da83c2ac465d5dfb2aafd4 + checksum: 8afa01c673ebb4782ba53d3a12df97fa837ce524f8ad38ee4e2b2fd57f5ac79abc21c574e9e9eb014d93efe7fe8214001b96233b5c6ea75bd1ea82afe17a4c6d languageName: node linkType: hard @@ -4057,10 +4023,10 @@ __metadata: languageName: node linkType: hard -"undici@npm:^4.14.1": - version: 4.15.0 - resolution: "undici@npm:4.15.0" - checksum: be1f7bc0cf17dacc0b2619c694f2d8c3d17d2ca23264469a7032425e5f5c2915cc105f6efa2df26da368bb6921b76c3f0207f727b2fdc11e8e35c6c16839f848 +"undici@npm:^4.16.0": + version: 4.16.0 + resolution: "undici@npm:4.16.0" + checksum: 5e88c2b3381085e25ed1d1a308610ac7ee985f478ac705af7a8e03213536e10f73ef8dd8d85e6ed38948d1883fa0ae935e04357c317b0f5d3d3c0211d0c8c393 languageName: node linkType: hard @@ -4141,9 +4107,9 @@ __metadata: linkType: hard "web-streams-polyfill@npm:^3.0.3": - version: 3.2.0 - resolution: "web-streams-polyfill@npm:3.2.0" - checksum: e23ad0649392fa0159dbfc6bb27474c308c3f332d9078cfef3c06c154165bef18732c5814126147c6c712f604216ddc950c171c854e3821f020e0d2d721a5958 + version: 3.2.1 + resolution: "web-streams-polyfill@npm:3.2.1" + checksum: b119c78574b6d65935e35098c2afdcd752b84268e18746606af149e3c424e15621b6f1ff0b42b2676dc012fc4f0d313f964b41a4b5031e525faa03997457da02 languageName: node linkType: hard @@ -4248,10 +4214,3 @@ __metadata: checksum: 343617202af32df2a15a3be36a5a8c0c8545208f3d3dfbc6bb7c3e3b7e8c6f8e7485432e4f3b88da3031a6e20afa7c711eded32ddfb122896ac5d914e75848d5 languageName: node linkType: hard - -"zod@npm:^3.11.6": - version: 3.13.4 - resolution: "zod@npm:3.13.4" - checksum: 3db8e4d27e8d305eed44c3eaff3e67fa26e39ad0bf4f06dbafae6b6e6516bdcc5aafe342afeb81ba0386fa53373404a18f0371d41a3738f1f9b85d1321ee9724 - languageName: node - linkType: hard |