diff --git a/base/Client.js b/base/Client.js index e222bc33..194574b0 100644 --- a/base/Client.js +++ b/base/Client.js @@ -48,7 +48,7 @@ class JaBaClient extends Client { await this.player.extractors.register(YoutubeiExtractor, { authentication: this.config.youtubeCookie, streamOptions: { - useClient: "ANDROID", + useClient: "WEB", }, }); diff --git a/commands/Administration/addemoji.js b/commands/Administration/addemoji.js index 1540049e..c944f7a2 100644 --- a/commands/Administration/addemoji.js +++ b/commands/Administration/addemoji.js @@ -58,7 +58,7 @@ class Addemoji extends BaseCommand { }) .then(emoji => interaction.success("administration/stealemoji:SUCCESS", { - emoji: emoji.name, + emoji: emoji.toString(), }, { ephemeral: true }), ) .catch(e => { diff --git a/commands/Administration/stealemoji.js b/commands/Administration/stealemoji.js index 529cab3c..0544f415 100644 --- a/commands/Administration/stealemoji.js +++ b/commands/Administration/stealemoji.js @@ -47,7 +47,7 @@ class Stealemoji extends BaseCommand { }) .then(emoji => interaction.success("administration/stealemoji:SUCCESS", { - emoji: emoji.name, + emoji: emoji.toString(), }, { ephemeral: true }), ) .catch(e => { diff --git a/commands/Economy/birthdate.js b/commands/Economy/birthdate.js index 216dc55f..36392103 100644 --- a/commands/Economy/birthdate.js +++ b/commands/Economy/birthdate.js @@ -23,8 +23,7 @@ class Birthdate extends BaseCommand { .setDescriptionLocalizations({ uk: client.translate("economy/birthdate:DAY", null, "uk-UA"), ru: client.translate("economy/birthdate:DAY", null, "ru-RU"), - }) - .setRequired(true), + }), ) .addIntegerOption(option => option @@ -34,20 +33,19 @@ class Birthdate extends BaseCommand { uk: client.translate("economy/birthdate:MONTH", null, "uk-UA"), ru: client.translate("economy/birthdate:MONTH", null, "ru-RU"), }) - .setRequired(true) .setChoices( - { name: client.translate("economy/birthdate:JANUARY"), value: 1 }, - { name: client.translate("economy/birthdate:FEBRUARY"), value: 2 }, - { name: client.translate("economy/birthdate:MARCH"), value: 3 }, - { name: client.translate("economy/birthdate:APRIL"), value: 4 }, - { name: client.translate("economy/birthdate:MAY"), value: 5 }, - { name: client.translate("economy/birthdate:JUNE"), value: 6 }, - { name: client.translate("economy/birthdate:JULY"), value: 7 }, - { name: client.translate("economy/birthdate:AUGUST"), value: 8 }, - { name: client.translate("economy/birthdate:SEPTEMBER"), value: 9 }, - { name: client.translate("economy/birthdate:OCTOBER"), value: 10 }, - { name: client.translate("economy/birthdate:NOVEMBER"), value: 11 }, - { name: client.translate("economy/birthdate:DECEMBER"), value: 12 }, + { name: client.translate("misc:MONTHS:JANUARY"), value: 1 }, + { name: client.translate("misc:MONTHS:FEBRUARY"), value: 2 }, + { name: client.translate("misc:MONTHS:MARCH"), value: 3 }, + { name: client.translate("misc:MONTHS:APRIL"), value: 4 }, + { name: client.translate("misc:MONTHS:MAY"), value: 5 }, + { name: client.translate("misc:MONTHS:JUNE"), value: 6 }, + { name: client.translate("misc:MONTHS:JULY"), value: 7 }, + { name: client.translate("misc:MONTHS:AUGUST"), value: 8 }, + { name: client.translate("misc:MONTHS:SEPTEMBER"), value: 9 }, + { name: client.translate("misc:MONTHS:OCTOBER"), value: 10 }, + { name: client.translate("misc:MONTHS:NOVEMBER"), value: 11 }, + { name: client.translate("misc:MONTHS:DECEMBER"), value: 12 }, ), ) .addIntegerOption(option => @@ -57,8 +55,16 @@ class Birthdate extends BaseCommand { .setDescriptionLocalizations({ uk: client.translate("economy/birthdate:YEAR", null, "uk-UA"), ru: client.translate("economy/birthdate:YEAR", null, "ru-RU"), - }) - .setRequired(true), + }), + ) + .addBooleanOption(option => + option + .setName("clear") + .setDescription(client.translate("economy/birthdate:CLEAR")) + .setDescriptionLocalizations({ + uk: client.translate("economy/birthdate:CLEAR", null, "uk-UA"), + ru: client.translate("economy/birthdate:CLEAR", null, "ru-RU"), + }), ), dirname: __dirname, ownerOnly: false, @@ -71,8 +77,18 @@ class Birthdate extends BaseCommand { * @param {import("discord.js").ChatInputCommandInteraction} interaction */ async execute(client, interaction) { - const userData = interaction.data.user, - day = interaction.options.getInteger("day"), + const userData = interaction.data.user; + + if (interaction.options.getBoolean("clear")) { + userData.birthdate = null; + await userData.save(); + + return interaction.success("economy/birthdate:SUCCESS", { + date: "none", + }); + } + + const day = interaction.options.getInteger("day"), month = interaction.options.getInteger("month"), year = interaction.options.getInteger("year"), date = new Date(year, month - 1, day); diff --git a/commands/General/reminds.js b/commands/General/reminds.js index ea248eb6..c3701e25 100644 --- a/commands/General/reminds.js +++ b/commands/General/reminds.js @@ -28,88 +28,112 @@ class Reminds extends BaseCommand { async onLoad(client) { client.on("interactionCreate", async interaction => { if (!interaction.isButton()) return; + if (!interaction.customId.startsWith("reminds_")) return; - if (interaction.customId.startsWith("reminds_")) { - interaction.data = []; - interaction.data.guild = await client.getGuildData(interaction.guildId); - interaction.data.user = await client.getUserData(interaction.user.id); + interaction.data = []; + interaction.data.guild = await client.getGuildData(interaction.guildId); + interaction.data.user = await client.getUserData(interaction.user.id); - const reminds = interaction.data.user.reminds, - embeds = generateRemindsEmbeds(interaction, reminds); + const reminds = interaction.data.user.reminds, + embeds = generateRemindsEmbeds(interaction, reminds); - const row = new ActionRowBuilder().addComponents( - new ButtonBuilder().setCustomId("reminds_prev_page").setStyle(ButtonStyle.Primary).setEmoji("⬅️"), - new ButtonBuilder().setCustomId("reminds_next_page").setStyle(ButtonStyle.Primary).setEmoji("➡️"), - new ButtonBuilder().setCustomId("reminds_jump_page").setStyle(ButtonStyle.Secondary).setEmoji("↗️"), - new ButtonBuilder().setCustomId("reminds_stop").setStyle(ButtonStyle.Danger).setEmoji("❌"), + const row = new ActionRowBuilder().addComponents( + new ButtonBuilder().setCustomId("reminds_prev_page").setStyle(ButtonStyle.Primary).setEmoji("⬅️"), + new ButtonBuilder().setCustomId("reminds_next_page").setStyle(ButtonStyle.Primary).setEmoji("➡️"), + new ButtonBuilder().setCustomId("reminds_jump_page").setStyle(ButtonStyle.Secondary).setEmoji("↗️"), + new ButtonBuilder().setCustomId("reminds_stop").setStyle(ButtonStyle.Danger).setEmoji("❌"), + ); + + let currentPage = Number(interaction.message.content.match(/\d+/g)[0]) - 1 ?? 0; + + const row2 = new ActionRowBuilder(); + + for (const key in reminds) { + row2.addComponents( + new ButtonBuilder() + .setCustomId(`reminds_delete_${key}`) + .setLabel(interaction.translate("general/reminds:DELETE", { pos: parseInt(key) + 1 })) + .setStyle(ButtonStyle.Danger), ); + } - let currentPage = Number(interaction.message.content.match(/\d+/g)[0]) - 1 ?? 0; + if (interaction.customId === "reminds_prev_page") { + await interaction.deferUpdate(); - if (interaction.customId === "reminds_prev_page") { - await interaction.deferUpdate(); - - if (currentPage !== 0) { - --currentPage; - interaction.editReply({ - content: `${interaction.translate("common:PAGE")}: **${currentPage + 1}**/**${embeds.length}**`, - embeds: [embeds[currentPage]], - components: [row], - }); - } - } else if (interaction.customId === "reminds_next_page") { - await interaction.deferUpdate(); - - if (currentPage < embeds.length - 1) { - currentPage++; - interaction.editReply({ - content: `${interaction.translate("common:PAGE")}: **${currentPage + 1}**/**${embeds.length}**`, - embeds: [embeds[currentPage]], - components: [row], - }); - } - } else if (interaction.customId === "reminds_jump_page") { - await interaction.deferUpdate(); - - const msg = await interaction.followUp({ - content: interaction.translate("misc:JUMP_TO_PAGE", { - length: embeds.length, - }), - fetchReply: true, - }); - - const filter = res => { - return res.author.id === interaction.user.id && !isNaN(res.content); - }; - - interaction.channel.awaitMessages({ filter, max: 1, time: 10 * 1000 }).then(collected => { - if (embeds[collected.first().content - 1]) { - currentPage = collected.first().content - 1; - interaction.editReply({ - content: `${interaction.translate("common:PAGE")}: **${currentPage + 1}**/**${embeds.length}**`, - embeds: [embeds[currentPage]], - components: [row], - }); - - if (collected.first().deletable) collected.first().delete(); - if (msg.deletable) msg.delete(); - } else { - if (collected.first().deletable) collected.first().delete(); - if (msg.deletable) msg.delete(); - return; - } - }); - } else if (interaction.customId === "reminds_stop") { - await interaction.deferUpdate(); - - row.components.forEach(component => { - component.setDisabled(true); - }); - - return interaction.editReply({ - components: [row], + if (currentPage !== 0) { + --currentPage; + interaction.editReply({ + content: `${interaction.translate("common:PAGE")}: **${currentPage + 1}**/**${embeds.length}**`, + embeds: [embeds[currentPage]], + components: [row, row2], }); } + } else if (interaction.customId === "reminds_next_page") { + await interaction.deferUpdate(); + + if (currentPage < embeds.length - 1) { + currentPage++; + interaction.editReply({ + content: `${interaction.translate("common:PAGE")}: **${currentPage + 1}**/**${embeds.length}**`, + embeds: [embeds[currentPage]], + components: [row, row2], + }); + } + } else if (interaction.customId === "reminds_jump_page") { + await interaction.deferUpdate(); + + const msg = await interaction.followUp({ + content: interaction.translate("misc:JUMP_TO_PAGE", { + length: embeds.length, + }), + fetchReply: true, + }); + + const filter = res => { + return res.author.id === interaction.user.id && !isNaN(res.content); + }; + + interaction.channel.awaitMessages({ filter, max: 1, time: 10 * 1000 }).then(collected => { + if (embeds[collected.first().content - 1]) { + currentPage = collected.first().content - 1; + interaction.editReply({ + content: `${interaction.translate("common:PAGE")}: **${currentPage + 1}**/**${embeds.length}**`, + embeds: [embeds[currentPage]], + components: [row, row2], + }); + + if (collected.first().deletable) collected.first().delete(); + if (msg.deletable) msg.delete(); + } else { + if (collected.first().deletable) collected.first().delete(); + if (msg.deletable) msg.delete(); + return; + } + }); + } else if (interaction.customId === "reminds_stop") { + await interaction.deferUpdate(); + + row.components.forEach(component => { + component.setDisabled(true); + }); + + return interaction.editReply({ + components: [row, row2], + }); + } else if (interaction.customId.startsWith("reminds_delete_")) { + await interaction.deferUpdate(); + + const id = parseInt(interaction.customId.split("_")[2]); + const remindToDelete = reminds[id]; + + interaction.data.user.reminds = reminds.filter(r => r.sendAt !== remindToDelete.sendAt); + + await interaction.data.user.save(); + + return interaction.followUp({ + content: `${client.customEmojis.success} | ${interaction.translate("general/reminds:DELETED", { pos: id + 1 })}`, + ephemeral: true, + }); } }); } @@ -134,10 +158,21 @@ class Reminds extends BaseCommand { new ButtonBuilder().setCustomId("reminds_stop").setStyle(ButtonStyle.Danger).setEmoji("❌"), ); + const row2 = new ActionRowBuilder(); + + for (const key in reminds) { + row2.addComponents( + new ButtonBuilder() + .setCustomId(`reminds_delete_${key}`) + .setLabel(interaction.translate("general/reminds:DELETE", { pos: parseInt(key) + 1 })) + .setStyle(ButtonStyle.Danger), + ); + } + await interaction.editReply({ content: `${interaction.translate("common:PAGE")}: **1**/**${embeds.length}**`, embeds: [embeds[0]], - components: [row], + components: [row, row2], ephemeral: true, }); } diff --git a/commands/Music/skip.js b/commands/Music/skip.js index 3df1691c..535b4422 100644 --- a/commands/Music/skip.js +++ b/commands/Music/skip.js @@ -23,8 +23,7 @@ class Skip extends BaseCommand { .setDescriptionLocalizations({ uk: client.translate("music/skip:POSITION", null, "uk-UA"), ru: client.translate("music/skip:POSITION", null, "ru-RU"), - }) - .setRequired(false), + }), ), dirname: __dirname, ownerOnly: false, diff --git a/commands/Tickets/createticketembed.js b/commands/Tickets/createticketembed.js index 7f63cd65..b6283ba9 100644 --- a/commands/Tickets/createticketembed.js +++ b/commands/Tickets/createticketembed.js @@ -1,4 +1,4 @@ -const { SlashCommandBuilder, PermissionsBitField, ButtonBuilder, ButtonStyle, ActionRowBuilder, ChannelType } = require("discord.js"); +const { SlashCommandBuilder, PermissionsBitField, ButtonBuilder, ButtonStyle, ActionRowBuilder } = require("discord.js"); const BaseCommand = require("../../base/BaseCommand"); class CreateTicketEmbed extends BaseCommand { @@ -22,186 +22,6 @@ class CreateTicketEmbed extends BaseCommand { }); } - /** - * - * @param {import("../../base/Client")} client - */ - async onLoad(client) { - client.on("interactionCreate", async interaction => { - if (!interaction.isButton()) return; - - interaction.data = []; - interaction.data.guild = await client.getGuildData(interaction.guildId); - - const button = interaction.component; - - if (button.customId === "support_ticket") { - const guildData = interaction.data.guild, - ticketsCategory = guildData.plugins.tickets.ticketsCategory, - ticketLogs = guildData.plugins.tickets.ticketLogs; - - if (interaction.guild.channels.cache.get(ticketsCategory).children.cache.size >= 50) { - const sorted = interaction.guild.channels.cache.get(ticketsCategory).children.cache.sort((ch1, ch2) => ch1.createdTimestamp - ch2.createdTimestamp); - - await sorted.first().delete(); - } - - if (guildData.plugins.tickets.count === undefined) guildData.plugins.tickets.count = 0; - - guildData.plugins.tickets.count++; - - const channel = await interaction.guild.channels.create({ - name: `${interaction.user.username}-support-${guildData.plugins.tickets.count}`, - topic: interaction.user.id, - type: ChannelType.GuildText, - parent: ticketsCategory, - permissionOverwrites: [ - { - id: interaction.user.id, - allow: [PermissionsBitField.Flags.ViewChannel, PermissionsBitField.Flags.SendMessages], - }, - { - id: interaction.guild.roles.everyone, - deny: [PermissionsBitField.Flags.ViewChannel, PermissionsBitField.Flags.SendMessages], - }, - ], - }); - - const logChannel = interaction.guild.channels.cache.get(ticketLogs); - const logEmbed = client.embed({ - title: interaction.translate("tickets/createticketembed:TICKET_CREATED_TITLE"), - description: `${interaction.user.toString()} (${channel.toString()})`, - }); - - await logChannel.send({ embeds: [logEmbed] }); - await interaction.success("tickets/createticketembed:TICKET_CREATED", { - channel: channel.toString(), - }, { ephemeral: true }); - - await channel.send(`<@${interaction.user.id}>`); - - const embed = client.embed({ - author: { - name: interaction.user.getUsername(), - iconURL: interaction.user.displayAvatarURL(), - }, - title: "Support Ticket", - description: interaction.translate("tickets/createticketembed:TICKET_CREATED_DESC"), - }); - - const closeButton = new ButtonBuilder() - .setCustomId("close_ticket") - .setLabel(interaction.translate("tickets/closeticket:CLOSE_TICKET")) - .setStyle(ButtonStyle.Danger); - const transcriptButton = new ButtonBuilder() - .setCustomId("transcript_ticket") - .setLabel(interaction.translate("tickets/closeticket:TRANSCRIPT_TICKET")) - .setStyle(ButtonStyle.Secondary); - const row = new ActionRowBuilder().addComponents(closeButton, transcriptButton); - - await guildData.save(); - - await channel.send({ embeds: [embed], components: [row] }); - } else if (button.customId === "close_ticket") { - const embed = client.embed({ - title: interaction.translate("tickets/closeticket:CLOSING_TITLE"), - description: interaction.translate("tickets/closeticket:CLOSING_DESC"), - fields: [ - { - name: interaction.translate("common:TICKET"), - value: interaction.channel.name, - }, - { - name: interaction.translate("tickets/closeticket:CLOSING_BY"), - value: interaction.user.getUsername(), - }, - ], - }); - - const button = new ButtonBuilder().setCustomId("cancel_closing").setLabel(interaction.translate("common:CANCEL")).setStyle(ButtonStyle.Danger); - const row = new ActionRowBuilder().addComponents(button); - - await interaction.reply({ - embeds: [embed], - components: [row], - }); - - const filter = i => i.customId === "cancel_closing"; - const collector = interaction.channel.createMessageComponentCollector({ filter, time: 5000 }); - - collector.on("collect", async i => { - await i.update({ content: interaction.translate("tickets/closeticket:CLOSING_CANCELED"), components: [] }); - collector.stop("canceled"); - }); - - collector.on("end", async (_, reason) => { - if (reason !== "canceled") { - const reversedMessages = (await interaction.channel.messages.fetch()).filter(m => !m.author.bot), - messages = Array.from(reversedMessages.values()).reverse(), - transcriptionLogs = interaction.data.guild.plugins.tickets.transcriptionLogs, - ticketLogs = interaction.data.guild.plugins.tickets.ticketLogs; - - if (messages.length > 1) { - let transcript = "---- TICKET CREATED ----\n"; - messages.forEach(message => { - transcript += `[${client.functions.printDate(client, message.createdTimestamp, null, interaction.getLocale())}] ${message.author.getUsername()}: ${message.content}\n`; - }); - transcript += "---- TICKET CLOSED ----\n"; - - if (transcriptionLogs !== null) interaction.guild.channels.cache.get(transcriptionLogs).send({ content: interaction.translate("tickets/closeticket:TRANSCRIPT", { channel: `<#${interaction.channelId}>` }), files: [{ attachment: Buffer.from(transcript), name: `${interaction.channel.name}.txt` }] }); - - try { - await interaction.user.send({ - content: interaction.translate("tickets/closeticket:TRANSCRIPT", { channel: interaction.channel.name }), - files: [{ attachment: Buffer.from(transcript), name: `${interaction.channel.name}.txt` }], - }); - } catch (e) { - interaction.followUp({ content: interaction.translate("misc:CANT_DM"), ephemeral: true }); - } - } - - const logChannel = interaction.guild.channels.cache.get(ticketLogs); - const logEmbed = client.embed({ - title: interaction.translate("tickets/createticketembed:TICKET_CLOSED_TITLE"), - description: `${interaction.user.toString()} (${interaction.channel.toString()})`, - }); - - logChannel.send({ embeds: [logEmbed] }); - - interaction.channel.send("Closed!"); - - const member = interaction.guild.members.cache.find(u => u.user.id === interaction.channel.topic); - - await interaction.channel.permissionOverwrites.edit(member, { ViewChannel: false, SendMessages: null }); - await interaction.channel.setName(`${interaction.channel.name}-closed`); - } - }); - } else if (button.customId === "transcript_ticket") { - await interaction.deferUpdate(); - - const reversedMessages = (await interaction.channel.messages.fetch()).filter(m => !m.author.bot); - const messages = Array.from(reversedMessages.values()).reverse(); - - if (messages.length > 1) { - let transcript = "---- TICKET CREATED ----\n"; - messages.forEach(message => { - transcript += `[${client.functions.printDate(client, message.createdTimestamp, null, interaction.getLocale())}] ${message.author.getUsername()}: ${message.content}\n`; - }); - transcript += "---- TICKET CLOSED ----\n"; - - try { - await interaction.user.send({ - content: interaction.translate("tickets/closeticket:TRANSCRIPT", { channel: `<#${interaction.channelId}>` }), - files: [{ attachment: Buffer.from(transcript), name: `${interaction.channel.name}.txt` }], - }); - } catch (error) { - interaction.followUp({ content: interaction.translate("misc:CANT_DM"), ephemeral: true }); - } - } else return; - } - }); - } - /** * * @param {import("../../base/Client")} client diff --git a/config.sample.js b/config.sample.js index 92c0b008..fd73d453 100644 --- a/config.sample.js +++ b/config.sample.js @@ -14,13 +14,7 @@ module.exports = { clientSecret: "XXXXXXXXXXXXXXXXXXXXXXXXXXXX", }, /* YouTube Cookie */ - youtubeCookie: { - access_token: "XXXXXXXXXXXXXXXXXXXXXXXXXXXX", - refresh_token: "XXXXXXXXXXXXXXXXXXXXXXXXXXXX", - scope: "XXXXXXXXXXXXXXXXXXXXXXXXXXXX", - token_type: "XXXXXXXXXXXXXXXXXXXXXXXXXXXX", - expiry_date: "XXXXXXXXXXXXXXXXXXXXXXXXXXXX", - }, + youtubeCookie: "XXXXXXXXXXXXXXXXXXXXXXXXXXXX", /* Support server */ support: { id: "123456789098765432", // The ID of the support server diff --git a/events/TicketsButton.js b/events/TicketsButton.js new file mode 100644 index 00000000..dbbf7340 --- /dev/null +++ b/events/TicketsButton.js @@ -0,0 +1,192 @@ +const { ButtonBuilder, ActionRowBuilder, ButtonStyle, ChannelType, PermissionsBitField } = require("discord.js"); +const BaseEvent = require("../base/BaseEvent"); + +class CommandHandler extends BaseEvent { + constructor() { + super({ + name: "interactionCreate", + once: false, + }); + } + + /** + * + * @param {import("../base/Client")} client + * @param {import("discord.js").ButtonInteraction} interaction + */ + async execute(client, interaction) { + if (!interaction.isButton()) return; + if (!interaction.customId.startsWith("ticket_")) return; + + const button = interaction.component; + + interaction.data = []; + interaction.data.guild = await client.getGuildData(interaction.guildId); + + if (button.customId === "ticket_create") { + const guildData = interaction.data.guild, + ticketsCategory = guildData.plugins.tickets.ticketsCategory, + ticketLogs = guildData.plugins.tickets.ticketLogs; + + if (interaction.guild.channels.cache.get(ticketsCategory).children.cache.size >= 50) { + const sorted = interaction.guild.channels.cache.get(ticketsCategory).children.cache.sort((ch1, ch2) => ch1.createdTimestamp - ch2.createdTimestamp); + + await sorted.first().delete(); + } + + if (guildData.plugins.tickets.count === undefined) guildData.plugins.tickets.count = 0; + + const channel = await interaction.guild.channels.create({ + name: `${interaction.user.username}-support-${guildData.plugins.tickets.count}`, + topic: interaction.user.id, + type: ChannelType.GuildText, + parent: ticketsCategory, + permissionOverwrites: [ + { + id: interaction.user.id, + allow: [PermissionsBitField.Flags.ViewChannel, PermissionsBitField.Flags.SendMessages], + }, + { + id: interaction.guild.roles.everyone, + deny: [PermissionsBitField.Flags.ViewChannel, PermissionsBitField.Flags.SendMessages], + }, + ], + }); + + const logChannel = interaction.guild.channels.cache.get(ticketLogs); + const logEmbed = client.embed({ + title: interaction.translate("tickets/createticketembed:TICKET_CREATED_TITLE"), + description: `${interaction.user.toString()} (${channel.toString()})`, + }); + + await logChannel.send({ embeds: [logEmbed] }); + await interaction.success("tickets/createticketembed:TICKET_CREATED", { + channel: channel.toString(), + }, { ephemeral: true }); + + await channel.send(`<@${interaction.user.id}>`); + + const embed = client.embed({ + author: { + name: interaction.user.getUsername(), + iconURL: interaction.user.displayAvatarURL(), + }, + title: "Support Ticket", + description: interaction.translate("tickets/createticketembed:TICKET_CREATED_DESC"), + }); + + const closeButton = new ButtonBuilder() + .setCustomId("close_ticket") + .setLabel(interaction.translate("tickets/closeticket:CLOSE_TICKET")) + .setStyle(ButtonStyle.Danger); + const transcriptButton = new ButtonBuilder() + .setCustomId("transcript_ticket") + .setLabel(interaction.translate("tickets/closeticket:TRANSCRIPT_TICKET")) + .setStyle(ButtonStyle.Secondary); + const row = new ActionRowBuilder().addComponents(closeButton, transcriptButton); + + guildData.plugins.tickets.count++; + await guildData.save(); + + await channel.send({ embeds: [embed], components: [row] }); + } else if (button.customId === "ticket_close") { + const embed = client.embed({ + title: interaction.translate("tickets/closeticket:CLOSING_TITLE"), + description: interaction.translate("tickets/closeticket:CLOSING_DESC"), + fields: [ + { + name: interaction.translate("common:TICKET"), + value: interaction.channel.name, + }, + { + name: interaction.translate("tickets/closeticket:CLOSING_BY"), + value: interaction.user.getUsername(), + }, + ], + }); + + const button = new ButtonBuilder().setCustomId("cancel_closing").setLabel(interaction.translate("common:CANCEL")).setStyle(ButtonStyle.Danger); + const row = new ActionRowBuilder().addComponents(button); + + await interaction.reply({ + embeds: [embed], + components: [row], + }); + + const filter = i => i.customId === "cancel_closing"; + const collector = interaction.channel.createMessageComponentCollector({ filter, time: 5000 }); + + collector.on("collect", async i => { + await i.update({ content: interaction.translate("tickets/closeticket:CLOSING_CANCELED"), components: [] }); + collector.stop("canceled"); + }); + + collector.on("end", async (_, reason) => { + if (reason !== "canceled") { + const reversedMessages = (await interaction.channel.messages.fetch()).filter(m => !m.author.bot), + messages = Array.from(reversedMessages.values()).reverse(), + transcriptionLogs = interaction.data.guild.plugins.tickets.transcriptionLogs, + ticketLogs = interaction.data.guild.plugins.tickets.ticketLogs; + + if (messages.length > 1) { + let transcript = "---- TICKET CREATED ----\n"; + messages.forEach(message => { + transcript += `[${client.functions.printDate(client, message.createdTimestamp, null, interaction.getLocale())}] ${message.author.getUsername()}: ${message.content}\n`; + }); + transcript += "---- TICKET CLOSED ----\n"; + + if (transcriptionLogs !== null) interaction.guild.channels.cache.get(transcriptionLogs).send({ content: interaction.translate("tickets/closeticket:TRANSCRIPT", { channel: `<#${interaction.channelId}>` }), files: [{ attachment: Buffer.from(transcript), name: `${interaction.channel.name}.txt` }] }); + + try { + await interaction.user.send({ + content: interaction.translate("tickets/closeticket:TRANSCRIPT", { channel: interaction.channel.name }), + files: [{ attachment: Buffer.from(transcript), name: `${interaction.channel.name}.txt` }], + }); + } catch (e) { + interaction.followUp({ content: interaction.translate("misc:CANT_DM"), ephemeral: true }); + } + } + + const logChannel = interaction.guild.channels.cache.get(ticketLogs); + const logEmbed = client.embed({ + title: interaction.translate("tickets/createticketembed:TICKET_CLOSED_TITLE"), + description: `${interaction.user.toString()} (${interaction.channel.toString()})`, + }); + + logChannel.send({ embeds: [logEmbed] }); + + interaction.channel.send("Closed!"); + + const member = interaction.guild.members.cache.find(u => u.user.id === interaction.channel.topic); + + await interaction.channel.permissionOverwrites.edit(member, { ViewChannel: false, SendMessages: null }); + await interaction.channel.setName(`${interaction.channel.name}-closed`); + } + }); + } else if (button.customId === "ticket_transcript") { + await interaction.deferUpdate(); + + const reversedMessages = (await interaction.channel.messages.fetch()).filter(m => !m.author.bot); + const messages = Array.from(reversedMessages.values()).reverse(); + + if (messages.length > 1) { + let transcript = "---- TICKET CREATED ----\n"; + messages.forEach(message => { + transcript += `[${client.functions.printDate(client, message.createdTimestamp, null, interaction.getLocale())}] ${message.author.getUsername()}: ${message.content}\n`; + }); + transcript += "---- TICKET CLOSED ----\n"; + + try { + await interaction.user.send({ + content: interaction.translate("tickets/closeticket:TRANSCRIPT", { channel: `<#${interaction.channelId}>` }), + files: [{ attachment: Buffer.from(transcript), name: `${interaction.channel.name}.txt` }], + }); + } catch (error) { + interaction.followUp({ content: interaction.translate("misc:CANT_DM"), ephemeral: true }); + } + } else return; + } + } +} + +module.exports = CommandHandler; diff --git a/languages/en-US/administration/config.json b/languages/en-US/administration/config.json index 22419906..ec9ec653 100644 --- a/languages/en-US/administration/config.json +++ b/languages/en-US/administration/config.json @@ -8,7 +8,7 @@ "MODLOGS": "Moderation Logs", "REPORTS": "Reports", "SUGGESTIONS": "Suggestions", - "TICKETSCATEGORY": "Category For Tickets (They have folder icon)", + "TICKETSCATEGORY": "Category For Tickets (They have a 'folder' icon)", "TICKETS_NOT_CATEGORY": "Please select a **category** channel", "TICKETLOGS": "Tickets Logs", "TRANSCRIPTIONLOGS": "Transcripts Logs", diff --git a/languages/en-US/economy/birthdate.json b/languages/en-US/economy/birthdate.json index bde8f98f..e814ea26 100644 --- a/languages/en-US/economy/birthdate.json +++ b/languages/en-US/economy/birthdate.json @@ -5,23 +5,11 @@ "DAY": "Day", "MONTH": "Month", "YEAR": "Year", + "CLEAR": "Clear date?", "INVALID_DATE": "Invalid date provided", "DATE_TOO_LOW": "Are you over 80 years old? :eyes:", "DATE_TOO_HIGH": "Hmm... You haven't been born yet", "HAPPY_BIRTHDAY": "Happy Birthday", "HAPPY_BIRTHDAY_MESSAGE": "Happy birthday to <@{{user}}>! Today, they have turned {{age}}!", - "SUCCESS": "Your date of birth has been set to **{{date}}**", - - "JANUARY": "January", - "FEBRUARY": "February", - "MARCH": "March", - "APRIL": "April", - "MAY": "May", - "JUNE": "June", - "JULY": "July", - "AUGUST": "August", - "SEPTEMBER": "September", - "OCTOBER": "October", - "NOVEMBER": "November", - "DECEMBER": "December" + "SUCCESS": "Your date of birth has been set to **{{date}}**" } \ No newline at end of file diff --git a/languages/en-US/general/reminds.json b/languages/en-US/general/reminds.json index 3ad889c3..02d13a8f 100644 --- a/languages/en-US/general/reminds.json +++ b/languages/en-US/general/reminds.json @@ -3,5 +3,7 @@ "USAGE": "", "EXAMPLES": "reminds", "NO_REMINDS": "No reminds found", - "REMINDS_LIST": "Reminds List" + "REMINDS_LIST": "Reminds List", + "DELETE": "Delete {{pos}}", + "DELETED": "Deleted remind №{{pos}}" } \ No newline at end of file diff --git a/languages/en-US/misc.json b/languages/en-US/misc.json index 5ac9a231..597c67d0 100644 --- a/languages/en-US/misc.json +++ b/languages/en-US/misc.json @@ -22,6 +22,21 @@ "QUOTE_JUMP": "Jump to", "QUOTE_FOOTER": "Quoted by {{user}}", + "MONTHS": { + "JANUARY": "January", + "FEBRUARY": "February", + "MARCH": "March", + "APRIL": "April", + "MAY": "May", + "JUNE": "June", + "JULY": "July", + "AUGUST": "August", + "SEPTEMBER": "September", + "OCTOBER": "October", + "NOVEMBER": "November", + "DECEMBER": "December" + }, + "MONITORING": { "DELETE": { "TITLE": "{{user}} deleted a message!", diff --git a/languages/ru-RU/economy/birthdate.json b/languages/ru-RU/economy/birthdate.json index 3c138e12..5885f5a2 100644 --- a/languages/ru-RU/economy/birthdate.json +++ b/languages/ru-RU/economy/birthdate.json @@ -5,23 +5,11 @@ "DAY": "День", "MONTH": "Месяц", "YEAR": "Год", + "CLEAR": "Очистить дату?", "INVALID_DATE": "Указана неверная дата", "DATE_TOO_LOW": "Вам больше 80 лет? :eyes:", "DATE_TOO_HIGH": "Хммм... Вы ещё не родились", "HAPPY_BIRTHDAY": "День рождения", "HAPPY_BIRTHDAY_MESSAGE": "Поздравляем <@{{user}}> с днём рождения! Сегодня ему(ей) исполнилось {{age}}!", - "SUCCESS": "Ваша дата рождения установлена на **{{date}}**", - - "JANUARY": "Январь", - "FEBRUARY": "Февраль", - "MARCH": "Март", - "APRIL": "Апрель", - "MAY": "Май", - "JUNE": "Июнь", - "JULY": "Июль", - "AUGUST": "Август", - "SEPTEMBER": "Сентябрь", - "OCTOBER": "Октябрь", - "NOVEMBER": "Ноябрь", - "DECEMBER": "Декабрь" + "SUCCESS": "Ваша дата рождения установлена на **{{date}}**" } \ No newline at end of file diff --git a/languages/ru-RU/misc.json b/languages/ru-RU/misc.json index 4863620f..b0de61ba 100644 --- a/languages/ru-RU/misc.json +++ b/languages/ru-RU/misc.json @@ -22,6 +22,21 @@ "QUOTE_JUMP": "Перейти к", "QUOTE_FOOTER": "Цитировал {{user}}", + "MONTHS": { + "JANUARY": "Январь", + "FEBRUARY": "Февраль", + "MARCH": "Март", + "APRIL": "Апрель", + "MAY": "Май", + "JUNE": "Июнь", + "JULY": "Июль", + "AUGUST": "Август", + "SEPTEMBER": "Сентябрь", + "OCTOBER": "Октябрь", + "NOVEMBER": "Ноябрь", + "DECEMBER": "Декабрь" + }, + "MONITORING": { "DELETE": { "TITLE": "{{user}} удалил сообщение!", diff --git a/languages/uk-UA/economy/birthdate.json b/languages/uk-UA/economy/birthdate.json index 434870ed..ef7d152c 100644 --- a/languages/uk-UA/economy/birthdate.json +++ b/languages/uk-UA/economy/birthdate.json @@ -5,23 +5,11 @@ "DAY": "День", "MONTH": "Місяць", "YEAR": "Рік", + "CLEAR": "Очистити дату?", "INVALID_DATE": "Вказана неправильна дата", "DATE_TOO_LOW": "Вам більше 80 років? :eyes:", "DATE_TOO_HIGH": "Хммм... Ви ще не народилися", "HAPPY_BIRTHDAY": "День народження", "HAPPY_BIRTHDAY_MESSAGE": "Вітаємо <@{{user}}> з днем народження! Сьогодні йому виповнилося {{age}}", - "SUCCESS": "Вашу дату народження встановлено на **{{date}}**", - - "JANUARY": "Січень", - "FEBRUARY": "Лютий", - "MARCH": "Березень", - "APRIL": "Квітень", - "MAY": "Травень", - "JUNE": "Червень", - "JULY": "Липень", - "AUGUST": "Серпень", - "SEPTEMBER": "Вересень", - "OCTOBER": "Жовтень", - "NOVEMBER": "Листопад", - "DECEMBER": "Грудень" + "SUCCESS": "Вашу дату народження встановлено на **{{date}}**" } \ No newline at end of file diff --git a/languages/uk-UA/misc.json b/languages/uk-UA/misc.json index ffc02d03..cdddb155 100644 --- a/languages/uk-UA/misc.json +++ b/languages/uk-UA/misc.json @@ -22,6 +22,21 @@ "QUOTE_JUMP": "Перейти до", "QUOTE_FOOTER": "Цитував {{user}}", + "MONTHS": { + "JANUARY": "Січень", + "FEBRUARY": "Лютий", + "MARCH": "Березень", + "APRIL": "Квітень", + "MAY": "Травень", + "JUNE": "Червень", + "JULY": "Липень", + "AUGUST": "Серпень", + "SEPTEMBER": "Вересень", + "OCTOBER": "Жовтень", + "NOVEMBER": "Листопад", + "DECEMBER": "Грудень" + }, + "MONITORING": { "DELETE": { "TITLE": "{{user}} видалив повідомлення!", diff --git a/package.json b/package.json index b708de05..0276ebb6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "jaba", - "version": "4.6.1", + "version": "4.6.3", "description": "My Discord Bot", "main": "index.js", "scripts": { @@ -8,17 +8,17 @@ }, "author": "@jonny_bro", "dependencies": { - "@discord-player/extractor": "^4.5.0", + "@discord-player/extractor": "^4.5.1", "@discordjs/opus": "^0.9.0", "@discordjs/rest": "^2.3.0", "@discordjs/voice": "^0.17.0", "@napi-rs/canvas": "^0.1.53", "chalk": "^4.1.2", "cron": "^2.4.4", - "discord-api-types": "^0.37.92", + "discord-api-types": "^0.37.93", "discord-giveaways": "^6.0.1", "discord-player": "^6.7.1", - "discord-player-youtubei": "^1.2.4", + "discord-player-youtubei": "^1.2.6", "discord.js": "^14.15.3", "gamedig": "^4.1.0", "i18next": "^21.10.0", @@ -27,8 +27,7 @@ "moment": "^2.29.4", "mongoose": "^7.6.3", "ms": "^2.1.3", - "node-fetch": "^2.7.0", - "ytdl-core": "^4.11.5" + "node-fetch": "^2.7.0" }, "devDependencies": { "eslint": "^8.56.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0d546b11..788f55df 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,8 +9,8 @@ importers: .: dependencies: '@discord-player/extractor': - specifier: ^4.5.0 - version: 4.5.0 + specifier: ^4.5.1 + version: 4.5.1 '@discordjs/opus': specifier: ^0.9.0 version: 0.9.0 @@ -30,23 +30,23 @@ importers: specifier: ^2.4.4 version: 2.4.4 discord-api-types: - specifier: ^0.37.92 - version: 0.37.92 + specifier: ^0.37.93 + version: 0.37.93 discord-giveaways: specifier: ^6.0.1 version: 6.0.1(discord.js@14.15.3) discord-player: specifier: ^6.7.1 - version: 6.7.1(@discord-player/extractor@4.5.0)(@discordjs/opus@0.9.0) + version: 6.7.1(@discord-player/extractor@4.5.1)(@discordjs/opus@0.9.0) discord-player-youtubei: - specifier: ^1.2.4 - version: 1.2.4 + specifier: ^1.2.6 + version: 1.2.6 discord.js: specifier: ^14.15.3 version: 14.15.3 gamedig: specifier: ^4.1.0 - version: 4.1.0 + version: 4.3.2 i18next: specifier: ^21.10.0 version: 21.10.0 @@ -58,39 +58,32 @@ importers: version: 2.3.0 moment: specifier: ^2.29.4 - version: 2.29.4 + version: 2.30.1 mongoose: specifier: ^7.6.3 - version: 7.6.3 + version: 7.8.0 ms: specifier: ^2.1.3 version: 2.1.3 node-fetch: specifier: ^2.7.0 version: 2.7.0 - ytdl-core: - specifier: ^4.11.5 - version: 4.11.5 devDependencies: eslint: specifier: ^8.56.0 - version: 8.56.0 + version: 8.57.0 packages: - '@aashutoshrathi/word-wrap@1.2.6': - resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} - engines: {node: '>=0.10.0'} - - '@babel/runtime@7.23.2': - resolution: {integrity: sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==} + '@babel/runtime@7.25.0': + resolution: {integrity: sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==} engines: {node: '>=6.9.0'} '@discord-player/equalizer@0.2.3': resolution: {integrity: sha512-71UAepYMbHTg2QQLXQAgyuXYHrgAYpJDxjg9dRWfTUNf+zfOAlyJEiRRk/WFhQyGu6m23iLR/H/JxgF4AW8Csg==} - '@discord-player/extractor@4.5.0': - resolution: {integrity: sha512-7yCvNNMbRIkFewli/ILcbFe9FX8DaTFTajn6ouJ/+76NzjoPsPNGRNmDT6eP69t/DJJrZFhsghyGGmxDKNBo6A==} + '@discord-player/extractor@4.5.1': + resolution: {integrity: sha512-krsgdHD7sx4SWHKkIFDPcgYXR21EfleW0bjI6WvnJQbvTg9TZ4aYw77G6UVw/HaF7i3u3WuyGPZp1UqG0FRHaw==} '@discord-player/ffmpeg@0.1.0': resolution: {integrity: sha512-0kW6q4gMQN2B4Z4EzmUgXrKQSXXmyhjdZBBZ/6jSHZ9fh814oOu+JXP01VvtWHwTylI7qJHIctEWtSyjEubCJg==} @@ -147,35 +140,37 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/regexpp@4.10.0': - resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} + '@eslint-community/regexpp@4.11.0': + resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} '@eslint/eslintrc@2.1.4': resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@eslint/js@8.56.0': - resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==} + '@eslint/js@8.57.0': + resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@fastify/busboy@2.0.0': - resolution: {integrity: sha512-JUFJad5lv7jxj926GPgymrWQxxjPYuJNiNjNMzqT+HiuP6Vl3dk5xzG+8sTX96np0ZAluvaMzPsjhHZ5rNuNQQ==} + '@fastify/busboy@2.1.1': + resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} engines: {node: '>=14'} - '@humanwhocodes/config-array@0.11.13': - resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} + '@humanwhocodes/config-array@0.11.14': + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} - '@humanwhocodes/object-schema@2.0.1': - resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} + '@humanwhocodes/object-schema@2.0.3': + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead - '@mongodb-js/saslprep@1.1.1': - resolution: {integrity: sha512-t7c5K033joZZMspnHg/gWPE4kandgc2OxE74aYOtGKfgB9VPuVJPix0H6fhmm2erj5PBJ21mqcx34lpIGtUCsQ==} + '@mongodb-js/saslprep@1.1.8': + resolution: {integrity: sha512-qKwC/M/nNNaKUBMQ0nuzm47b7ZYWQHN3pcXq4IIcoSBc2hOIrflAxJduIvvqmhoz3gR2TacTAs8vlsCVPkiEdQ==} '@napi-rs/canvas-android-arm64@0.1.53': resolution: {integrity: sha512-2YhxfVsZguATlRWE0fZdTx35SE9+r5D7HV5GPNDataZOKmHf+zZ5//dspuuBSbOriQdoicaFrgXKCUqI0pK3WQ==} @@ -247,8 +242,8 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@sapphire/async-queue@1.5.2': - resolution: {integrity: sha512-7X7FFAA4DngXUl95+hYbUF19bp1LGiffjJtu7ygrZrbdCSsdDDBaSjB7Akw0ZbOu6k0xpXyljnJ6/RZUvLfRdg==} + '@sapphire/async-queue@1.5.3': + resolution: {integrity: sha512-x7zadcfJGxFka1Q3f8gCts1F0xMwCKbZweM85xECGI0hBTeIZJGGCrHgLggihBoprlQ/hBmDR5LKfIPqnmHM3w==} engines: {node: '>=v14.0.0', npm: '>=7.0.0'} '@sapphire/shapeshift@3.9.7': @@ -259,9 +254,9 @@ packages: resolution: {integrity: sha512-jjmJywLAFoWeBi1W7994zZyiNWPIiqRRNAmSERxyg93xRGzNYvGjlZ0gR6x0F4gPRi2+0O6S71kOZYyr3cxaIQ==} engines: {node: '>=v14.0.0', npm: '>=7.0.0'} - '@sindresorhus/is@5.6.0': - resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} - engines: {node: '>=14.16'} + '@sindresorhus/is@4.6.0': + resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} + engines: {node: '>=10'} '@szmarczak/http-timer@5.0.1': resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} @@ -270,33 +265,42 @@ packages: '@tokenizer/token@0.3.0': resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} - '@types/http-cache-semantics@4.0.3': - resolution: {integrity: sha512-V46MYLFp08Wf2mmaBhvgjStM3tPa+2GAdy/iqoX+noX1//zje2x4XmrIU0cAwyClATsTmahbtoQ2EwP7I5WSiA==} + '@types/cacheable-request@6.0.3': + resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} - '@types/luxon@3.3.3': - resolution: {integrity: sha512-/BJF3NT0pRMuxrenr42emRUF67sXwcZCd+S1ksG/Fcf9O7C3kKCY4uJSbKBE4KDUIYr3WMsvfmWD8hRjXExBJQ==} + '@types/http-cache-semantics@4.0.4': + resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} - '@types/node@20.8.9': - resolution: {integrity: sha512-UzykFsT3FhHb1h7yD4CA4YhBHq545JC0YnEz41xkipN88eKQtL6rSgocL5tbAP6Ola9Izm/Aw4Ora8He4x0BHg==} + '@types/keyv@3.1.4': + resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} - '@types/webidl-conversions@7.0.2': - resolution: {integrity: sha512-uNv6b/uGRLlCVmelat2rA8bcVd3k/42mV2EmjhPh6JLkd35T5bgwR/t6xy7a9MWhd9sixIeBUzhBenvk3NO+DQ==} + '@types/luxon@3.3.8': + resolution: {integrity: sha512-jYvz8UMLDgy3a5SkGJne8H7VA7zPV2Lwohjx0V8V31+SqAjNmurWMkk9cQhfvlcnXWudBpK9xPM1n4rljOcHYQ==} + + '@types/node@22.2.0': + resolution: {integrity: sha512-bm6EG6/pCpkxDf/0gDNDdtDILMOHgaQBVOJGdwsqClnxA3xL6jtMv76rLBc006RVMWbmaf0xbmom4Z/5o2nRkQ==} + + '@types/responselike@1.0.3': + resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} + + '@types/webidl-conversions@7.0.3': + resolution: {integrity: sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==} '@types/whatwg-url@8.2.2': resolution: {integrity: sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==} - '@types/ws@8.5.10': - resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} + '@types/ws@8.5.12': + resolution: {integrity: sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==} '@ungap/structured-clone@1.2.0': resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - '@vladfrangu/async_event_emitter@2.2.4': - resolution: {integrity: sha512-ButUPz9E9cXMLgvAW8aLAKKJJsPu1dY1/l/E8xzLFuysowXygs6GBcyunK9rnGC4zTsnIc2mQo71rGw9U+Ykug==} + '@vladfrangu/async_event_emitter@2.4.5': + resolution: {integrity: sha512-J7T3gUr3Wz0l7Ni1f9upgBZ7+J22/Q1B7dl0X6fG+fTsD+H+31DIosMHj4Um1dWQwqbcQ3oQf+YS2foYkDc9cQ==} engines: {node: '>=v14.0.0', npm: '>=7.0.0'} - '@web-scrobbler/metadata-filter@3.1.0': - resolution: {integrity: sha512-3VLxdrcfRZ/jac7VV3v5s3R+HUQ/o4gp8vqZoojGhrvyrYyrjsyuJGaoSiFLoYmwYNAjeqJ/tnvIeJt8DSi4sg==} + '@web-scrobbler/metadata-filter@3.2.0': + resolution: {integrity: sha512-K2Wkq9AOJkgj4Hk9g0flKnNWYkJy1GTPpHTgpNLU5OXaXgqPKLyrtb62M1cIxMN3ESH6XGvPKM92VEl/Gc3Rog==} engines: {node: '>=10.0.0'} abbrev@1.1.1: @@ -307,8 +311,8 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn@8.11.2: - resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==} + acorn@8.12.1: + resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} engines: {node: '>=0.4.0'} hasBin: true @@ -336,6 +340,7 @@ packages: are-we-there-yet@2.0.0: resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} engines: {node: '>=10'} + deprecated: This package is no longer supported. argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -356,13 +361,13 @@ packages: resolution: {integrity: sha512-ix0EwukN2EpC0SRWIj/7B5+A6uQMQy6KMREI9qQqvgpkV2frH63T0UDVd1SYedL6dNCmDBYB3QtXi4ISk9YT+g==} engines: {node: '>=14.20.1'} - cacheable-lookup@7.0.0: - resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} - engines: {node: '>=14.16'} + cacheable-lookup@6.1.0: + resolution: {integrity: sha512-KJ/Dmo1lDDhmW2XDPMo+9oiy/CeqosPguPCrgcVzKyZrL6pM1gU2GmPY/xo6OQPTUaA/c0kwHuywB4E6nmT9ww==} + engines: {node: '>=10.6.0'} - cacheable-request@10.2.14: - resolution: {integrity: sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==} - engines: {node: '>=14.16'} + cacheable-request@7.0.4: + resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==} + engines: {node: '>=8'} callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} @@ -375,17 +380,20 @@ packages: charenc@0.0.2: resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} - cheerio-select@2.1.0: - resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} + cheerio-select@1.6.0: + resolution: {integrity: sha512-eq0GdBvxVFbqWgmCm7M3XGs1I8oLy/nExUnh6oLqmBditPO9AqQJrkslDpMun/hZ0yyTs8L0m85OHp4ho6Qm9g==} - cheerio@1.0.0-rc.12: - resolution: {integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==} + cheerio@1.0.0-rc.10: + resolution: {integrity: sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==} engines: {node: '>= 6'} chownr@2.0.0: resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} engines: {node: '>=10'} + clone-response@1.0.3: + resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} + color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} @@ -420,6 +428,9 @@ packages: crypt@0.0.2: resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} + css-select@4.3.0: + resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + css-select@5.1.0: resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} @@ -431,8 +442,8 @@ packages: resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} engines: {node: '>= 12'} - debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + debug@4.3.6: + resolution: {integrity: sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -458,15 +469,15 @@ packages: delegates@1.0.0: resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} - detect-libc@2.0.2: - resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} + detect-libc@2.0.3: + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} engines: {node: '>=8'} discord-api-types@0.37.83: resolution: {integrity: sha512-urGGYeWtWNYMKnYlZnOnDHm8fVRffQs3U0SpE8RHeiuLKb/u92APS8HoQnPTFbnXmY1vVnXjXO4dOxcAn3J+DA==} - discord-api-types@0.37.92: - resolution: {integrity: sha512-7xnedbQRLRef/O+4jKPyIFwl6YqoyihOG3OSneiRmVJMBk30ph2YuZGcHjeX1Kk/a3yQWeyCKe4RZJB3iECcxg==} + discord-api-types@0.37.93: + resolution: {integrity: sha512-M5jn0x3bcXk8EI2c6F6V6LeOWq10B/cJf+YJSyqNmg7z4bdXK+Z7g9zGJwHS0h9Bfgs0nun2LQISFOzwck7G9A==} discord-giveaways@6.0.1: resolution: {integrity: sha512-hs6Vtb62VdlV7NfB93Phaxc8FW0cH4N1Nkb0bXVZ2npgn73yGOFVmdp8bBP5gsC2ady9OAXXI8Gb66t1IddkFw==} @@ -474,8 +485,8 @@ packages: peerDependencies: discord.js: '>=14.0.0' - discord-player-youtubei@1.2.4: - resolution: {integrity: sha512-kx6cXUz5tMUI+2E6ntRUCckCYYgFNWF872l6N3s4W29Jgmm+kkbefytogfsTM06ePncd1MQp6hBHoufr6b1TVQ==} + discord-player-youtubei@1.2.6: + resolution: {integrity: sha512-b2L/I9TP7HCv3EO8mbn070SWJV0eBCjG2YIbFmQhQxe8vRMC5Zs4BisI7JmkNvu4xlbVGeL1NMK9VrC5FR+uqw==} hasBin: true discord-player@6.7.1: @@ -495,22 +506,38 @@ packages: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} + dom-serializer@1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + dom-serializer@2.0.0: resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} domelementtype@2.3.0: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + domhandler@4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} + domhandler@5.0.3: resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} engines: {node: '>= 4'} + domutils@2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + domutils@3.1.0: resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + + entities@2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} @@ -527,8 +554,8 @@ packages: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint@8.56.0: - resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==} + eslint@8.57.0: + resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true @@ -536,8 +563,8 @@ packages: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} engines: {node: '>=0.10'} esrecurse@4.3.0: @@ -565,8 +592,8 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fastq@1.15.0: - resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} fetch-blob@3.2.0: resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} @@ -584,16 +611,15 @@ packages: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} - flat-cache@3.1.1: - resolution: {integrity: sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==} - engines: {node: '>=12.0.0'} + flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} - flatted@3.2.9: - resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} + flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} - form-data-encoder@2.1.4: - resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} - engines: {node: '>= 14.17'} + form-data-encoder@1.7.1: + resolution: {integrity: sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg==} formdata-polyfill@4.0.10: resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} @@ -606,14 +632,15 @@ packages: fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - gamedig@4.1.0: - resolution: {integrity: sha512-jvLUEakihJgpiw9t9yQRsbcemeALeTNlnaWY1gvYdwI63ZlkxznTaLqX5K/eluRTTCtAWNW3YceT6NVjyAZIwA==} + gamedig@4.3.2: + resolution: {integrity: sha512-TjYwybvy8HNAhkv2EJccd5HROIiMeMriWmeX8vT8m5Ibat5JMzVpugzsD8L8XZVrOfiXnVg/9DhWYM8k/VG/vw==} engines: {node: '>=14.0.0'} hasBin: true gauge@3.0.2: resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} engines: {node: '>=10'} + deprecated: This package is no longer supported. gbxremote@0.2.1: resolution: {integrity: sha512-SMehu6Y6ndq2Qgp9VxAb8Np3f+UUD+RWoW2SAMaxzGS96rWXyr4T1GGkecO0HHtxeH1m7pEh4FJWB8a/6aM2XQ==} @@ -622,6 +649,10 @@ packages: genius-lyrics@4.4.7: resolution: {integrity: sha512-cgO5nSeFqtLZAUyWB+8XWMRBIRzPUSUC42N3CoDGRgKX1anGAyDUhM6/RVIJXCNnQa6XHZHswKcKgHaRiyl+GQ==} + get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} @@ -632,13 +663,14 @@ packages: glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported - globals@13.23.0: - resolution: {integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==} + globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} engines: {node: '>=8'} - got@12.6.1: - resolution: {integrity: sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==} + got@12.1.0: + resolution: {integrity: sha512-hBv2ty9QN2RdbJJMK3hesmSkFTjVIHyIDDbssCKnSmq62edGgImJWD10Eb1k77TiV1bxloxqcFAVK8+9pkhOig==} engines: {node: '>=14.16'} graphemer@1.4.0: @@ -658,14 +690,14 @@ packages: himalaya@1.1.0: resolution: {integrity: sha512-LLase1dHCRMel68/HZTFft0N0wti0epHr3nNY7ynpLbyZpmrKMQ8YIpiOV77TM97cNpC8Wb2n6f66IRggwdWPw==} - htmlparser2@8.0.2: - resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} + htmlparser2@6.1.0: + resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} http-cache-semantics@4.1.1: resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} - http2-wrapper@2.2.0: - resolution: {integrity: sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==} + http2-wrapper@2.2.1: + resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==} engines: {node: '>=10.19.0'} https-proxy-agent@5.0.1: @@ -685,8 +717,8 @@ packages: ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - ignore@5.2.4: - resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} import-fresh@3.3.0: @@ -699,12 +731,14 @@ packages: inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - ip@2.0.0: - resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} + ip-address@9.0.5: + resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} + engines: {node: '>= 12'} is-buffer@1.1.6: resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} @@ -744,6 +778,9 @@ packages: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true + jsbn@1.1.0: + resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} + json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} @@ -764,11 +801,11 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} - libsodium-wrappers@0.7.13: - resolution: {integrity: sha512-kasvDsEi/r1fMzKouIDv7B8I6vNmknXwGiYodErGuESoFTohGSKZplFtVxZqHaoQ217AynyIFgnOVRitpHs0Qw==} + libsodium-wrappers@0.7.14: + resolution: {integrity: sha512-300TtsePizhJZ7HjLmWr6hLHAgJUxIGhapSw+EwfCtDuWaEmEdGXSQv6j6qFw0bs9l4vS2NH9BtOHfXAq6h5kQ==} - libsodium@0.7.13: - resolution: {integrity: sha512-mK8ju0fnrKXXfleL53vtp9xiPq5hKM0zbDQtcxQIsSmxNgSxqCj6R7Hl9PkrNe2j29T4yoDaF7DJLK9/i5iWUw==} + libsodium@0.7.14: + resolution: {integrity: sha512-/pOd7eO6oZrfORquRTC4284OUJFcMi8F3Vnc9xtRBT0teLfOUxWIItaBFF3odYjZ7nlJNwnLdUVEUFHxVyX/Sw==} locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} @@ -783,25 +820,21 @@ packages: lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - long@5.2.3: - resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==} + long@5.2.0: + resolution: {integrity: sha512-9RTUNjK60eJbx3uz+TEGF7fUr29ZDxR5QzXcyDpeSfeH28S9ycINflOgOlppit5U+4kNTe83KQnMEerw7GmE8w==} + + lowercase-keys@2.0.0: + resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} + engines: {node: '>=8'} lowercase-keys@3.0.0: resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - luxon@3.3.0: resolution: {integrity: sha512-An0UCfG/rSiqtAIiBPO0Y9/zAnHUZxAMiCpTd5h2smgsj7GGmcenvrvww2cqNA8/4A5ZrD1gJpHN2mIHZQF+Mg==} engines: {node: '>=12'} - m3u8stream@0.8.6: - resolution: {integrity: sha512-LZj8kIVf9KCphiHmH7sbFQTVe4tOemb202fWwvJwR9W5ENW/1hxJN6ksAWGhQgSBSa3jyWhnjKU1Fw1GaOdbyA==} - engines: {node: '>=12'} - magic-bytes.js@1.10.0: resolution: {integrity: sha512-/k20Lg2q8LE5xiaaSkMXk4sfvI+9EGEykFS4b0CHHGWqDYU0bGUFSwchNOMA56D7TCs9GwVTkqe9als1/ns8UQ==} @@ -815,23 +848,19 @@ packages: memory-pager@1.5.0: resolution: {integrity: sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==} + mimic-response@1.0.1: + resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} + engines: {node: '>=4'} + mimic-response@3.1.0: resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} engines: {node: '>=10'} - mimic-response@4.0.0: - resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - miniget@4.2.3: - resolution: {integrity: sha512-SjbDPDICJ1zT+ZvQwK0hUcRY4wxlhhNpHL9nJOB2MEAXRGagTljsO8MEDzQMTFf0Q8g4QNi8P9lEm/g7e+qgzA==} - engines: {node: '>=12'} - minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + minimist@1.2.6: + resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==} minipass@3.3.6: resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} @@ -850,14 +879,14 @@ packages: engines: {node: '>=10'} hasBin: true - moment@2.29.4: - resolution: {integrity: sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==} + moment@2.30.1: + resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==} mongodb-connection-string-url@2.6.0: resolution: {integrity: sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==} - mongodb@5.9.0: - resolution: {integrity: sha512-g+GCMHN1CoRUA+wb1Agv0TI4YTSiWr42B5ulkiAfLLHitGK1R+PkSAf3Lr5rPZwi/3F04LiaZEW0Kxro9Fi2TA==} + mongodb@5.9.2: + resolution: {integrity: sha512-H60HecKO4Bc+7dhOv4sJlgvenK4fQNqqUIlXxZYQNbfEWSALGAwGoyJd/0Qwk4TttFXUOHJ2ZJQe/52ScaUwtQ==} engines: {node: '>=14.20.1'} peerDependencies: '@aws-sdk/credential-providers': ^3.188.0 @@ -877,8 +906,8 @@ packages: snappy: optional: true - mongoose@7.6.3: - resolution: {integrity: sha512-moYP2qWCOdWRDeBxqB/zYwQmQnTBsF5DoolX5uPyI218BkiA1ujGY27P0NTd4oWIX+LLkZPw0LDzlc/7oh1plg==} + mongoose@7.8.0: + resolution: {integrity: sha512-wLAP7xYz+tEnzy4VsZyMJ1mfaSIwfaeoSQ55ZVovFkdh1FVta6VNSVFCpJMzEinMJsRzTbZTcD4pND9J5aDiyA==} engines: {node: '>=14.20.1'} mpath@0.9.0: @@ -926,12 +955,13 @@ packages: engines: {node: '>=6'} hasBin: true - normalize-url@8.0.0: - resolution: {integrity: sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==} - engines: {node: '>=14.16'} + normalize-url@6.1.0: + resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} + engines: {node: '>=10'} npmlog@5.0.1: resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} + deprecated: This package is no longer supported. nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} @@ -943,8 +973,8 @@ packages: once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} p-cancelable@3.0.0: @@ -963,11 +993,11 @@ packages: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} - parse5-htmlparser2-tree-adapter@7.0.0: - resolution: {integrity: sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==} + parse5-htmlparser2-tree-adapter@6.0.1: + resolution: {integrity: sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==} - parse5@7.1.2: - resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + parse5@6.0.1: + resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} @@ -1009,8 +1039,15 @@ packages: process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - punycode@2.3.0: - resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} + pump@3.0.0: + resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + + punycode@2.1.1: + resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} + engines: {node: '>=6'} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} queue-microtask@1.2.3: @@ -1037,8 +1074,8 @@ packages: resolution: {integrity: sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==} engines: {node: '>=8'} - regenerator-runtime@0.14.0: - resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} resolve-alpn@1.2.1: resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} @@ -1047,9 +1084,8 @@ packages: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} - responselike@3.0.0: - resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} - engines: {node: '>=14.16'} + responselike@2.0.1: + resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} @@ -1060,6 +1096,7 @@ packages: rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true run-parallel@1.2.0: @@ -1085,13 +1122,13 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.5.4: - resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} engines: {node: '>=10'} hasBin: true - serialize-javascript@6.0.1: - resolution: {integrity: sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==} + serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} @@ -1114,24 +1151,27 @@ packages: resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - socks@2.7.1: - resolution: {integrity: sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==} - engines: {node: '>= 10.13.0', npm: '>= 3.0.0'} + socks@2.8.3: + resolution: {integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==} + engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} - soundcloud.ts@0.5.2: - resolution: {integrity: sha512-/pc72HWYJpSpup+mJBE9pT31JsrMcxJGBlip3Vem+0Fsscg98xh1/7I2nCpAKuMAeV6MVyrisI8TfjO6T7qKJg==} + soundcloud.ts@0.5.5: + resolution: {integrity: sha512-bygjhC1w/w26Nk0Y+4D4cWSEJ1TdxLaE6+w4pCazFzPF+J4mzuB62ggWmFa7BiwnirzNf9lgPbjzrQYGege4Ew==} sparse-bitfield@3.0.3: resolution: {integrity: sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==} - spotify-uri@4.0.1: - resolution: {integrity: sha512-dEt8UN5fSsZpcPk8HOEHkv29U71kefKjcYt2dopsShrkIZhXtDXe9Xse4xq0GW6831LnEZFry5mpzm1HV/TNLw==} + spotify-uri@4.1.0: + resolution: {integrity: sha512-SFpBt8pQqO7DOFBsdUjv3GxGZAKYP7UqcTflfE7h3YL1lynl/6Motq7NERoJJR8eF9kXQRSpcdMmV5ou84rbng==} engines: {node: '>= 16'} - spotify-url-info@3.2.13: - resolution: {integrity: sha512-b1D4n4vnSHf8/HkLT7SIwBsj21t5AV8uhWvzU6c1v8JHS34Ocdb1SsPlannRChCuRAWMKbOEntSn/sP3RhsDfQ==} + spotify-url-info@3.2.16: + resolution: {integrity: sha512-szXt1PLt8lqhaXsTNYH7zPd+EBj6Ha0xtqitqicCijGX6x/jYvn6wgGaK2F1OQfJzx8lxDNfZbtarn4DxzaZ2Q==} engines: {node: '>= 12'} + sprintf-js@1.1.3: + resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} + string-to-stream@1.1.1: resolution: {integrity: sha512-QySF2+3Rwq0SdO3s7BAp4x+c3qsClpPQ6abAmb0DGViiSBAkT5kL6JT2iyzEVP+T1SmzHrQD1TwlP9QAHCc+Sw==} @@ -1164,13 +1204,16 @@ packages: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} - tar@6.2.0: - resolution: {integrity: sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==} + tar@6.2.1: + resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} engines: {node: '>=10'} text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + tiny-typed-emitter@2.1.0: + resolution: {integrity: sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA==} + token-types@4.2.1: resolution: {integrity: sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==} engines: {node: '>=10'} @@ -1188,6 +1231,9 @@ packages: tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + tslib@2.6.3: + resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} + type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -1196,19 +1242,19 @@ packages: resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} - undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + undici-types@6.13.0: + resolution: {integrity: sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg==} - undici@5.27.2: - resolution: {integrity: sha512-iS857PdOEy/y3wlM3yRp+6SNQQ6xU0mmZcwRSriqk+et/cwWAtwmIGf6WkoDN2EK/AMdCO/dfXzIwi+rFMrjjQ==} + undici@5.28.4: + resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==} engines: {node: '>=14.0'} undici@6.13.0: resolution: {integrity: sha512-Q2rtqmZWrbP8nePMq7mOJIN98M0fYvSgV89vwl/BQRT4mDOeY2GXZngfGpcBBhtky3woM7G24wZV3Q304Bv6cw==} engines: {node: '>=18.0'} - undici@6.19.2: - resolution: {integrity: sha512-JfjKqIauur3Q6biAtHJ564e3bWa8VvT+7cSiOJHFbX4Erv6CLGDpg8z+Fmg/1OI/47RA+GI2QZaF48SSaLvyBA==} + undici@6.19.7: + resolution: {integrity: sha512-HR3W/bMGPSr90i8AAp2C4DM3wChFdJPLrWYpIS++LxS8K+W535qftjt+4MyjNYHeWabMj1nvtmLIi7l++iq91A==} engines: {node: '>=18.17'} unfetch@5.0.0: @@ -1249,11 +1295,15 @@ packages: wide-align@1.1.5: resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - ws@8.17.1: - resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} + ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -1285,29 +1335,23 @@ packages: youtubei.js@10.3.0: resolution: {integrity: sha512-tLmeJCECK2xF2hZZtF2nEqirdKVNLFSDpa0LhTaXY3tngtL7doQXyy7M2CLueramDTlmCnFaW+rctHirTPFaRQ==} - ytdl-core@4.11.5: - resolution: {integrity: sha512-27LwsW4n4nyNviRCO1hmr8Wr5J1wLLMawHCQvH8Fk0hiRqrxuIu028WzbJetiYH28K8XDbeinYW4/wcHQD1EXA==} - engines: {node: '>=12'} - snapshots: - '@aashutoshrathi/word-wrap@1.2.6': {} - - '@babel/runtime@7.23.2': + '@babel/runtime@7.25.0': dependencies: - regenerator-runtime: 0.14.0 + regenerator-runtime: 0.14.1 '@discord-player/equalizer@0.2.3': {} - '@discord-player/extractor@4.5.0': + '@discord-player/extractor@4.5.1': dependencies: file-type: 16.5.4 genius-lyrics: 4.4.7 isomorphic-unfetch: 4.0.2 node-html-parser: 6.1.13 reverbnation-scraper: 2.0.0 - soundcloud.ts: 0.5.2 - spotify-url-info: 3.2.13 + soundcloud.ts: 0.5.5 + spotify-url-info: 3.2.16 youtube-sr: 4.3.11 transitivePeerDependencies: - encoding @@ -1340,15 +1384,15 @@ snapshots: '@discordjs/node-pre-gyp@0.4.5': dependencies: - detect-libc: 2.0.2 + detect-libc: 2.0.3 https-proxy-agent: 5.0.1 make-dir: 3.1.0 node-fetch: 2.7.0 nopt: 5.0.0 npmlog: 5.0.1 rimraf: 3.0.2 - semver: 7.5.4 - tar: 6.2.0 + semver: 7.6.3 + tar: 6.2.1 transitivePeerDependencies: - encoding - supports-color @@ -1365,23 +1409,23 @@ snapshots: dependencies: '@discordjs/collection': 2.1.0 '@discordjs/util': 1.1.0 - '@sapphire/async-queue': 1.5.2 + '@sapphire/async-queue': 1.5.3 '@sapphire/snowflake': 3.5.3 - '@vladfrangu/async_event_emitter': 2.2.4 + '@vladfrangu/async_event_emitter': 2.4.5 discord-api-types: 0.37.83 magic-bytes.js: 1.10.0 - tslib: 2.6.2 + tslib: 2.6.3 undici: 6.13.0 '@discordjs/util@1.1.0': {} '@discordjs/voice@0.17.0(@discordjs/opus@0.9.0)': dependencies: - '@types/ws': 8.5.10 + '@types/ws': 8.5.12 discord-api-types: 0.37.83 prism-media: 1.3.5(@discordjs/opus@0.9.0) - tslib: 2.6.2 - ws: 8.17.1 + tslib: 2.6.3 + ws: 8.18.0 transitivePeerDependencies: - '@discordjs/opus' - bufferutil @@ -1395,30 +1439,30 @@ snapshots: '@discordjs/collection': 2.1.0 '@discordjs/rest': 2.3.0 '@discordjs/util': 1.1.0 - '@sapphire/async-queue': 1.5.2 - '@types/ws': 8.5.10 - '@vladfrangu/async_event_emitter': 2.2.4 + '@sapphire/async-queue': 1.5.3 + '@types/ws': 8.5.12 + '@vladfrangu/async_event_emitter': 2.4.5 discord-api-types: 0.37.83 tslib: 2.6.2 - ws: 8.17.1 + ws: 8.18.0 transitivePeerDependencies: - bufferutil - utf-8-validate - '@eslint-community/eslint-utils@4.4.0(eslint@8.56.0)': + '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)': dependencies: - eslint: 8.56.0 + eslint: 8.57.0 eslint-visitor-keys: 3.4.3 - '@eslint-community/regexpp@4.10.0': {} + '@eslint-community/regexpp@4.11.0': {} '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.12.6 - debug: 4.3.4 + debug: 4.3.6 espree: 9.6.1 - globals: 13.23.0 - ignore: 5.2.4 + globals: 13.24.0 + ignore: 5.3.2 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 @@ -1426,23 +1470,23 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@8.56.0': {} + '@eslint/js@8.57.0': {} - '@fastify/busboy@2.0.0': {} + '@fastify/busboy@2.1.1': {} - '@humanwhocodes/config-array@0.11.13': + '@humanwhocodes/config-array@0.11.14': dependencies: - '@humanwhocodes/object-schema': 2.0.1 - debug: 4.3.4 + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.3.6 minimatch: 3.1.2 transitivePeerDependencies: - supports-color '@humanwhocodes/module-importer@1.0.1': {} - '@humanwhocodes/object-schema@2.0.1': {} + '@humanwhocodes/object-schema@2.0.3': {} - '@mongodb-js/saslprep@1.1.1': + '@mongodb-js/saslprep@1.1.8': dependencies: sparse-bitfield: 3.0.3 optional: true @@ -1496,9 +1540,9 @@ snapshots: '@nodelib/fs.walk@1.2.8': dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.15.0 + fastq: 1.17.1 - '@sapphire/async-queue@1.5.2': {} + '@sapphire/async-queue@1.5.3': {} '@sapphire/shapeshift@3.9.7': dependencies: @@ -1507,7 +1551,7 @@ snapshots: '@sapphire/snowflake@3.5.3': {} - '@sindresorhus/is@5.6.0': {} + '@sindresorhus/is@4.6.0': {} '@szmarczak/http-timer@5.0.1': dependencies: @@ -1515,42 +1559,57 @@ snapshots: '@tokenizer/token@0.3.0': {} - '@types/http-cache-semantics@4.0.3': {} - - '@types/luxon@3.3.3': {} - - '@types/node@20.8.9': + '@types/cacheable-request@6.0.3': dependencies: - undici-types: 5.26.5 + '@types/http-cache-semantics': 4.0.4 + '@types/keyv': 3.1.4 + '@types/node': 22.2.0 + '@types/responselike': 1.0.3 - '@types/webidl-conversions@7.0.2': {} + '@types/http-cache-semantics@4.0.4': {} + + '@types/keyv@3.1.4': + dependencies: + '@types/node': 22.2.0 + + '@types/luxon@3.3.8': {} + + '@types/node@22.2.0': + dependencies: + undici-types: 6.13.0 + + '@types/responselike@1.0.3': + dependencies: + '@types/node': 22.2.0 + + '@types/webidl-conversions@7.0.3': {} '@types/whatwg-url@8.2.2': dependencies: - '@types/node': 20.8.9 - '@types/webidl-conversions': 7.0.2 + '@types/node': 22.2.0 + '@types/webidl-conversions': 7.0.3 - '@types/ws@8.5.10': + '@types/ws@8.5.12': dependencies: - '@types/node': 20.8.9 + '@types/node': 22.2.0 '@ungap/structured-clone@1.2.0': {} - '@vladfrangu/async_event_emitter@2.2.4': {} + '@vladfrangu/async_event_emitter@2.4.5': {} - '@web-scrobbler/metadata-filter@3.1.0': {} + '@web-scrobbler/metadata-filter@3.2.0': {} abbrev@1.1.1: {} - acorn-jsx@5.3.2(acorn@8.11.2): + acorn-jsx@5.3.2(acorn@8.12.1): dependencies: - acorn: 8.11.2 + acorn: 8.12.1 - acorn@8.11.2: {} + acorn@8.12.1: {} agent-base@6.0.2: dependencies: - debug: 4.3.4 + debug: 4.3.6 transitivePeerDependencies: - supports-color @@ -1593,17 +1652,17 @@ snapshots: bson@5.5.1: {} - cacheable-lookup@7.0.0: {} + cacheable-lookup@6.1.0: {} - cacheable-request@10.2.14: + cacheable-request@7.0.4: dependencies: - '@types/http-cache-semantics': 4.0.3 - get-stream: 6.0.1 + clone-response: 1.0.3 + get-stream: 5.2.0 http-cache-semantics: 4.1.1 keyv: 4.5.4 - mimic-response: 4.0.0 - normalize-url: 8.0.0 - responselike: 3.0.0 + lowercase-keys: 2.0.0 + normalize-url: 6.1.0 + responselike: 2.0.1 callsites@3.1.0: {} @@ -1614,27 +1673,30 @@ snapshots: charenc@0.0.2: {} - cheerio-select@2.1.0: + cheerio-select@1.6.0: dependencies: - boolbase: 1.0.0 - css-select: 5.1.0 + css-select: 4.3.0 css-what: 6.1.0 domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.1.0 + domhandler: 4.3.1 + domutils: 2.8.0 - cheerio@1.0.0-rc.12: + cheerio@1.0.0-rc.10: dependencies: - cheerio-select: 2.1.0 - dom-serializer: 2.0.0 - domhandler: 5.0.3 - domutils: 3.1.0 - htmlparser2: 8.0.2 - parse5: 7.1.2 - parse5-htmlparser2-tree-adapter: 7.0.0 + cheerio-select: 1.6.0 + dom-serializer: 1.4.1 + domhandler: 4.3.1 + htmlparser2: 6.1.0 + parse5: 6.0.1 + parse5-htmlparser2-tree-adapter: 6.0.1 + tslib: 2.6.3 chownr@2.0.0: {} + clone-response@1.0.3: + dependencies: + mimic-response: 1.0.1 + color-convert@2.0.1: dependencies: color-name: 1.1.4 @@ -1653,7 +1715,7 @@ snapshots: cron@2.4.4: dependencies: - '@types/luxon': 3.3.3 + '@types/luxon': 3.3.8 luxon: 3.3.0 cross-spawn@7.0.3: @@ -1664,6 +1726,14 @@ snapshots: crypt@0.0.2: {} + css-select@4.3.0: + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 4.3.1 + domutils: 2.8.0 + nth-check: 2.1.1 + css-select@5.1.0: dependencies: boolbase: 1.0.0 @@ -1676,7 +1746,7 @@ snapshots: data-uri-to-buffer@4.0.1: {} - debug@4.3.4: + debug@4.3.6: dependencies: ms: 2.1.2 @@ -1692,32 +1762,32 @@ snapshots: delegates@1.0.0: {} - detect-libc@2.0.2: {} + detect-libc@2.0.3: {} discord-api-types@0.37.83: {} - discord-api-types@0.37.92: {} + discord-api-types@0.37.93: {} discord-giveaways@6.0.1(discord.js@14.15.3): dependencies: deepmerge-ts: 4.3.0 discord.js: 14.15.3 - serialize-javascript: 6.0.1 + serialize-javascript: 6.0.2 - discord-player-youtubei@1.2.4: + discord-player-youtubei@1.2.6: dependencies: - undici: 6.19.2 + tiny-typed-emitter: 2.1.0 youtubei.js: 10.3.0 - discord-player@6.7.1(@discord-player/extractor@4.5.0)(@discordjs/opus@0.9.0): + discord-player@6.7.1(@discord-player/extractor@4.5.1)(@discordjs/opus@0.9.0): dependencies: '@discord-player/equalizer': 0.2.3 - '@discord-player/extractor': 4.5.0 + '@discord-player/extractor': 4.5.1 '@discord-player/ffmpeg': 0.1.0 '@discord-player/utils': 0.2.2 - '@web-scrobbler/metadata-filter': 3.1.0 + '@web-scrobbler/metadata-filter': 3.2.0 discord-voip: 0.1.3(@discordjs/opus@0.9.0) - libsodium-wrappers: 0.7.13 + libsodium-wrappers: 0.7.14 transitivePeerDependencies: - '@discordjs/opus' - bufferutil @@ -1730,11 +1800,11 @@ snapshots: dependencies: '@discord-player/ffmpeg': 0.1.0 '@discord-player/opus': 0.1.2 - '@types/ws': 8.5.10 - discord-api-types: 0.37.92 + '@types/ws': 8.5.12 + discord-api-types: 0.37.93 prism-media: 1.3.5(@discordjs/opus@0.9.0) - tslib: 2.6.2 - ws: 8.17.1 + tslib: 2.6.3 + ws: 8.18.0 transitivePeerDependencies: - '@discordjs/opus' - bufferutil @@ -1765,6 +1835,12 @@ snapshots: dependencies: esutils: 2.0.3 + dom-serializer@1.4.1: + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + entities: 2.2.0 + dom-serializer@2.0.0: dependencies: domelementtype: 2.3.0 @@ -1773,10 +1849,20 @@ snapshots: domelementtype@2.3.0: {} + domhandler@4.3.1: + dependencies: + domelementtype: 2.3.0 + domhandler@5.0.3: dependencies: domelementtype: 2.3.0 + domutils@2.8.0: + dependencies: + dom-serializer: 1.4.1 + domelementtype: 2.3.0 + domhandler: 4.3.1 + domutils@3.1.0: dependencies: dom-serializer: 2.0.0 @@ -1785,6 +1871,12 @@ snapshots: emoji-regex@8.0.0: {} + end-of-stream@1.4.4: + dependencies: + once: 1.4.0 + + entities@2.2.0: {} + entities@4.5.0: {} escape-string-regexp@4.0.0: {} @@ -1796,34 +1888,34 @@ snapshots: eslint-visitor-keys@3.4.3: {} - eslint@8.56.0: + eslint@8.57.0: dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) - '@eslint-community/regexpp': 4.10.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/regexpp': 4.11.0 '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.56.0 - '@humanwhocodes/config-array': 0.11.13 + '@eslint/js': 8.57.0 + '@humanwhocodes/config-array': 0.11.14 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 '@ungap/structured-clone': 1.2.0 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4 + debug: 4.3.6 doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 espree: 9.6.1 - esquery: 1.5.0 + esquery: 1.6.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 6.0.1 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.23.0 + globals: 13.24.0 graphemer: 1.4.0 - ignore: 5.2.4 + ignore: 5.3.2 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 @@ -1833,7 +1925,7 @@ snapshots: lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 - optionator: 0.9.3 + optionator: 0.9.4 strip-ansi: 6.0.1 text-table: 0.2.0 transitivePeerDependencies: @@ -1841,11 +1933,11 @@ snapshots: espree@9.6.1: dependencies: - acorn: 8.11.2 - acorn-jsx: 5.3.2(acorn@8.11.2) + acorn: 8.12.1 + acorn-jsx: 5.3.2(acorn@8.12.1) eslint-visitor-keys: 3.4.3 - esquery@1.5.0: + esquery@1.6.0: dependencies: estraverse: 5.3.0 @@ -1865,7 +1957,7 @@ snapshots: fast-levenshtein@2.0.6: {} - fastq@1.15.0: + fastq@1.17.1: dependencies: reusify: 1.0.4 @@ -1876,7 +1968,7 @@ snapshots: file-entry-cache@6.0.1: dependencies: - flat-cache: 3.1.1 + flat-cache: 3.2.0 file-type@16.5.4: dependencies: @@ -1889,15 +1981,15 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 - flat-cache@3.1.1: + flat-cache@3.2.0: dependencies: - flatted: 3.2.9 + flatted: 3.3.1 keyv: 4.5.4 rimraf: 3.0.2 - flatted@3.2.9: {} + flatted@3.3.1: {} - form-data-encoder@2.1.4: {} + form-data-encoder@1.7.1: {} formdata-polyfill@4.0.10: dependencies: @@ -1909,15 +2001,15 @@ snapshots: fs.realpath@1.0.0: {} - gamedig@4.1.0: + gamedig@4.3.2: dependencies: - cheerio: 1.0.0-rc.12 + cheerio: 1.0.0-rc.10 gbxremote: 0.2.1 - got: 12.6.1 + got: 12.1.0 iconv-lite: 0.6.3 - long: 5.2.3 - minimist: 1.2.8 - punycode: 2.3.0 + long: 5.2.0 + minimist: 1.2.6 + punycode: 2.1.1 seek-bzip: 2.0.0 varint: 6.0.0 @@ -1944,7 +2036,11 @@ snapshots: genius-lyrics@4.4.7: dependencies: node-html-parser: 6.1.13 - undici: 6.19.2 + undici: 6.19.7 + + get-stream@5.2.0: + dependencies: + pump: 3.0.0 get-stream@6.0.1: {} @@ -1961,23 +2057,25 @@ snapshots: once: 1.4.0 path-is-absolute: 1.0.1 - globals@13.23.0: + globals@13.24.0: dependencies: type-fest: 0.20.2 - got@12.6.1: + got@12.1.0: dependencies: - '@sindresorhus/is': 5.6.0 + '@sindresorhus/is': 4.6.0 '@szmarczak/http-timer': 5.0.1 - cacheable-lookup: 7.0.0 - cacheable-request: 10.2.14 + '@types/cacheable-request': 6.0.3 + '@types/responselike': 1.0.3 + cacheable-lookup: 6.1.0 + cacheable-request: 7.0.4 decompress-response: 6.0.0 - form-data-encoder: 2.1.4 + form-data-encoder: 1.7.1 get-stream: 6.0.1 - http2-wrapper: 2.2.0 + http2-wrapper: 2.2.1 lowercase-keys: 3.0.0 p-cancelable: 3.0.0 - responselike: 3.0.0 + responselike: 2.0.1 graphemer@1.4.0: {} @@ -1989,16 +2087,16 @@ snapshots: himalaya@1.1.0: {} - htmlparser2@8.0.2: + htmlparser2@6.1.0: dependencies: domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.1.0 - entities: 4.5.0 + domhandler: 4.3.1 + domutils: 2.8.0 + entities: 2.2.0 http-cache-semantics@4.1.1: {} - http2-wrapper@2.2.0: + http2-wrapper@2.2.1: dependencies: quick-lru: 5.1.1 resolve-alpn: 1.2.1 @@ -2006,7 +2104,7 @@ snapshots: https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.3.4 + debug: 4.3.6 transitivePeerDependencies: - supports-color @@ -2014,7 +2112,7 @@ snapshots: i18next@21.10.0: dependencies: - '@babel/runtime': 7.23.2 + '@babel/runtime': 7.25.0 iconv-lite@0.6.3: dependencies: @@ -2022,7 +2120,7 @@ snapshots: ieee754@1.2.1: {} - ignore@5.2.4: {} + ignore@5.3.2: {} import-fresh@3.3.0: dependencies: @@ -2038,7 +2136,10 @@ snapshots: inherits@2.0.4: {} - ip@2.0.0: {} + ip-address@9.0.5: + dependencies: + jsbn: 1.1.0 + sprintf-js: 1.1.3 is-buffer@1.1.6: {} @@ -2065,12 +2166,14 @@ snapshots: jintr@2.1.1: dependencies: - acorn: 8.11.2 + acorn: 8.12.1 js-yaml@4.1.0: dependencies: argparse: 2.0.1 + jsbn@1.1.0: {} + json-buffer@3.0.1: {} json-schema-traverse@0.4.1: {} @@ -2088,11 +2191,11 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - libsodium-wrappers@0.7.13: + libsodium-wrappers@0.7.14: dependencies: - libsodium: 0.7.13 + libsodium: 0.7.14 - libsodium@0.7.13: {} + libsodium@0.7.14: {} locate-path@6.0.0: dependencies: @@ -2104,21 +2207,14 @@ snapshots: lodash@4.17.21: {} - long@5.2.3: {} + long@5.2.0: {} + + lowercase-keys@2.0.0: {} lowercase-keys@3.0.0: {} - lru-cache@6.0.0: - dependencies: - yallist: 4.0.0 - luxon@3.3.0: {} - m3u8stream@0.8.6: - dependencies: - miniget: 4.2.3 - sax: 1.2.4 - magic-bytes.js@1.10.0: {} make-dir@3.1.0: @@ -2134,17 +2230,15 @@ snapshots: memory-pager@1.5.0: optional: true + mimic-response@1.0.1: {} + mimic-response@3.1.0: {} - mimic-response@4.0.0: {} - - miniget@4.2.3: {} - minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 - minimist@1.2.8: {} + minimist@1.2.6: {} minipass@3.3.6: dependencies: @@ -2159,26 +2253,26 @@ snapshots: mkdirp@1.0.4: {} - moment@2.29.4: {} + moment@2.30.1: {} mongodb-connection-string-url@2.6.0: dependencies: '@types/whatwg-url': 8.2.2 whatwg-url: 11.0.0 - mongodb@5.9.0: + mongodb@5.9.2: dependencies: bson: 5.5.1 mongodb-connection-string-url: 2.6.0 - socks: 2.7.1 + socks: 2.8.3 optionalDependencies: - '@mongodb-js/saslprep': 1.1.1 + '@mongodb-js/saslprep': 1.1.8 - mongoose@7.6.3: + mongoose@7.8.0: dependencies: bson: 5.5.1 kareem: 2.5.1 - mongodb: 5.9.0 + mongodb: 5.9.2 mpath: 0.9.0 mquery: 5.0.0 ms: 2.1.3 @@ -2195,7 +2289,7 @@ snapshots: mquery@5.0.0: dependencies: - debug: 4.3.4 + debug: 4.3.6 transitivePeerDependencies: - supports-color @@ -2228,7 +2322,7 @@ snapshots: dependencies: abbrev: 1.1.1 - normalize-url@8.0.0: {} + normalize-url@6.1.0: {} npmlog@5.0.1: dependencies: @@ -2247,14 +2341,14 @@ snapshots: dependencies: wrappy: 1.0.2 - optionator@0.9.3: + optionator@0.9.4: dependencies: - '@aashutoshrathi/word-wrap': 1.2.6 deep-is: 0.1.4 fast-levenshtein: 2.0.6 levn: 0.4.1 prelude-ls: 1.2.1 type-check: 0.4.0 + word-wrap: 1.2.5 p-cancelable@3.0.0: {} @@ -2270,14 +2364,11 @@ snapshots: dependencies: callsites: 3.1.0 - parse5-htmlparser2-tree-adapter@7.0.0: + parse5-htmlparser2-tree-adapter@6.0.1: dependencies: - domhandler: 5.0.3 - parse5: 7.1.2 + parse5: 6.0.1 - parse5@7.1.2: - dependencies: - entities: 4.5.0 + parse5@6.0.1: {} path-exists@4.0.0: {} @@ -2295,7 +2386,14 @@ snapshots: process-nextick-args@2.0.1: {} - punycode@2.3.0: {} + pump@3.0.0: + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + + punycode@2.1.1: {} + + punycode@2.3.1: {} queue-microtask@1.2.3: {} @@ -2332,15 +2430,15 @@ snapshots: dependencies: readable-stream: 3.6.2 - regenerator-runtime@0.14.0: {} + regenerator-runtime@0.14.1: {} resolve-alpn@1.2.1: {} resolve-from@4.0.0: {} - responselike@3.0.0: + responselike@2.0.1: dependencies: - lowercase-keys: 3.0.0 + lowercase-keys: 2.0.0 reusify@1.0.4: {} @@ -2372,11 +2470,9 @@ snapshots: semver@6.3.1: {} - semver@7.5.4: - dependencies: - lru-cache: 6.0.0 + semver@7.6.3: {} - serialize-javascript@6.0.1: + serialize-javascript@6.0.2: dependencies: randombytes: 2.1.0 @@ -2394,26 +2490,28 @@ snapshots: smart-buffer@4.2.0: {} - socks@2.7.1: + socks@2.8.3: dependencies: - ip: 2.0.0 + ip-address: 9.0.5 smart-buffer: 4.2.0 - soundcloud.ts@0.5.2: + soundcloud.ts@0.5.5: dependencies: - undici: 5.27.2 + undici: 6.19.7 sparse-bitfield@3.0.3: dependencies: memory-pager: 1.5.0 optional: true - spotify-uri@4.0.1: {} + spotify-uri@4.1.0: {} - spotify-url-info@3.2.13: + spotify-url-info@3.2.16: dependencies: himalaya: 1.1.0 - spotify-uri: 4.0.1 + spotify-uri: 4.1.0 + + sprintf-js@1.1.3: {} string-to-stream@1.1.1: dependencies: @@ -2451,7 +2549,7 @@ snapshots: dependencies: has-flag: 4.0.0 - tar@6.2.0: + tar@6.2.1: dependencies: chownr: 2.0.0 fs-minipass: 2.1.0 @@ -2462,6 +2560,8 @@ snapshots: text-table@0.2.0: {} + tiny-typed-emitter@2.1.0: {} + token-types@4.2.1: dependencies: '@tokenizer/token': 0.3.0 @@ -2471,33 +2571,35 @@ snapshots: tr46@3.0.0: dependencies: - punycode: 2.3.0 + punycode: 2.3.1 ts-mixer@6.0.4: {} tslib@2.6.2: {} + tslib@2.6.3: {} + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 type-fest@0.20.2: {} - undici-types@5.26.5: {} + undici-types@6.13.0: {} - undici@5.27.2: + undici@5.28.4: dependencies: - '@fastify/busboy': 2.0.0 + '@fastify/busboy': 2.1.1 undici@6.13.0: {} - undici@6.19.2: {} + undici@6.19.7: {} unfetch@5.0.0: {} uri-js@4.4.1: dependencies: - punycode: 2.3.0 + punycode: 2.3.1 util-deprecate@1.0.2: {} @@ -2527,9 +2629,11 @@ snapshots: dependencies: string-width: 4.2.3 + word-wrap@1.2.5: {} + wrappy@1.0.2: {} - ws@8.17.1: {} + ws@8.18.0: {} xmlbuilder@8.2.2: {} @@ -2547,11 +2651,5 @@ snapshots: youtubei.js@10.3.0: dependencies: jintr: 2.1.1 - tslib: 2.6.2 - undici: 5.27.2 - - ytdl-core@4.11.5: - dependencies: - m3u8stream: 0.8.6 - miniget: 4.2.3 - sax: 1.2.4 + tslib: 2.6.3 + undici: 5.28.4