diff --git a/.gitea/workflows/db-migrate.yml b/.gitea/workflows/db-migrate.yml deleted file mode 100644 index 6800aa4..0000000 --- a/.gitea/workflows/db-migrate.yml +++ /dev/null @@ -1,65 +0,0 @@ -name: prisma-migrate - -on: - push: - branches: [main] - -jobs: - install: - runs-on: ubuntu-latest - - steps: - - uses: https://github.com/actions/checkout@v2 - - name: Setup Nodejs - uses: https://github.com/actions/setup-node@v2 - with: - node-version: 16.x - - - name: Install - run: yarn install - - name: Rerun Install - run: yarn install - - generate: - runs-on: ubuntu-latest - - needs: install - - steps: - - uses: https://github.com/actions/checkout@v2 - - - name: Setup Nodejs - uses: https://github.com/actions/setup-node@v2 - with: - node-version: 16.x - - - name: Install - run: yarn install - - - run: rm -rf node_modules/.prisma - - - name: Generate Prisma Client - run: npx prisma generate - - migrate: - runs-on: ubuntu-latest - - needs: install - - steps: - - uses: https://github.com/actions/checkout@v2 - - - name: Setup Nodejs - uses: https://github.com/actions/setup-node@v2 - with: - node-version: 16.x - - - name: Install - run: yarn install - - - run: rm -rf node_modules/.prisma - - - name: Deploy Migrations - run: npx prisma migrate deploy - env: - DATABASE_URL: ${{ secrets.PROD_DATABASE_URL }} diff --git a/.gitignore b/.gitignore index 992f45f..3cf4d59 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,8 @@ .env node_modules .DS_Store + + +# Added by cargo + +/target diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..506ae5f --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "er" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/bun.lockb b/bun.lockb deleted file mode 100755 index 74ff2d5..0000000 Binary files a/bun.lockb and /dev/null differ diff --git a/package.json b/package.json deleted file mode 100644 index 343ff04..0000000 --- a/package.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "er", - "version": "1.0.0", - "private": true, - "license": "MIT", - "type": "module", - "main": "build/main.js", - "scripts": { - "build": "tsc", - "build:changelog": "npx @discordx/changelog --src src", - "dev": "node --loader ts-node/esm src/main.ts", - "start": "node build/main.js", - "db:deploy": "prisma migrate deploy", - "watch": "nodemon --exec ts-node-esm src/main.ts" - }, - "dependencies": { - "@discordx/importer": "^1.2.3", - "@prisma/client": "5.2.0", - "discord.js": "^14.13.0", - "discordx": "^11.7.6", - "dotenv": "16.3.1" - }, - "devDependencies": { - "@types/node": "^20.6.0", - "nodemon": "^3.0.1", - "prettier": "^3.0.3", - "prisma": "^5.2.0", - "ts-node": "^10.9.1", - "typescript": "5.2.2" - }, - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" - } -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml deleted file mode 100644 index 8d7ae47..0000000 --- a/pnpm-lock.yaml +++ /dev/null @@ -1,1239 +0,0 @@ -lockfileVersion: "6.0" - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -dependencies: - "@discordx/importer": - specifier: ^1.2.3 - version: 1.2.3 - "@prisma/client": - specifier: 5.2.0 - version: 5.2.0(prisma@5.2.0) - discord.js: - specifier: ^14.13.0 - version: 14.13.0 - discordx: - specifier: ^11.7.6 - version: 11.7.6(discord.js@14.13.0) - dotenv: - specifier: 16.3.1 - version: 16.3.1 - -devDependencies: - "@types/node": - specifier: ^20.6.0 - version: 20.6.0 - nodemon: - specifier: ^3.0.1 - version: 3.0.1 - prettier: - specifier: ^3.0.3 - version: 3.0.3 - prisma: - specifier: ^5.2.0 - version: 5.2.0 - ts-node: - specifier: ^10.9.1 - version: 10.9.1(@types/node@20.6.0)(typescript@5.2.2) - typescript: - specifier: 5.2.2 - version: 5.2.2 - -packages: - /@cspotcode/source-map-support@0.8.1: - resolution: - { - integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==, - } - engines: { node: ">=12" } - dependencies: - "@jridgewell/trace-mapping": 0.3.9 - dev: true - - /@discordjs/builders@1.6.5: - resolution: - { - integrity: sha512-SdweyCs/+mHj+PNhGLLle7RrRFX9ZAhzynHahMCLqp5Zeq7np7XC6/mgzHc79QoVlQ1zZtOkTTiJpOZu5V8Ufg==, - } - engines: { node: ">=16.11.0" } - dependencies: - "@discordjs/formatters": 0.3.2 - "@discordjs/util": 1.0.1 - "@sapphire/shapeshift": 3.9.2 - discord-api-types: 0.37.50 - fast-deep-equal: 3.1.3 - ts-mixer: 6.0.3 - tslib: 2.6.2 - dev: false - - /@discordjs/collection@1.5.3: - resolution: - { - integrity: sha512-SVb428OMd3WO1paV3rm6tSjM4wC+Kecaa1EUGX7vc6/fddvw/6lg90z4QtCqm21zvVe92vMMDt9+DkIvjXImQQ==, - } - engines: { node: ">=16.11.0" } - dev: false - - /@discordjs/formatters@0.3.2: - resolution: - { - integrity: sha512-lE++JZK8LSSDRM5nLjhuvWhGuKiXqu+JZ/DsOR89DVVia3z9fdCJVcHF2W/1Zxgq0re7kCzmAJlCMMX3tetKpA==, - } - engines: { node: ">=16.11.0" } - dependencies: - discord-api-types: 0.37.50 - dev: false - - /@discordjs/rest@2.0.1: - resolution: - { - integrity: sha512-/eWAdDRvwX/rIE2tuQUmKaxmWeHmGealttIzGzlYfI4+a7y9b6ZoMp8BG/jaohs8D8iEnCNYaZiOFLVFLQb8Zg==, - } - engines: { node: ">=16.11.0" } - dependencies: - "@discordjs/collection": 1.5.3 - "@discordjs/util": 1.0.1 - "@sapphire/async-queue": 1.5.0 - "@sapphire/snowflake": 3.5.1 - "@vladfrangu/async_event_emitter": 2.2.2 - discord-api-types: 0.37.50 - magic-bytes.js: 1.0.15 - tslib: 2.6.2 - undici: 5.22.1 - dev: false - - /@discordjs/util@1.0.1: - resolution: - { - integrity: sha512-d0N2yCxB8r4bn00/hvFZwM7goDcUhtViC5un4hPj73Ba4yrChLSJD8fy7Ps5jpTLg1fE9n4K0xBLc1y9WGwSsA==, - } - engines: { node: ">=16.11.0" } - dev: false - - /@discordjs/ws@1.0.1: - resolution: - { - integrity: sha512-avvAolBqN3yrSvdBPcJ/0j2g42ABzrv3PEL76e3YTp2WYMGH7cuspkjfSyNWaqYl1J+669dlLp+YFMxSVQyS5g==, - } - engines: { node: ">=16.11.0" } - dependencies: - "@discordjs/collection": 1.5.3 - "@discordjs/rest": 2.0.1 - "@discordjs/util": 1.0.1 - "@sapphire/async-queue": 1.5.0 - "@types/ws": 8.5.5 - "@vladfrangu/async_event_emitter": 2.2.2 - discord-api-types: 0.37.50 - tslib: 2.6.2 - ws: 8.14.1 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: false - - /@discordx/di@3.1.1: - resolution: - { - integrity: sha512-WqJOlMNTzBogiBke6LWNFhZ/9PDVzOl3GAkJLs6fsY3srMjOlZukmXP5l2ILx5I5VWpFkpM1aZZxSpnfR+a+fg==, - } - engines: { node: ">=16.0.0", npm: ">=7.0.0" } - dependencies: - tsyringe: 4.8.0 - typedi: 0.10.0 - dev: false - - /@discordx/importer@1.2.3: - resolution: - { - integrity: sha512-7LvdlImpCceb/eOsXiOH2LN2Lgnd9Fz5jw9k9C4yFDBWxGO5r3844yr6OiA+RpEPThuCfXjmD1aeOAuZdn8c0g==, - } - dependencies: - glob: 10.3.4 - tslib: 2.6.2 - dev: false - - /@discordx/internal@1.0.2: - resolution: - { - integrity: sha512-+vv5QS133O3TDDBvPp+ugQy5ExCFjVTxVn5AwQRgwpKNyXSplarNXA4TzACuiYBnXb6ecwtjfbDLcy/xMjYIoQ==, - } - engines: { node: ">=16.0.0", npm: ">=7.0.0" } - dependencies: - tslib: 2.6.2 - dev: false - - /@isaacs/cliui@8.0.2: - resolution: - { - integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==, - } - engines: { node: ">=12" } - dependencies: - string-width: 5.1.2 - string-width-cjs: /string-width@4.2.3 - strip-ansi: 7.1.0 - strip-ansi-cjs: /strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: /wrap-ansi@7.0.0 - dev: false - - /@jridgewell/resolve-uri@3.1.1: - resolution: - { - integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==, - } - engines: { node: ">=6.0.0" } - dev: true - - /@jridgewell/sourcemap-codec@1.4.15: - resolution: - { - integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==, - } - dev: true - - /@jridgewell/trace-mapping@0.3.9: - resolution: - { - integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==, - } - dependencies: - "@jridgewell/resolve-uri": 3.1.1 - "@jridgewell/sourcemap-codec": 1.4.15 - dev: true - - /@pkgjs/parseargs@0.11.0: - resolution: - { - integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==, - } - engines: { node: ">=14" } - requiresBuild: true - dev: false - optional: true - - /@prisma/client@5.2.0(prisma@5.2.0): - resolution: - { - integrity: sha512-AiTjJwR4J5Rh6Z/9ZKrBBLel3/5DzUNntMohOy7yObVnVoTNVFi2kvpLZlFuKO50d7yDspOtW6XBpiAd0BVXbQ==, - } - engines: { node: ">=16.13" } - requiresBuild: true - peerDependencies: - prisma: "*" - peerDependenciesMeta: - prisma: - optional: true - dependencies: - "@prisma/engines-version": 5.2.0-25.2804dc98259d2ea960602aca6b8e7fdc03c1758f - prisma: 5.2.0 - dev: false - - /@prisma/engines-version@5.2.0-25.2804dc98259d2ea960602aca6b8e7fdc03c1758f: - resolution: - { - integrity: sha512-jsnKT5JIDIE01lAeCj2ghY9IwxkedhKNvxQeoyLs6dr4ZXynetD0vTy7u6wMJt8vVPv8I5DPy/I4CFaoXAgbtg==, - } - dev: false - - /@prisma/engines@5.2.0: - resolution: - { - integrity: sha512-dT7FOLUCdZmq+AunLqB1Iz+ZH/IIS1Fz2THmKZQ6aFONrQD/BQ5ecJ7g2wGS2OgyUFf4OaLam6/bxmgdOBDqig==, - } - requiresBuild: true - - /@sapphire/async-queue@1.5.0: - resolution: - { - integrity: sha512-JkLdIsP8fPAdh9ZZjrbHWR/+mZj0wvKS5ICibcLrRI1j84UmLMshx5n9QmL8b95d4onJ2xxiyugTgSAX7AalmA==, - } - engines: { node: ">=v14.0.0", npm: ">=7.0.0" } - dev: false - - /@sapphire/shapeshift@3.9.2: - resolution: - { - integrity: sha512-YRbCXWy969oGIdqR/wha62eX8GNHsvyYi0Rfd4rNW6tSVVa8p0ELiMEuOH/k8rgtvRoM+EMV7Csqz77YdwiDpA==, - } - engines: { node: ">=v14.0.0", npm: ">=7.0.0" } - dependencies: - fast-deep-equal: 3.1.3 - lodash: 4.17.21 - dev: false - - /@sapphire/snowflake@3.5.1: - resolution: - { - integrity: sha512-BxcYGzgEsdlG0dKAyOm0ehLGm2CafIrfQTZGWgkfKYbj+pNNsorZ7EotuZukc2MT70E0UbppVbtpBrqpzVzjNA==, - } - engines: { node: ">=v14.0.0", npm: ">=7.0.0" } - dev: false - - /@tsconfig/node10@1.0.9: - resolution: - { - integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==, - } - dev: true - - /@tsconfig/node12@1.0.11: - resolution: - { - integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==, - } - dev: true - - /@tsconfig/node14@1.0.3: - resolution: - { - integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==, - } - dev: true - - /@tsconfig/node16@1.0.4: - resolution: - { - integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==, - } - dev: true - - /@types/node@20.6.0: - resolution: - { - integrity: sha512-najjVq5KN2vsH2U/xyh2opaSEz6cZMR2SetLIlxlj08nOcmPOemJmUK2o4kUzfLqfrWE0PIrNeE16XhYDd3nqg==, - } - - /@types/ws@8.5.5: - resolution: - { - integrity: sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==, - } - dependencies: - "@types/node": 20.6.0 - dev: false - - /@vladfrangu/async_event_emitter@2.2.2: - resolution: - { - integrity: sha512-HIzRG7sy88UZjBJamssEczH5q7t5+axva19UbZLO6u0ySbYPrwzWiXBcC0WuHyhKKoeCyneH+FvYzKQq/zTtkQ==, - } - engines: { node: ">=v14.0.0", npm: ">=7.0.0" } - dev: false - - /abbrev@1.1.1: - resolution: - { - integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==, - } - dev: true - - /acorn-walk@8.2.0: - resolution: - { - integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==, - } - engines: { node: ">=0.4.0" } - dev: true - - /acorn@8.10.0: - resolution: - { - integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==, - } - engines: { node: ">=0.4.0" } - hasBin: true - dev: true - - /ansi-regex@5.0.1: - resolution: - { - integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==, - } - engines: { node: ">=8" } - dev: false - - /ansi-regex@6.0.1: - resolution: - { - integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==, - } - engines: { node: ">=12" } - dev: false - - /ansi-styles@4.3.0: - resolution: - { - integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==, - } - engines: { node: ">=8" } - dependencies: - color-convert: 2.0.1 - dev: false - - /ansi-styles@6.2.1: - resolution: - { - integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==, - } - engines: { node: ">=12" } - dev: false - - /anymatch@3.1.3: - resolution: - { - integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==, - } - engines: { node: ">= 8" } - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - dev: true - - /arg@4.1.3: - resolution: - { - integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==, - } - dev: true - - /balanced-match@1.0.2: - resolution: - { - integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==, - } - - /binary-extensions@2.2.0: - resolution: - { - integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==, - } - engines: { node: ">=8" } - dev: true - - /brace-expansion@1.1.11: - resolution: - { - integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==, - } - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - dev: true - - /brace-expansion@2.0.1: - resolution: - { - integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==, - } - dependencies: - balanced-match: 1.0.2 - dev: false - - /braces@3.0.2: - resolution: - { - integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==, - } - engines: { node: ">=8" } - dependencies: - fill-range: 7.0.1 - dev: true - - /busboy@1.6.0: - resolution: - { - integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==, - } - engines: { node: ">=10.16.0" } - dependencies: - streamsearch: 1.1.0 - dev: false - - /chokidar@3.5.3: - resolution: - { - integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==, - } - engines: { node: ">= 8.10.0" } - dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - 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 - dev: true - - /color-convert@2.0.1: - resolution: - { - integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==, - } - engines: { node: ">=7.0.0" } - dependencies: - color-name: 1.1.4 - dev: false - - /color-name@1.1.4: - resolution: - { - integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, - } - dev: false - - /concat-map@0.0.1: - resolution: - { - integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==, - } - dev: true - - /create-require@1.1.1: - resolution: - { - integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==, - } - dev: true - - /cross-spawn@7.0.3: - resolution: - { - integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==, - } - engines: { node: ">= 8" } - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - dev: false - - /debug@3.2.7(supports-color@5.5.0): - resolution: - { - integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==, - } - peerDependencies: - supports-color: "*" - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.3 - supports-color: 5.5.0 - dev: true - - /diff@4.0.2: - resolution: - { - integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==, - } - engines: { node: ">=0.3.1" } - dev: true - - /discord-api-types@0.37.50: - resolution: - { - integrity: sha512-X4CDiMnDbA3s3RaUXWXmgAIbY1uxab3fqe3qwzg5XutR3wjqi7M3IkgQbsIBzpqBN2YWr/Qdv7JrFRqSgb4TFg==, - } - dev: false - - /discord.js@14.13.0: - resolution: - { - integrity: sha512-Kufdvg7fpyTEwANGy9x7i4od4yu5c6gVddGi5CKm4Y5a6sF0VBODObI3o0Bh7TGCj0LfNT8Qp8z04wnLFzgnbA==, - } - engines: { node: ">=16.11.0" } - dependencies: - "@discordjs/builders": 1.6.5 - "@discordjs/collection": 1.5.3 - "@discordjs/formatters": 0.3.2 - "@discordjs/rest": 2.0.1 - "@discordjs/util": 1.0.1 - "@discordjs/ws": 1.0.1 - "@sapphire/snowflake": 3.5.1 - "@types/ws": 8.5.5 - discord-api-types: 0.37.50 - fast-deep-equal: 3.1.3 - lodash.snakecase: 4.1.1 - tslib: 2.6.2 - undici: 5.22.1 - ws: 8.14.1 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: false - - /discordx@11.7.6(discord.js@14.13.0): - resolution: - { - integrity: sha512-Vo7godHVFu6weq9orIXfOpbySSKGW+gmE0h0QXQSFh/sqG1YTp9tsnrdIH4ce6+NcGOpEeZwAdUd+KK5RPQf7w==, - } - engines: { node: ">=16.0.0", npm: ">=7.0.0" } - peerDependencies: - discord.js: ">=14 || ^14.0.0-dev" - dependencies: - "@discordx/di": 3.1.1 - "@discordx/internal": 1.0.2 - discord.js: 14.13.0 - lodash: 4.17.21 - tslib: 2.6.2 - dev: false - - /dotenv@16.3.1: - resolution: - { - integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==, - } - engines: { node: ">=12" } - dev: false - - /eastasianwidth@0.2.0: - resolution: - { - integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==, - } - dev: false - - /emoji-regex@8.0.0: - resolution: - { - integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==, - } - dev: false - - /emoji-regex@9.2.2: - resolution: - { - integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==, - } - dev: false - - /fast-deep-equal@3.1.3: - resolution: - { - integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==, - } - dev: false - - /fill-range@7.0.1: - resolution: - { - integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==, - } - engines: { node: ">=8" } - dependencies: - to-regex-range: 5.0.1 - dev: true - - /foreground-child@3.1.1: - resolution: - { - integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==, - } - engines: { node: ">=14" } - dependencies: - cross-spawn: 7.0.3 - signal-exit: 4.1.0 - dev: false - - /fsevents@2.3.3: - resolution: - { - integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, - } - engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } - os: [darwin] - requiresBuild: true - dev: true - optional: true - - /glob-parent@5.1.2: - resolution: - { - integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==, - } - engines: { node: ">= 6" } - dependencies: - is-glob: 4.0.3 - dev: true - - /glob@10.3.4: - resolution: - { - integrity: sha512-6LFElP3A+i/Q8XQKEvZjkEWEOTgAIALR9AO2rwT8bgPhDd1anmqDJDZ6lLddI4ehxxxR1S5RIqKe1uapMQfYaQ==, - } - engines: { node: ">=16 || 14 >=14.17" } - hasBin: true - dependencies: - foreground-child: 3.1.1 - jackspeak: 2.3.3 - minimatch: 9.0.3 - minipass: 7.0.3 - path-scurry: 1.10.1 - dev: false - - /has-flag@3.0.0: - resolution: - { - integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==, - } - engines: { node: ">=4" } - dev: true - - /ignore-by-default@1.0.1: - resolution: - { - integrity: sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==, - } - dev: true - - /is-binary-path@2.1.0: - resolution: - { - integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==, - } - engines: { node: ">=8" } - dependencies: - binary-extensions: 2.2.0 - dev: true - - /is-extglob@2.1.1: - resolution: - { - integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==, - } - engines: { node: ">=0.10.0" } - dev: true - - /is-fullwidth-code-point@3.0.0: - resolution: - { - integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==, - } - engines: { node: ">=8" } - dev: false - - /is-glob@4.0.3: - resolution: - { - integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==, - } - engines: { node: ">=0.10.0" } - dependencies: - is-extglob: 2.1.1 - dev: true - - /is-number@7.0.0: - resolution: - { - integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==, - } - engines: { node: ">=0.12.0" } - dev: true - - /isexe@2.0.0: - resolution: - { - integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==, - } - dev: false - - /jackspeak@2.3.3: - resolution: - { - integrity: sha512-R2bUw+kVZFS/h1AZqBKrSgDmdmjApzgY0AlCPumopFiAlbUxE2gf+SCuBzQ0cP5hHmUmFYF5yw55T97Th5Kstg==, - } - engines: { node: ">=14" } - dependencies: - "@isaacs/cliui": 8.0.2 - optionalDependencies: - "@pkgjs/parseargs": 0.11.0 - dev: false - - /lodash.snakecase@4.1.1: - resolution: - { - integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==, - } - dev: false - - /lodash@4.17.21: - resolution: - { - integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==, - } - dev: false - - /lru-cache@10.0.1: - resolution: - { - integrity: sha512-IJ4uwUTi2qCccrioU6g9g/5rvvVl13bsdczUUcqbciD9iLr095yj8DQKdObriEvuNSx325N1rV1O0sJFszx75g==, - } - engines: { node: 14 || >=16.14 } - dev: false - - /lru-cache@6.0.0: - resolution: - { - integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==, - } - engines: { node: ">=10" } - dependencies: - yallist: 4.0.0 - dev: true - - /magic-bytes.js@1.0.15: - resolution: - { - integrity: sha512-bpRmwbRHqongRhA+mXzbLWjVy7ylqmfMBYaQkSs6pac0z6hBTvsgrH0r4FBYd/UYVJBmS6Rp/O+oCCQVLzKV1g==, - } - dev: false - - /make-error@1.3.6: - resolution: - { - integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==, - } - dev: true - - /minimatch@3.1.2: - resolution: - { - integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==, - } - dependencies: - brace-expansion: 1.1.11 - dev: true - - /minimatch@9.0.3: - resolution: - { - integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==, - } - engines: { node: ">=16 || 14 >=14.17" } - dependencies: - brace-expansion: 2.0.1 - dev: false - - /minipass@7.0.3: - resolution: - { - integrity: sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==, - } - engines: { node: ">=16 || 14 >=14.17" } - dev: false - - /ms@2.1.3: - resolution: - { - integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==, - } - dev: true - - /nodemon@3.0.1: - resolution: - { - integrity: sha512-g9AZ7HmkhQkqXkRc20w+ZfQ73cHLbE8hnPbtaFbFtCumZsjyMhKk9LajQ07U5Ux28lvFjZ5X7HvWR1xzU8jHVw==, - } - engines: { node: ">=10" } - hasBin: true - dependencies: - chokidar: 3.5.3 - debug: 3.2.7(supports-color@5.5.0) - ignore-by-default: 1.0.1 - minimatch: 3.1.2 - pstree.remy: 1.1.8 - semver: 7.5.4 - simple-update-notifier: 2.0.0 - supports-color: 5.5.0 - touch: 3.1.0 - undefsafe: 2.0.5 - dev: true - - /nopt@1.0.10: - resolution: - { - integrity: sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==, - } - hasBin: true - dependencies: - abbrev: 1.1.1 - dev: true - - /normalize-path@3.0.0: - resolution: - { - integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==, - } - engines: { node: ">=0.10.0" } - dev: true - - /path-key@3.1.1: - resolution: - { - integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==, - } - engines: { node: ">=8" } - dev: false - - /path-scurry@1.10.1: - resolution: - { - integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==, - } - engines: { node: ">=16 || 14 >=14.17" } - dependencies: - lru-cache: 10.0.1 - minipass: 7.0.3 - dev: false - - /picomatch@2.3.1: - resolution: - { - integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==, - } - engines: { node: ">=8.6" } - dev: true - - /prettier@3.0.3: - resolution: - { - integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==, - } - engines: { node: ">=14" } - hasBin: true - dev: true - - /prisma@5.2.0: - resolution: - { - integrity: sha512-FfFlpjVCkZwrqxDnP4smlNYSH1so+CbfjgdpioFzGGqlQAEm6VHAYSzV7jJgC3ebtY9dNOhDMS2+4/1DDSM7bQ==, - } - engines: { node: ">=16.13" } - hasBin: true - requiresBuild: true - dependencies: - "@prisma/engines": 5.2.0 - - /pstree.remy@1.1.8: - resolution: - { - integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==, - } - dev: true - - /readdirp@3.6.0: - resolution: - { - integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==, - } - engines: { node: ">=8.10.0" } - dependencies: - picomatch: 2.3.1 - dev: true - - /semver@7.5.4: - resolution: - { - integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==, - } - engines: { node: ">=10" } - hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: true - - /shebang-command@2.0.0: - resolution: - { - integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==, - } - engines: { node: ">=8" } - dependencies: - shebang-regex: 3.0.0 - dev: false - - /shebang-regex@3.0.0: - resolution: - { - integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==, - } - engines: { node: ">=8" } - dev: false - - /signal-exit@4.1.0: - resolution: - { - integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==, - } - engines: { node: ">=14" } - dev: false - - /simple-update-notifier@2.0.0: - resolution: - { - integrity: sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==, - } - engines: { node: ">=10" } - dependencies: - semver: 7.5.4 - dev: true - - /streamsearch@1.1.0: - resolution: - { - integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==, - } - engines: { node: ">=10.0.0" } - dev: false - - /string-width@4.2.3: - resolution: - { - integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==, - } - engines: { node: ">=8" } - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - dev: false - - /string-width@5.1.2: - resolution: - { - integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==, - } - engines: { node: ">=12" } - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.1.0 - dev: false - - /strip-ansi@6.0.1: - resolution: - { - integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==, - } - engines: { node: ">=8" } - dependencies: - ansi-regex: 5.0.1 - dev: false - - /strip-ansi@7.1.0: - resolution: - { - integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==, - } - engines: { node: ">=12" } - dependencies: - ansi-regex: 6.0.1 - dev: false - - /supports-color@5.5.0: - resolution: - { - integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==, - } - engines: { node: ">=4" } - dependencies: - has-flag: 3.0.0 - dev: true - - /to-regex-range@5.0.1: - resolution: - { - integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==, - } - engines: { node: ">=8.0" } - dependencies: - is-number: 7.0.0 - dev: true - - /touch@3.1.0: - resolution: - { - integrity: sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==, - } - hasBin: true - dependencies: - nopt: 1.0.10 - dev: true - - /ts-mixer@6.0.3: - resolution: - { - integrity: sha512-k43M7uCG1AkTyxgnmI5MPwKoUvS/bRvLvUb7+Pgpdlmok8AoqmUaZxUUw8zKM5B1lqZrt41GjYgnvAi0fppqgQ==, - } - dev: false - - /ts-node@10.9.1(@types/node@20.6.0)(typescript@5.2.2): - resolution: - { - integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==, - } - hasBin: true - peerDependencies: - "@swc/core": ">=1.2.50" - "@swc/wasm": ">=1.2.50" - "@types/node": "*" - typescript: ">=2.7" - peerDependenciesMeta: - "@swc/core": - optional: true - "@swc/wasm": - optional: true - dependencies: - "@cspotcode/source-map-support": 0.8.1 - "@tsconfig/node10": 1.0.9 - "@tsconfig/node12": 1.0.11 - "@tsconfig/node14": 1.0.3 - "@tsconfig/node16": 1.0.4 - "@types/node": 20.6.0 - acorn: 8.10.0 - acorn-walk: 8.2.0 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 5.2.2 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - dev: true - - /tslib@1.14.1: - resolution: - { - integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==, - } - dev: false - - /tslib@2.6.2: - resolution: - { - integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==, - } - dev: false - - /tsyringe@4.8.0: - resolution: - { - integrity: sha512-YB1FG+axdxADa3ncEtRnQCFq/M0lALGLxSZeVNbTU8NqhOVc51nnv2CISTcvc1kyv6EGPtXVr0v6lWeDxiijOA==, - } - engines: { node: ">= 6.0.0" } - dependencies: - tslib: 1.14.1 - dev: false - - /typedi@0.10.0: - resolution: - { - integrity: sha512-v3UJF8xm68BBj6AF4oQML3ikrfK2c9EmZUyLOfShpJuItAqVBHWP/KtpGinkSsIiP6EZyyb6Z3NXyW9dgS9X1w==, - } - dev: false - - /typescript@5.2.2: - resolution: - { - integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==, - } - engines: { node: ">=14.17" } - hasBin: true - dev: true - - /undefsafe@2.0.5: - resolution: - { - integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==, - } - dev: true - - /undici@5.22.1: - resolution: - { - integrity: sha512-Ji2IJhFXZY0x/0tVBXeQwgPlLWw13GVzpsWPQ3rV50IFMMof2I55PZZxtm4P6iNq+L5znYN9nSTAq0ZyE6lSJw==, - } - engines: { node: ">=14.0" } - dependencies: - busboy: 1.6.0 - dev: false - - /v8-compile-cache-lib@3.0.1: - resolution: - { - integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==, - } - dev: true - - /which@2.0.2: - resolution: - { - integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==, - } - engines: { node: ">= 8" } - hasBin: true - dependencies: - isexe: 2.0.0 - dev: false - - /wrap-ansi@7.0.0: - resolution: - { - integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==, - } - engines: { node: ">=10" } - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - dev: false - - /wrap-ansi@8.1.0: - resolution: - { - integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==, - } - engines: { node: ">=12" } - dependencies: - ansi-styles: 6.2.1 - string-width: 5.1.2 - strip-ansi: 7.1.0 - dev: false - - /ws@8.14.1: - resolution: - { - integrity: sha512-4OOseMUq8AzRBI/7SLMUwO+FEDnguetSk7KMb1sHwvF2w2Wv5Hoj0nlifx8vtGsftE/jWHojPy8sMMzYLJ2G/A==, - } - engines: { node: ">=10.0.0" } - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ">=5.0.2" - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - dev: false - - /yallist@4.0.0: - resolution: - { - integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==, - } - dev: true - - /yn@3.1.1: - resolution: - { - integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==, - } - engines: { node: ">=6" } - dev: true diff --git a/src/commands/admin.ts b/src/commands/admin.ts deleted file mode 100644 index c130f31..0000000 --- a/src/commands/admin.ts +++ /dev/null @@ -1,166 +0,0 @@ -import { - ApplicationCommandOptionType, - Channel, - CommandInteraction, - GuildMember, - PermissionsBitField, - Role, -} from "discord.js"; -import { Discord, Slash, SlashGroup, SlashOption } from "discordx"; -import { prisma } from "../main.js"; - -@Discord() -@SlashGroup({ name: "admin", description: "Admin commands" }) -@SlashGroup("admin") -export class AdminCmds { - @Slash({ - description: "Set or get the configured channel for reports", - defaultMemberPermissions: PermissionsBitField.Flags.Administrator, - }) - async reports( - @SlashOption({ - description: "Set where the reports should be sent", - name: "reports_channel", - required: false, - type: ApplicationCommandOptionType.Channel, - }) - channel: Channel, - interaction: CommandInteraction - ) { - if (channel) { - await prisma.guild - .findUnique({ - where: { - id: interaction.guildId!, - }, - }) - .then(async (data) => { - if (data) { - await prisma.guild.update({ - where: { - id: data.id, - }, - data: { - reports_channel_id: channel.id, - }, - }); - } else { - await prisma.guild.create({ - data: { - id: interaction.guildId!, - name: interaction.guild!.name, - reports_channel_id: channel.id, - }, - }); - } - - interaction.reply( - `<#${channel.id}> is now setup to receive reports.` - ); - }); - } else { - await prisma.guild - .findUnique({ - where: { - id: interaction.guildId!, - }, - }) - .then((data) => { - if (data) { - interaction.reply( - `<#${data.reports_channel_id}> is currently receiving reports for this guild.` - ); - } else { - interaction.reply("Reports are currently disabled for this guild"); - } - }); - } - } - - @Slash({ - description: "Link a user to their booster role", - name: "link_role", - defaultMemberPermissions: PermissionsBitField.Flags.ManageRoles, - }) - async link_role( - @SlashOption({ - description: "The user account to link", - name: "member", - required: true, - type: ApplicationCommandOptionType.User, - }) - member: GuildMember, - @SlashOption({ - description: "The role to link", - name: "role", - required: true, - type: ApplicationCommandOptionType.Role, - }) - role: Role, - interaction: CommandInteraction - ) { - let mem = await prisma.member.findUnique({ - where: { - dgid_duid: { - duid: member.id, - dgid: member.guild.id, - }, - }, - }); - - if (mem) { - await prisma.member.update({ - where: { - id: mem.id, - }, - data: { - booster_role_id: role.id, - name: member.displayName, - }, - }); - } else { - await prisma.member.create({ - data: { - duid: member.id, - dgid: interaction.guildId!, - name: member.displayName, - booster_role_id: role.id, - }, - }); - } - interaction.reply({ - content: "Member booster role updated!", - ephemeral: true, - }); - } - - @Slash({ - description: "Enable or disable auto perk roles", - defaultMemberPermissions: PermissionsBitField.Flags.Administrator, - }) - async toggle_perk_role_creation(interaction: CommandInteraction) { - if (interaction.guildId) { - const g = await prisma.guild.findUnique({ - where: { - id: interaction.guildId, - }, - }); - - await prisma.guild.update({ - where: { - id: interaction.guildId, - }, - data: { - auto_create_booster_roles: !g?.auto_create_booster_roles, - }, - }); - - interaction.reply({ - content: `Booster role creation is now ${ - g?.auto_create_booster_roles ? "disabled" : "enabled" - }`, - ephemeral: true, - }); - } - } -} diff --git a/src/commands/perks.ts b/src/commands/perks.ts deleted file mode 100644 index a7c0a85..0000000 --- a/src/commands/perks.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { - ApplicationCommandOptionType, - Channel, - CommandInteraction, -} from "discord.js"; -import { Discord, Slash, SlashGroup, SlashOption } from "discordx"; -import { prisma } from "../main.js"; - -@Discord() -@SlashGroup({ description: "Manage your booster perks", name: "perks" }) -@SlashGroup("perks") -export class Perks { - @Slash({ description: "Manage your role" }) - async role( - interaction: CommandInteraction, - @SlashOption({ - name: "name", - description: "Change the name of your role", - type: ApplicationCommandOptionType.String, - }) - name?: string, - @SlashOption({ - name: "colour", - description: "Change the colour of your role (in hex)", - type: ApplicationCommandOptionType.String, - }) - colour?: string - ) { - const m = await prisma.member.findUnique({ - where: { - dgid_duid: { - dgid: interaction.guildId!, - duid: interaction.user.id, - }, - }, - }); - - if (!m || !m.booster_role_id) { - interaction.reply({ - content: - "It appears that you may not be a booster of this guild, contact <@207603534789738496> if you think this is a mistake.", - ephemeral: true, - }); - } else { - const r = await interaction.guild?.roles.fetch(m.booster_role_id); - if (r) { - await interaction.guild?.roles.edit(r, { - name: name ?? undefined, - color: - colour != undefined - ? colour.startsWith("#") - ? parseInt(colour.replace("#", "0x"), 16) - : parseInt(`0x${colour}`) - : undefined, - }); - interaction.reply({ - content: "Role updated!", - ephemeral: true, - }); - } else { - interaction.reply({ - content: - "It appears that you may not be a booster of this guild, contact <@207603534789738496> if you think this is a mistake.", - ephemeral: true, - }); - } - } - } -} diff --git a/src/commands/report.ts b/src/commands/report.ts deleted file mode 100644 index 8aec202..0000000 --- a/src/commands/report.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { - ApplicationCommandOptionType, - Client, - CommandInteraction, - GuildMember, - TextChannel, - User, -} from "discord.js"; -import { Discord, Slash, SlashOption } from "discordx"; -import { prisma } from "../main.js"; - -@Discord() -export class Report { - @Slash({ description: "Report a user to the guild staff", name: "report" }) - async report( - @SlashOption({ - required: true, - description: "The user to report", - name: "user", - type: ApplicationCommandOptionType.User, - }) - user: GuildMember | User, - @SlashOption({ - required: true, - description: "Why you are reporting this user", - name: "reason", - type: ApplicationCommandOptionType.String, - }) - reason: string, - interaction: CommandInteraction, - client: Client - ) { - if (interaction.guild) { - const guild = await prisma.guild.findUnique({ - where: { - id: interaction.guild.id, - }, - }); - if (guild && guild.reports_channel_id) { - await client.channels - .fetch(guild!.reports_channel_id!) - .then((channel) => { - if (channel!.isTextBased()) { - const ct = channel as TextChannel; - - ct.send(`${interaction.user} reported ${user} for: ${reason}`); - } - }); - } - await interaction.reply({ content: "Report sent!", ephemeral: true }); - return; - } - await interaction.reply("You need to be in a guild to use this command"); - } -} diff --git a/src/commands/threads.ts b/src/commands/threads.ts deleted file mode 100644 index 6f61500..0000000 --- a/src/commands/threads.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { CommandInteraction } from "discord.js"; -import { Discord, Slash } from "discordx"; - -@Discord() -export class Threads { - @Slash({ description: "Display current threads", name: "threads" }) - async threads(interaction: CommandInteraction) { - if (interaction.guild) { - const threads = await fetch( - `https://discord.com/api/v10/guilds/${interaction.guildId}/threads/active`, - { - headers: { - "Content-Type": "application/json", - Authorization: `Bot ${process.env.DISCORD_TOKEN}`, - }, - } - ); - - const body = (await threads.json()).threads as Array<{ - flags: number; - guild_id: string; - id: string; - parent_id: string; - }>; - - let threadMsg = "The current active threads are:"; - - body.forEach((thread) => { - threadMsg += `\n- <#${thread.id}>`; - }); - - interaction.reply({ content: threadMsg, ephemeral: true }); - } - } -} diff --git a/src/events/guild_join.ts b/src/events/guild_join.ts deleted file mode 100644 index f6ac659..0000000 --- a/src/events/guild_join.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { ArgsOf, Discord, On } from "discordx"; -import { prisma } from "../main.js"; - -@Discord() -export class GuildJoin { - @On({ event: "guildCreate" }) - fn([guild]: ArgsOf<"guildCreate">) { - prisma.guild.create({ - data: { - id: guild.id, - name: guild.name, - }, - }); - } -} diff --git a/src/events/member_event.ts b/src/events/member_event.ts deleted file mode 100644 index 8ef45f6..0000000 --- a/src/events/member_event.ts +++ /dev/null @@ -1,107 +0,0 @@ -import { ArgsOf, Discord, On } from "discordx"; -import { prisma } from "../main.js"; - -@Discord() -export class MemberEvent { - @On({ event: "guildMemberAdd" }) - async memberJoin([member]: ArgsOf<"guildMemberAdd">) { - await prisma.member.create({ - data: { - dgid: member.guild.id, - duid: member.id, - name: member.displayName, - }, - }); - } - - @On({ event: "guildMemberRemove" }) - async memberRemove([member]: ArgsOf<"guildMemberRemove">) { - await prisma.member.delete({ - where: { - dgid_duid: { - duid: member.id, - dgid: member.guild.id, - }, - }, - }); - } - - @On({ event: "guildMemberUpdate" }) - async memberUpdate([oldM, newM]: ArgsOf<"guildMemberUpdate">) { - const g = await prisma.guild.findUnique({ - where: { - id: newM.guild.id, - }, - }); - - if (g?.auto_create_booster_roles) { - if (oldM.premiumSince !== newM.premiumSince) { - if (newM != null) { - const m = await prisma.member.findUnique({ - where: { - dgid_duid: { - dgid: newM.guild.id, - duid: newM.id, - }, - }, - }); - - if (m?.booster_role_id != null && newM.premiumSince != null) { - return; - } else if (newM.premiumSince == null) { - await prisma.member.update({ - where: { - id: m?.id, - }, - data: { - booster_role_id: null, - }, - }); - const r = await newM.guild.roles.fetch(m!.booster_role_id!); - if (r) await newM.guild.roles.delete(r); - return; - } else { - const guild = newM.guild; - - const role = await guild.roles.create({ - name: newM.nickname ?? newM.displayName, - reason: `${newM.nickname ?? newM.displayName} just boosted!`, - }); - - await newM.roles.add(role); - - const m = await prisma.member.findUnique({ - where: { - dgid_duid: { - dgid: guild.id, - duid: newM.id, - }, - }, - }); - - if (m) { - await prisma.member.update({ - where: { - id: m.id, - }, - data: { - booster_role_id: role.id, - }, - }); - } else { - await prisma.member.create({ - data: { - duid: newM.id, - dgid: guild.id, - booster_role_id: role.id, - name: newM.displayName, - }, - }); - } - return; - } - } - } - } - } -} diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..e7a11a9 --- /dev/null +++ b/src/main.rs @@ -0,0 +1,3 @@ +fn main() { + println!("Hello, world!"); +} diff --git a/src/main.ts b/src/main.ts deleted file mode 100644 index a4b9038..0000000 --- a/src/main.ts +++ /dev/null @@ -1,77 +0,0 @@ -import { dirname, importx } from "@discordx/importer"; -import type { Interaction } from "discord.js"; -import { IntentsBitField } from "discord.js"; -import * as dotenv from "dotenv"; -import { Client } from "discordx"; -import { PrismaClient } from "@prisma/client"; - -dotenv.config(); -export const prisma = new PrismaClient(); - -export const bot = new Client({ - // To use only guild command - // botGuilds: [(client) => client.guilds.cache.map((guild) => guild.id)], - - // Discord intents - intents: [ - IntentsBitField.Flags.Guilds, - IntentsBitField.Flags.GuildMembers, - IntentsBitField.Flags.GuildMessages, - IntentsBitField.Flags.GuildMessageReactions, - IntentsBitField.Flags.GuildVoiceStates, - ], - - // Debug logs are disabled in silent mode - silent: false, -}); - -bot.once("ready", async () => { - // Make sure all guilds are cached - await bot.guilds.fetch(); - - // Synchronize applications commands with Discord - await bot.initApplicationCommands(); - - // To clear all guild commands, uncomment this line, - // This is useful when moving from guild commands to global commands - // It must only be executed once - // - // await bot.clearApplicationCommands( - // ...bot.guilds.cache.map((g) => g.id) - // ); - - console.log("Bot started"); -}); - -bot.on("interactionCreate", (interaction: Interaction) => { - bot.executeInteraction(interaction); -}); - -async function run() { - // The following syntax should be used in the commonjs environment - // - // await importx(__dirname + "/{events,commands}/**/*.{ts,js}"); - - // The following syntax should be used in the ECMAScript environment - await importx( - `${dirname(import.meta.url)}/{events,commands,menus}/**/*.{ts,js}` - ); - - // Let's start the bot - if (!process.env.DISCORD_TOKEN) { - throw Error("Could not find DISCORD_TOKEN in your environment"); - } - - // Log in with your bot token - await bot.login(process.env.DISCORD_TOKEN); -} - -run() - .then(async () => { - await prisma.$disconnect(); - }) - .catch(async (e) => { - console.error(e); - await prisma.$disconnect(); - process.exit(1); - }); diff --git a/src/menus/report.ts b/src/menus/report.ts deleted file mode 100644 index 23f711e..0000000 --- a/src/menus/report.ts +++ /dev/null @@ -1,103 +0,0 @@ -import { - ActionRowBuilder, - ApplicationCommandType, - Client, - MessageContextMenuCommandInteraction, - ModalBuilder, - ModalSubmitInteraction, - TextChannel, - TextInputBuilder, - TextInputStyle, -} from "discord.js"; -import { ContextMenu, Discord, ModalComponent } from "discordx"; -import { prisma } from "../main.js"; - -@Discord() -export class Report { - @ContextMenu({ - name: "Report user", - type: ApplicationCommandType.User, - }) - async reportUser( - interaction: MessageContextMenuCommandInteraction, - client: Client - ) { - if (interaction.guildId) { - let data = await prisma.guild.findUnique({ - where: { - id: interaction.guildId!, - }, - }); - - if (!data) { - await prisma.guild.create({ - data: { - id: interaction.guildId!, - name: interaction.guild!.name, - }, - }); - - data = await prisma.guild.findUnique({ - where: { - id: interaction.guildId!, - }, - }); - } - - if (!data!.reports_channel_id) { - interaction.reply( - "It looks like your guild hasn't set up this feature, please speak to the staff." - ); - } else { - const modal = new ModalBuilder() - .setTitle("Report user") - .setCustomId("report_user"); - - const userId = new TextInputBuilder() - .setCustomId("user-id") - .setValue(interaction.targetId) - .setLabel("User ID") - .setStyle(TextInputStyle.Short); - - const reason = new TextInputBuilder() - .setCustomId("reason") - .setLabel("Reason") - .setStyle(TextInputStyle.Paragraph); - - modal.addComponents( - new ActionRowBuilder().addComponents(userId), - new ActionRowBuilder().addComponents(reason) - ); - - interaction.showModal(modal); - } - } else { - interaction.reply({ - content: - "It looks like you aren't in a guild, you can only report within guilds", - }); - } - } - - @ModalComponent() - async report_user(interaction: ModalSubmitInteraction, client: Client) { - const [user_id, reason] = ["user-id", "reason"].map((id) => - interaction.fields.getTextInputValue(id) - ); - const data = await prisma.guild.findUnique({ - where: { - id: interaction.guildId!, - }, - }); - client.channels.fetch(data!.reports_channel_id!).then((channel) => { - if (channel?.isTextBased()) { - let ct = channel as TextChannel; - ct.send({ - content: `<@${interaction.user.id}> reported <@${user_id}> for: ${reason}`, - }); - } - }); - - interaction.reply({ content: "Reported user.", ephemeral: true }); - } -} diff --git a/tsconfig.json b/tsconfig.json deleted file mode 100644 index 949e75a..0000000 --- a/tsconfig.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "compilerOptions": { - "target": "ESNext", - "module": "ESNext", - "outDir": "build", - "rootDir": "src", - "strict": true, - "moduleResolution": "Node", - "allowSyntheticDefaultImports": true, - - "experimentalDecorators": true, - "emitDecoratorMetadata": true, - "noImplicitAny": false, - "skipLibCheck": true, - "forceConsistentCasingInFileNames": true - }, - "exclude": ["build", "node_modules"] -}