New feature (embed thumbnails); Docker; Package update

This commit is contained in:
Andrew Lee 2023-10-15 23:54:53 -04:00
parent 8c81aaddde
commit 3d4f5061d4
Signed by: andrew
GPG key ID: 4DCE67C47836D125
11 changed files with 199 additions and 120 deletions

4
.dockerignore Normal file
View file

@ -0,0 +1,4 @@
music
.git
node_modules
config.json

View file

@ -21,7 +21,7 @@
import { createAudioResource } from '@discordjs/voice';
import { parseFile } from 'music-metadata';
import { readdirSync, readFileSync, writeFile } from 'node:fs';
import { EmbedBuilder } from 'discord.js';
import { EmbedBuilder, AttachmentBuilder } from 'discord.js';
import { player } from './VoiceInitialization.js';
import { audioState, files } from './AudioControl.js';
import { integer } from '../Commands/play.js';
@ -38,6 +38,7 @@ export let audioTitle;
export let audioArtist;
export let audioYear;
export let audioAlbum;
export let audioPicture;
export let duration;
const inputFiles = readdirSync('music');
@ -59,6 +60,7 @@ export async function playAudio(bot) {
audioArtist = common.artist;
audioYear = common.year;
audioAlbum = common.album;
if (common.picture) audioPicture = new AttachmentBuilder(common.picture[0].data, { name: 'albumArt.png', description: 'Album Art' });
} else {
metadataEmpty = true;
}
@ -77,6 +79,7 @@ export async function playAudio(bot) {
}
const statusEmbed = new EmbedBuilder();
if (metadataEmpty) {
statusEmbed.setTitle('Now Playing');
statusEmbed.addFields(
@ -92,12 +95,17 @@ export async function playAudio(bot) {
{ name: 'Year', value: `${audioYear}` },
{ name: 'Duration', value: `${duration}` }
);
// console.log(audioPicture);
if (audioPicture) {
// statusEmbed.setThumbnail({ url: 'attachment://albumArt.png' });
}
statusEmbed.setFooter({ text: `Album: ${audioAlbum}\nFilename: ${audioFile}` });
statusEmbed.setColor('#0066ff');
}
const channel = bot.channels.cache.get(statusChannel);
if (!channel) return console.error('The status channel does not exist! Skipping.');
return await channel.send({ embeds: [statusEmbed] });
return await channel.send({ embeds: [statusEmbed], files: [audioPicture] });
}
export function updatePlaylist(option) {

View file

@ -31,7 +31,7 @@ export default {
.setDescription('Joins voice chat'),
async execute(interaction, bot) {
if (!interaction.member.voice.channel) return await interaction.reply({ content: 'You need to be in a voice channel to use this command.', ephemeral: true });
if (!interaction.member.roles.cache.has(djRole) && interaction.user.id !== ownerID && !interaction.member.permission.has(PermissionFlagsBits.ManageGuild)) return interaction.reply({ content: 'You need a specific role to execute this command', ephemeral: true });
if (!interaction.member.roles.cache.has(djRole) && interaction.user.id !== ownerID && !interaction.memberPermissions.has(PermissionFlagsBits.ManageGuild)) return interaction.reply({ content: 'You need a specific role to execute this command', ephemeral: true });
await interaction.reply({ content: 'Joining voice channel', ephemeral: true });
return await voiceInit(bot);

View file

@ -31,7 +31,7 @@ export default {
.setDescription('Leaves the voice chat'),
async execute(interaction, bot) {
if (!interaction.member.voice.channel) return await interaction.reply({ content: 'You need to be in a voice channel to use this command.', ephemeral: true });
if (!interaction.member.roles.cache.has(djRole) && interaction.user.id !== ownerID && !interaction.member.permission.has(PermissionFlagsBits.ManageGuild)) return interaction.reply({ content: 'You need a specific role to execute this command', ephemeral: true });
if (!interaction.member.roles.cache.has(djRole) && interaction.user.id !== ownerID && !interaction.memberPermissions.has(PermissionFlagsBits.ManageGuild)) return interaction.reply({ content: 'You need a specific role to execute this command', ephemeral: true });
console.log('Leaving voice channel...');
await destroyAudio(interaction);

View file

@ -30,7 +30,7 @@ export default {
.setDescription('Pauses music'),
async execute(interaction, bot) {
if (!interaction.member.voice.channel) return await interaction.reply({ content: 'You need to be in a voice channel to use this command.', ephemeral: true });
if (!interaction.member.roles.cache.has(djRole) && interaction.user.id !== ownerID && !interaction.member.permission.has(PermissionFlagsBits.ManageGuild)) return interaction.reply({ content: 'You need a specific role to execute this command', ephemeral: true });
if (!interaction.member.roles.cache.has(djRole) && interaction.user.id !== ownerID && !interaction.memberPermissions.has(PermissionFlagsBits.ManageGuild)) return interaction.reply({ content: 'You need a specific role to execute this command', ephemeral: true });
if (!isAudioStatePaused) {
toggleAudioState();

View file

@ -42,7 +42,7 @@ export default {
async execute(interaction, bot) {
if (!interaction.member.voice.channel) return await interaction.reply({ content: 'You need to be in a voice channel to use this command.', ephemeral: true });
if (!interaction.member.roles.cache.has(djRole) && interaction.user.id !== ownerID && !interaction.member.permission.has(PermissionFlagsBits.ManageGuild)) return interaction.reply({ content: 'You need a specific role to execute this command', ephemeral: true });
if (!interaction.member.roles.cache.has(djRole) && interaction.user.id !== ownerID && !interaction.memberPermissions.has(PermissionFlagsBits.ManageGuild)) return interaction.reply({ content: 'You need a specific role to execute this command', ephemeral: true });
integer = interaction.options.getInteger('int');
if (integer) {

View file

@ -33,7 +33,7 @@ export default {
.setDescription('Reshuffles the playlist'),
async execute(interaction, bot) {
if (!interaction.member.voice.channel) return await interaction.reply({ content: 'You need to be in a voice channel to use this command.', ephemeral: true });
if (!interaction.member.roles.cache.has(djRole) && interaction.user.id !== ownerID && !interaction.member.permission.has(PermissionFlagsBits.ManageGuild)) return interaction.reply({ content: 'You need a specific role to execute this command', ephemeral: true });
if (!interaction.member.roles.cache.has(djRole) && interaction.user.id !== ownerID && !interaction.memberPermissions.has(PermissionFlagsBits.ManageGuild)) return interaction.reply({ content: 'You need a specific role to execute this command', ephemeral: true });
async function shuffleDetected(bot) {
await interaction.reply({ content: 'Reshuffling the playlist...', ephemeral: true });

23
Dockerfile Normal file
View file

@ -0,0 +1,23 @@
FROM node:alpine AS build
WORKDIR /usr/src/bot
RUN apk add --update alpine-sdk libtool autoconf automake python3
COPY package.json ./
COPY yarn.lock ./
RUN yarn global add node-gyp
RUN yarn install
FROM node:alpine
WORKDIR /usr/src/bot
COPY --from=build /usr/src/bot/node_modules ./node_modules
COPY . ./
CMD ["node", "bot.js"]

View file

@ -85,7 +85,7 @@ export async function voteSkip(interaction, bot) {
}
if (interaction.options.getSubcommand() === 'force') {
if (!interaction.member.roles.cache.has(djRole) && interaction.user.id !== ownerID && !interaction.member.permission.has(PermissionFlagsBits.ManageGuild)) return interaction.reply({ content: 'You need a specific role to execute this command', ephemeral: true });
if (!interaction.member.roles.cache.has(djRole) && interaction.user.id !== ownerID && !interaction.memberPermissions.has(PermissionFlagsBits.ManageGuild)) return interaction.reply({ content: 'You need a specific role to execute this command', ephemeral: true });
console.log('Force skipping this audio track...');
if (playerState === 'Playing' || playerState === 'Paused') {
votes.clear();

View file

@ -10,14 +10,14 @@
},
"dependencies": {
"@discordjs/opus": "^0.9.0",
"@discordjs/rest": "^1.6.0",
"@discordjs/voice": "^0.15.0",
"discord-api-types": "^0.37.35",
"discord.js": "^14.8.0",
"ffmpeg-static": "^5.1.0",
"i18next": "^22.4.5",
"i18next-fs-backend": "^2.1.0",
"music-metadata": "^8.1.0",
"@discordjs/rest": "^2.0.1",
"@discordjs/voice": "^0.16.0",
"discord-api-types": "^0.37.60",
"discord.js": "^14.13.0",
"ffmpeg-static": "^5.2.0",
"i18next": "^23.5.1",
"i18next-fs-backend": "^2.2.0",
"music-metadata": "^8.1.4",
"sodium": "^3.0.2"
},
"devDependencies": {

252
yarn.lock
View file

@ -2,12 +2,12 @@
# yarn lockfile v1
"@babel/runtime@^7.20.6":
version "7.21.0"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673"
integrity sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==
"@babel/runtime@^7.22.5":
version "7.23.2"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.2.tgz#062b0ac103261d68a966c4c7baf2ae3e62ec3885"
integrity sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==
dependencies:
regenerator-runtime "^0.13.11"
regenerator-runtime "^0.14.0"
"@derhuerst/http-basic@^8.2.0":
version "8.2.4"
@ -19,30 +19,30 @@
http-response-object "^3.0.1"
parse-cache-control "^1.0.1"
"@discordjs/builders@^1.5.0":
version "1.5.0"
resolved "https://registry.yarnpkg.com/@discordjs/builders/-/builders-1.5.0.tgz#f6dd4684e46707eb600eabdfdacd3b44c9e924cd"
integrity sha512-7XxT78mnNBPigHn2y6KAXkicxIBFtZREGWaRZ249EC1l6gBUEP8IyVY5JTciIjJArxkF+tg675aZvsTNTKBpmA==
"@discordjs/builders@^1.6.5":
version "1.6.5"
resolved "https://registry.yarnpkg.com/@discordjs/builders/-/builders-1.6.5.tgz#3e23912eaab1d542b61ca0fa7202e5aaef2b7200"
integrity sha512-SdweyCs/+mHj+PNhGLLle7RrRFX9ZAhzynHahMCLqp5Zeq7np7XC6/mgzHc79QoVlQ1zZtOkTTiJpOZu5V8Ufg==
dependencies:
"@discordjs/formatters" "^0.2.0"
"@discordjs/util" "^0.2.0"
"@sapphire/shapeshift" "^3.8.1"
discord-api-types "^0.37.35"
"@discordjs/formatters" "^0.3.2"
"@discordjs/util" "^1.0.1"
"@sapphire/shapeshift" "^3.9.2"
discord-api-types "0.37.50"
fast-deep-equal "^3.1.3"
ts-mixer "^6.0.3"
tslib "^2.5.0"
tslib "^2.6.1"
"@discordjs/collection@^1.4.0":
version "1.4.0"
resolved "https://registry.yarnpkg.com/@discordjs/collection/-/collection-1.4.0.tgz#6b5d5429db0691a3f5a962c21f6bc7859eef3333"
integrity sha512-hiOJyk2CPFf1+FL3a4VKCuu1f448LlROVuu8nLz1+jCOAPokUcdFAV+l4pd3B3h6uJlJQSASoZzrdyNdjdtfzQ==
"@discordjs/collection@^1.5.3":
version "1.5.3"
resolved "https://registry.yarnpkg.com/@discordjs/collection/-/collection-1.5.3.tgz#5a1250159ebfff9efa4f963cfa7e97f1b291be18"
integrity sha512-SVb428OMd3WO1paV3rm6tSjM4wC+Kecaa1EUGX7vc6/fddvw/6lg90z4QtCqm21zvVe92vMMDt9+DkIvjXImQQ==
"@discordjs/formatters@^0.2.0":
version "0.2.0"
resolved "https://registry.yarnpkg.com/@discordjs/formatters/-/formatters-0.2.0.tgz#a861d9c385dfc6c7294e44c5441beee933820a4f"
integrity sha512-vn4oMSXuMZUm8ITqVOtvE7/fMMISj4cI5oLsR09PEQXHKeKDAMLltG/DWeeIs7Idfy6V8Fk3rn1e69h7NfzuNA==
"@discordjs/formatters@^0.3.2":
version "0.3.2"
resolved "https://registry.yarnpkg.com/@discordjs/formatters/-/formatters-0.3.2.tgz#3ae054f7b3097cc0dc7645fade37a3f20fa1fb4b"
integrity sha512-lE++JZK8LSSDRM5nLjhuvWhGuKiXqu+JZ/DsOR89DVVia3z9fdCJVcHF2W/1Zxgq0re7kCzmAJlCMMX3tetKpA==
dependencies:
discord-api-types "^0.37.35"
discord-api-types "0.37.50"
"@discordjs/node-pre-gyp@^0.4.5":
version "0.4.5"
@ -67,35 +67,51 @@
"@discordjs/node-pre-gyp" "^0.4.5"
node-addon-api "^5.0.0"
"@discordjs/rest@^1.6.0":
version "1.6.0"
resolved "https://registry.yarnpkg.com/@discordjs/rest/-/rest-1.6.0.tgz#d77c9b5533f6d2079468d4fd497d3fabeb529c20"
integrity sha512-HGvqNCZ5Z5j0tQHjmT1lFvE5ETO4hvomJ1r0cbnpC1zM23XhCpZ9wgTCiEmaxKz05cyf2CI9p39+9LL+6Yz1bA==
"@discordjs/rest@^2.0.1":
version "2.0.1"
resolved "https://registry.yarnpkg.com/@discordjs/rest/-/rest-2.0.1.tgz#100c208a964e54b8d7cd418bbaed279c816b8ec5"
integrity sha512-/eWAdDRvwX/rIE2tuQUmKaxmWeHmGealttIzGzlYfI4+a7y9b6ZoMp8BG/jaohs8D8iEnCNYaZiOFLVFLQb8Zg==
dependencies:
"@discordjs/collection" "^1.4.0"
"@discordjs/util" "^0.2.0"
"@discordjs/collection" "^1.5.3"
"@discordjs/util" "^1.0.1"
"@sapphire/async-queue" "^1.5.0"
"@sapphire/snowflake" "^3.4.0"
discord-api-types "^0.37.35"
file-type "^18.2.1"
tslib "^2.5.0"
undici "^5.20.0"
"@sapphire/snowflake" "^3.5.1"
"@vladfrangu/async_event_emitter" "^2.2.2"
discord-api-types "0.37.50"
magic-bytes.js "^1.0.15"
tslib "^2.6.1"
undici "5.22.1"
"@discordjs/util@^0.2.0":
version "0.2.0"
resolved "https://registry.yarnpkg.com/@discordjs/util/-/util-0.2.0.tgz#91b590dae3934ffa5fe34530afc5212c569d6751"
integrity sha512-/8qNbebFzLWKOOg+UV+RB8itp4SmU5jw0tBUD3ifElW6rYNOj1Ku5JaSW7lLl/WgjjxF01l/1uQPCzkwr110vg==
"@discordjs/util@^1.0.1":
version "1.0.1"
resolved "https://registry.yarnpkg.com/@discordjs/util/-/util-1.0.1.tgz#7d6f97b65425d3a8b46ea1180150dee6991a88cf"
integrity sha512-d0N2yCxB8r4bn00/hvFZwM7goDcUhtViC5un4hPj73Ba4yrChLSJD8fy7Ps5jpTLg1fE9n4K0xBLc1y9WGwSsA==
"@discordjs/voice@^0.15.0":
version "0.15.0"
resolved "https://registry.yarnpkg.com/@discordjs/voice/-/voice-0.15.0.tgz#774febb2a1623b23e234744fefb60544858db77d"
integrity sha512-YEvrRchDhjB0QbI9QYOF/qgDwvGb9sNGUyks5d3Srl+VRoMoKkMzWY+wcEfVbAgdMIAdLi5vyrTKP/gLND26jA==
"@discordjs/voice@^0.16.0":
version "0.16.0"
resolved "https://registry.yarnpkg.com/@discordjs/voice/-/voice-0.16.0.tgz#9df1e492c8fea95113236a3de3ac52702c587729"
integrity sha512-ToGCvHD1cBscuW3p+C7zOF5+L7MJmU4GjdOARfNk9mkHyFFZq4grK+Sxr3QXKbp27DtfDBc9uqD4GUOYgxngfA==
dependencies:
"@types/ws" "^8.5.4"
discord-api-types "^0.37.35"
discord-api-types "^0.37.37"
prism-media "^1.3.5"
tslib "^2.5.0"
ws "^8.12.1"
ws "^8.13.0"
"@discordjs/ws@^1.0.1":
version "1.0.1"
resolved "https://registry.yarnpkg.com/@discordjs/ws/-/ws-1.0.1.tgz#fab8aa4c1667040a95b5268a2875add27353d323"
integrity sha512-avvAolBqN3yrSvdBPcJ/0j2g42ABzrv3PEL76e3YTp2WYMGH7cuspkjfSyNWaqYl1J+669dlLp+YFMxSVQyS5g==
dependencies:
"@discordjs/collection" "^1.5.3"
"@discordjs/rest" "^2.0.1"
"@discordjs/util" "^1.0.1"
"@sapphire/async-queue" "^1.5.0"
"@types/ws" "^8.5.5"
"@vladfrangu/async_event_emitter" "^2.2.2"
discord-api-types "0.37.50"
tslib "^2.6.1"
ws "^8.13.0"
"@eslint-community/eslint-utils@^4.2.0":
version "4.2.0"
@ -174,18 +190,18 @@
resolved "https://registry.yarnpkg.com/@sapphire/async-queue/-/async-queue-1.5.0.tgz#2f255a3f186635c4fb5a2381e375d3dfbc5312d8"
integrity sha512-JkLdIsP8fPAdh9ZZjrbHWR/+mZj0wvKS5ICibcLrRI1j84UmLMshx5n9QmL8b95d4onJ2xxiyugTgSAX7AalmA==
"@sapphire/shapeshift@^3.8.1":
version "3.8.1"
resolved "https://registry.yarnpkg.com/@sapphire/shapeshift/-/shapeshift-3.8.1.tgz#b98dc6a7180f9b38219267917b2e6fa33f9ec656"
integrity sha512-xG1oXXBhCjPKbxrRTlox9ddaZTvVpOhYLmKmApD/vIWOV1xEYXnpoFs68zHIZBGbqztq6FrUPNPerIrO1Hqeaw==
"@sapphire/shapeshift@^3.9.2":
version "3.9.3"
resolved "https://registry.yarnpkg.com/@sapphire/shapeshift/-/shapeshift-3.9.3.tgz#89d26713044bc21cc5e0845e61a8a328ca3c1a84"
integrity sha512-WzKJSwDYloSkHoBbE8rkRW8UNKJiSRJ/P8NqJ5iVq7U2Yr/kriIBx2hW+wj2Z5e5EnXL1hgYomgaFsdK6b+zqQ==
dependencies:
fast-deep-equal "^3.1.3"
lodash "^4.17.21"
"@sapphire/snowflake@^3.4.0":
version "3.4.0"
resolved "https://registry.yarnpkg.com/@sapphire/snowflake/-/snowflake-3.4.0.tgz#25c012158a9feea2256c718985dbd6c1859a5022"
integrity sha512-zZxymtVO6zeXVMPds+6d7gv/OfnCc25M1Z+7ZLB0oPmeMTPeRWVPQSS16oDJy5ZsyCOLj7M6mbZml5gWXcVRNw==
"@sapphire/snowflake@^3.5.1":
version "3.5.1"
resolved "https://registry.yarnpkg.com/@sapphire/snowflake/-/snowflake-3.5.1.tgz#254521c188b49e8b2d4cc048b475fb2b38737fec"
integrity sha512-BxcYGzgEsdlG0dKAyOm0ehLGm2CafIrfQTZGWgkfKYbj+pNNsorZ7EotuZukc2MT70E0UbppVbtpBrqpzVzjNA==
"@tokenizer/token@^0.3.0":
version "0.3.0"
@ -214,6 +230,18 @@
dependencies:
"@types/node" "*"
"@types/ws@^8.5.5":
version "8.5.7"
resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.7.tgz#1ca585074fe5d2c81dec7a3d451f244a2a6d83cb"
integrity sha512-6UrLjiDUvn40CMrAubXuIVtj2PEfKDffJS7ychvnPU44j+KVeXmdHHTgqcM/dxLUTHxlXHiFM8Skmb8ozGdTnQ==
dependencies:
"@types/node" "*"
"@vladfrangu/async_event_emitter@^2.2.2":
version "2.2.2"
resolved "https://registry.yarnpkg.com/@vladfrangu/async_event_emitter/-/async_event_emitter-2.2.2.tgz#84c5a3f8d648842cec5cc649b88df599af32ed88"
integrity sha512-HIzRG7sy88UZjBJamssEczH5q7t5+axva19UbZLO6u0ySbYPrwzWiXBcC0WuHyhKKoeCyneH+FvYzKQq/zTtkQ==
abbrev@1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
@ -447,7 +475,7 @@ console-control-strings@^1.0.0, console-control-strings@^1.1.0:
resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==
content-type@^1.0.4:
content-type@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918"
integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==
@ -498,29 +526,35 @@ detect-libc@^2.0.0:
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.1.tgz#e1897aa88fa6ad197862937fbc0441ef352ee0cd"
integrity sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==
discord-api-types@^0.37.35:
version "0.37.35"
resolved "https://registry.yarnpkg.com/discord-api-types/-/discord-api-types-0.37.35.tgz#d0dad0bce7ce5bffc633030f17464e45148d9f28"
integrity sha512-iyKZ/82k7FX3lcmHiAvvWu5TmyfVo78RtghBV/YsehK6CID83k5SI03DKKopBcln+TiEIYw5MGgq7SJXSpNzMg==
discord-api-types@0.37.50:
version "0.37.50"
resolved "https://registry.yarnpkg.com/discord-api-types/-/discord-api-types-0.37.50.tgz#6059eb8c0b784ad8194655a8b8b7f540fcfac428"
integrity sha512-X4CDiMnDbA3s3RaUXWXmgAIbY1uxab3fqe3qwzg5XutR3wjqi7M3IkgQbsIBzpqBN2YWr/Qdv7JrFRqSgb4TFg==
discord.js@^14.8.0:
version "14.8.0"
resolved "https://registry.yarnpkg.com/discord.js/-/discord.js-14.8.0.tgz#0e5def8a95a22018844cdfc0f63b9806392da79b"
integrity sha512-UOxYtc/YnV7jAJ2gISluJyYeBw4e+j8gWn+IoqG8unaHAVuvZ13DdYN0M1f9fbUgUvSarV798inIrYFtDNDjwQ==
discord-api-types@^0.37.37, discord-api-types@^0.37.60:
version "0.37.60"
resolved "https://registry.yarnpkg.com/discord-api-types/-/discord-api-types-0.37.60.tgz#435855217afcf867e6ea20d0a750b23550b734ed"
integrity sha512-5BELXTsv7becqVHrD81nZrqT4oEyXXWBwbsO/kwDDu6X3u19VV1tYDB5I5vaVAK+c1chcDeheI9zACBLm41LiQ==
discord.js@^14.13.0:
version "14.13.0"
resolved "https://registry.yarnpkg.com/discord.js/-/discord.js-14.13.0.tgz#e7a00bdba70adb9e266a06884ca1acaf9a0b5c20"
integrity sha512-Kufdvg7fpyTEwANGy9x7i4od4yu5c6gVddGi5CKm4Y5a6sF0VBODObI3o0Bh7TGCj0LfNT8Qp8z04wnLFzgnbA==
dependencies:
"@discordjs/builders" "^1.5.0"
"@discordjs/collection" "^1.4.0"
"@discordjs/formatters" "^0.2.0"
"@discordjs/rest" "^1.6.0"
"@discordjs/util" "^0.2.0"
"@sapphire/snowflake" "^3.4.0"
"@types/ws" "^8.5.4"
discord-api-types "^0.37.35"
"@discordjs/builders" "^1.6.5"
"@discordjs/collection" "^1.5.3"
"@discordjs/formatters" "^0.3.2"
"@discordjs/rest" "^2.0.1"
"@discordjs/util" "^1.0.1"
"@discordjs/ws" "^1.0.1"
"@sapphire/snowflake" "^3.5.1"
"@types/ws" "^8.5.5"
discord-api-types "0.37.50"
fast-deep-equal "^3.1.3"
lodash.snakecase "^4.1.1"
tslib "^2.5.0"
undici "^5.20.0"
ws "^8.12.1"
tslib "^2.6.1"
undici "5.22.1"
ws "^8.13.0"
doctrine@^2.1.0:
version "2.1.0"
@ -822,10 +856,10 @@ fastq@^1.6.0:
dependencies:
reusify "^1.0.4"
ffmpeg-static@^5.1.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/ffmpeg-static/-/ffmpeg-static-5.1.0.tgz#133500f4566570c5a0e96795152b0526d8c936ad"
integrity sha512-eEWOiGdbf7HKPeJI5PoJ0oCwkL0hckL2JdS4JOuB/gUETppwkEpq8nF0+e6VEQnDCo/iuoipbTUsn9QJmtpNkg==
ffmpeg-static@^5.2.0:
version "5.2.0"
resolved "https://registry.yarnpkg.com/ffmpeg-static/-/ffmpeg-static-5.2.0.tgz#6ca64a5ed6e69ec4896d175c1f69dd575db7c5ef"
integrity sha512-WrM7kLW+do9HLr+H6tk7LzQ7kPqbAgLjdzNE32+u3Ff11gXt9Kkkd2nusGFrlWMIe+XaA97t+I8JS7sZIrvRgA==
dependencies:
"@derhuerst/http-basic" "^8.2.0"
env-paths "^2.2.0"
@ -839,7 +873,7 @@ file-entry-cache@^6.0.1:
dependencies:
flat-cache "^3.0.4"
file-type@^18.0.0, file-type@^18.2.1:
file-type@^18.2.1:
version "18.2.1"
resolved "https://registry.yarnpkg.com/file-type/-/file-type-18.2.1.tgz#6d8f1fa3b079606f6ecf89483346f55fcd2c671b"
integrity sha512-Yw5MtnMv7vgD2/6Bjmmuegc8bQEVA9GmAyaR18bMYWKqsWDG9wgYZ1j4I6gNMF5Y5JBDcUcjRQqNQx7Y8uotcg==
@ -1070,17 +1104,17 @@ https-proxy-agent@^5.0.0:
agent-base "6"
debug "4"
i18next-fs-backend@^2.1.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/i18next-fs-backend/-/i18next-fs-backend-2.1.1.tgz#07c6393be856c5a398e3dfc1257bf8439841cd89"
integrity sha512-FTnj+UmNgT3YRml5ruRv0jMZDG7odOL/OP5PF5mOqvXud2vHrPOOs68Zdk6iqzL47cnnM0ZVkK2BAvpFeDJToA==
i18next-fs-backend@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/i18next-fs-backend/-/i18next-fs-backend-2.2.0.tgz#016c865344632a666ea80653deae466fbfa6042c"
integrity sha512-VOPHhdDX0M/csRqEw+9Ectpf6wvTIg1MZDfAHxc3JKnAlJz7fcZSAKAeyDohOq0xuLx57esYpJopIvBaRb0Bag==
i18next@^22.4.5:
version "22.4.11"
resolved "https://registry.yarnpkg.com/i18next/-/i18next-22.4.11.tgz#8b6c9be95176de90d3f10a78af125d95d3a3258d"
integrity sha512-ShfTzXVMjXdF2iPiT/wbizOrssLh9Ab6VpuVROihLCAu+u25KbZiEYVgsA0W6g0SgjPa/JmGWcUEV/g6cKzEjQ==
i18next@^23.5.1:
version "23.5.1"
resolved "https://registry.yarnpkg.com/i18next/-/i18next-23.5.1.tgz#7f7c35ffaa907618d9489f106d5006b09fbca3d3"
integrity sha512-JelYzcaCoFDaa+Ysbfz2JsGAKkrHiMG6S61+HLBUEIPaF40WMwW9hCPymlQGrP+wWawKxKPuSuD71WZscCsWHg==
dependencies:
"@babel/runtime" "^7.20.6"
"@babel/runtime" "^7.22.5"
ieee754@^1.2.1:
version "1.2.1"
@ -1339,6 +1373,11 @@ lru-cache@^6.0.0:
dependencies:
yallist "^4.0.0"
magic-bytes.js@^1.0.15:
version "1.5.0"
resolved "https://registry.yarnpkg.com/magic-bytes.js/-/magic-bytes.js-1.5.0.tgz#f5531ca53e1c8dab5692b8dcfb360f7ca6c6b6bc"
integrity sha512-wJkXvutRbNWcc37tt5j1HyOK1nosspdh3dj6LUYYAvF6JYNqs53IfRvK9oEpcwiDA1NdoIi64yAMfdivPeVAyw==
make-dir@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
@ -1398,15 +1437,15 @@ ms@^2.1.1:
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
music-metadata@^8.1.0:
version "8.1.3"
resolved "https://registry.yarnpkg.com/music-metadata/-/music-metadata-8.1.3.tgz#bd2d6c35b9f4bb881d7349edae2cdbe18e3fcbba"
integrity sha512-Wo+gR2tt8vbricyaK/sMt/4o/YEjStJOD806iZzmLtM/9GrBvhkIDOijt9J8vdRkH4rgYDI4xNu8dp0O0vDryw==
music-metadata@^8.1.4:
version "8.1.4"
resolved "https://registry.yarnpkg.com/music-metadata/-/music-metadata-8.1.4.tgz#a65e59366bf347821ae2ea4fb0661bf202e37b7c"
integrity sha512-q9mw2qeESeJY69cXtdaum/YJstDimpP+mwZnb801iq20JpyY75v6uzcp6VfVXZDixpD2f9yWneJtA0TgSEypxA==
dependencies:
"@tokenizer/token" "^0.3.0"
content-type "^1.0.4"
content-type "^1.0.5"
debug "^4.3.4"
file-type "^18.0.0"
file-type "^18.2.1"
media-typer "^1.1.0"
strtok3 "^7.0.0"
token-types "^5.0.1"
@ -1640,10 +1679,10 @@ readdirp@~3.6.0:
dependencies:
picomatch "^2.2.1"
regenerator-runtime@^0.13.11:
version "0.13.11"
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9"
integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==
regenerator-runtime@^0.14.0:
version "0.14.0"
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45"
integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==
regexp.prototype.flags@^1.4.3:
version "1.4.3"
@ -1920,6 +1959,11 @@ tslib@^2.5.0:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf"
integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==
tslib@^2.6.1:
version "2.6.2"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae"
integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
type-check@^0.4.0, type-check@~0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
@ -1961,10 +2005,10 @@ undefsafe@^2.0.5:
resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.5.tgz#38733b9327bdcd226db889fb723a6efd162e6e2c"
integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==
undici@^5.20.0:
version "5.20.0"
resolved "https://registry.yarnpkg.com/undici/-/undici-5.20.0.tgz#6327462f5ce1d3646bcdac99da7317f455bcc263"
integrity sha512-J3j60dYzuo6Eevbawwp1sdg16k5Tf768bxYK4TUJRH7cBM4kFCbf3mOnM/0E3vQYXvpxITbbWmBafaDbxLDz3g==
undici@5.22.1:
version "5.22.1"
resolved "https://registry.yarnpkg.com/undici/-/undici-5.22.1.tgz#877d512effef2ac8be65e695f3586922e1a57d7b"
integrity sha512-Ji2IJhFXZY0x/0tVBXeQwgPlLWw13GVzpsWPQ3rV50IFMMof2I55PZZxtm4P6iNq+L5znYN9nSTAq0ZyE6lSJw==
dependencies:
busboy "^1.6.0"
@ -2040,10 +2084,10 @@ wrappy@1:
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
ws@^8.12.1:
version "8.13.0"
resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0"
integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==
ws@^8.13.0:
version "8.14.2"
resolved "https://registry.yarnpkg.com/ws/-/ws-8.14.2.tgz#6c249a806eb2db7a20d26d51e7709eab7b2e6c7f"
integrity sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==
yallist@^4.0.0:
version "4.0.0"