diff --git a/.gitignore b/.gitignore index 32e8061..ff272f9 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ node_modules dist logs -.env \ No newline at end of file +.env +commands.json \ No newline at end of file diff --git a/INSTALLATION.md b/INSTALLATION.md index 3fd141b..7fca26d 100644 --- a/INSTALLATION.md +++ b/INSTALLATION.md @@ -32,19 +32,30 @@ guildIds: [ ``` ### 📋 Traspile and Run -* Stelle is made in `Typescript` but runs in `Javascript`. +* Stelle is made in `Typescript` but she can runs in `Javascript`. + +Run the bot in `Javascript` + ```bash #This is necessary for typescript. pnpm prisma generate #Generate types for prisma. -#You can use the test command -pnpm test #It will do everything for you! - #Or you can do it step-by-step pnpm clean #Will re-create the dist folder pnpm start #Will start the bot ``` +Run the bot in `Typescript` + +```bash +#This is necessary for typescript. +pnpm prisma generate #Generate types for prisma. + +#And run it! +pnpm dev + +``` + ### 🔎 Looking for a lavalink node? > Stelle needs a [`Lavalink node`](https://github.com/lavalink-devs/Lavalink) to play music. > See [self hosting a node](/LAVALINK.md) for more. \ No newline at end of file diff --git a/package.json b/package.json index c7051e4..b1fb11b 100644 --- a/package.json +++ b/package.json @@ -1,65 +1,60 @@ { - "name": "stelle-music", - "version": "0.2.8-BLAZER", - "description": "A music bot.", - "main": "./dist/index.js", - "type": "module", - "packageManager": "pnpm@9.7.0+sha512.dc09430156b427f5ecfc79888899e1c39d2d690f004be70e05230b72cb173d96839587545d09429b55ac3c429c801b4dc3c0e002f653830a420fa2dd4e3cf9cf", - "homepage": "https://github.com/Ganyu-Studios/stelle-music#readme", - "scripts": { - "test": "pnpm clean && pnpm start:debug", - "build": "tsc", - "clean": "node ./scripts/clean.js && pnpm build", - "start": "node ./dist/index.js", - "start:debug": "node ./dist/index.js --debug", - "lint": "biome lint --apply ./src", - "format": "biome check --write ./src" - }, - "lint-staged": { - "*.ts": [ - "biome check --apply", - "biome format --write" - ] - }, - "keywords": [], - "author": "JustEvil", - "license": "MIT", - "repository": { - "type": "git", - "url": "git+https://github.com/Ganyu-Studios/stelle-music.git" - }, - "bugs": { - "url": "https://github.com/Ganyu-Studios/stelle-music/issues" - }, - "dependencies": { - "@prisma/client": "^5.18.0", - "chalk": "^5.3.0", - "dotenv": "^16.4.5", - "humanize-duration": "^3.32.1", - "lavalink-client": "github:Tomato6966/lavalink-client", - "ms": "^2.1.3", - "seyfert": "github:tiramisulabs/seyfert", - "yunaforseyfert": "github:SagiriIkeda/yunaforseyfert#dev" - }, - "devDependencies": { - "@biomejs/biome": "^1.8.3", - "@types/humanize-duration": "^3.27.4", - "@types/ms": "^0.7.34", - "@types/node": "^22.2.0", - "husky": "^9.1.4", - "lint-staged": "^15.2.9", - "prisma": "^5.18.0", - "typescript": "^5.5.4" - }, - "imports": { - "#stelle/client": "./dist/structures/client/Stelle.js", - "#stelle/types": "./dist/structures/utils/types/index.js", - "#stelle/classes": "./dist/structures/utils/classes/index.js", - "#stelle/middlwares": "./dist/middlewares/index.js", - "#stelle/errors": "./dist/structures/utils/Errors.js", - "#stelle/decorators": "./dist/structures/utils/Decorators.js", - "#stelle/index": "./dist/index.js", - "#stelle/data/*": "./dist/structures/utils/data/*", - "#stelle/utils/*": "./dist/structures/utils/*" - } + "name": "stelle-music", + "version": "0.2.9-BLAZER", + "description": "A music bot.", + "main": "./dist/index.js", + "type": "module", + "packageManager": "pnpm@9.7.1+sha512.faf344af2d6ca65c4c5c8c2224ea77a81a5e8859cbc4e06b1511ddce2f0151512431dd19e6aff31f2c6a8f5f2aced9bd2273e1fed7dd4de1868984059d2c4247", + "homepage": "https://github.com/Ganyu-Studios/stelle-music#readme", + "scripts": { + "build": "tsc", + "clean": "node ./scripts/clean.js && pnpm build", + "start": "node ./dist/index.js", + "dev": "tsx watch ./src/index.ts --debug", + "lint": "biome lint --apply ./src", + "format": "biome check --write ./src", + "prepare": "husky" + }, + "lint-staged": { + "*.{ts,json}": ["biome format --write"] + }, + "keywords": [], + "author": "JustEvil", + "license": "MIT", + "repository": { + "type": "git", + "url": "git+https://github.com/Ganyu-Studios/stelle-music.git" + }, + "bugs": { + "url": "https://github.com/Ganyu-Studios/stelle-music/issues" + }, + "dependencies": { + "@prisma/client": "^5.19.0", + "chalk": "^5.3.0", + "dotenv": "^16.4.5", + "lavalink-client": "github:Tomato6966/lavalink-client", + "seyfert": "github:tiramisulabs/seyfert", + "yunaforseyfert": "github:SagiriIkeda/yunaforseyfert#dev" + }, + "devDependencies": { + "@biomejs/biome": "^1.8.3", + "@types/node": "^22.5.1", + "husky": "^9.1.5", + "lint-staged": "^15.2.9", + "prisma": "^5.19.0", + "tsx": "^4.19.0", + "typescript": "^5.5.4" + }, + "imports": { + "#stelle/client": "./dist/structures/client/Stelle.js", + "#stelle/types": "./dist/structures/utils/types/index.js", + "#stelle/classes": "./dist/structures/utils/classes/index.js", + "#stelle/middlwares": "./dist/middlewares/index.js", + "#stelle/errors": "./dist/structures/utils/Errors.js", + "#stelle/decorators": "./dist/structures/utils/Decorators.js", + "#stelle/listeners": "./dist/structures/listeners/index.js", + "#stelle/index": "./dist/index.js", + "#stelle/data/*": "./dist/structures/utils/data/*", + "#stelle/utils/*": "./dist/structures/utils/*" + } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 78ba8da..240e531 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,51 +9,42 @@ importers: .: dependencies: '@prisma/client': - specifier: ^5.18.0 - version: 5.18.0(prisma@5.18.0) + specifier: ^5.19.0 + version: 5.19.0(prisma@5.19.0) chalk: specifier: ^5.3.0 version: 5.3.0 dotenv: specifier: ^16.4.5 version: 16.4.5 - humanize-duration: - specifier: ^3.32.1 - version: 3.32.1 lavalink-client: specifier: github:Tomato6966/lavalink-client version: https://codeload.github.com/Tomato6966/lavalink-client/tar.gz/d6d361be64cb6d8a19d29fb602a1888c09e33572 - ms: - specifier: ^2.1.3 - version: 2.1.3 seyfert: specifier: github:tiramisulabs/seyfert - version: https://codeload.github.com/tiramisulabs/seyfert/tar.gz/9066f510e366b9a570457c47a2d8d95cf840d3c9 + version: https://codeload.github.com/tiramisulabs/seyfert/tar.gz/f5a8d06d8b538bfb0375d6567dd35ce6716f8cef yunaforseyfert: specifier: github:SagiriIkeda/yunaforseyfert#dev - version: https://codeload.github.com/SagiriIkeda/yunaforseyfert/tar.gz/19f1ae90fa9d16b8ad8fdd1f8c5eb56b49168cad + version: https://codeload.github.com/SagiriIkeda/yunaforseyfert/tar.gz/015d6aeb50fc93f5a6146073d1216d43605ac6f6 devDependencies: '@biomejs/biome': specifier: ^1.8.3 version: 1.8.3 - '@types/humanize-duration': - specifier: ^3.27.4 - version: 3.27.4 - '@types/ms': - specifier: ^0.7.34 - version: 0.7.34 '@types/node': - specifier: ^22.2.0 - version: 22.2.0 + specifier: ^22.5.1 + version: 22.5.1 husky: - specifier: ^9.1.4 - version: 9.1.4 + specifier: ^9.1.5 + version: 9.1.5 lint-staged: specifier: ^15.2.9 version: 15.2.9 prisma: - specifier: ^5.18.0 - version: 5.18.0 + specifier: ^5.19.0 + version: 5.19.0 + tsx: + specifier: ^4.19.0 + version: 4.19.0 typescript: specifier: ^5.5.4 version: 5.5.4 @@ -113,11 +104,152 @@ packages: cpu: [x64] os: [win32] - '@ioredis/commands@1.2.0': - resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==} + '@esbuild/aix-ppc64@0.23.1': + resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.23.1': + resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.23.1': + resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.23.1': + resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.23.1': + resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.23.1': + resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.23.1': + resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.23.1': + resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.23.1': + resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.23.1': + resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.23.1': + resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.23.1': + resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.23.1': + resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.23.1': + resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.23.1': + resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.23.1': + resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.23.1': + resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.23.1': + resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] - '@prisma/client@5.18.0': - resolution: {integrity: sha512-BWivkLh+af1kqC89zCJYkHsRcyWsM8/JHpsDMM76DjP3ZdEquJhXa4IeX+HkWPnwJ5FanxEJFZZDTWiDs/Kvyw==} + '@esbuild/openbsd-arm64@0.23.1': + resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.23.1': + resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.23.1': + resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.23.1': + resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.23.1': + resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.23.1': + resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@prisma/client@5.19.0': + resolution: {integrity: sha512-CzOpau+q1kEWQyoQMvlnXIHqPvwmWbh48xZ4n8KWbAql0p8PC0BIgSTYW5ncxXa4JSEff0tcoxSZB874wDstdg==} engines: {node: '>=16.13'} peerDependencies: prisma: '*' @@ -125,29 +257,23 @@ packages: prisma: optional: true - '@prisma/debug@5.18.0': - resolution: {integrity: sha512-f+ZvpTLidSo3LMJxQPVgAxdAjzv5OpzAo/eF8qZqbwvgi2F5cTOI9XCpdRzJYA0iGfajjwjOKKrVq64vkxEfUw==} - - '@prisma/engines-version@5.18.0-25.4c784e32044a8a016d99474bd02a3b6123742169': - resolution: {integrity: sha512-a/+LpJj8vYU3nmtkg+N3X51ddbt35yYrRe8wqHTJtYQt7l1f8kjIBcCs6sHJvodW/EK5XGvboOiwm47fmNrbgg==} + '@prisma/debug@5.19.0': + resolution: {integrity: sha512-+b/G0ubAZlrS+JSiDhXnYV5DF/aTJ3pinktkiV/L4TtLRLZO6SVGyFELgxBsicCTWJ2ZMu5vEV/jTtYCdjFTRA==} - '@prisma/engines@5.18.0': - resolution: {integrity: sha512-ofmpGLeJ2q2P0wa/XaEgTnX/IsLnvSp/gZts0zjgLNdBhfuj2lowOOPmDcfKljLQUXMvAek3lw5T01kHmCG8rg==} + '@prisma/engines-version@5.19.0-31.5fe21811a6ba0b952a3bc71400666511fe3b902f': + resolution: {integrity: sha512-GimI9aZIFy/yvvR11KfXRn3pliFn1QAkdebVlsXlnoh5uk0YhLblVmeYiHfsu+wDA7BeKqYT4sFfzg8mutzuWw==} - '@prisma/fetch-engine@5.18.0': - resolution: {integrity: sha512-I/3u0x2n31rGaAuBRx2YK4eB7R/1zCuayo2DGwSpGyrJWsZesrV7QVw7ND0/Suxeo/vLkJ5OwuBqHoCxvTHpOg==} + '@prisma/engines@5.19.0': + resolution: {integrity: sha512-UtW+0m4HYoRSSR3LoDGKF3Ud4BSMWYlLEt4slTnuP1mI+vrV3zaDoiAPmejdAT76vCN5UqnWURbkXxf66nSylQ==} - '@prisma/get-platform@5.18.0': - resolution: {integrity: sha512-Tk+m7+uhqcKDgnMnFN0lRiH7Ewea0OEsZZs9pqXa7i3+7svS3FSCqDBCaM9x5fmhhkufiG0BtunJVDka+46DlA==} + '@prisma/fetch-engine@5.19.0': + resolution: {integrity: sha512-oOiPNtmJX0cP/ebu7BBEouJvCw8T84/MFD/Hf2zlqjxkK4ojl38bB9i9J5LAxotL6WlYVThKdxc7HqoWnPOhqQ==} - '@types/humanize-duration@3.27.4': - resolution: {integrity: sha512-yaf7kan2Sq0goxpbcwTQ+8E9RP6HutFBPv74T/IA/ojcHKhuKVlk2YFYyHhWZeLvZPzzLE3aatuQB4h0iqyyUA==} + '@prisma/get-platform@5.19.0': + resolution: {integrity: sha512-s9DWkZKnuP4Y8uy6yZfvqQ/9X3/+2KYf3IZUVZz5OstJdGBJrBlbmIuMl81917wp5TuK/1k2TpHNCEdpYLPKmg==} - '@types/ms@0.7.34': - resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} - - '@types/node@22.2.0': - resolution: {integrity: sha512-bm6EG6/pCpkxDf/0gDNDdtDILMOHgaQBVOJGdwsqClnxA3xL6jtMv76rLBc006RVMWbmaf0xbmom4Z/5o2nRkQ==} + '@types/node@22.5.1': + resolution: {integrity: sha512-KkHsxej0j9IW1KKOOAA/XBA0z08UFSrRQHErzEfA3Vgq57eXIMYboIlHJuYIfd+lwCQjtKqUu3UnmKbtUc9yRw==} ansi-escapes@7.0.0: resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} @@ -161,14 +287,6 @@ packages: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} engines: {node: '>=12'} - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} @@ -177,10 +295,6 @@ packages: resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - cli-cursor@5.0.0: resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} engines: {node: '>=18'} @@ -189,10 +303,6 @@ packages: resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} engines: {node: '>=18'} - cluster-key-slot@1.1.2: - resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==} - engines: {node: '>=0.10.0'} - colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} @@ -213,21 +323,22 @@ packages: supports-color: optional: true - denque@2.1.0: - resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==} - engines: {node: '>=0.10'} - dotenv@16.4.5: resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} engines: {node: '>=12'} - emoji-regex@10.3.0: - resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==} + emoji-regex@10.4.0: + resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} environment@1.1.0: resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} engines: {node: '>=18'} + esbuild@0.23.1: + resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} + engines: {node: '>=18'} + hasBin: true + eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} @@ -252,34 +363,18 @@ packages: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} + get-tsconfig@4.8.0: + resolution: {integrity: sha512-Pgba6TExTZ0FJAn1qkJAjIeKoDJ3CsI2ChuLohJnZl/tTU8MVrq3b+2t5UOPfRa4RMsorClBjJALkJUMjG1PAw==} human-signals@5.0.0: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} - humanize-duration@3.32.1: - resolution: {integrity: sha512-inh5wue5XdfObhu/IGEMiA1nUXigSGcaKNemcbLRKa7jXYGDZXr3LoT9pTIzq2hPEbld7w/qv9h+ikWGz8fL1g==} - - husky@9.1.4: - resolution: {integrity: sha512-bho94YyReb4JV7LYWRWxZ/xr6TtOTt8cMfmQ39MQYJ7f/YE268s3GdghGwi+y4zAeqewE5zYLvuhV0M0ijsDEA==} + husky@9.1.5: + resolution: {integrity: sha512-rowAVRUBfI0b4+niA4SJMhfQwc107VLkBUgEYYAOQAbqDCnra1nYh83hF/MDmhYs9t9n1E3DuKOrs2LYNC+0Ag==} engines: {node: '>=18'} hasBin: true - ioredis@5.4.1: - resolution: {integrity: sha512-2YZsvl7jopIa1gaePkeMtd9rAcSjOOjPtpcLlOeusyO+XH2SK5ZcT+UCrElPP+WVIInh2TzeI4XW9ENaSLVVHA==} - engines: {node: '>=12.22.0'} - - is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - is-fullwidth-code-point@4.0.0: resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} engines: {node: '>=12'} @@ -288,10 +383,6 @@ packages: resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} engines: {node: '>=18'} - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} @@ -321,24 +412,15 @@ packages: resolution: {integrity: sha512-opevsywziHd3zHCVQGAj8zu+Z3yHNkkoYhWIGnq54RrCVwLz0MozotJEDnKsIBLvkfLGN6BLOyAeRrYI0pKA4g==} engines: {node: '>=18.0.0'} - lodash.defaults@4.2.0: - resolution: {integrity: sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==} - - lodash.isarguments@3.1.0: - resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==} - log-update@6.1.0: resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} engines: {node: '>=18'} - magic-bytes.js@1.10.0: - resolution: {integrity: sha512-/k20Lg2q8LE5xiaaSkMXk4sfvI+9EGEykFS4b0CHHGWqDYU0bGUFSwchNOMA56D7TCs9GwVTkqe9als1/ns8UQ==} - merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - micromatch@4.0.7: - resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} mimic-fn@4.0.0: @@ -352,13 +434,6 @@ packages: ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - npm-run-path@5.3.0: resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -388,22 +463,13 @@ packages: engines: {node: '>=0.10'} hasBin: true - prisma@5.18.0: - resolution: {integrity: sha512-+TrSIxZsh64OPOmaSgVPH7ALL9dfU0jceYaMJXsNrTkFHO7/3RANi5K2ZiPB1De9+KDxCWn7jvRq8y8pvk+o9g==} + prisma@5.19.0: + resolution: {integrity: sha512-Pu7lUKpVyTx8cVwM26dYh8NdvMOkMnJXzE8L6cikFuR4JwyMU5NKofQkWyxJKlTT4fNjmcnibTvklV8oVMrn+g==} engines: {node: '>=16.13'} hasBin: true - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - - redis-errors@1.2.0: - resolution: {integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==} - engines: {node: '>=4'} - - redis-parser@3.0.0: - resolution: {integrity: sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==} - engines: {node: '>=4'} + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} restore-cursor@5.1.0: resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} @@ -412,9 +478,9 @@ packages: rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - seyfert@https://codeload.github.com/tiramisulabs/seyfert/tar.gz/9066f510e366b9a570457c47a2d8d95cf840d3c9: - resolution: {tarball: https://codeload.github.com/tiramisulabs/seyfert/tar.gz/9066f510e366b9a570457c47a2d8d95cf840d3c9} - version: 1.5.0 + seyfert@https://codeload.github.com/tiramisulabs/seyfert/tar.gz/f5a8d06d8b538bfb0375d6567dd35ce6716f8cef: + resolution: {tarball: https://codeload.github.com/tiramisulabs/seyfert/tar.gz/f5a8d06d8b538bfb0375d6567dd35ce6716f8cef} + version: 2.0.0 shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} @@ -436,9 +502,6 @@ packages: resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} engines: {node: '>=18'} - standard-as-callback@2.1.0: - resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} - string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} @@ -459,23 +522,21 @@ packages: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} - tslib@2.6.3: - resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} + tslib@2.7.0: + resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} - tweetnacl@1.0.3: - resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} + tsx@4.19.0: + resolution: {integrity: sha512-bV30kM7bsLZKZIOCHeMNVMJ32/LuJzLVajkQI/qf92J2Qr08ueLQvW00PUZGiuLPP760UINwupgUj8qrSCPUKg==} + engines: {node: '>=18.0.0'} + hasBin: true typescript@5.5.4: resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} engines: {node: '>=14.17'} hasBin: true - uWebSockets.js@https://codeload.github.com/uNetworking/uWebSockets.js/tar.gz/f40213ec0a97d0d8721d9d32d92d6eb6ddcd22e7: - resolution: {tarball: https://codeload.github.com/uNetworking/uWebSockets.js/tar.gz/f40213ec0a97d0d8721d9d32d92d6eb6ddcd22e7} - version: 20.42.0 - - undici-types@6.13.0: - resolution: {integrity: sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg==} + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} @@ -503,8 +564,8 @@ packages: engines: {node: '>= 14'} hasBin: true - yunaforseyfert@https://codeload.github.com/SagiriIkeda/yunaforseyfert/tar.gz/19f1ae90fa9d16b8ad8fdd1f8c5eb56b49168cad: - resolution: {tarball: https://codeload.github.com/SagiriIkeda/yunaforseyfert/tar.gz/19f1ae90fa9d16b8ad8fdd1f8c5eb56b49168cad} + yunaforseyfert@https://codeload.github.com/SagiriIkeda/yunaforseyfert/tar.gz/015d6aeb50fc93f5a6146073d1216d43605ac6f6: + resolution: {tarball: https://codeload.github.com/SagiriIkeda/yunaforseyfert/tar.gz/015d6aeb50fc93f5a6146073d1216d43605ac6f6} version: 1.0.0 snapshots: @@ -544,41 +605,106 @@ snapshots: '@biomejs/cli-win32-x64@1.8.3': optional: true - '@ioredis/commands@1.2.0': + '@esbuild/aix-ppc64@0.23.1': + optional: true + + '@esbuild/android-arm64@0.23.1': optional: true - '@prisma/client@5.18.0(prisma@5.18.0)': + '@esbuild/android-arm@0.23.1': + optional: true + + '@esbuild/android-x64@0.23.1': + optional: true + + '@esbuild/darwin-arm64@0.23.1': + optional: true + + '@esbuild/darwin-x64@0.23.1': + optional: true + + '@esbuild/freebsd-arm64@0.23.1': + optional: true + + '@esbuild/freebsd-x64@0.23.1': + optional: true + + '@esbuild/linux-arm64@0.23.1': + optional: true + + '@esbuild/linux-arm@0.23.1': + optional: true + + '@esbuild/linux-ia32@0.23.1': + optional: true + + '@esbuild/linux-loong64@0.23.1': + optional: true + + '@esbuild/linux-mips64el@0.23.1': + optional: true + + '@esbuild/linux-ppc64@0.23.1': + optional: true + + '@esbuild/linux-riscv64@0.23.1': + optional: true + + '@esbuild/linux-s390x@0.23.1': + optional: true + + '@esbuild/linux-x64@0.23.1': + optional: true + + '@esbuild/netbsd-x64@0.23.1': + optional: true + + '@esbuild/openbsd-arm64@0.23.1': + optional: true + + '@esbuild/openbsd-x64@0.23.1': + optional: true + + '@esbuild/sunos-x64@0.23.1': + optional: true + + '@esbuild/win32-arm64@0.23.1': + optional: true + + '@esbuild/win32-ia32@0.23.1': + optional: true + + '@esbuild/win32-x64@0.23.1': + optional: true + + '@prisma/client@5.19.0(prisma@5.19.0)': optionalDependencies: - prisma: 5.18.0 + prisma: 5.19.0 - '@prisma/debug@5.18.0': {} + '@prisma/debug@5.19.0': {} - '@prisma/engines-version@5.18.0-25.4c784e32044a8a016d99474bd02a3b6123742169': {} + '@prisma/engines-version@5.19.0-31.5fe21811a6ba0b952a3bc71400666511fe3b902f': {} - '@prisma/engines@5.18.0': + '@prisma/engines@5.19.0': dependencies: - '@prisma/debug': 5.18.0 - '@prisma/engines-version': 5.18.0-25.4c784e32044a8a016d99474bd02a3b6123742169 - '@prisma/fetch-engine': 5.18.0 - '@prisma/get-platform': 5.18.0 + '@prisma/debug': 5.19.0 + '@prisma/engines-version': 5.19.0-31.5fe21811a6ba0b952a3bc71400666511fe3b902f + '@prisma/fetch-engine': 5.19.0 + '@prisma/get-platform': 5.19.0 - '@prisma/fetch-engine@5.18.0': + '@prisma/fetch-engine@5.19.0': dependencies: - '@prisma/debug': 5.18.0 - '@prisma/engines-version': 5.18.0-25.4c784e32044a8a016d99474bd02a3b6123742169 - '@prisma/get-platform': 5.18.0 + '@prisma/debug': 5.19.0 + '@prisma/engines-version': 5.19.0-31.5fe21811a6ba0b952a3bc71400666511fe3b902f + '@prisma/get-platform': 5.19.0 - '@prisma/get-platform@5.18.0': + '@prisma/get-platform@5.19.0': dependencies: - '@prisma/debug': 5.18.0 - - '@types/humanize-duration@3.27.4': {} + '@prisma/debug': 5.19.0 - '@types/ms@0.7.34': {} - - '@types/node@22.2.0': + '@types/node@22.5.1': dependencies: - undici-types: 6.13.0 + undici-types: 6.19.8 ansi-escapes@7.0.0: dependencies: @@ -588,34 +714,12 @@ snapshots: ansi-styles@6.2.1: {} - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - optional: true - - binary-extensions@2.3.0: - optional: true - braces@3.0.3: dependencies: fill-range: 7.1.1 chalk@5.3.0: {} - chokidar@3.6.0: - dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - optional: true - cli-cursor@5.0.0: dependencies: restore-cursor: 5.1.0 @@ -625,9 +729,6 @@ snapshots: slice-ansi: 5.0.0 string-width: 7.2.0 - cluster-key-slot@1.1.2: - optional: true - colorette@2.0.20: {} commander@12.1.0: {} @@ -642,15 +743,39 @@ snapshots: dependencies: ms: 2.1.2 - denque@2.1.0: - optional: true - dotenv@16.4.5: {} - emoji-regex@10.3.0: {} + emoji-regex@10.4.0: {} environment@1.1.0: {} + esbuild@0.23.1: + optionalDependencies: + '@esbuild/aix-ppc64': 0.23.1 + '@esbuild/android-arm': 0.23.1 + '@esbuild/android-arm64': 0.23.1 + '@esbuild/android-x64': 0.23.1 + '@esbuild/darwin-arm64': 0.23.1 + '@esbuild/darwin-x64': 0.23.1 + '@esbuild/freebsd-arm64': 0.23.1 + '@esbuild/freebsd-x64': 0.23.1 + '@esbuild/linux-arm': 0.23.1 + '@esbuild/linux-arm64': 0.23.1 + '@esbuild/linux-ia32': 0.23.1 + '@esbuild/linux-loong64': 0.23.1 + '@esbuild/linux-mips64el': 0.23.1 + '@esbuild/linux-ppc64': 0.23.1 + '@esbuild/linux-riscv64': 0.23.1 + '@esbuild/linux-s390x': 0.23.1 + '@esbuild/linux-x64': 0.23.1 + '@esbuild/netbsd-x64': 0.23.1 + '@esbuild/openbsd-arm64': 0.23.1 + '@esbuild/openbsd-x64': 0.23.1 + '@esbuild/sunos-x64': 0.23.1 + '@esbuild/win32-arm64': 0.23.1 + '@esbuild/win32-ia32': 0.23.1 + '@esbuild/win32-x64': 0.23.1 + eventemitter3@5.0.1: {} execa@8.0.1: @@ -676,39 +801,13 @@ snapshots: get-stream@8.0.1: {} - glob-parent@5.1.2: + get-tsconfig@4.8.0: dependencies: - is-glob: 4.0.3 - optional: true + resolve-pkg-maps: 1.0.0 human-signals@5.0.0: {} - humanize-duration@3.32.1: {} - - husky@9.1.4: {} - - ioredis@5.4.1: - dependencies: - '@ioredis/commands': 1.2.0 - cluster-key-slot: 1.1.2 - debug: 4.3.6 - denque: 2.1.0 - lodash.defaults: 4.2.0 - lodash.isarguments: 3.1.0 - redis-errors: 1.2.0 - redis-parser: 3.0.0 - standard-as-callback: 2.1.0 - transitivePeerDependencies: - - supports-color - optional: true - - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - optional: true - - is-extglob@2.1.1: - optional: true + husky@9.1.5: {} is-fullwidth-code-point@4.0.0: {} @@ -716,11 +815,6 @@ snapshots: dependencies: get-east-asian-width: 1.2.0 - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - optional: true - is-number@7.0.0: {} is-stream@3.0.0: {} @@ -729,7 +823,7 @@ snapshots: lavalink-client@https://codeload.github.com/Tomato6966/lavalink-client/tar.gz/d6d361be64cb6d8a19d29fb602a1888c09e33572: dependencies: - tslib: 2.6.3 + tslib: 2.7.0 ws: 8.18.0 transitivePeerDependencies: - bufferutil @@ -745,7 +839,7 @@ snapshots: execa: 8.0.1 lilconfig: 3.1.2 listr2: 8.2.4 - micromatch: 4.0.7 + micromatch: 4.0.8 pidtree: 0.6.0 string-argv: 0.3.2 yaml: 2.5.0 @@ -761,12 +855,6 @@ snapshots: rfdc: 1.4.1 wrap-ansi: 9.0.0 - lodash.defaults@4.2.0: - optional: true - - lodash.isarguments@3.1.0: - optional: true - log-update@6.1.0: dependencies: ansi-escapes: 7.0.0 @@ -775,11 +863,9 @@ snapshots: strip-ansi: 7.1.0 wrap-ansi: 9.0.0 - magic-bytes.js@1.10.0: {} - merge-stream@2.0.0: {} - micromatch@4.0.7: + micromatch@4.0.8: dependencies: braces: 3.0.3 picomatch: 2.3.1 @@ -790,11 +876,6 @@ snapshots: ms@2.1.2: {} - ms@2.1.3: {} - - normalize-path@3.0.0: - optional: true - npm-run-path@5.3.0: dependencies: path-key: 4.0.0 @@ -815,22 +896,13 @@ snapshots: pidtree@0.6.0: {} - prisma@5.18.0: + prisma@5.19.0: dependencies: - '@prisma/engines': 5.18.0 - - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - optional: true + '@prisma/engines': 5.19.0 + optionalDependencies: + fsevents: 2.3.3 - redis-errors@1.2.0: - optional: true - - redis-parser@3.0.0: - dependencies: - redis-errors: 1.2.0 - optional: true + resolve-pkg-maps@1.0.0: {} restore-cursor@5.1.0: dependencies: @@ -839,16 +911,7 @@ snapshots: rfdc@1.4.1: {} - seyfert@https://codeload.github.com/tiramisulabs/seyfert/tar.gz/9066f510e366b9a570457c47a2d8d95cf840d3c9: - dependencies: - magic-bytes.js: 1.10.0 - optionalDependencies: - chokidar: 3.6.0 - ioredis: 5.4.1 - tweetnacl: 1.0.3 - uWebSockets.js: https://codeload.github.com/uNetworking/uWebSockets.js/tar.gz/f40213ec0a97d0d8721d9d32d92d6eb6ddcd22e7 - transitivePeerDependencies: - - supports-color + seyfert@https://codeload.github.com/tiramisulabs/seyfert/tar.gz/f5a8d06d8b538bfb0375d6567dd35ce6716f8cef: {} shebang-command@2.0.0: dependencies: @@ -868,14 +931,11 @@ snapshots: ansi-styles: 6.2.1 is-fullwidth-code-point: 5.0.0 - standard-as-callback@2.1.0: - optional: true - string-argv@0.3.2: {} string-width@7.2.0: dependencies: - emoji-regex: 10.3.0 + emoji-regex: 10.4.0 get-east-asian-width: 1.2.0 strip-ansi: 7.1.0 @@ -889,17 +949,18 @@ snapshots: dependencies: is-number: 7.0.0 - tslib@2.6.3: {} + tslib@2.7.0: {} - tweetnacl@1.0.3: - optional: true + tsx@4.19.0: + dependencies: + esbuild: 0.23.1 + get-tsconfig: 4.8.0 + optionalDependencies: + fsevents: 2.3.3 typescript@5.5.4: {} - uWebSockets.js@https://codeload.github.com/uNetworking/uWebSockets.js/tar.gz/f40213ec0a97d0d8721d9d32d92d6eb6ddcd22e7: - optional: true - - undici-types@6.13.0: {} + undici-types@6.19.8: {} which@2.0.2: dependencies: @@ -915,8 +976,6 @@ snapshots: yaml@2.5.0: {} - yunaforseyfert@https://codeload.github.com/SagiriIkeda/yunaforseyfert/tar.gz/19f1ae90fa9d16b8ad8fdd1f8c5eb56b49168cad: + yunaforseyfert@https://codeload.github.com/SagiriIkeda/yunaforseyfert/tar.gz/015d6aeb50fc93f5a6146073d1216d43605ac6f6: dependencies: - seyfert: https://codeload.github.com/tiramisulabs/seyfert/tar.gz/9066f510e366b9a570457c47a2d8d95cf840d3c9 - transitivePeerDependencies: - - supports-color + seyfert: https://codeload.github.com/tiramisulabs/seyfert/tar.gz/f5a8d06d8b538bfb0375d6567dd35ce6716f8cef diff --git a/scripts/clean.js b/scripts/clean.js index 3f4e972..5991bd6 100644 --- a/scripts/clean.js +++ b/scripts/clean.js @@ -11,7 +11,8 @@ import { resolve } from "node:path"; const path = resolve("dist"); if (existsSync(path)) await rm(path, { recursive: true }); console.info("Done! Cleared."); - } catch (_) { + } catch (error) { + console.info(error); process.exit(1); }; })(); \ No newline at end of file diff --git a/seyfert.config.js b/seyfert.config.js index 312cb2a..92d9927 100644 --- a/seyfert.config.js +++ b/seyfert.config.js @@ -3,7 +3,7 @@ import { GatewayIntentBits } from "seyfert/lib/types/index.js"; import { config } from "seyfert"; -import { DEBUG_MODE } from "#stelle/data/Constants.js"; +import { DEBUG_MODE, OUTPUT } from "#stelle/data/Constants.js"; export default config.bot({ token: process.env.TOKEN ?? "Trailblazer", @@ -21,7 +21,7 @@ export default config.bot({ */ locations: { base: "src", - output: "dist", + output: OUTPUT, lavalink: "lavalink", commands: "commands", components: "components", diff --git a/src/commands/developer/eval.ts b/src/commands/developer/eval.ts index e1386c6..ec1200f 100644 --- a/src/commands/developer/eval.ts +++ b/src/commands/developer/eval.ts @@ -7,8 +7,7 @@ import { codeBlock, getDepth, sliceText } from "#stelle/utils/functions/utils.js import { DeclareParserConfig, ParserRecommendedConfig, Watch, Yuna } from "yunaforseyfert"; import { SECRETS_MESSAGES, SECRETS_REGEX } from "#stelle/data/Constants.js"; - -import ms from "ms"; +import { ms } from "#stelle/utils/TimeFormat.js"; const options = { code: createStringOption({ @@ -49,7 +48,7 @@ export default class EvalCommand extends Command { }); }, }) - async run(ctx: CommandContext): Promise { + public override async run(ctx: CommandContext): Promise { const { client, options, author, member, channelId } = ctx; await author.fetch(); diff --git a/src/commands/developer/reload.ts b/src/commands/developer/reload.ts index 2721597..dd4871d 100644 --- a/src/commands/developer/reload.ts +++ b/src/commands/developer/reload.ts @@ -13,7 +13,7 @@ import { Configuration } from "#stelle/data/Configuration.js"; }) @StelleOptions({ onlyDeveloper: true }) export default class ReloadCommand extends Command { - async run(ctx: CommandContext): Promise { + public override async run(ctx: CommandContext): Promise { await ctx.deferReply(true); await ctx.client .reload() diff --git a/src/commands/guild/default/default.ts b/src/commands/guild/default/default.ts index 0acb02b..fc73022 100644 --- a/src/commands/guild/default/default.ts +++ b/src/commands/guild/default/default.ts @@ -1,5 +1,6 @@ import { AutoLoad, Command, Declare, LocalesT } from "seyfert"; import { StelleOptions } from "#stelle/decorators"; +import { StelleCategory } from "#stelle/types"; @Declare({ name: "default", @@ -9,6 +10,6 @@ import { StelleOptions } from "#stelle/decorators"; defaultMemberPermissions: ["ManageGuild"], }) @AutoLoad() -@StelleOptions({ cooldown: 10 }) +@StelleOptions({ cooldown: 10, category: StelleCategory.Guild }) @LocalesT("locales.default.name", "locales.default.description") export default class DefaultCommand extends Command {} diff --git a/src/commands/guild/setlocale.ts b/src/commands/guild/setlocale.ts index 19187f0..1208846 100644 --- a/src/commands/guild/setlocale.ts +++ b/src/commands/guild/setlocale.ts @@ -2,6 +2,7 @@ import { Command, type CommandContext, Declare, type DefaultLocale, LocalesT, Op import { StelleOptions } from "#stelle/decorators"; import { MessageFlags } from "seyfert/lib/types/index.js"; +import { StelleCategory } from "#stelle/types"; const options = { locale: createStringOption({ @@ -32,11 +33,11 @@ const options = { contexts: ["Guild"], defaultMemberPermissions: ["ManageGuild"], }) -@StelleOptions({ cooldown: 10 }) +@StelleOptions({ cooldown: 10, category: StelleCategory.Guild }) @LocalesT("locales.setlocale.name", "locales.setlocale.description") @Options(options) export default class SetlangCommand extends Command { - async run(ctx: CommandContext) { + public override async run(ctx: CommandContext) { const { client, options } = ctx; const { locale } = options; diff --git a/src/commands/guild/setprefix.ts b/src/commands/guild/setprefix.ts index 1cc3e7f..33f5815 100644 --- a/src/commands/guild/setprefix.ts +++ b/src/commands/guild/setprefix.ts @@ -1,5 +1,6 @@ import { Command, type CommandContext, Declare, LocalesT, Options, createStringOption } from "seyfert"; import { StelleOptions } from "#stelle/decorators"; +import { StelleCategory } from "#stelle/types"; const options = { prefix: createStringOption({ @@ -19,11 +20,11 @@ const options = { contexts: ["Guild"], defaultMemberPermissions: ["ManageGuild"], }) -@StelleOptions({ cooldown: 10 }) +@StelleOptions({ cooldown: 10, category: StelleCategory.Guild }) @LocalesT("locales.setprefix.name", "locales.setprefix.description") @Options(options) export default class SetlangCommand extends Command { - async run(ctx: CommandContext) { + public override async run(ctx: CommandContext) { const { client, options } = ctx; const { prefix } = options; diff --git a/src/commands/music/autoplay.ts b/src/commands/music/autoplay.ts index 59564b0..7dfc555 100644 --- a/src/commands/music/autoplay.ts +++ b/src/commands/music/autoplay.ts @@ -2,6 +2,7 @@ import { Command, type CommandContext, Declare, LocalesT } from "seyfert"; import { StelleOptions } from "#stelle/decorators"; import { AUTOPLAY_STATE } from "#stelle/data/Constants.js"; +import { StelleCategory } from "#stelle/types"; @Declare({ name: "autoplay", @@ -10,10 +11,10 @@ import { AUTOPLAY_STATE } from "#stelle/data/Constants.js"; contexts: ["Guild"], aliases: ["auto", "ap"], }) -@StelleOptions({ cooldown: 5, checkPlayer: true, inVoice: true, sameVoice: true, moreTracks: true, checkNodes: true }) +@StelleOptions({ cooldown: 5, category: StelleCategory.Music, checkPlayer: true, inVoice: true, sameVoice: true, moreTracks: true, checkNodes: true }) @LocalesT("locales.autoplay.name", "locales.autoplay.description") export default class AutoplayCommand extends Command { - async run(ctx: CommandContext) { + public override async run(ctx: CommandContext) { const { client, guildId } = ctx; if (!guildId) return; diff --git a/src/commands/music/loop.ts b/src/commands/music/loop.ts index 4993700..489941a 100644 --- a/src/commands/music/loop.ts +++ b/src/commands/music/loop.ts @@ -4,6 +4,7 @@ import { StelleOptions } from "#stelle/decorators"; import type { RepeatMode } from "lavalink-client"; import { LOOP_STATE } from "#stelle/data/Constants.js"; +import { StelleCategory } from "#stelle/types"; const options = { mode: createStringOption({ @@ -37,11 +38,11 @@ const options = { contexts: ["Guild"], aliases: ["l"], }) -@StelleOptions({ cooldown: 5, checkPlayer: true, inVoice: true, sameVoice: true, checkNodes: true }) +@StelleOptions({ cooldown: 5, category: StelleCategory.Music, checkPlayer: true, inVoice: true, sameVoice: true, checkNodes: true }) @Options(options) @LocalesT("locales.loop.name", "locales.loop.description") export default class LoopCommand extends Command { - async run(ctx: CommandContext) { + public override async run(ctx: CommandContext) { const { client, options, guildId } = ctx; const { mode } = options; diff --git a/src/commands/music/move.ts b/src/commands/music/move.ts index a66bc90..e548472 100644 --- a/src/commands/music/move.ts +++ b/src/commands/music/move.ts @@ -1,5 +1,6 @@ import { Command, type CommandContext, Declare, LocalesT, Options, createChannelOption } from "seyfert"; import { StelleOptions } from "#stelle/decorators"; +import { StelleCategory } from "#stelle/types"; import { ChannelType } from "seyfert/lib/types/index.js"; @@ -30,11 +31,11 @@ const options = { contexts: ["Guild"], aliases: ["mov", "m"], }) -@StelleOptions({ cooldown: 5, checkPlayer: true, inVoice: true, checkNodes: true }) +@StelleOptions({ cooldown: 5, category: StelleCategory.Music, checkPlayer: true, inVoice: true, checkNodes: true }) @Options(options) @LocalesT("locales.move.name", "locales.move.description") export default class MoveCommand extends Command { - async run(ctx: CommandContext) { + public override async run(ctx: CommandContext) { const { client, options, guildId } = ctx; const { voice, text } = options; diff --git a/src/commands/music/nowplaying.ts b/src/commands/music/nowplaying.ts index 3f40812..e09f9bd 100644 --- a/src/commands/music/nowplaying.ts +++ b/src/commands/music/nowplaying.ts @@ -1,7 +1,9 @@ -import { Declare, Command, type CommandContext, type User, LocalesT } from "seyfert"; import { StelleOptions } from "#stelle/decorators"; +import { StelleCategory } from "#stelle/types"; +import { Command, Declare, LocalesT, type CommandContext, type User } from "seyfert"; -import { createBar, msParser } from "#stelle/utils/functions/utils.js"; +import { createBar } from "#stelle/utils/functions/utils.js"; +import { TimeFormat } from "#stelle/utils/TimeFormat.js"; @Declare({ name: "nowplaying", @@ -10,10 +12,10 @@ import { createBar, msParser } from "#stelle/utils/functions/utils.js"; contexts: ["Guild"], aliases: ["np"], }) -@StelleOptions({ checkNodes: true, checkPlayer: true, cooldown: 5 }) +@StelleOptions({ cooldown: 5, category: StelleCategory.Music, checkNodes: true, checkPlayer: true }) @LocalesT("locales.nowplaying.name", "locales.nowplaying.description") export default class NowPlayingCommand extends Command { - async run(ctx: CommandContext) { + public override async run(ctx: CommandContext) { const { client, guildId } = ctx; if (!guildId) return; @@ -34,14 +36,14 @@ export default class NowPlayingCommand extends Command { description: messages.commands.nowplaying({ title: track.info.title, url: track.info.uri, - duration: msParser(track.info.duration), + duration: TimeFormat.toHumanize(track.info.duration), author: track.info.author, - position: msParser(player.position), + position: TimeFormat.toHumanize(player.position), requester: (track.requester as User).id, bar: createBar(player), - }) - } - ] + }), + }, + ], }); } } diff --git a/src/commands/music/play.ts b/src/commands/music/play.ts index 386f05a..3442212 100644 --- a/src/commands/music/play.ts +++ b/src/commands/music/play.ts @@ -11,11 +11,13 @@ import { createStringOption, } from "seyfert"; import { StelleOptions } from "#stelle/decorators"; +import { StelleCategory } from "#stelle/types"; import { EmbedColors } from "seyfert/lib/common/index.js"; import { MessageFlags } from "seyfert/lib/types/index.js"; -import { parseTime, sliceText } from "#stelle/utils/functions/utils.js"; +import { sliceText } from "#stelle/utils/functions/utils.js"; +import { TimeFormat } from "#stelle/utils/TimeFormat.js"; const options = { query: createStringOption({ @@ -52,7 +54,7 @@ const options = { tracks.slice(0, 25).map((track) => { const duration = track.info.isStream ? messages.commands.play.live - : parseTime(track.info.duration) ?? messages.commands.play.undetermined; + : TimeFormat.toDotted(track.info.duration) ?? messages.commands.play.undetermined; return { name: `${sliceText(track.info.title, 20)} (${duration}) - ${sliceText(track.info.author, 30)}`, @@ -71,11 +73,11 @@ const options = { integrationTypes: ["GuildInstall"], contexts: ["Guild"], }) -@StelleOptions({ cooldown: 5, inVoice: true, sameVoice: true, checkNodes: true }) +@StelleOptions({ cooldown: 5, category: StelleCategory.Music, inVoice: true, sameVoice: true, checkNodes: true }) @Options(options) @LocalesT("locales.play.name", "locales.play.description") export default class PlayCommand extends Command { - async run(ctx: CommandContext): Promise { + public override async run(ctx: CommandContext): Promise { const { options, client, guildId, channelId, member, author } = ctx; const { query } = options; @@ -139,7 +141,7 @@ export default class PlayCommand extends Command { const type = player.queue.tracks.length > 1 ? "results" : "result"; const status = track.info.isStream ? messages.commands.play.live - : parseTime(track.info.duration) ?? messages.commands.play.undetermined; + : TimeFormat.toDotted(track.info.duration) ?? messages.commands.play.undetermined; const embed = new Embed() .setThumbnail(track.info.artworkUrl ?? "") diff --git a/src/commands/music/queue.ts b/src/commands/music/queue.ts index 79e79fe..857d27a 100644 --- a/src/commands/music/queue.ts +++ b/src/commands/music/queue.ts @@ -2,6 +2,7 @@ import { Command, type CommandContext, Declare, Embed, LocalesT, type User } fro import { StelleOptions } from "#stelle/decorators"; import { EmbedPaginator } from "#stelle/utils/Paginator.js"; +import { StelleCategory } from "#stelle/types"; @Declare({ name: "queue", @@ -9,10 +10,10 @@ import { EmbedPaginator } from "#stelle/utils/Paginator.js"; integrationTypes: ["GuildInstall"], contexts: ["Guild"], }) -@StelleOptions({ cooldown: 5, checkPlayer: true, inVoice: true, sameVoice: true, checkNodes: true }) +@StelleOptions({ cooldown: 5, category: StelleCategory.Music, checkPlayer: true, inVoice: true, sameVoice: true, checkNodes: true }) @LocalesT("locales.queue.name", "locales.queue.description") export default class QueueCommand extends Command { - async run(ctx: CommandContext) { + public override async run(ctx: CommandContext) { const { client, guildId, author } = ctx; if (!guildId) return; diff --git a/src/commands/music/seek.ts b/src/commands/music/seek.ts index f8b46ce..c2b0d02 100644 --- a/src/commands/music/seek.ts +++ b/src/commands/music/seek.ts @@ -3,9 +3,8 @@ import { StelleOptions } from "#stelle/decorators"; import { EmbedColors } from "seyfert/lib/common/index.js"; -import { msParser } from "#stelle/utils/functions/utils.js"; - -import ms from "ms"; +import { StelleCategory } from "#stelle/types"; +import { ms, TimeFormat } from "#stelle/utils/TimeFormat.js"; const options = { time: createStringOption({ @@ -34,11 +33,11 @@ const options = { contexts: ["Guild"], aliases: ["sk"], }) -@StelleOptions({ cooldown: 5, checkPlayer: true, inVoice: true, sameVoice: true, checkNodes: true }) +@StelleOptions({ cooldown: 5, category: StelleCategory.Music, checkPlayer: true, inVoice: true, sameVoice: true, checkNodes: true }) @Options(options) @LocalesT("locales.seek.name", "locales.seek.description") export default class SeekCommand extends Command { - async run(ctx: CommandContext) { + public override async run(ctx: CommandContext) { const { client, options, guildId } = ctx; const { time } = options; @@ -76,7 +75,7 @@ export default class SeekCommand extends Command { return ctx.editOrReply({ embeds: [ { - description: messages.commands.seek.exeedsTime({ time: msParser(time) }), + description: messages.commands.seek.exeedsTime({ time: TimeFormat.toHumanize(time) }), color: EmbedColors.Red, }, ], @@ -88,7 +87,7 @@ export default class SeekCommand extends Command { { color: client.config.color.success, description: messages.commands.seek.seeked({ - time: msParser(time), + time: TimeFormat.toHumanize(time), type: messages.commands.seek.type[time < position ? "rewond" : "seeked"], }), }, diff --git a/src/commands/music/shuffle.ts b/src/commands/music/shuffle.ts index eb70552..631ef1d 100644 --- a/src/commands/music/shuffle.ts +++ b/src/commands/music/shuffle.ts @@ -1,6 +1,7 @@ import { Declare, Command, type CommandContext } from "seyfert"; import { StelleOptions } from "#stelle/decorators"; +import { StelleCategory } from "#stelle/types"; @Declare({ name: "shuffle", @@ -9,9 +10,9 @@ import { StelleOptions } from "#stelle/decorators"; contexts: ["Guild"], aliases: ["shu", "sh", "shuf"], }) -@StelleOptions({ checkNodes: true, checkPlayer: true, checkQueue: true, inVoice: true, sameVoice: true, }) +@StelleOptions({ cooldown: 5, category: StelleCategory.Music, checkNodes: true, checkPlayer: true, checkQueue: true, inVoice: true, sameVoice: true, }) export default class ShuffleCommand extends Command { - async run (ctx: CommandContext) { + public override async run (ctx: CommandContext) { const { client } = ctx; const player = client.manager.getPlayer(ctx.guildId!); diff --git a/src/commands/music/skip.ts b/src/commands/music/skip.ts index 0c56ea9..7b72d30 100644 --- a/src/commands/music/skip.ts +++ b/src/commands/music/skip.ts @@ -1,5 +1,6 @@ import { Command, type CommandContext, Declare, LocalesT, Options, createIntegerOption } from "seyfert"; import { StelleOptions } from "#stelle/decorators"; +import { StelleCategory } from "#stelle/types"; const options = { to: createIntegerOption({ @@ -18,11 +19,11 @@ const options = { contexts: ["Guild"], aliases: ["sk"], }) -@StelleOptions({ cooldown: 5, checkPlayer: true, inVoice: true, sameVoice: true, checkNodes: true }) +@StelleOptions({ cooldown: 5, category: StelleCategory.Music, checkPlayer: true, inVoice: true, sameVoice: true, checkNodes: true, checkQueue: true }) @Options(options) @LocalesT("locales.skip.name", "locales.skip.description") export default class SkipCommand extends Command { - async run(ctx: CommandContext) { + public override async run(ctx: CommandContext) { const { client, options, guildId } = ctx; const { to } = options; @@ -33,8 +34,8 @@ export default class SkipCommand extends Command { const player = client.manager.getPlayer(guildId); if (!player) return; - if (to) await player.skip(to - 1); - else await player.skip(); + if (to) await player.skip(to - 1, !player.get("enabledAutoplay")); + else await player.skip(undefined, !player.get("enabledAutoplay")); await ctx.editOrReply({ embeds: [ diff --git a/src/commands/music/stop.ts b/src/commands/music/stop.ts index 2157106..d2b11e0 100644 --- a/src/commands/music/stop.ts +++ b/src/commands/music/stop.ts @@ -1,5 +1,6 @@ import { Command, type CommandContext, Declare, LocalesT } from "seyfert"; import { StelleOptions } from "#stelle/decorators"; +import { StelleCategory } from "#stelle/types"; @Declare({ name: "stop", @@ -8,10 +9,10 @@ import { StelleOptions } from "#stelle/decorators"; contexts: ["Guild"], aliases: ["sp"], }) -@StelleOptions({ cooldown: 5, checkPlayer: true, inVoice: true, sameVoice: true, checkNodes: true }) +@StelleOptions({ cooldown: 5, category: StelleCategory.Music, checkPlayer: true, inVoice: true, sameVoice: true, checkNodes: true }) @LocalesT("locales.stop.name", "locales.stop.description") export default class StopCommand extends Command { - async run(ctx: CommandContext) { + public override async run(ctx: CommandContext) { const { client, guildId } = ctx; if (!guildId) return; diff --git a/src/commands/music/volume.ts b/src/commands/music/volume.ts index 1bc7c80..c093ed3 100644 --- a/src/commands/music/volume.ts +++ b/src/commands/music/volume.ts @@ -1,5 +1,6 @@ import { Command, type CommandContext, Declare, LocalesT, Options, createIntegerOption } from "seyfert"; import { StelleOptions } from "#stelle/decorators"; +import { StelleCategory } from "#stelle/types"; const options = { volume: createIntegerOption({ @@ -21,11 +22,11 @@ const options = { contexts: ["Guild"], aliases: ["v", "vol"], }) -@StelleOptions({ cooldown: 5, checkPlayer: true, inVoice: true, sameVoice: true, checkNodes: true }) +@StelleOptions({ cooldown: 5, category: StelleCategory.Music, checkPlayer: true, inVoice: true, sameVoice: true, checkNodes: true }) @Options(options) @LocalesT("locales.volume.name", "locales.volume.description") export default class VolumeCommand extends Command { - async run(ctx: CommandContext) { + public override async run(ctx: CommandContext) { const { client, options, guildId } = ctx; const { volume } = options; diff --git a/src/commands/user/help.ts b/src/commands/user/help.ts new file mode 100644 index 0000000..c0b9740 --- /dev/null +++ b/src/commands/user/help.ts @@ -0,0 +1,17 @@ +import { Declare, Command, type CommandContext } from "seyfert"; +import { StelleOptions } from "#stelle/decorators"; + +import { StelleCategory } from "#stelle/types"; + +@Declare({ + name: "help", + description: "Get help for a command", + integrationTypes: ["GuildInstall"], + contexts: ["Guild"], +}) +@StelleOptions({ cooldown: 5, category: StelleCategory.User }) +export default class ExampleCommand extends Command { + public override async run(ctx: CommandContext) { + await ctx.editOrReply({ content: "pong!" }); + } +} diff --git a/src/commands/user/nodes.ts b/src/commands/user/nodes.ts index 82855cd..41f2335 100644 --- a/src/commands/user/nodes.ts +++ b/src/commands/user/nodes.ts @@ -4,8 +4,9 @@ import { StelleOptions } from "#stelle/decorators"; import { EmbedColors } from "seyfert/lib/common/index.js"; +import { StelleCategory } from "#stelle/types"; import { EmbedPaginator } from "#stelle/utils/Paginator.js"; -import { msParser } from "#stelle/utils/functions/utils.js"; +import { TimeFormat } from "#stelle/utils/TimeFormat.js"; @Declare({ name: "nodes", @@ -13,10 +14,10 @@ import { msParser } from "#stelle/utils/functions/utils.js"; integrationTypes: ["GuildInstall"], contexts: ["Guild"], }) -@StelleOptions({ cooldown: 5 }) +@StelleOptions({ cooldown: 5, category: StelleCategory.User }) @LocalesT("locales.nodes.name", "locales.nodes.description") export default class ExampleCommand extends Command { - async run(ctx: CommandContext) { + public override async run(ctx: CommandContext) { const { client } = ctx; const { messages } = await ctx.getLocale(); @@ -28,7 +29,7 @@ export default class ExampleCommand extends Command { value: messages.commands.nodes.value({ state: messages.commands.nodes.states[node.connected ? "connected" : "disconnected"], players: node.stats.players, - uptime: msParser(node.stats.uptime), + uptime: TimeFormat.toHumanize(node.stats.uptime), }), })); diff --git a/src/commands/user/ping.ts b/src/commands/user/ping.ts index 7118096..0c54224 100644 --- a/src/commands/user/ping.ts +++ b/src/commands/user/ping.ts @@ -1,5 +1,6 @@ import { Command, type CommandContext, Declare, Embed, LocalesT } from "seyfert"; import { StelleOptions } from "#stelle/decorators"; +import { StelleCategory } from "#stelle/types"; @Declare({ name: "ping", @@ -7,10 +8,10 @@ import { StelleOptions } from "#stelle/decorators"; integrationTypes: ["GuildInstall"], contexts: ["Guild"], }) -@StelleOptions({ cooldown: 5 }) +@StelleOptions({ cooldown: 5, category: StelleCategory.User }) @LocalesT("locales.ping.name", "locales.ping.description") export default class PingCommand extends Command { - async run(ctx: CommandContext): Promise { + public override async run(ctx: CommandContext): Promise { const { client } = ctx; const { messages } = await ctx.getLocale(); diff --git a/src/events/message.ts b/src/events/message.ts new file mode 100644 index 0000000..c99f418 --- /dev/null +++ b/src/events/message.ts @@ -0,0 +1,9 @@ +import { createEvent } from "seyfert"; +import { mentionListener } from "#stelle/listeners"; + +export default createEvent({ + data: { name: "messageCreate" }, + run: async (message, client) => { + await mentionListener(client, message); + } +}) \ No newline at end of file diff --git a/src/events/voice.ts b/src/events/voice.ts index 0029d6c..dfc03f8 100644 --- a/src/events/voice.ts +++ b/src/events/voice.ts @@ -1,5 +1,5 @@ import { createEvent } from "seyfert"; -import { playerListener } from "#stelle/utils/functions/playerListener.js"; +import { playerListener } from "#stelle/listeners"; export default createEvent({ data: { name: "voiceStateUpdate" }, diff --git a/src/lavalink/node/raw.ts b/src/lavalink/node/raw.ts index a89c8f1..ac102ee 100644 --- a/src/lavalink/node/raw.ts +++ b/src/lavalink/node/raw.ts @@ -4,8 +4,8 @@ import { DEBUG_MODE } from "#stelle/data/Constants.js"; export default new Lavalink({ name: "raw", type: "node", - run: (client, _, payload) => { + run: (client, node, payload) => { if (!DEBUG_MODE) return; - return client.debugger?.info({ payload }); + return client.debugger?.info(node.id, payload); }, -}); \ No newline at end of file +}); diff --git a/src/lavalink/player/start.ts b/src/lavalink/player/start.ts index 839009f..1efd625 100644 --- a/src/lavalink/player/start.ts +++ b/src/lavalink/player/start.ts @@ -1,10 +1,10 @@ -import { ActionRow, Button, type CommandContext, Embed, type User } from "seyfert"; import { Lavalink } from "#stelle/classes"; +import { ActionRow, Button, type CommandContext, Embed, type User } from "seyfert"; import { ButtonStyle } from "seyfert/lib/types/index.js"; import { AUTOPLAY_STATE, PAUSE_STATE } from "#stelle/data/Constants.js"; -import { parseTime } from "#stelle/utils/functions/utils.js"; +import { TimeFormat } from "#stelle/utils/TimeFormat.js"; export default new Lavalink({ name: "trackStart", @@ -24,7 +24,7 @@ export default new Lavalink({ const duration = track.info.isStream ? messages.commands.play.live - : parseTime(track.info.duration) ?? messages.commands.play.undetermined; + : TimeFormat.toDotted(track.info.duration) ?? messages.commands.play.undetermined; const embed = new Embed() .setDescription( @@ -43,10 +43,7 @@ export default new Lavalink({ .setTimestamp(); const row = new ActionRow