diff --git a/package-lock.json b/package-lock.json index 29108e7..341f6f6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,20 +10,20 @@ "license": "AGPL-3.0-only", "dependencies": { "@discord-player/extractor": "^4.5.1", - "@discordjs/rest": "^2.3.0", + "@discordjs/rest": "^2.4.0", "@types/sqlite3": "^3.1.11", "@types/uuid": "^10.0.0", "discord-player": "^6.7.1", - "discord-player-youtubei": "^1.2.6", - "discord.js": "^14.15.3", + "discord-player-youtubei": "^1.3.1", + "discord.js": "^14.16.1", "mediaplex": "^0.0.9", "sqlite3": "^5.1.7", "typescript": "^5.5.4", "uuid": "^10.0.0" }, "devDependencies": { - "@typescript-eslint/eslint-plugin": "~8.0.1", - "@typescript-eslint/parser": "~8.0.1", + "@typescript-eslint/eslint-plugin": "~8.4.0", + "@typescript-eslint/parser": "~8.4.0", "dotenv": "~16.4.5", "prettier-eslint": "~16.3.0", "ts-node-dev": "~2.0.0" @@ -95,30 +95,30 @@ } }, "node_modules/@discordjs/builders": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.8.2.tgz", - "integrity": "sha512-6wvG3QaCjtMu0xnle4SoOIeFB4y6fKMN6WZfy3BMKJdQQtPLik8KGzDwBVL/+wTtcE/ZlFjgEk74GublyEVZ7g==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.9.0.tgz", + "integrity": "sha512-0zx8DePNVvQibh5ly5kCEei5wtPBIUbSoE9n+91Rlladz4tgtFbJ36PZMxxZrTEOQ7AHMZ/b0crT/0fCy6FTKg==", "license": "Apache-2.0", "dependencies": { - "@discordjs/formatters": "^0.4.0", - "@discordjs/util": "^1.1.0", - "@sapphire/shapeshift": "^3.9.7", - "discord-api-types": "0.37.83", + "@discordjs/formatters": "^0.5.0", + "@discordjs/util": "^1.1.1", + "@sapphire/shapeshift": "^4.0.0", + "discord-api-types": "0.37.97", "fast-deep-equal": "^3.1.3", "ts-mixer": "^6.0.4", - "tslib": "^2.6.2" + "tslib": "^2.6.3" }, "engines": { - "node": ">=16.11.0" + "node": ">=18" }, "funding": { "url": "https://github.com/discordjs/discord.js?sponsor" } }, "node_modules/@discordjs/collection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-2.1.0.tgz", - "integrity": "sha512-mLcTACtXUuVgutoznkh6hS3UFqYirDYAg5Dc1m8xn6OvPjetnUlf/xjtqnnc47OwWdaoCQnHmHh9KofhD6uRqw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-2.1.1.tgz", + "integrity": "sha512-LiSusze9Tc7qF03sLCujF5iZp7K+vRNEDBZ86FT9aQAv3vxMLihUvKvpsCWiQ2DJq1tVckopKm1rxomgNUc9hg==", "license": "Apache-2.0", "engines": { "node": ">=18" @@ -128,50 +128,50 @@ } }, "node_modules/@discordjs/formatters": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@discordjs/formatters/-/formatters-0.4.0.tgz", - "integrity": "sha512-fJ06TLC1NiruF35470q3Nr1bi95BdvKFAF+T5bNfZJ4bNdqZ3VZ+Ttg6SThqTxm6qumSG3choxLBHMC69WXNXQ==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@discordjs/formatters/-/formatters-0.5.0.tgz", + "integrity": "sha512-98b3i+Y19RFq1Xke4NkVY46x8KjJQjldHUuEbCqMvp1F5Iq9HgnGpu91jOi/Ufazhty32eRsKnnzS8n4c+L93g==", "license": "Apache-2.0", "dependencies": { - "discord-api-types": "0.37.83" + "discord-api-types": "0.37.97" }, "engines": { - "node": ">=16.11.0" + "node": ">=18" }, "funding": { "url": "https://github.com/discordjs/discord.js?sponsor" } }, "node_modules/@discordjs/rest": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-2.3.0.tgz", - "integrity": "sha512-C1kAJK8aSYRv3ZwMG8cvrrW4GN0g5eMdP8AuN8ODH5DyOCbHgJspze1my3xHOAgwLJdKUbWNVyAeJ9cEdduqIg==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-2.4.0.tgz", + "integrity": "sha512-Xb2irDqNcq+O8F0/k/NaDp7+t091p+acb51iA4bCKfIn+WFWd6HrNvcsSbMMxIR9NjcMZS6NReTKygqiQN+ntw==", "license": "Apache-2.0", "dependencies": { - "@discordjs/collection": "^2.1.0", - "@discordjs/util": "^1.1.0", - "@sapphire/async-queue": "^1.5.2", + "@discordjs/collection": "^2.1.1", + "@discordjs/util": "^1.1.1", + "@sapphire/async-queue": "^1.5.3", "@sapphire/snowflake": "^3.5.3", - "@vladfrangu/async_event_emitter": "^2.2.4", - "discord-api-types": "0.37.83", + "@vladfrangu/async_event_emitter": "^2.4.6", + "discord-api-types": "0.37.97", "magic-bytes.js": "^1.10.0", - "tslib": "^2.6.2", - "undici": "6.13.0" + "tslib": "^2.6.3", + "undici": "6.19.8" }, "engines": { - "node": ">=16.11.0" + "node": ">=18" }, "funding": { "url": "https://github.com/discordjs/discord.js?sponsor" } }, "node_modules/@discordjs/util": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@discordjs/util/-/util-1.1.0.tgz", - "integrity": "sha512-IndcI5hzlNZ7GS96RV3Xw1R2kaDuXEp7tRIy/KlhidpN/BQ1qh1NZt3377dMLTa44xDUNKT7hnXkA/oUAzD/lg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@discordjs/util/-/util-1.1.1.tgz", + "integrity": "sha512-eddz6UnOBEB1oITPinyrB2Pttej49M9FZQY8NxgEvc3tq6ZICZ19m70RsmzRdDHk80O9NoYN/25AqJl8vPVf/g==", "license": "Apache-2.0", "engines": { - "node": ">=16.11.0" + "node": ">=18" }, "funding": { "url": "https://github.com/discordjs/discord.js?sponsor" @@ -200,6 +200,12 @@ "url": "https://github.com/discordjs/discord.js?sponsor" } }, + "node_modules/@discordjs/ws/node_modules/discord-api-types": { + "version": "0.37.83", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.83.tgz", + "integrity": "sha512-urGGYeWtWNYMKnYlZnOnDHm8fVRffQs3U0SpE8RHeiuLKb/u92APS8HoQnPTFbnXmY1vVnXjXO4dOxcAn3J+DA==", + "license": "MIT" + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", @@ -478,9 +484,9 @@ } }, "node_modules/@sapphire/shapeshift": { - "version": "3.9.7", - "resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-3.9.7.tgz", - "integrity": "sha512-4It2mxPSr4OGn4HSQWGmhFMsNFGfFVhWeRPCRwbH972Ek2pzfGRZtb0pJ4Ze6oIzcyh2jw7nUDa6qGlWofgd9g==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-4.0.0.tgz", + "integrity": "sha512-d9dUmWVA7MMiKobL3VpLF8P2aeanRTu6ypG2OIaEv/ZHH/SUQ2iHOVyi5wAPjQ+HmnMuL0whK9ez8I/raWbtIg==", "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", @@ -552,12 +558,12 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.2.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.2.0.tgz", - "integrity": "sha512-bm6EG6/pCpkxDf/0gDNDdtDILMOHgaQBVOJGdwsqClnxA3xL6jtMv76rLBc006RVMWbmaf0xbmom4Z/5o2nRkQ==", + "version": "22.5.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.3.tgz", + "integrity": "sha512-njripolh85IA9SQGTAqbmnNZTdxv7X/4OYGPz8tgy5JDr8MP+uDBa921GpYEoDDnwm0Hmn5ZPeJgiiSTPoOzkQ==", "license": "MIT", "dependencies": { - "undici-types": "~6.13.0" + "undici-types": "~6.19.2" } }, "node_modules/@types/sqlite3": { @@ -599,17 +605,17 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.0.1.tgz", - "integrity": "sha512-5g3Y7GDFsJAnY4Yhvk8sZtFfV6YNF2caLzjrRPUBzewjPCaj0yokePB4LJSobyCzGMzjZZYFbwuzbfDHlimXbQ==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.4.0.tgz", + "integrity": "sha512-rg8LGdv7ri3oAlenMACk9e+AR4wUV0yrrG+XKsGKOK0EVgeEDqurkXMPILG2836fW4ibokTB5v4b6Z9+GYQDEw==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.0.1", - "@typescript-eslint/type-utils": "8.0.1", - "@typescript-eslint/utils": "8.0.1", - "@typescript-eslint/visitor-keys": "8.0.1", + "@typescript-eslint/scope-manager": "8.4.0", + "@typescript-eslint/type-utils": "8.4.0", + "@typescript-eslint/utils": "8.4.0", + "@typescript-eslint/visitor-keys": "8.4.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -633,16 +639,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.0.1.tgz", - "integrity": "sha512-5IgYJ9EO/12pOUwiBKFkpU7rS3IU21mtXzB81TNwq2xEybcmAZrE9qwDtsb5uQd9aVO9o0fdabFyAmKveXyujg==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.4.0.tgz", + "integrity": "sha512-NHgWmKSgJk5K9N16GIhQ4jSobBoJwrmURaLErad0qlLjrpP5bECYg+wxVTGlGZmJbU03jj/dfnb6V9bw+5icsA==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/scope-manager": "8.0.1", - "@typescript-eslint/types": "8.0.1", - "@typescript-eslint/typescript-estree": "8.0.1", - "@typescript-eslint/visitor-keys": "8.0.1", + "@typescript-eslint/scope-manager": "8.4.0", + "@typescript-eslint/types": "8.4.0", + "@typescript-eslint/typescript-estree": "8.4.0", + "@typescript-eslint/visitor-keys": "8.4.0", "debug": "^4.3.4" }, "engines": { @@ -662,14 +668,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.0.1.tgz", - "integrity": "sha512-NpixInP5dm7uukMiRyiHjRKkom5RIFA4dfiHvalanD2cF0CLUuQqxfg8PtEUo9yqJI2bBhF+pcSafqnG3UBnRQ==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.4.0.tgz", + "integrity": "sha512-n2jFxLeY0JmKfUqy3P70rs6vdoPjHK8P/w+zJcV3fk0b0BwRXC/zxRTEnAsgYT7MwdQDt/ZEbtdzdVC+hcpF0A==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.0.1", - "@typescript-eslint/visitor-keys": "8.0.1" + "@typescript-eslint/types": "8.4.0", + "@typescript-eslint/visitor-keys": "8.4.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -680,14 +686,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.0.1.tgz", - "integrity": "sha512-+/UT25MWvXeDX9YaHv1IS6KI1fiuTto43WprE7pgSMswHbn1Jm9GEM4Txp+X74ifOWV8emu2AWcbLhpJAvD5Ng==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.4.0.tgz", + "integrity": "sha512-pu2PAmNrl9KX6TtirVOrbLPLwDmASpZhK/XU7WvoKoCUkdtq9zF7qQ7gna0GBZFN0hci0vHaSusiL2WpsQk37A==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.0.1", - "@typescript-eslint/utils": "8.0.1", + "@typescript-eslint/typescript-estree": "8.4.0", + "@typescript-eslint/utils": "8.4.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -705,9 +711,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.0.1.tgz", - "integrity": "sha512-PpqTVT3yCA/bIgJ12czBuE3iBlM3g4inRSC5J0QOdQFAn07TYrYEQBBKgXH1lQpglup+Zy6c1fxuwTk4MTNKIw==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.4.0.tgz", + "integrity": "sha512-T1RB3KQdskh9t3v/qv7niK6P8yvn7ja1mS7QK7XfRVL6wtZ8/mFs/FHf4fKvTA0rKnqnYxl/uHFNbnEt0phgbw==", "dev": true, "license": "MIT", "engines": { @@ -719,16 +725,16 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.0.1.tgz", - "integrity": "sha512-8V9hriRvZQXPWU3bbiUV4Epo7EvgM6RTs+sUmxp5G//dBGy402S7Fx0W0QkB2fb4obCF8SInoUzvTYtc3bkb5w==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.4.0.tgz", + "integrity": "sha512-kJ2OIP4dQw5gdI4uXsaxUZHRwWAGpREJ9Zq6D5L0BweyOrWsL6Sz0YcAZGWhvKnH7fm1J5YFE1JrQL0c9dd53A==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/types": "8.0.1", - "@typescript-eslint/visitor-keys": "8.0.1", + "@typescript-eslint/types": "8.4.0", + "@typescript-eslint/visitor-keys": "8.4.0", "debug": "^4.3.4", - "globby": "^11.1.0", + "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", @@ -748,16 +754,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.0.1.tgz", - "integrity": "sha512-CBFR0G0sCt0+fzfnKaciu9IBsKvEKYwN9UZ+eeogK1fYHg4Qxk1yf/wLQkLXlq8wbU2dFlgAesxt8Gi76E8RTA==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.4.0.tgz", + "integrity": "sha512-swULW8n1IKLjRAgciCkTCafyTHHfwVQFt8DovmaF69sKbOxTSFMmIZaSHjqO9i/RV0wIblaawhzvtva8Nmm7lQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.0.1", - "@typescript-eslint/types": "8.0.1", - "@typescript-eslint/typescript-estree": "8.0.1" + "@typescript-eslint/scope-manager": "8.4.0", + "@typescript-eslint/types": "8.4.0", + "@typescript-eslint/typescript-estree": "8.4.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -771,13 +777,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.0.1.tgz", - "integrity": "sha512-W5E+o0UfUcK5EgchLZsyVWqARmsM7v54/qEq6PY3YI5arkgmCzHiuk0zKSJJbm71V0xdRna4BGomkCTXz2/LkQ==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.4.0.tgz", + "integrity": "sha512-zTQD6WLNTre1hj5wp09nBIDiOc2U5r/qmzo7wxPn4ZgAjHql09EofqhF9WF+fZHzL5aCyaIpPcT2hyxl73kr9A==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.0.1", + "@typescript-eslint/types": "8.4.0", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -796,9 +802,9 @@ "license": "ISC" }, "node_modules/@vladfrangu/async_event_emitter": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/@vladfrangu/async_event_emitter/-/async_event_emitter-2.4.5.tgz", - "integrity": "sha512-J7T3gUr3Wz0l7Ni1f9upgBZ7+J22/Q1B7dl0X6fG+fTsD+H+31DIosMHj4Um1dWQwqbcQ3oQf+YS2foYkDc9cQ==", + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/@vladfrangu/async_event_emitter/-/async_event_emitter-2.4.6.tgz", + "integrity": "sha512-RaI5qZo6D2CVS6sTHFKg1v5Ohq/+Bo2LZ5gzUEwZ/WkHhwtGTCB/sVLw8ijOkAUxasZ+WshN/Rzj4ywsABJ5ZA==", "license": "MIT", "engines": { "node": ">=v14.0.0", @@ -1435,9 +1441,9 @@ } }, "node_modules/discord-api-types": { - "version": "0.37.83", - "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.83.tgz", - "integrity": "sha512-urGGYeWtWNYMKnYlZnOnDHm8fVRffQs3U0SpE8RHeiuLKb/u92APS8HoQnPTFbnXmY1vVnXjXO4dOxcAn3J+DA==", + "version": "0.37.97", + "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.97.tgz", + "integrity": "sha512-No1BXPcVkyVD4ZVmbNgDKaBoqgeQ+FJpzZ8wqHkfmBnTZig1FcH3iPPersiK1TUIAzgClh2IvOuVUYfcWLQAOA==", "license": "MIT" }, "node_modules/discord-player": { @@ -1461,13 +1467,13 @@ } }, "node_modules/discord-player-youtubei": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/discord-player-youtubei/-/discord-player-youtubei-1.2.6.tgz", - "integrity": "sha512-b2L/I9TP7HCv3EO8mbn070SWJV0eBCjG2YIbFmQhQxe8vRMC5Zs4BisI7JmkNvu4xlbVGeL1NMK9VrC5FR+uqw==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/discord-player-youtubei/-/discord-player-youtubei-1.3.1.tgz", + "integrity": "sha512-0JtWAux1SKBMG543PktNKrsydBLBarOvPn9dsu1xNfXQYbUSglOZgGRjcKxK6MgGj5MluSEer5QXE/UJYseIJg==", "license": "Creative Commons", "dependencies": { "tiny-typed-emitter": "^2.1.0", - "youtubei.js": "^10.3.0" + "youtubei.js": "^10.4.0" }, "bin": { "discord-player-youtubei": "bin/index.js" @@ -1492,26 +1498,26 @@ } }, "node_modules/discord.js": { - "version": "14.15.3", - "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.15.3.tgz", - "integrity": "sha512-/UJDQO10VuU6wQPglA4kz2bw2ngeeSbogiIPx/TsnctfzV/tNf+q+i1HlgtX1OGpeOBpJH9erZQNO5oRM2uAtQ==", + "version": "14.16.1", + "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.16.1.tgz", + "integrity": "sha512-/diX4shp3q1F3EySGQbQl10el+KIpffLSOJdtM35gGV7zw2ED7rKbASKJT7UIR9L/lTd0KtNenZ/h739TN7diA==", "license": "Apache-2.0", "dependencies": { - "@discordjs/builders": "^1.8.2", + "@discordjs/builders": "^1.9.0", "@discordjs/collection": "1.5.3", - "@discordjs/formatters": "^0.4.0", - "@discordjs/rest": "^2.3.0", - "@discordjs/util": "^1.1.0", - "@discordjs/ws": "^1.1.1", + "@discordjs/formatters": "^0.5.0", + "@discordjs/rest": "^2.4.0", + "@discordjs/util": "^1.1.1", + "@discordjs/ws": "1.1.1", "@sapphire/snowflake": "3.5.3", - "discord-api-types": "0.37.83", + "discord-api-types": "0.37.97", "fast-deep-equal": "3.1.3", "lodash.snakecase": "4.1.1", - "tslib": "2.6.2", - "undici": "6.13.0" + "tslib": "^2.6.3", + "undici": "6.19.8" }, "engines": { - "node": ">=16.11.0" + "node": ">=18" }, "funding": { "url": "https://github.com/discordjs/discord.js?sponsor" @@ -1526,12 +1532,6 @@ "node": ">=16.11.0" } }, - "node_modules/discord.js/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "license": "0BSD" - }, "node_modules/dlv": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", @@ -2514,9 +2514,9 @@ } }, "node_modules/is-core-module": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz", - "integrity": "sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==", + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2684,18 +2684,18 @@ } }, "node_modules/libsodium": { - "version": "0.7.14", - "resolved": "https://registry.npmjs.org/libsodium/-/libsodium-0.7.14.tgz", - "integrity": "sha512-/pOd7eO6oZrfORquRTC4284OUJFcMi8F3Vnc9xtRBT0teLfOUxWIItaBFF3odYjZ7nlJNwnLdUVEUFHxVyX/Sw==", + "version": "0.7.15", + "resolved": "https://registry.npmjs.org/libsodium/-/libsodium-0.7.15.tgz", + "integrity": "sha512-sZwRknt/tUpE2AwzHq3jEyUU5uvIZHtSssktXq7owd++3CSgn8RGrv6UZJJBpP7+iBghBqe7Z06/2M31rI2NKw==", "license": "ISC" }, "node_modules/libsodium-wrappers": { - "version": "0.7.14", - "resolved": "https://registry.npmjs.org/libsodium-wrappers/-/libsodium-wrappers-0.7.14.tgz", - "integrity": "sha512-300TtsePizhJZ7HjLmWr6hLHAgJUxIGhapSw+EwfCtDuWaEmEdGXSQv6j6qFw0bs9l4vS2NH9BtOHfXAq6h5kQ==", + "version": "0.7.15", + "resolved": "https://registry.npmjs.org/libsodium-wrappers/-/libsodium-wrappers-0.7.15.tgz", + "integrity": "sha512-E4anqJQwcfiC6+Yrl01C1m8p99wEhLmJSs0VQqST66SbQXXBoaJY0pF4BNjRYa/sOQAxx6lXAaAFIlx+15tXJQ==", "license": "ISC", "dependencies": { - "libsodium": "^0.7.14" + "libsodium": "^0.7.15" } }, "node_modules/locate-path": { @@ -3071,9 +3071,9 @@ } }, "node_modules/micromatch": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "license": "MIT", "dependencies": { @@ -3265,9 +3265,9 @@ } }, "node_modules/node-abi": { - "version": "3.65.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.65.0.tgz", - "integrity": "sha512-ThjYBfoDNr08AWx6hGaRbfPwxKV9kVzAzOzlLKbk2CuqXE2xnCh+cbAGnwM3t8Lq4v9rUB7VfondlkBckcJrVA==", + "version": "3.67.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.67.0.tgz", + "integrity": "sha512-bLn/fU/ALVBE9wj+p4Y21ZJWYFjUXLXPi/IewyLZkx3ApxKDNBWCKdReeKOtD8dWpOdDCeMyLh6ZewzcLsG2Nw==", "license": "MIT", "dependencies": { "semver": "^7.3.5" @@ -4279,15 +4279,6 @@ "undici": "^6.17.0" } }, - "node_modules/soundcloud.ts/node_modules/undici": { - "version": "6.19.7", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.7.tgz", - "integrity": "sha512-HR3W/bMGPSr90i8AAp2C4DM3wChFdJPLrWYpIS++LxS8K+W535qftjt+4MyjNYHeWabMj1nvtmLIi7l++iq91A==", - "license": "MIT", - "engines": { - "node": ">=18.17" - } - }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -4733,9 +4724,9 @@ } }, "node_modules/tslib": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", "license": "0BSD" }, "node_modules/tunnel-agent": { @@ -4790,18 +4781,18 @@ } }, "node_modules/undici": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.13.0.tgz", - "integrity": "sha512-Q2rtqmZWrbP8nePMq7mOJIN98M0fYvSgV89vwl/BQRT4mDOeY2GXZngfGpcBBhtky3woM7G24wZV3Q304Bv6cw==", + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.8.tgz", + "integrity": "sha512-U8uCCl2x9TK3WANvmBavymRzxbfFYG+tAu+fgx3zxQy3qdagQqBLwJVrdyO1TBfUXvfKveMKJZhpvUYoOjM+4g==", "license": "MIT", "engines": { - "node": ">=18.0" + "node": ">=18.17" } }, "node_modules/undici-types": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.13.0.tgz", - "integrity": "sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg==", + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", "license": "MIT" }, "node_modules/unfetch": { @@ -5028,9 +5019,9 @@ "license": "Apache-2.0" }, "node_modules/youtubei.js": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/youtubei.js/-/youtubei.js-10.3.0.tgz", - "integrity": "sha512-tLmeJCECK2xF2hZZtF2nEqirdKVNLFSDpa0LhTaXY3tngtL7doQXyy7M2CLueramDTlmCnFaW+rctHirTPFaRQ==", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/youtubei.js/-/youtubei.js-10.4.0.tgz", + "integrity": "sha512-FZahkkg5ROyH/FgJ4czy/xDNkqHbJTCUQzumQlnR+2Q7m6HaWghAFWWJUTcexemGuu7t/5EuyQz98eBgKQRMog==", "funding": [ "https://github.com/sponsors/LuanRT" ], diff --git a/package.json b/package.json index 5e2a6f3..999248f 100644 --- a/package.json +++ b/package.json @@ -18,20 +18,20 @@ "license": "AGPL-3.0-only", "dependencies": { "@discord-player/extractor": "^4.5.1", - "@discordjs/rest": "^2.3.0", + "@discordjs/rest": "^2.4.0", "@types/sqlite3": "^3.1.11", "@types/uuid": "^10.0.0", "discord-player": "^6.7.1", - "discord-player-youtubei": "^1.2.6", - "discord.js": "^14.15.3", + "discord-player-youtubei": "^1.3.1", + "discord.js": "^14.16.1", "mediaplex": "^0.0.9", "sqlite3": "^5.1.7", "typescript": "^5.5.4", "uuid": "^10.0.0" }, "devDependencies": { - "@typescript-eslint/eslint-plugin": "~8.0.1", - "@typescript-eslint/parser": "~8.0.1", + "@typescript-eslint/eslint-plugin": "~8.4.0", + "@typescript-eslint/parser": "~8.4.0", "dotenv": "~16.4.5", "prettier-eslint": "~16.3.0", "ts-node-dev": "~2.0.0" diff --git a/src/buttons/loader.ts b/src/buttons/loader.ts index 904f6a0..4db3d9f 100644 --- a/src/buttons/loader.ts +++ b/src/buttons/loader.ts @@ -1,6 +1,11 @@ import { readdir } from "fs/promises"; import { removeExtension } from "../utils/misc"; -import { ChatInputCommandInteraction, Client, MessageComponentInteraction } from "discord.js"; +import { + ChatInputCommandInteraction, + Client, + Message, + MessageComponentInteraction, +} from "discord.js"; import { getLocale } from "../utils/locales"; export default async (client: Client) => { @@ -37,12 +42,14 @@ export default async (client: Client) => { * @param client Client * @param interaction Chat interaction * @param id Button ID + * @param message Message holding the buttons * @param deferUpdate defer update in case update take time */ export const collect = ( client: Client, interaction: ChatInputCommandInteraction | MessageComponentInteraction, id: string, + message: Message, deferUpdate = false, ) => { const loc = getLocale(client, interaction.locale); @@ -56,7 +63,7 @@ export const collect = ( } const filter = (i: MessageComponentInteraction) => i.customId === id; - const collector = interaction.channel?.createMessageComponentCollector({ + const collector = message.createMessageComponentCollector({ filter, max: 1, }); diff --git a/src/buttons/misc/reminderList-next.ts b/src/buttons/misc/reminderList-next.ts index 1689166..60a870b 100644 --- a/src/buttons/misc/reminderList-next.ts +++ b/src/buttons/misc/reminderList-next.ts @@ -59,8 +59,8 @@ export default { ); // Buttons interactions - collect(client, interaction, idPrec); - collect(client, interaction, idNext); + collect(client, interaction, idPrec, interaction.message); + collect(client, interaction, idNext, interaction.message); return { embeds: [list], diff --git a/src/buttons/misc/reminderList-prec.ts b/src/buttons/misc/reminderList-prec.ts index 74991e6..8c4de21 100644 --- a/src/buttons/misc/reminderList-prec.ts +++ b/src/buttons/misc/reminderList-prec.ts @@ -59,8 +59,8 @@ export default { ); // Buttons interactions - collect(client, interaction, idPrec); - collect(client, interaction, idNext); + collect(client, interaction, idPrec, interaction.message); + collect(client, interaction, idNext, interaction.message); return { embeds: [list], diff --git a/src/buttons/music/queueList-next.ts b/src/buttons/music/queueList-next.ts index 352e679..a478175 100644 --- a/src/buttons/music/queueList-next.ts +++ b/src/buttons/music/queueList-next.ts @@ -59,8 +59,8 @@ export default { ); // Buttons interactions - collect(client, interaction, idPrec); - collect(client, interaction, idNext); + collect(client, interaction, idPrec, interaction.message); + collect(client, interaction, idNext, interaction.message); } else { // In case queue doesn't exists embed.setDescription(loc.get("c_queue2")); diff --git a/src/buttons/music/queueList-prec.ts b/src/buttons/music/queueList-prec.ts index 7b8e9d1..4005788 100644 --- a/src/buttons/music/queueList-prec.ts +++ b/src/buttons/music/queueList-prec.ts @@ -59,8 +59,8 @@ export default { ); // Buttons interactions - collect(client, interaction, idPrec); - collect(client, interaction, idNext); + collect(client, interaction, idPrec, interaction.message); + collect(client, interaction, idNext, interaction.message); } else { // In case queue doesn't exists embed.setDescription(loc.get("c_queue2")); diff --git a/src/commands/misc/reminder.ts b/src/commands/misc/reminder.ts index 5e3f943..2d8ca3b 100644 --- a/src/commands/misc/reminder.ts +++ b/src/commands/misc/reminder.ts @@ -230,15 +230,18 @@ export default { .setStyle(ButtonStyle.Primary), ); - // Buttons interactions - collect(client, interaction, idPrec); - collect(client, interaction, idNext); - - return await interaction.reply({ + const message = await interaction.reply({ ephemeral: true, embeds: [list], components: [row], + fetchReply: true, }); + + // Buttons interactions + collect(client, interaction, idPrec, message); + collect(client, interaction, idNext, message); + + return; } // Delete a reminder case loc_default?.get(`c_${filename}_sub3_name`)?.toLowerCase() ?? "": { diff --git a/src/commands/music/lyrics.ts b/src/commands/music/lyrics.ts index 0d13380..10f549f 100644 --- a/src/commands/music/lyrics.ts +++ b/src/commands/music/lyrics.ts @@ -1,6 +1,6 @@ import { SlashCommandBuilder } from "@discordjs/builders"; import { Player, useMainPlayer, useQueue } from "discord-player"; -import { ChatInputCommandInteraction, Client, EmbedBuilder } from "discord.js"; +import { ChannelType, ChatInputCommandInteraction, Client, EmbedBuilder } from "discord.js"; import { getLocale, getLocalizations } from "../../utils/locales"; import { getFilename } from "../../utils/misc"; @@ -130,9 +130,16 @@ export default { const syncedLyrics = queue.syncedLyrics(data[0]); syncedLyrics?.onChange(async (lyrics) => { - await interaction.channel?.send({ - content: `[${data[0].trackName}]: ${lyrics}`, - }); + const content = `[${data[0].trackName}]: ${lyrics}`; + if (interaction.channel?.type === ChannelType.GroupDM) { + await interaction.followUp({ + content, + }); + } else { + await interaction.channel?.send({ + content, + }); + } }); // Live update diff --git a/src/commands/music/queue.ts b/src/commands/music/queue.ts index f921bc9..ec6f6a6 100644 --- a/src/commands/music/queue.ts +++ b/src/commands/music/queue.ts @@ -96,7 +96,6 @@ export default { const queue = useQueue(interaction.guildId ?? ""); const embed = new EmbedBuilder(); - const rows = []; if (queue) { const subcommand = interaction.options.getSubcommand(); @@ -110,6 +109,7 @@ export default { embedListQueue(client, embed, queue, page, interaction.locale); + const rows = []; const idPrec = "queueList-prec_" + uuidv4(); const idNext = "queueList-next_" + uuidv4(); rows.push( @@ -128,11 +128,17 @@ export default { ), ); - // Buttons interactions - collect(client, interaction, idPrec); - collect(client, interaction, idNext); + const message = await interaction.reply({ + embeds: [embed], + components: rows, + fetchReply: true, + }); - break; + // Buttons interactions + collect(client, interaction, idPrec, message); + collect(client, interaction, idNext, message); + + return; } // Shuffle Queue @@ -166,6 +172,6 @@ export default { embed.setDescription(loc.get("c_queue2")); } - return await interaction.reply({ embeds: [embed], components: rows }); + return await interaction.reply({ embeds: [embed] }); }, }; diff --git a/src/events/message/messageCreate.ts b/src/events/message/messageCreate.ts index c82a409..c9533e3 100644 --- a/src/events/message/messageCreate.ts +++ b/src/events/message/messageCreate.ts @@ -1,4 +1,11 @@ -import { Client, EmbedBuilder, GuildMember, Message, TextBasedChannel } from "discord.js"; +import { + ChannelType, + Client, + EmbedBuilder, + GuildMember, + Message, + TextBasedChannel, +} from "discord.js"; import { getLocale } from "../../utils/locales"; import { isImage, userWithNickname } from "../../utils/misc"; import { showDate } from "../../utils/time"; @@ -164,7 +171,8 @@ export default async (message: Message, client: Client) => { if ( !message.content.replace(new RegExp(regex, "g"), "").trim() && messages.length === urls.length && - !message.mentions.repliedUser + !message.mentions.repliedUser && + message.channel.type !== ChannelType.GroupDM ) { message.delete(); return message.channel.send({ embeds: [embed] }); diff --git a/src/events/player/playerStart.ts b/src/events/player/playerStart.ts index 55cd603..53448db 100644 --- a/src/events/player/playerStart.ts +++ b/src/events/player/playerStart.ts @@ -1,6 +1,6 @@ import { EmbedBuilder } from "@discordjs/builders"; import { GuildQueue, Track } from "discord-player"; -import { Client } from "discord.js"; +import { ChannelType, Client } from "discord.js"; import { Metadata } from "../../utils/metadata"; import { emojiPng } from "../../utils/misc"; @@ -19,5 +19,8 @@ export default (queue: GuildQueue, track: Track, client: Client) => { } via ${track.source.capitalize()}`, iconURL: emojiPng("🎶"), }); - queue.metadata?.channel?.send({ embeds: [embed] }); + + if (queue.metadata.channel?.type !== ChannelType.GroupDM) { + queue.metadata?.channel?.send({ embeds: [embed] }); + } }; diff --git a/src/utils/reminder.ts b/src/utils/reminder.ts index 08004c1..c1a38ee 100644 --- a/src/utils/reminder.ts +++ b/src/utils/reminder.ts @@ -1,4 +1,4 @@ -import { Client, Colors, EmbedBuilder, User } from "discord.js"; +import { ChannelType, Client, Colors, EmbedBuilder, User } from "discord.js"; import { getLocale } from "./locales"; import { cleanCodeBlock } from "./misc"; import { showDate, strToSeconds, timeDeltaToString } from "./time"; @@ -169,7 +169,7 @@ export const sendReminder = (client: Client, info: infoReminder, option: OptionR } else { // Channel client.channels.fetch(info.channelId ?? "").then((channel) => { - if (channel?.isTextBased()) { + if (channel?.isTextBased() && channel.type !== ChannelType.GroupDM) { let content = `<@${info.userId}>`; embed.setFooter({ text: `${loc.get("c_reminder17")} ${timeDeltaToString(info.createdAt)}`,