Merge branch 'dev' into 'main'

Dev

See merge request illegitimate/illegitimate-bot!312
This commit is contained in:
2024-10-27 12:48:14 +00:00
38 changed files with 496 additions and 393 deletions

View File

@@ -1 +1 @@
21.7.3 22.10.0

View File

@@ -1,4 +1,4 @@
FROM node:21.7.3-alpine3.18 AS cache FROM node:22.10.0-alpine3.20 AS cache
WORKDIR /cache WORKDIR /cache
@@ -10,7 +10,7 @@ RUN corepack enable
RUN pnpm install RUN pnpm install
# main image # main image
FROM node:21.7.3-alpine3.18 FROM node:22.10.0-alpine3.20
WORKDIR /app WORKDIR /app
COPY --from=cache /cache/node_modules /app/node_modules COPY --from=cache /cache/node_modules /app/node_modules

View File

@@ -80,7 +80,11 @@ export default [
"@typescript-eslint/no-unused-vars": ["warn", { "@typescript-eslint/no-unused-vars": ["warn", {
vars: "all", vars: "all",
args: "after-used", args: "after-used",
ignoreRestSiblings: false ignoreRestSiblings: false,
argsIgnorePattern: "^_",
caughtErrorsIgnorePattern: "^_",
destructuredArrayIgnorePattern: "^_",
varsIgnorePattern: "^_"
}], }],
"@typescript-eslint/no-empty-object-type": "off", "@typescript-eslint/no-empty-object-type": "off",
"@typescript-eslint/no-require-imports": "off", "@typescript-eslint/no-require-imports": "off",

View File

@@ -1,2 +0,0 @@
node_modules
dist

View File

@@ -1,59 +0,0 @@
module.exports = {
env: {
node: true,
es2021: true,
browser: true,
},
extends: ["eslint:recommended", "plugin:@typescript-eslint/recommended"],
overrides: [
{
env: {
node: true,
},
files: [".eslintrc.{js,cjs}"],
parserOptions: {
sourceType: "script",
},
},
],
parser: "@typescript-eslint/parser",
parserOptions: {
ecmaVersion: "latest",
sourceType: "module",
},
plugins: ["@typescript-eslint"],
rules: {
indent: ["error", 4, { SwitchCase: 1 }],
"linebreak-style": ["error", "unix"],
quotes: ["warn", "double"],
semi: ["error", "never"],
"no-unused-vars": "off",
"prefer-const": "warn",
"no-var": "error",
"no-multiple-empty-lines": ["error", { max: 2, maxEOF: 1, maxBOF: 0 }],
"no-lonely-if": "error",
"no-empty-function": "error",
"no-inline-comments": "error",
"no-trailing-spaces": ["error"],
"arrow-spacing": ["warn", { before: true, after: true }],
"space-before-function-paren": [
"error",
{
anonymous: "never",
named: "never",
asyncArrow: "always",
},
],
"comma-spacing": "error",
"@typescript-eslint/no-var-requires": "off",
"@typescript-eslint/no-explicit-any": "off",
"@typescript-eslint/no-unused-vars": [
"warn",
{
vars: "all",
args: "after-used",
ignoreRestSiblings: false,
},
],
},
}

View File

@@ -21,8 +21,8 @@
"dev:js": "nodemon --config .nodemon/js.json dist/index.js", "dev:js": "nodemon --config .nodemon/js.json dist/index.js",
"fmt": "dprint fmt \"**/*.ts\"", "fmt": "dprint fmt \"**/*.ts\"",
"check": "pnpm tscheck && pnpm lint", "check": "pnpm tscheck && pnpm lint",
"tscheck": "tsc && echo \"TypeScript check passed!\"", "tscheck": "tsc",
"lint": "eslint && echo \"Linting passed!\"", "lint": "eslint",
"lint:fix": "eslint --fix", "lint:fix": "eslint --fix",
"db:generate": "drizzle-kit generate", "db:generate": "drizzle-kit generate",
"db:migrate": "drizzle-kit migrate", "db:migrate": "drizzle-kit migrate",
@@ -44,34 +44,34 @@
"chalk": "^5.3.0", "chalk": "^5.3.0",
"cron": "^3.1.7", "cron": "^3.1.7",
"discord-player": "^6.7.1", "discord-player": "^6.7.1",
"discord-player-youtubei": "^1.3.2", "discord-player-youtubei": "^1.3.3",
"discord.js": "^14.16.3", "discord.js": "^14.16.3",
"drizzle-orm": "^0.34.1", "drizzle-orm": "^0.35.3",
"ioredis": "^5.4.1", "ioredis": "^5.4.1",
"ms": "^2.1.3", "ms": "^2.1.3",
"postgres": "^3.4.4", "postgres": "^3.4.5",
"pretty-ms": "^9.1.0" "pretty-ms": "^9.1.0"
}, },
"devDependencies": { "devDependencies": {
"@eslint/eslintrc": "^3.1.0", "@eslint/eslintrc": "^3.1.0",
"@eslint/js": "^9.12.0", "@eslint/js": "^9.13.0",
"@swc/cli": "^0.4.0", "@swc/cli": "^0.4.0",
"@swc/core": "^1.7.35", "@swc/core": "^1.7.40",
"@types/ms": "^0.7.34", "@types/ms": "^0.7.34",
"@types/node": "^22.7.5", "@types/node": "^22.8.1",
"@typescript-eslint/eslint-plugin": "^8.8.1", "@typescript-eslint/eslint-plugin": "^8.11.0",
"@typescript-eslint/parser": "^8.8.1", "@typescript-eslint/parser": "^8.11.0",
"chokidar": "^4.0.1", "chokidar": "^4.0.1",
"dotenv": "^16.4.5", "dotenv": "^16.4.5",
"dprint": "^0.47.2", "dprint": "^0.47.5",
"drizzle-kit": "^0.25.0", "drizzle-kit": "^0.26.2",
"eslint": "^9.12.0", "eslint": "^9.13.0",
"eslint-plugin-drizzle": "^0.2.3", "eslint-plugin-drizzle": "^0.2.3",
"globals": "^15.11.0", "globals": "^15.11.0",
"tsx": "^4.19.1", "tsx": "^4.19.2",
"typescript": "^5.6.3" "typescript": "^5.6.3"
}, },
"packageManager": "pnpm@9.12.1+sha512.e5a7e52a4183a02d5931057f7a0dbff9d5e9ce3161e33fa68ae392125b79282a8a8a470a51dfc8a0ed86221442eb2fb57019b0990ed24fab519bf0e1bc5ccfc4", "packageManager": "pnpm@9.12.2+sha512.22721b3a11f81661ae1ec68ce1a7b879425a1ca5b991c975b074ac220b187ce56c708fe5db69f4c962c989452eee76c82877f4ee80f474cebd61ee13461b6228",
"pnpm": { "pnpm": {
"patchedDependencies": { "patchedDependencies": {
"whatwg-url@5.0.0": "patches/whatwg-url@5.0.0.patch", "whatwg-url@5.0.0": "patches/whatwg-url@5.0.0.patch",

418
pnpm-lock.yaml generated
View File

@@ -38,14 +38,14 @@ importers:
specifier: ^6.7.1 specifier: ^6.7.1
version: 6.7.1(@discord-player/extractor@4.5.1(encoding@0.1.13)) version: 6.7.1(@discord-player/extractor@4.5.1(encoding@0.1.13))
discord-player-youtubei: discord-player-youtubei:
specifier: ^1.3.2 specifier: ^1.3.3
version: 1.3.2 version: 1.3.3
discord.js: discord.js:
specifier: ^14.16.3 specifier: ^14.16.3
version: 14.16.3 version: 14.16.3
drizzle-orm: drizzle-orm:
specifier: ^0.34.1 specifier: ^0.35.3
version: 0.34.1(@types/pg@8.11.10)(pg@8.13.0)(postgres@3.4.4)(sqlite3@5.1.7) version: 0.35.3(@libsql/client-wasm@0.14.0)(@types/pg@8.11.10)(pg@8.13.0)(postgres@3.4.5)(sqlite3@5.1.7)
ioredis: ioredis:
specifier: ^5.4.1 specifier: ^5.4.1
version: 5.4.1 version: 5.4.1
@@ -53,8 +53,8 @@ importers:
specifier: ^2.1.3 specifier: ^2.1.3
version: 2.1.3 version: 2.1.3
postgres: postgres:
specifier: ^3.4.4 specifier: ^3.4.5
version: 3.4.4 version: 3.4.5
pretty-ms: pretty-ms:
specifier: ^9.1.0 specifier: ^9.1.0
version: 9.1.0 version: 9.1.0
@@ -63,26 +63,26 @@ importers:
specifier: ^3.1.0 specifier: ^3.1.0
version: 3.1.0 version: 3.1.0
'@eslint/js': '@eslint/js':
specifier: ^9.12.0 specifier: ^9.13.0
version: 9.12.0 version: 9.13.0
'@swc/cli': '@swc/cli':
specifier: ^0.4.0 specifier: ^0.4.0
version: 0.4.0(@swc/core@1.7.35)(chokidar@4.0.1) version: 0.4.0(@swc/core@1.7.40)(chokidar@4.0.1)
'@swc/core': '@swc/core':
specifier: ^1.7.35 specifier: ^1.7.40
version: 1.7.35 version: 1.7.40
'@types/ms': '@types/ms':
specifier: ^0.7.34 specifier: ^0.7.34
version: 0.7.34 version: 0.7.34
'@types/node': '@types/node':
specifier: ^22.7.5 specifier: ^22.8.1
version: 22.7.5 version: 22.8.1
'@typescript-eslint/eslint-plugin': '@typescript-eslint/eslint-plugin':
specifier: ^8.8.1 specifier: ^8.11.0
version: 8.8.1(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0)(typescript@5.6.3) version: 8.11.0(@typescript-eslint/parser@8.11.0(eslint@9.13.0)(typescript@5.6.3))(eslint@9.13.0)(typescript@5.6.3)
'@typescript-eslint/parser': '@typescript-eslint/parser':
specifier: ^8.8.1 specifier: ^8.11.0
version: 8.8.1(eslint@9.12.0)(typescript@5.6.3) version: 8.11.0(eslint@9.13.0)(typescript@5.6.3)
chokidar: chokidar:
specifier: ^4.0.1 specifier: ^4.0.1
version: 4.0.1 version: 4.0.1
@@ -90,23 +90,23 @@ importers:
specifier: ^16.4.5 specifier: ^16.4.5
version: 16.4.5 version: 16.4.5
dprint: dprint:
specifier: ^0.47.2 specifier: ^0.47.5
version: 0.47.2 version: 0.47.5
drizzle-kit: drizzle-kit:
specifier: ^0.25.0 specifier: ^0.26.2
version: 0.25.0 version: 0.26.2
eslint: eslint:
specifier: ^9.12.0 specifier: ^9.13.0
version: 9.12.0 version: 9.13.0
eslint-plugin-drizzle: eslint-plugin-drizzle:
specifier: ^0.2.3 specifier: ^0.2.3
version: 0.2.3(eslint@9.12.0) version: 0.2.3(eslint@9.13.0)
globals: globals:
specifier: ^15.11.0 specifier: ^15.11.0
version: 15.11.0 version: 15.11.0
tsx: tsx:
specifier: ^4.19.1 specifier: ^4.19.2
version: 4.19.1 version: 4.19.2
typescript: typescript:
specifier: ^5.6.3 specifier: ^5.6.3
version: 5.6.3 version: 5.6.3
@@ -159,43 +159,43 @@ packages:
resolution: {integrity: sha512-PZ+vLpxGCRtmr2RMkqh8Zp+BenUaJqlS6xhgWKEZcgC/vfHLEzpHtKkB0sl3nZWpwtcKk6YWy+pU3okL2I97FA==} resolution: {integrity: sha512-PZ+vLpxGCRtmr2RMkqh8Zp+BenUaJqlS6xhgWKEZcgC/vfHLEzpHtKkB0sl3nZWpwtcKk6YWy+pU3okL2I97FA==}
engines: {node: '>=16.11.0'} engines: {node: '>=16.11.0'}
'@dprint/darwin-arm64@0.47.2': '@dprint/darwin-arm64@0.47.5':
resolution: {integrity: sha512-mVPFBJsXxGDKHHCAY8wbqOyS4028g1bN15H9tivCnPAjwaZhkUimZHXWejXADjhGn+Xm2SlakugY9PY/68pH3Q==} resolution: {integrity: sha512-aVa3F//dkvEeNA7DCSlVcLxB0CV6zXpfbJZ/xsd+xgbayCXFuFr7qt0M6T4WP3gkQn5D7Zu8/pbXfRXQXo9qlQ==}
cpu: [arm64] cpu: [arm64]
os: [darwin] os: [darwin]
'@dprint/darwin-x64@0.47.2': '@dprint/darwin-x64@0.47.5':
resolution: {integrity: sha512-T7wzlc+rBV+6BRRiBjoqoy5Hj4TR2Nv2p2s9+ycyPGs10Kj/JXOWD8dnEHeBgUr2r4qe/ZdcxmsFQ5Hf2n0WuA==} resolution: {integrity: sha512-84lmSLM/idIQ4UBkBHU1chP0WTldRjzLOEN22/XbdB1JGOIVN1pJIIU0lsmVWXaNI4SvGfty+thhGn73SSlQwA==}
cpu: [x64] cpu: [x64]
os: [darwin] os: [darwin]
'@dprint/linux-arm64-glibc@0.47.2': '@dprint/linux-arm64-glibc@0.47.5':
resolution: {integrity: sha512-B0m1vT5LdVtrNOVdkqpLPrSxuCD+l5bTIgRzPaDoIB1ChWQkler9IlX8C+RStpujjPj6SYvwo5vTzjQSvRdQkA==} resolution: {integrity: sha512-Zk7Ut9Trgl2ssGWx0u3YegnRQFXivKaK1fPEimg/uMwdaLtWFGvNs6DACAJk34d883zmDkTQvllqY1kc78CeBg==}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
'@dprint/linux-arm64-musl@0.47.2': '@dprint/linux-arm64-musl@0.47.5':
resolution: {integrity: sha512-zID6wZZqpg2/Q2Us+ERQkbhLwlW3p3xaeEr00MPf49bpydmEjMiPuSjWPkNv+slQSIyIsVovOxF4lbNZjsdtvw==} resolution: {integrity: sha512-KmCu1yX5+/2MbT9n0iAgSK1gc6sQBcDayq8QRO7TRSs+gTDAZ/yQXHkhLdlk5fWsTR1mDQPVRG+2nAjHDhk8EA==}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
'@dprint/linux-x64-glibc@0.47.2': '@dprint/linux-x64-glibc@0.47.5':
resolution: {integrity: sha512-rB3WXMdINnRd33DItIp7mObS7dzHW90ZzeJSsoKJLPp+Z7wXjjb27UUowfqVI4baa/1pd7sdbX54DPohMtfu/A==} resolution: {integrity: sha512-oBwENMikvcM+eT6JdliMIM+TOiV4VuBJGK+AN1sTOW45VeiYvmzGPOQwCxVeFq4MnZkMfrycC/PAY3C7Vcuh6w==}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
'@dprint/linux-x64-musl@0.47.2': '@dprint/linux-x64-musl@0.47.5':
resolution: {integrity: sha512-E0+TNbzYdTXJ/jCVjUctVxkda/faw++aDQLfyWGcmdMJnbM7NZz+W4fUpDXzMPsjy+zTWxXcPK7/q2DZz2gnbg==} resolution: {integrity: sha512-B1IGyaP0k25JDhqmR/UpvgyNtnclBoXV7ZNQbvygehBkTeC69afwzpUxjQ2pKj2F9bl1Rby//fhsAFOg60PzsA==}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
'@dprint/win32-arm64@0.47.2': '@dprint/win32-arm64@0.47.5':
resolution: {integrity: sha512-K1EieTCFjfOCmyIhw9zFSduE6qVCNHEveupqZEfbSkVGw5T9MJQ1I9+n7MDb3RIDYEUk0enJ58/w82q8oDKCyA==} resolution: {integrity: sha512-tKSPwGWsKc+QAdsx6UQav9AY8WXm+B5Mx23ujliJJMRss6Dnlmg17NjbAnSBSqXSrfqaMeQx6d4gujPpOS3F9A==}
cpu: [arm64] cpu: [arm64]
os: [win32] os: [win32]
'@dprint/win32-x64@0.47.2': '@dprint/win32-x64@0.47.5':
resolution: {integrity: sha512-LhizWr8VrhHvq4ump8HwOERyFmdLiE8C6A42QSntGXzKdaa2nEOq20x/o56ZIiDcesiV+1TmosMKimPcOZHa+Q==} resolution: {integrity: sha512-ljbrGv5rDR00ziBFY6V+qLhtLHm2dsjgiFG9OU7kr3vHEj4eN31nwxU5W2mh0eMoRk7IbcJ5ahTJDLgoYdvfgw==}
cpu: [x64] cpu: [x64]
os: [win32] os: [win32]
@@ -638,16 +638,16 @@ packages:
resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/core@0.6.0': '@eslint/core@0.7.0':
resolution: {integrity: sha512-8I2Q8ykA4J0x0o7cg67FPVnehcqWTBehu/lmY+bolPFHGjh49YzGBMXTvpqVgEbBdvNCSxj6iFgiIyHzf03lzg==} resolution: {integrity: sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/eslintrc@3.1.0': '@eslint/eslintrc@3.1.0':
resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/js@9.12.0': '@eslint/js@9.13.0':
resolution: {integrity: sha512-eohesHH8WFRUprDNyEREgqP6beG6htMeUYeCpkEgBCieCMme5r9zFWjzAJp//9S+Kub4rqE+jXe9Cp1a7IYIIA==} resolution: {integrity: sha512-IFLyoY4d72Z5y/6o/BazFBezupzI/taV8sGumxTAVw3lXG9A6md1Dc34T9s1FoD/an9pJH8RHbAxsaEbBed9lA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@eslint/object-schema@2.1.4': '@eslint/object-schema@2.1.4':
@@ -687,6 +687,14 @@ packages:
'@ioredis/commands@1.2.0': '@ioredis/commands@1.2.0':
resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==} resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==}
'@libsql/client-wasm@0.14.0':
resolution: {integrity: sha512-gB/jtz0xuwrqAHApBv9e9JSew2030Fhj2edyZ83InZ4yPj/Q2LTUlEhaspEYT0T0xsAGqPy38uGrmq/OGS+DdQ==}
bundledDependencies:
- '@libsql/libsql-wasm-experimental'
'@libsql/core@0.14.0':
resolution: {integrity: sha512-nhbuXf7GP3PSZgdCY2Ecj8vz187ptHlZQ0VRc751oB2C1W8jQUXKKklvt7t1LJiUTQBVJuadF628eUk+3cRi4Q==}
'@mole-inc/bin-wrapper@8.0.1': '@mole-inc/bin-wrapper@8.0.1':
resolution: {integrity: sha512-sTGoeZnjI8N4KS+sW2AN95gDBErhAguvkw/tWdCjeM8bvxpz5lqrnd0vOJABA1A+Ic3zED7PYoLP/RANLgVotA==} resolution: {integrity: sha512-sTGoeZnjI8N4KS+sW2AN95gDBErhAguvkw/tWdCjeM8bvxpz5lqrnd0vOJABA1A+Ic3zED7PYoLP/RANLgVotA==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -838,68 +846,68 @@ packages:
chokidar: chokidar:
optional: true optional: true
'@swc/core-darwin-arm64@1.7.35': '@swc/core-darwin-arm64@1.7.40':
resolution: {integrity: sha512-BQSSozVxjxS+SVQz6e3GC/+OBWGIK3jfe52pWdANmycdjF3ch7lrCKTHTU7eHwyoJ96mofszPf5AsiVJF34Fwg==} resolution: {integrity: sha512-LRRrCiRJLb1kpQtxMNNsr5W82Inr0dy5Imho+4HQzVx/Ismi0qX4hQBgzJAnyOBNLK1+OBVb/912UVhKXppdfQ==}
engines: {node: '>=10'} engines: {node: '>=10'}
cpu: [arm64] cpu: [arm64]
os: [darwin] os: [darwin]
'@swc/core-darwin-x64@1.7.35': '@swc/core-darwin-x64@1.7.40':
resolution: {integrity: sha512-44TYdKN/EWtkU88foXR7IGki9JzhEJzaFOoPevfi9Xe7hjAD/x2+AJOWWqQNzDPMz9+QewLdUVLyR6s5okRgtg==} resolution: {integrity: sha512-Lpl0XK/4fLzS5jsK48opUuGXrqJXwqJckYYPwyGbCfCXm4MsBe+7dX2hq/Kc4YMY25+NeTmzAXhla8TT4WYD/g==}
engines: {node: '>=10'} engines: {node: '>=10'}
cpu: [x64] cpu: [x64]
os: [darwin] os: [darwin]
'@swc/core-linux-arm-gnueabihf@1.7.35': '@swc/core-linux-arm-gnueabihf@1.7.40':
resolution: {integrity: sha512-ccfA5h3zxwioD+/z/AmYtkwtKz9m4rWTV7RoHq6Jfsb0cXHrd6tbcvgqRWXra1kASlE+cDWsMtEZygs9dJRtUQ==} resolution: {integrity: sha512-4bEvvjptpoc5BRPr/R419h6fXTEuub+frpxxlxBOEKxgXjAF/S3xdxyPijUAakmW/xXBF0u7OC4KYI+38yQp6g==}
engines: {node: '>=10'} engines: {node: '>=10'}
cpu: [arm] cpu: [arm]
os: [linux] os: [linux]
'@swc/core-linux-arm64-gnu@1.7.35': '@swc/core-linux-arm64-gnu@1.7.40':
resolution: {integrity: sha512-hx65Qz+G4iG/IVtxJKewC5SJdki8PAPFGl6gC/57Jb0+jA4BIoGLD/J3Q3rCPeoHfdqpkCYpahtyUq8CKx41Jg==} resolution: {integrity: sha512-v2fBlHJ/6Ovz0L2xFAI9TRiKyl9DTdx139PuAHD9gyzp16Utl/W0MPd4t2cYdkI6hPXE9PsJCSzMOrduh+YoDg==}
engines: {node: '>=10'} engines: {node: '>=10'}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
'@swc/core-linux-arm64-musl@1.7.35': '@swc/core-linux-arm64-musl@1.7.40':
resolution: {integrity: sha512-kL6tQL9No7UEoEvDRuPxzPTpxrvbwYteNRbdChSSP74j13/55G2/2hLmult5yFFaWuyoyU/2lvzjRL/i8OLZxg==} resolution: {integrity: sha512-uMkduQuU4LFVkW6txv8AVArT8GjJVJ5IHoWloXaUBMT447iE8NALmpePdZWhMyj6KV7j0y23CM5rzV/I2eNGLg==}
engines: {node: '>=10'} engines: {node: '>=10'}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
'@swc/core-linux-x64-gnu@1.7.35': '@swc/core-linux-x64-gnu@1.7.40':
resolution: {integrity: sha512-Ke4rcLQSwCQ2LHdJX1FtnqmYNQ3IX6BddKlUtS7mcK13IHkQzZWp0Dcu6MgNA3twzb/dBpKX5GLy07XdGgfmyw==} resolution: {integrity: sha512-4LZdY1MBSnXyTpW5fpBU/+JGAhkuHT+VnFTDNegRboN5nSPh7y0Yvn4LmIioESV+sWzjKkEXujJPGjrp+oSp5w==}
engines: {node: '>=10'} engines: {node: '>=10'}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
'@swc/core-linux-x64-musl@1.7.35': '@swc/core-linux-x64-musl@1.7.40':
resolution: {integrity: sha512-T30tlLnz0kYyDFyO5RQF5EQ4ENjW9+b56hEGgFUYmfhFhGA4E4V67iEx7KIG4u0whdPG7oy3qjyyIeTb7nElEw==} resolution: {integrity: sha512-FPjOwT3SgI6PAwH1O8bhOGBPzuvzOlzKeCtxLaCjruHJu9V8KKBrMTWOZT/FJyYC9mX5Ip1+l9j30UqUZdQxtA==}
engines: {node: '>=10'} engines: {node: '>=10'}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
'@swc/core-win32-arm64-msvc@1.7.35': '@swc/core-win32-arm64-msvc@1.7.40':
resolution: {integrity: sha512-CfM/k8mvtuMyX+okRhemfLt784PLS0KF7Q9djA8/Dtavk0L5Ghnq+XsGltO3d8B8+XZ7YOITsB14CrjehzeHsg==} resolution: {integrity: sha512-//ovXdD9GsTmhPmXJlXnIbRQkeuL6PSrYSr7uCMNcclrUdJG0YkO0GMM2afUKYbdJcunylDDWsSS8PFWn0QxmA==}
engines: {node: '>=10'} engines: {node: '>=10'}
cpu: [arm64] cpu: [arm64]
os: [win32] os: [win32]
'@swc/core-win32-ia32-msvc@1.7.35': '@swc/core-win32-ia32-msvc@1.7.40':
resolution: {integrity: sha512-ATB3uuH8j/RmS64EXQZJSbo2WXfRNpTnQszHME/sGaexsuxeijrp3DTYSFAA3R2Bu6HbIIX6jempe1Au8I3j+A==} resolution: {integrity: sha512-iD/1auVhHGlhWAPrWmfRWL3w4AvXIWGVXZiSA109/xnRIPiHKb/HqqTp/qB94E/ZHMPRgLKkLTNwamlkueUs8g==}
engines: {node: '>=10'} engines: {node: '>=10'}
cpu: [ia32] cpu: [ia32]
os: [win32] os: [win32]
'@swc/core-win32-x64-msvc@1.7.35': '@swc/core-win32-x64-msvc@1.7.40':
resolution: {integrity: sha512-iDGfQO1571NqWUXtLYDhwIELA/wadH42ioGn+J9R336nWx40YICzy9UQyslWRhqzhQ5kT+QXAW/MoCWc058N6Q==} resolution: {integrity: sha512-ZlFAV1WFPhhWQ/8esiygmetkb905XIcMMtHRRG0FBGCllO+HVL5nikUaLDgTClz1onmEY9sMXUFQeoPtvliV+w==}
engines: {node: '>=10'} engines: {node: '>=10'}
cpu: [x64] cpu: [x64]
os: [win32] os: [win32]
'@swc/core@1.7.35': '@swc/core@1.7.40':
resolution: {integrity: sha512-3cUteCTbr2r5jqfgx0r091sfq5Mgh6F1SQh8XAOnSvtKzwv2bC31mvBHVAieD1uPa2kHJhLav20DQgXOhpEitw==} resolution: {integrity: sha512-0HIzM5vigVT5IvNum+pPuST9p8xFhN6mhdIKju7qYYeNuZG78lwms/2d8WgjTJJlzp6JlPguXGrMMNzjQw0qNg==}
engines: {node: '>=10'} engines: {node: '>=10'}
peerDependencies: peerDependencies:
'@swc/helpers': '*' '@swc/helpers': '*'
@@ -945,8 +953,8 @@ packages:
'@types/ms@0.7.34': '@types/ms@0.7.34':
resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==}
'@types/node@22.7.5': '@types/node@22.8.1':
resolution: {integrity: sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==} resolution: {integrity: sha512-k6Gi8Yyo8EtrNtkHXutUu2corfDf9su95VYVP10aGYMMROM6SAItZi0w1XszA6RtWTHSVp5OeFof37w0IEqCQg==}
'@types/pg@8.11.10': '@types/pg@8.11.10':
resolution: {integrity: sha512-LczQUW4dbOQzsH2RQ5qoeJ6qJPdrcM/DcMLoqWQkMLMsq83J5lAX3LXjdkWdpscFy67JSOWDnh7Ny/sPFykmkg==} resolution: {integrity: sha512-LczQUW4dbOQzsH2RQ5qoeJ6qJPdrcM/DcMLoqWQkMLMsq83J5lAX3LXjdkWdpscFy67JSOWDnh7Ny/sPFykmkg==}
@@ -957,8 +965,8 @@ packages:
'@types/ws@8.5.12': '@types/ws@8.5.12':
resolution: {integrity: sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==} resolution: {integrity: sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==}
'@typescript-eslint/eslint-plugin@8.8.1': '@typescript-eslint/eslint-plugin@8.11.0':
resolution: {integrity: sha512-xfvdgA8AP/vxHgtgU310+WBnLB4uJQ9XdyP17RebG26rLtDrQJV3ZYrcopX91GrHmMoH8bdSwMRh2a//TiJ1jQ==} resolution: {integrity: sha512-KhGn2LjW1PJT2A/GfDpiyOfS4a8xHQv2myUagTM5+zsormOmBlYsnQ6pobJ8XxJmh6hnHwa2Mbe3fPrDJoDhbA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies: peerDependencies:
'@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0
@@ -968,8 +976,8 @@ packages:
typescript: typescript:
optional: true optional: true
'@typescript-eslint/parser@8.8.1': '@typescript-eslint/parser@8.11.0':
resolution: {integrity: sha512-hQUVn2Lij2NAxVFEdvIGxT9gP1tq2yM83m+by3whWFsWC+1y8pxxxHUFE1UqDu2VsGi2i6RLcv4QvouM84U+ow==} resolution: {integrity: sha512-lmt73NeHdy1Q/2ul295Qy3uninSqi6wQI18XwSpm8w0ZbQXUpjCAWP1Vlv/obudoBiIjJVjlztjQ+d/Md98Yxg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies: peerDependencies:
eslint: ^8.57.0 || ^9.0.0 eslint: ^8.57.0 || ^9.0.0
@@ -978,12 +986,12 @@ packages:
typescript: typescript:
optional: true optional: true
'@typescript-eslint/scope-manager@8.8.1': '@typescript-eslint/scope-manager@8.11.0':
resolution: {integrity: sha512-X4JdU+66Mazev/J0gfXlcC/dV6JI37h+93W9BRYXrSn0hrE64IoWgVkO9MSJgEzoWkxONgaQpICWg8vAN74wlA==} resolution: {integrity: sha512-Uholz7tWhXmA4r6epo+vaeV7yjdKy5QFCERMjs1kMVsLRKIrSdM6o21W2He9ftp5PP6aWOVpD5zvrvuHZC0bMQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@typescript-eslint/type-utils@8.8.1': '@typescript-eslint/type-utils@8.11.0':
resolution: {integrity: sha512-qSVnpcbLP8CALORf0za+vjLYj1Wp8HSoiI8zYU5tHxRVj30702Z1Yw4cLwfNKhTPWp5+P+k1pjmD5Zd1nhxiZA==} resolution: {integrity: sha512-ItiMfJS6pQU0NIKAaybBKkuVzo6IdnAhPFZA/2Mba/uBjuPQPet/8+zh5GtLHwmuFRShZx+8lhIs7/QeDHflOg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies: peerDependencies:
typescript: '*' typescript: '*'
@@ -991,12 +999,12 @@ packages:
typescript: typescript:
optional: true optional: true
'@typescript-eslint/types@8.8.1': '@typescript-eslint/types@8.11.0':
resolution: {integrity: sha512-WCcTP4SDXzMd23N27u66zTKMuEevH4uzU8C9jf0RO4E04yVHgQgW+r+TeVTNnO1KIfrL8ebgVVYYMMO3+jC55Q==} resolution: {integrity: sha512-tn6sNMHf6EBAYMvmPUaKaVeYvhUsrE6x+bXQTxjQRp360h1giATU0WvgeEys1spbvb5R+VpNOZ+XJmjD8wOUHw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@typescript-eslint/typescript-estree@8.8.1': '@typescript-eslint/typescript-estree@8.11.0':
resolution: {integrity: sha512-A5d1R9p+X+1js4JogdNilDuuq+EHZdsH9MjTVxXOdVFfTJXunKJR/v+fNNyO4TnoOn5HqobzfRlc70NC6HTcdg==} resolution: {integrity: sha512-yHC3s1z1RCHoCz5t06gf7jH24rr3vns08XXhfEqzYpd6Hll3z/3g23JRi0jM8A47UFKNc3u/y5KIMx8Ynbjohg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies: peerDependencies:
typescript: '*' typescript: '*'
@@ -1004,14 +1012,14 @@ packages:
typescript: typescript:
optional: true optional: true
'@typescript-eslint/utils@8.8.1': '@typescript-eslint/utils@8.11.0':
resolution: {integrity: sha512-/QkNJDbV0bdL7H7d0/y0qBbV2HTtf0TIyjSDTvvmQEzeVx8jEImEbLuOA4EsvE8gIgqMitns0ifb5uQhMj8d9w==} resolution: {integrity: sha512-CYiX6WZcbXNJV7UNB4PLDIBtSdRmRI/nb0FMyqHPTQD1rMjA0foPLaPUV39C/MxkTd/QKSeX+Gb34PPsDVC35g==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
peerDependencies: peerDependencies:
eslint: ^8.57.0 || ^9.0.0 eslint: ^8.57.0 || ^9.0.0
'@typescript-eslint/visitor-keys@8.8.1': '@typescript-eslint/visitor-keys@8.11.0':
resolution: {integrity: sha512-0/TdC3aeRAsW7MDvYRwEc1Uwm0TIBfzjPFgg60UU2Haj5qsCs9cc3zNgY71edqE3LbWfF/WoZQd3lJoDXFQpag==} resolution: {integrity: sha512-EaewX6lxSjRJnc+99+dqzTeoDZUfyrA52d2/HRrkI830kgovWsmIiTfmr0NZorzqic7ga+1bS60lRBUgR3n/Bw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
'@vladfrangu/async_event_emitter@2.4.6': '@vladfrangu/async_event_emitter@2.4.6':
@@ -1272,8 +1280,8 @@ packages:
discord-api-types@0.37.97: discord-api-types@0.37.97:
resolution: {integrity: sha512-No1BXPcVkyVD4ZVmbNgDKaBoqgeQ+FJpzZ8wqHkfmBnTZig1FcH3iPPersiK1TUIAzgClh2IvOuVUYfcWLQAOA==} resolution: {integrity: sha512-No1BXPcVkyVD4ZVmbNgDKaBoqgeQ+FJpzZ8wqHkfmBnTZig1FcH3iPPersiK1TUIAzgClh2IvOuVUYfcWLQAOA==}
discord-player-youtubei@1.3.2: discord-player-youtubei@1.3.3:
resolution: {integrity: sha512-NtKtLiR9HMYfTDXYvBeQCE+k3eegjB+ttaBq7gYdldIghBZ4fYHb0ERsAcY6lN4bQyAq0DaPFRIRbyk9Pi0TSg==} resolution: {integrity: sha512-upjLdAO57R3LzoX4SzyCAhLngrRuyiG+3zWBIFKi17h+S/FT8Ys/FuNW71pyvtbH/gpG3GhLlzzoHkm+9u6v4Q==}
hasBin: true hasBin: true
discord-player@6.7.1: discord-player@6.7.1:
@@ -1306,21 +1314,22 @@ packages:
resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==}
engines: {node: '>=12'} engines: {node: '>=12'}
dprint@0.47.2: dprint@0.47.5:
resolution: {integrity: sha512-geUcVIIrmLaY+YtuOl4gD7J/QCjsXZa5gUqre9sO6cgH0X/Fa9heBN3l/AWVII6rKPw45ATuCSDWz1pyO+HkPQ==} resolution: {integrity: sha512-EAP3OLYZXiW66HKMlhu6Gu0o7mzBVTWyMyuAAgT7dBtMX+W+pPJmIwyRUnTRQNyyFO4S7bAaa21rzIgo97Bg9A==}
hasBin: true hasBin: true
drizzle-kit@0.25.0: drizzle-kit@0.26.2:
resolution: {integrity: sha512-Rcf0nYCAKizwjWQCY+d3zytyuTbDb81NcaPor+8NebESlUz1+9W3uGl0+r9FhU4Qal5Zv9j/7neXCSCe7DHzjA==} resolution: {integrity: sha512-cMq8omEKywjIy5KcqUo6LvEFxkl8/zYHsgYjFVXjmPWWtuW4blcz+YW9+oIhoaALgs2ebRjzXwsJgN9i6P49Dw==}
hasBin: true hasBin: true
drizzle-orm@0.34.1: drizzle-orm@0.35.3:
resolution: {integrity: sha512-t+zCwyWWt8xTqtYV4doE/xYmT7hpv1L8pQ66zddEz+3VWyedBBtctjMAp22mAJPfyWurRQXUJ1nrTtqLq+DqNA==} resolution: {integrity: sha512-Uv6N+b36x4BaZlxc96e+ag7RnMapBLGhc4SSi2F7RDwqYJipWjaU/P68RUp1FbW9r+mxoDp8nMz2Eece8PJxfA==}
peerDependencies: peerDependencies:
'@aws-sdk/client-rds-data': '>=3' '@aws-sdk/client-rds-data': '>=3'
'@cloudflare/workers-types': '>=3' '@cloudflare/workers-types': '>=3'
'@electric-sql/pglite': '>=0.1.1' '@electric-sql/pglite': '>=0.1.1'
'@libsql/client': '>=0.10.0' '@libsql/client': '>=0.10.0'
'@libsql/client-wasm': '>=0.10.0'
'@neondatabase/serverless': '>=0.1' '@neondatabase/serverless': '>=0.1'
'@op-engineering/op-sqlite': '>=2' '@op-engineering/op-sqlite': '>=2'
'@opentelemetry/api': ^1.4.1 '@opentelemetry/api': ^1.4.1
@@ -1472,8 +1481,8 @@ packages:
resolution: {integrity: sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==} resolution: {integrity: sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
eslint@9.12.0: eslint@9.13.0:
resolution: {integrity: sha512-UVIOlTEWxwIopRL1wgSQYdnVDcEvs2wyaO6DGo5mXqe3r16IoCNWkR29iHhyaP4cICWjbgbmFUGAhh0GJRuGZw==} resolution: {integrity: sha512-EYZK6SX6zjFHST/HRytOdA/zE72Cq/bfw45LSyuwrdvcclb/gqV8RRQxywOBEWO2+WDpva6UZa4CcDeJKzUCFA==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
@@ -1800,6 +1809,9 @@ packages:
jintr@2.1.1: jintr@2.1.1:
resolution: {integrity: sha512-89cwX4ouogeDGOBsEVsVYsnWWvWjchmwXBB4kiBhmjOKw19FiOKhNhMhpxhTlK2ctl7DS+d/ethfmuBpzoNNgA==} resolution: {integrity: sha512-89cwX4ouogeDGOBsEVsVYsnWWvWjchmwXBB4kiBhmjOKw19FiOKhNhMhpxhTlK2ctl7DS+d/ethfmuBpzoNNgA==}
js-base64@3.7.7:
resolution: {integrity: sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==}
js-yaml@4.1.0: js-yaml@4.1.0:
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
hasBin: true hasBin: true
@@ -2183,8 +2195,8 @@ packages:
postgres-range@1.1.4: postgres-range@1.1.4:
resolution: {integrity: sha512-i/hbxIE9803Alj/6ytL7UHQxRvZkI9O4Sy+J3HGc4F4oo/2eQAjTSNJ0bfxyse3bH0nuVesCk+3IRLaMtG3H6w==} resolution: {integrity: sha512-i/hbxIE9803Alj/6ytL7UHQxRvZkI9O4Sy+J3HGc4F4oo/2eQAjTSNJ0bfxyse3bH0nuVesCk+3IRLaMtG3H6w==}
postgres@3.4.4: postgres@3.4.5:
resolution: {integrity: sha512-IbyN+9KslkqcXa8AO9fxpk97PA4pzewvpi2B3Dwy9u4zpV32QicaEdgmF3eSQUzdRk7ttDHQejNgAEr4XoeH4A==} resolution: {integrity: sha512-cDWgoah1Gez9rN3H4165peY9qfpEo+SA61oQv65O3cRUE1pOEoJWwddwcqKE8XZYjbblOJlYDlLV4h67HrEVDg==}
engines: {node: '>=12'} engines: {node: '>=12'}
prebuild-install@7.1.2: prebuild-install@7.1.2:
@@ -2506,8 +2518,8 @@ packages:
tslib@2.7.0: tslib@2.7.0:
resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==}
tsx@4.19.1: tsx@4.19.2:
resolution: {integrity: sha512-0flMz1lh74BR4wOvBjuh9olbnwqCPc35OOlfyzHba0Dc+QNUeWX/Gq2YTbnwcWPO3BMd8fkzRVrHcsR+a7z7rA==} resolution: {integrity: sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g==}
engines: {node: '>=18.0.0'} engines: {node: '>=18.0.0'}
hasBin: true hasBin: true
@@ -2534,6 +2546,10 @@ packages:
resolution: {integrity: sha512-U8uCCl2x9TK3WANvmBavymRzxbfFYG+tAu+fgx3zxQy3qdagQqBLwJVrdyO1TBfUXvfKveMKJZhpvUYoOjM+4g==} resolution: {integrity: sha512-U8uCCl2x9TK3WANvmBavymRzxbfFYG+tAu+fgx3zxQy3qdagQqBLwJVrdyO1TBfUXvfKveMKJZhpvUYoOjM+4g==}
engines: {node: '>=18.17'} engines: {node: '>=18.17'}
undici@6.20.1:
resolution: {integrity: sha512-AjQF1QsmqfJys+LXfGTNum+qw4S88CojRInG/6t31W/1fk6G59s92bnAvGz5Cmur+kQv2SURXEvvudLmbrE8QA==}
engines: {node: '>=18.17'}
unfetch@5.0.0: unfetch@5.0.0:
resolution: {integrity: sha512-3xM2c89siXg0nHvlmYsQ2zkLASvVMBisZm5lF3gFDqfF2xonNStDJyMpvaOBe0a1Edxmqrf2E0HBdmy9QyZaeg==} resolution: {integrity: sha512-3xM2c89siXg0nHvlmYsQ2zkLASvVMBisZm5lF3gFDqfF2xonNStDJyMpvaOBe0a1Edxmqrf2E0HBdmy9QyZaeg==}
@@ -2684,28 +2700,28 @@ snapshots:
- bufferutil - bufferutil
- utf-8-validate - utf-8-validate
'@dprint/darwin-arm64@0.47.2': '@dprint/darwin-arm64@0.47.5':
optional: true optional: true
'@dprint/darwin-x64@0.47.2': '@dprint/darwin-x64@0.47.5':
optional: true optional: true
'@dprint/linux-arm64-glibc@0.47.2': '@dprint/linux-arm64-glibc@0.47.5':
optional: true optional: true
'@dprint/linux-arm64-musl@0.47.2': '@dprint/linux-arm64-musl@0.47.5':
optional: true optional: true
'@dprint/linux-x64-glibc@0.47.2': '@dprint/linux-x64-glibc@0.47.5':
optional: true optional: true
'@dprint/linux-x64-musl@0.47.2': '@dprint/linux-x64-musl@0.47.5':
optional: true optional: true
'@dprint/win32-arm64@0.47.2': '@dprint/win32-arm64@0.47.5':
optional: true optional: true
'@dprint/win32-x64@0.47.2': '@dprint/win32-x64@0.47.5':
optional: true optional: true
'@drizzle-team/brocli@0.10.1': {} '@drizzle-team/brocli@0.10.1': {}
@@ -2927,9 +2943,9 @@ snapshots:
'@esbuild/win32-x64@0.23.1': '@esbuild/win32-x64@0.23.1':
optional: true optional: true
'@eslint-community/eslint-utils@4.4.0(eslint@9.12.0)': '@eslint-community/eslint-utils@4.4.0(eslint@9.13.0)':
dependencies: dependencies:
eslint: 9.12.0 eslint: 9.13.0
eslint-visitor-keys: 3.4.3 eslint-visitor-keys: 3.4.3
'@eslint-community/regexpp@4.11.1': {} '@eslint-community/regexpp@4.11.1': {}
@@ -2942,7 +2958,7 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@eslint/core@0.6.0': {} '@eslint/core@0.7.0': {}
'@eslint/eslintrc@3.1.0': '@eslint/eslintrc@3.1.0':
dependencies: dependencies:
@@ -2958,7 +2974,7 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@eslint/js@9.12.0': {} '@eslint/js@9.13.0': {}
'@eslint/object-schema@2.1.4': {} '@eslint/object-schema@2.1.4': {}
@@ -2986,6 +3002,15 @@ snapshots:
'@ioredis/commands@1.2.0': {} '@ioredis/commands@1.2.0': {}
'@libsql/client-wasm@0.14.0':
dependencies:
'@libsql/core': 0.14.0
js-base64: 3.7.7
'@libsql/core@0.14.0':
dependencies:
js-base64: 3.7.7
'@mole-inc/bin-wrapper@8.0.1': '@mole-inc/bin-wrapper@8.0.1':
dependencies: dependencies:
bin-check: 4.1.0 bin-check: 4.1.0
@@ -3100,10 +3125,10 @@ snapshots:
'@sindresorhus/is@4.6.0': {} '@sindresorhus/is@4.6.0': {}
'@swc/cli@0.4.0(@swc/core@1.7.35)(chokidar@4.0.1)': '@swc/cli@0.4.0(@swc/core@1.7.40)(chokidar@4.0.1)':
dependencies: dependencies:
'@mole-inc/bin-wrapper': 8.0.1 '@mole-inc/bin-wrapper': 8.0.1
'@swc/core': 1.7.35 '@swc/core': 1.7.40
'@swc/counter': 0.1.3 '@swc/counter': 0.1.3
commander: 8.3.0 commander: 8.3.0
fast-glob: 3.3.2 fast-glob: 3.3.2
@@ -3115,51 +3140,51 @@ snapshots:
optionalDependencies: optionalDependencies:
chokidar: 4.0.1 chokidar: 4.0.1
'@swc/core-darwin-arm64@1.7.35': '@swc/core-darwin-arm64@1.7.40':
optional: true optional: true
'@swc/core-darwin-x64@1.7.35': '@swc/core-darwin-x64@1.7.40':
optional: true optional: true
'@swc/core-linux-arm-gnueabihf@1.7.35': '@swc/core-linux-arm-gnueabihf@1.7.40':
optional: true optional: true
'@swc/core-linux-arm64-gnu@1.7.35': '@swc/core-linux-arm64-gnu@1.7.40':
optional: true optional: true
'@swc/core-linux-arm64-musl@1.7.35': '@swc/core-linux-arm64-musl@1.7.40':
optional: true optional: true
'@swc/core-linux-x64-gnu@1.7.35': '@swc/core-linux-x64-gnu@1.7.40':
optional: true optional: true
'@swc/core-linux-x64-musl@1.7.35': '@swc/core-linux-x64-musl@1.7.40':
optional: true optional: true
'@swc/core-win32-arm64-msvc@1.7.35': '@swc/core-win32-arm64-msvc@1.7.40':
optional: true optional: true
'@swc/core-win32-ia32-msvc@1.7.35': '@swc/core-win32-ia32-msvc@1.7.40':
optional: true optional: true
'@swc/core-win32-x64-msvc@1.7.35': '@swc/core-win32-x64-msvc@1.7.40':
optional: true optional: true
'@swc/core@1.7.35': '@swc/core@1.7.40':
dependencies: dependencies:
'@swc/counter': 0.1.3 '@swc/counter': 0.1.3
'@swc/types': 0.1.13 '@swc/types': 0.1.13
optionalDependencies: optionalDependencies:
'@swc/core-darwin-arm64': 1.7.35 '@swc/core-darwin-arm64': 1.7.40
'@swc/core-darwin-x64': 1.7.35 '@swc/core-darwin-x64': 1.7.40
'@swc/core-linux-arm-gnueabihf': 1.7.35 '@swc/core-linux-arm-gnueabihf': 1.7.40
'@swc/core-linux-arm64-gnu': 1.7.35 '@swc/core-linux-arm64-gnu': 1.7.40
'@swc/core-linux-arm64-musl': 1.7.35 '@swc/core-linux-arm64-musl': 1.7.40
'@swc/core-linux-x64-gnu': 1.7.35 '@swc/core-linux-x64-gnu': 1.7.40
'@swc/core-linux-x64-musl': 1.7.35 '@swc/core-linux-x64-musl': 1.7.40
'@swc/core-win32-arm64-msvc': 1.7.35 '@swc/core-win32-arm64-msvc': 1.7.40
'@swc/core-win32-ia32-msvc': 1.7.35 '@swc/core-win32-ia32-msvc': 1.7.40
'@swc/core-win32-x64-msvc': 1.7.35 '@swc/core-win32-x64-msvc': 1.7.40
'@swc/counter@0.1.3': {} '@swc/counter@0.1.3': {}
@@ -3180,7 +3205,7 @@ snapshots:
dependencies: dependencies:
'@types/http-cache-semantics': 4.0.4 '@types/http-cache-semantics': 4.0.4
'@types/keyv': 3.1.4 '@types/keyv': 3.1.4
'@types/node': 22.7.5 '@types/node': 22.8.1
'@types/responselike': 1.0.3 '@types/responselike': 1.0.3
'@types/estree@1.0.6': {} '@types/estree@1.0.6': {}
@@ -3191,40 +3216,40 @@ snapshots:
'@types/keyv@3.1.4': '@types/keyv@3.1.4':
dependencies: dependencies:
'@types/node': 22.7.5 '@types/node': 22.8.1
'@types/luxon@3.4.2': {} '@types/luxon@3.4.2': {}
'@types/ms@0.7.34': {} '@types/ms@0.7.34': {}
'@types/node@22.7.5': '@types/node@22.8.1':
dependencies: dependencies:
undici-types: 6.19.8 undici-types: 6.19.8
'@types/pg@8.11.10': '@types/pg@8.11.10':
dependencies: dependencies:
'@types/node': 22.7.5 '@types/node': 22.8.1
pg-protocol: 1.7.0 pg-protocol: 1.7.0
pg-types: 4.0.2 pg-types: 4.0.2
optional: true optional: true
'@types/responselike@1.0.3': '@types/responselike@1.0.3':
dependencies: dependencies:
'@types/node': 22.7.5 '@types/node': 22.8.1
'@types/ws@8.5.12': '@types/ws@8.5.12':
dependencies: dependencies:
'@types/node': 22.7.5 '@types/node': 22.8.1
'@typescript-eslint/eslint-plugin@8.8.1(@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3))(eslint@9.12.0)(typescript@5.6.3)': '@typescript-eslint/eslint-plugin@8.11.0(@typescript-eslint/parser@8.11.0(eslint@9.13.0)(typescript@5.6.3))(eslint@9.13.0)(typescript@5.6.3)':
dependencies: dependencies:
'@eslint-community/regexpp': 4.11.1 '@eslint-community/regexpp': 4.11.1
'@typescript-eslint/parser': 8.8.1(eslint@9.12.0)(typescript@5.6.3) '@typescript-eslint/parser': 8.11.0(eslint@9.13.0)(typescript@5.6.3)
'@typescript-eslint/scope-manager': 8.8.1 '@typescript-eslint/scope-manager': 8.11.0
'@typescript-eslint/type-utils': 8.8.1(eslint@9.12.0)(typescript@5.6.3) '@typescript-eslint/type-utils': 8.11.0(eslint@9.13.0)(typescript@5.6.3)
'@typescript-eslint/utils': 8.8.1(eslint@9.12.0)(typescript@5.6.3) '@typescript-eslint/utils': 8.11.0(eslint@9.13.0)(typescript@5.6.3)
'@typescript-eslint/visitor-keys': 8.8.1 '@typescript-eslint/visitor-keys': 8.11.0
eslint: 9.12.0 eslint: 9.13.0
graphemer: 1.4.0 graphemer: 1.4.0
ignore: 5.3.2 ignore: 5.3.2
natural-compare: 1.4.0 natural-compare: 1.4.0
@@ -3234,28 +3259,28 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@typescript-eslint/parser@8.8.1(eslint@9.12.0)(typescript@5.6.3)': '@typescript-eslint/parser@8.11.0(eslint@9.13.0)(typescript@5.6.3)':
dependencies: dependencies:
'@typescript-eslint/scope-manager': 8.8.1 '@typescript-eslint/scope-manager': 8.11.0
'@typescript-eslint/types': 8.8.1 '@typescript-eslint/types': 8.11.0
'@typescript-eslint/typescript-estree': 8.8.1(typescript@5.6.3) '@typescript-eslint/typescript-estree': 8.11.0(typescript@5.6.3)
'@typescript-eslint/visitor-keys': 8.8.1 '@typescript-eslint/visitor-keys': 8.11.0
debug: 4.3.7 debug: 4.3.7
eslint: 9.12.0 eslint: 9.13.0
optionalDependencies: optionalDependencies:
typescript: 5.6.3 typescript: 5.6.3
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@typescript-eslint/scope-manager@8.8.1': '@typescript-eslint/scope-manager@8.11.0':
dependencies: dependencies:
'@typescript-eslint/types': 8.8.1 '@typescript-eslint/types': 8.11.0
'@typescript-eslint/visitor-keys': 8.8.1 '@typescript-eslint/visitor-keys': 8.11.0
'@typescript-eslint/type-utils@8.8.1(eslint@9.12.0)(typescript@5.6.3)': '@typescript-eslint/type-utils@8.11.0(eslint@9.13.0)(typescript@5.6.3)':
dependencies: dependencies:
'@typescript-eslint/typescript-estree': 8.8.1(typescript@5.6.3) '@typescript-eslint/typescript-estree': 8.11.0(typescript@5.6.3)
'@typescript-eslint/utils': 8.8.1(eslint@9.12.0)(typescript@5.6.3) '@typescript-eslint/utils': 8.11.0(eslint@9.13.0)(typescript@5.6.3)
debug: 4.3.7 debug: 4.3.7
ts-api-utils: 1.3.0(typescript@5.6.3) ts-api-utils: 1.3.0(typescript@5.6.3)
optionalDependencies: optionalDependencies:
@@ -3264,12 +3289,12 @@ snapshots:
- eslint - eslint
- supports-color - supports-color
'@typescript-eslint/types@8.8.1': {} '@typescript-eslint/types@8.11.0': {}
'@typescript-eslint/typescript-estree@8.8.1(typescript@5.6.3)': '@typescript-eslint/typescript-estree@8.11.0(typescript@5.6.3)':
dependencies: dependencies:
'@typescript-eslint/types': 8.8.1 '@typescript-eslint/types': 8.11.0
'@typescript-eslint/visitor-keys': 8.8.1 '@typescript-eslint/visitor-keys': 8.11.0
debug: 4.3.7 debug: 4.3.7
fast-glob: 3.3.2 fast-glob: 3.3.2
is-glob: 4.0.3 is-glob: 4.0.3
@@ -3281,20 +3306,20 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@typescript-eslint/utils@8.8.1(eslint@9.12.0)(typescript@5.6.3)': '@typescript-eslint/utils@8.11.0(eslint@9.13.0)(typescript@5.6.3)':
dependencies: dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@9.12.0) '@eslint-community/eslint-utils': 4.4.0(eslint@9.13.0)
'@typescript-eslint/scope-manager': 8.8.1 '@typescript-eslint/scope-manager': 8.11.0
'@typescript-eslint/types': 8.8.1 '@typescript-eslint/types': 8.11.0
'@typescript-eslint/typescript-estree': 8.8.1(typescript@5.6.3) '@typescript-eslint/typescript-estree': 8.11.0(typescript@5.6.3)
eslint: 9.12.0 eslint: 9.13.0
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
- typescript - typescript
'@typescript-eslint/visitor-keys@8.8.1': '@typescript-eslint/visitor-keys@8.11.0':
dependencies: dependencies:
'@typescript-eslint/types': 8.8.1 '@typescript-eslint/types': 8.11.0
eslint-visitor-keys: 3.4.3 eslint-visitor-keys: 3.4.3
'@vladfrangu/async_event_emitter@2.4.6': {} '@vladfrangu/async_event_emitter@2.4.6': {}
@@ -3575,9 +3600,10 @@ snapshots:
discord-api-types@0.37.97: {} discord-api-types@0.37.97: {}
discord-player-youtubei@1.3.2: discord-player-youtubei@1.3.3:
dependencies: dependencies:
tiny-typed-emitter: 2.1.0 tiny-typed-emitter: 2.1.0
undici: 6.20.1
youtubei.js: 10.5.0 youtubei.js: 10.5.0
discord-player@6.7.1(@discord-player/extractor@4.5.1(encoding@0.1.13)): discord-player@6.7.1(@discord-player/extractor@4.5.1(encoding@0.1.13)):
@@ -3652,18 +3678,18 @@ snapshots:
dotenv@16.4.5: {} dotenv@16.4.5: {}
dprint@0.47.2: dprint@0.47.5:
optionalDependencies: optionalDependencies:
'@dprint/darwin-arm64': 0.47.2 '@dprint/darwin-arm64': 0.47.5
'@dprint/darwin-x64': 0.47.2 '@dprint/darwin-x64': 0.47.5
'@dprint/linux-arm64-glibc': 0.47.2 '@dprint/linux-arm64-glibc': 0.47.5
'@dprint/linux-arm64-musl': 0.47.2 '@dprint/linux-arm64-musl': 0.47.5
'@dprint/linux-x64-glibc': 0.47.2 '@dprint/linux-x64-glibc': 0.47.5
'@dprint/linux-x64-musl': 0.47.2 '@dprint/linux-x64-musl': 0.47.5
'@dprint/win32-arm64': 0.47.2 '@dprint/win32-arm64': 0.47.5
'@dprint/win32-x64': 0.47.2 '@dprint/win32-x64': 0.47.5
drizzle-kit@0.25.0: drizzle-kit@0.26.2:
dependencies: dependencies:
'@drizzle-team/brocli': 0.10.1 '@drizzle-team/brocli': 0.10.1
'@esbuild-kit/esm-loader': 2.6.5 '@esbuild-kit/esm-loader': 2.6.5
@@ -3672,11 +3698,13 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
drizzle-orm@0.34.1(@types/pg@8.11.10)(pg@8.13.0)(postgres@3.4.4)(sqlite3@5.1.7): drizzle-orm@0.35.3(@libsql/client-wasm@0.14.0)(@types/pg@8.11.10)(pg@8.13.0)(postgres@3.4.5)(sqlite3@5.1.7):
dependencies:
'@libsql/client-wasm': 0.14.0
optionalDependencies: optionalDependencies:
'@types/pg': 8.11.10 '@types/pg': 8.11.10
pg: 8.13.0 pg: 8.13.0
postgres: 3.4.4 postgres: 3.4.5
sqlite3: 5.1.7 sqlite3: 5.1.7
emoji-regex@8.0.0: emoji-regex@8.0.0:
@@ -3788,9 +3816,9 @@ snapshots:
escape-string-regexp@5.0.0: {} escape-string-regexp@5.0.0: {}
eslint-plugin-drizzle@0.2.3(eslint@9.12.0): eslint-plugin-drizzle@0.2.3(eslint@9.13.0):
dependencies: dependencies:
eslint: 9.12.0 eslint: 9.13.0
eslint-scope@8.1.0: eslint-scope@8.1.0:
dependencies: dependencies:
@@ -3803,14 +3831,14 @@ snapshots:
eslint-visitor-keys@4.1.0: {} eslint-visitor-keys@4.1.0: {}
eslint@9.12.0: eslint@9.13.0:
dependencies: dependencies:
'@eslint-community/eslint-utils': 4.4.0(eslint@9.12.0) '@eslint-community/eslint-utils': 4.4.0(eslint@9.13.0)
'@eslint-community/regexpp': 4.11.1 '@eslint-community/regexpp': 4.11.1
'@eslint/config-array': 0.18.0 '@eslint/config-array': 0.18.0
'@eslint/core': 0.6.0 '@eslint/core': 0.7.0
'@eslint/eslintrc': 3.1.0 '@eslint/eslintrc': 3.1.0
'@eslint/js': 9.12.0 '@eslint/js': 9.13.0
'@eslint/plugin-kit': 0.2.0 '@eslint/plugin-kit': 0.2.0
'@humanfs/node': 0.16.5 '@humanfs/node': 0.16.5
'@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/module-importer': 1.0.1
@@ -4198,6 +4226,8 @@ snapshots:
dependencies: dependencies:
acorn: 8.12.1 acorn: 8.12.1
js-base64@3.7.7: {}
js-yaml@4.1.0: js-yaml@4.1.0:
dependencies: dependencies:
argparse: 2.0.1 argparse: 2.0.1
@@ -4598,7 +4628,7 @@ snapshots:
postgres-range@1.1.4: postgres-range@1.1.4:
optional: true optional: true
postgres@3.4.4: {} postgres@3.4.5: {}
prebuild-install@7.1.2: prebuild-install@7.1.2:
dependencies: dependencies:
@@ -4918,7 +4948,7 @@ snapshots:
tslib@2.7.0: {} tslib@2.7.0: {}
tsx@4.19.1: tsx@4.19.2:
dependencies: dependencies:
esbuild: 0.23.1 esbuild: 0.23.1
get-tsconfig: 4.8.1 get-tsconfig: 4.8.1
@@ -4944,6 +4974,8 @@ snapshots:
undici@6.19.8: {} undici@6.19.8: {}
undici@6.20.1: {}
unfetch@5.0.0: {} unfetch@5.0.0: {}
unique-filename@1.1.1: unique-filename@1.1.1:

View File

@@ -1,5 +1,5 @@
import { ApplicationCommandType, ContextMenuCommandBuilder, InteractionContextType, PermissionFlagsBits, userMention } from "discord.js" import { ApplicationCommandType, ContextMenuCommandBuilder, InteractionContextType, PermissionFlagsBits, userMention } from "discord.js"
import db from "src/drizzle/db.js" import { getVerify } from "src/drizzle/functions.js"
import { devMessage, embedColor, hypixelGuildID } from "~/config/options.js" import { devMessage, embedColor, hypixelGuildID } from "~/config/options.js"
import { waitingListRole } from "~/config/roles.js" import { waitingListRole } from "~/config/roles.js"
import { IContextMenu } from "~/interfaces" import { IContextMenu } from "~/interfaces"
@@ -24,9 +24,7 @@ export default {
const targetId = interaction.targetId const targetId = interaction.targetId
const user = await interaction.guild!.members.fetch(targetId) const user = await interaction.guild!.members.fetch(targetId)
const usermentioned = userMention(user.user.id) const usermentioned = userMention(user.user.id)
const verifyData = await db.query.verifies.findFirst({ const verifyData = await getVerify({ userID: user.id })
where: ({ userID }, { eq }) => eq(userID, user.id)
})
if (!verifyData) { if (!verifyData) {
await user.setNickname(`${user.user.username} (X)`, "User used the update command").catch(() => { await user.setNickname(`${user.user.username} (X)`, "User used the update command").catch(() => {

View File

@@ -1,7 +1,5 @@
import { InteractionContextType, PermissionFlagsBits, SlashCommandBuilder } from "discord.js" import { InteractionContextType, PermissionFlagsBits, SlashCommandBuilder } from "discord.js"
import { eq } from "drizzle-orm" import { addSetting, getSetting, updateSetting } from "src/drizzle/functions.js"
import db from "src/drizzle/db.js"
import { settings } from "src/drizzle/schema.js"
import { embedColor } from "~/config/options.js" import { embedColor } from "~/config/options.js"
import { ICommand } from "~/interfaces" import { ICommand } from "~/interfaces"
@@ -38,12 +36,10 @@ export default {
const setting = interaction.options.getString("setting")! const setting = interaction.options.getString("setting")!
const value = interaction.options.getString("value")! const value = interaction.options.getString("value")!
const settingsData = await db.query.settings.findFirst({ const settingsData = await getSetting({ name: setting })
where: ({ name }, { eq }) => eq(name, setting)
})
if (!settingsData) { if (!settingsData) {
await db.insert(settings).values({ await addSetting({
name: setting, name: setting,
value: value value: value
}) })
@@ -55,9 +51,9 @@ export default {
}] }]
}) })
} else { } else {
await db.update(settings).set({ await updateSetting({
value: value value
}).where(eq(settings.name, setting)) })
await interaction.editReply({ await interaction.editReply({
embeds: [{ embeds: [{

View File

@@ -1,5 +1,5 @@
import { InteractionContextType, PermissionFlagsBits, SlashCommandBuilder, userMention } from "discord.js" import { InteractionContextType, PermissionFlagsBits, SlashCommandBuilder, userMention } from "discord.js"
import db from "src/drizzle/db.js" import { getVerify } from "src/drizzle/functions.js"
import { devMessage, embedColor } from "~/config/options.js" import { devMessage, embedColor } from "~/config/options.js"
import { ICommand } from "~/interfaces" import { ICommand } from "~/interfaces"
import { getHeadURL, getIGN, getUUID } from "~/utils/Hypixel.js" import { getHeadURL, getIGN, getUUID } from "~/utils/Hypixel.js"
@@ -37,9 +37,7 @@ export default {
return return
} }
const verifyData = await db.query.verifies.findFirst({ const verifyData = await getVerify({ uuid })
where: ({ uuid: uuidfromdb }, { eq }) => eq(uuidfromdb, uuid)
})
if (!verifyData) { if (!verifyData) {
await interaction.editReply({ await interaction.editReply({
embeds: [{ embeds: [{

View File

@@ -1,7 +1,5 @@
import { GuildMember, InteractionContextType, PermissionFlagsBits, SlashCommandBuilder, userMention } from "discord.js" import { GuildMember, InteractionContextType, PermissionFlagsBits, SlashCommandBuilder, userMention } from "discord.js"
import { eq } from "drizzle-orm" import { getVerify, removeVerify } from "src/drizzle/functions.js"
import db from "src/drizzle/db.js"
import { verifies } from "src/drizzle/schema.js"
import { devMessage, embedColor } from "~/config/options.js" import { devMessage, embedColor } from "~/config/options.js"
import { ICommand } from "~/interfaces" import { ICommand } from "~/interfaces"
import logToChannel from "~/utils/Functions/logtochannel.js" import logToChannel from "~/utils/Functions/logtochannel.js"
@@ -28,9 +26,7 @@ export default {
async execute({ interaction }) { async execute({ interaction }) {
const member = interaction.options.getMember("user") as GuildMember const member = interaction.options.getMember("user") as GuildMember
const verifiedUser = await db.query.verifies.findFirst({ const verifiedUser = await getVerify({ userID: member.user.id })
where: ({ userID }, { eq }) => eq(userID, member.user.id)
})
const mod = interaction.user const mod = interaction.user
if (!verifiedUser) { if (!verifiedUser) {
@@ -45,7 +41,7 @@ export default {
const uuid = verifiedUser.uuid const uuid = verifiedUser.uuid
const ign = await getIGN(uuid) const ign = await getIGN(uuid)
await db.delete(verifies).where(eq(verifies.userID, member.user.id)) await removeVerify({ userID: member.user.id })
await member.roles.remove( await member.roles.remove(
roleManage("all").rolesToRemove, roleManage("all").rolesToRemove,
"User force unverified by " + interaction.user.username "User force unverified by " + interaction.user.username

View File

@@ -1,5 +1,5 @@
import { GuildMember, InteractionContextType, PermissionFlagsBits, SlashCommandBuilder, userMention } from "discord.js" import { GuildMember, InteractionContextType, PermissionFlagsBits, SlashCommandBuilder, userMention } from "discord.js"
import db from "src/drizzle/db.js" import { getVerify } from "src/drizzle/functions.js"
import { devMessage, embedColor, hypixelGuildID } from "~/config/options.js" import { devMessage, embedColor, hypixelGuildID } from "~/config/options.js"
import { waitingListRole } from "~/config/roles.js" import { waitingListRole } from "~/config/roles.js"
import { ICommand } from "~/interfaces" import { ICommand } from "~/interfaces"
@@ -29,9 +29,7 @@ export default {
const user = interaction.options.getMember("user") as GuildMember const user = interaction.options.getMember("user") as GuildMember
const usermentioned = userMention(user.user.id) const usermentioned = userMention(user.user.id)
const verifyData = await db.query.verifies.findFirst({ const verifyData = await getVerify({ userID: user.user.id })
where: ({ userID }, { eq }) => eq(userID, user.user.id)
})
if (!verifyData) { if (!verifyData) {
await user.setNickname(`${user.user.username} (X)`, "User used the update command").catch(() => { await user.setNickname(`${user.user.username} (X)`, "User used the update command").catch(() => {

View File

@@ -1,6 +1,5 @@
import { GuildMember, InteractionContextType, PermissionFlagsBits, SlashCommandBuilder, userMention } from "discord.js" import { GuildMember, InteractionContextType, PermissionFlagsBits, SlashCommandBuilder, userMention } from "discord.js"
import db from "src/drizzle/db.js" import { addVerify, getVerify } from "src/drizzle/functions.js"
import { verifies } from "src/drizzle/schema.js"
import { devMessage, embedColor, hypixelGuildID } from "~/config/options.js" import { devMessage, embedColor, hypixelGuildID } from "~/config/options.js"
import { ICommand } from "~/interfaces" import { ICommand } from "~/interfaces"
import logToChannel from "~/utils/Functions/logtochannel.js" import logToChannel from "~/utils/Functions/logtochannel.js"
@@ -38,9 +37,7 @@ export default {
const ign = interaction.options.getString("ign")! const ign = interaction.options.getString("ign")!
const mod = interaction.user const mod = interaction.user
const verifyData = await db.query.verifies.findFirst({ const verifyData = await getVerify({ userID: user.id })
where: ({ userID }, { eq }) => eq(userID, user.user.id)
})
if (verifyData) { if (verifyData) {
interaction.editReply("That user is already verified.") interaction.editReply("That user is already verified.")
return return
@@ -141,7 +138,7 @@ export default {
// Do nothing // Do nothing
}) })
await db.insert(verifies).values({ await addVerify({
userID: user.user.id, userID: user.user.id,
uuid: uuid uuid: uuid
}) })

View File

@@ -1,7 +1,5 @@
import { GuildMember, InteractionContextType, PermissionFlagsBits, SlashCommandBuilder, userMention } from "discord.js" import { GuildMember, InteractionContextType, PermissionFlagsBits, SlashCommandBuilder, userMention } from "discord.js"
import { eq } from "drizzle-orm" import { getWaitingList, removeWaitingList } from "src/drizzle/functions.js"
import db from "src/drizzle/db.js"
import { waitingLists } from "src/drizzle/schema.js"
import { devMessage, embedColor } from "~/config/options.js" import { devMessage, embedColor } from "~/config/options.js"
import { waitingListRole } from "~/config/roles.js" import { waitingListRole } from "~/config/roles.js"
import { ICommand } from "~/interfaces" import { ICommand } from "~/interfaces"
@@ -36,9 +34,7 @@ export default {
const member = interaction.options.getMember("user") as GuildMember const member = interaction.options.getMember("user") as GuildMember
const reason = interaction.options.getString("reason") ?? "No reason provided." const reason = interaction.options.getString("reason") ?? "No reason provided."
const mod = interaction.user! const mod = interaction.user!
const waiting = await db.query.waitingLists.findFirst({ const waiting = await getWaitingList({ userID: member.user.id })
where: ({ userID }, { eq }) => eq(userID, member.user.id)
})
if (!waiting) { if (!waiting) {
await interaction.editReply({ await interaction.editReply({
@@ -50,7 +46,7 @@ export default {
return return
} }
await db.delete(waitingLists).where(eq(waitingLists.userID, member.user.id)) await removeWaitingList({ userID: member.user.id })
await member.roles.remove(waitingListRole, "Removed from waiting list.") await member.roles.remove(waitingListRole, "Removed from waiting list.")
await logToChannel("mod", { await logToChannel("mod", {

View File

@@ -1,5 +1,5 @@
import { ChatInputCommandInteraction, GuildMember } from "discord.js" import { ChatInputCommandInteraction, GuildMember } from "discord.js"
import db from "src/drizzle/db.js" import { getVerifies } from "src/drizzle/functions.js"
import { embedColor, hypixelGuildID } from "~/config/options.js" import { embedColor, hypixelGuildID } from "~/config/options.js"
import { IGuildData } from "~/interfaces" import { IGuildData } from "~/interfaces"
import env from "~/utils/Env.js" import env from "~/utils/Env.js"
@@ -35,7 +35,7 @@ export default async function removeGuildRoles(interaction: ChatInputCommandInte
const hypixelGuildMembers = guildData.members.map(gmember => gmember.uuid) const hypixelGuildMembers = guildData.members.map(gmember => gmember.uuid)
const verifiedUsers = await db.query.verifies.findMany() const verifiedUsers = await getVerifies()
for (const gmember of guildMembers) { for (const gmember of guildMembers) {
const gmemberuuid = verifiedUsers.find(user => user.userID === gmember.id)?.uuid const gmemberuuid = verifiedUsers.find(user => user.userID === gmember.id)?.uuid

View File

@@ -1,5 +1,5 @@
import { ChannelType, ChatInputCommandInteraction, GuildMember } from "discord.js" import { ChannelType, ChatInputCommandInteraction, GuildMember } from "discord.js"
import db from "src/drizzle/db.js" import { getVerifies } from "src/drizzle/functions.js"
import { embedColor, hypixelGuildID } from "~/config/options.js" import { embedColor, hypixelGuildID } from "~/config/options.js"
import { IGuildData } from "~/interfaces" import { IGuildData } from "~/interfaces"
import env from "~/utils/Env.js" import env from "~/utils/Env.js"
@@ -53,7 +53,7 @@ export default async function updateAll(interaction: ChatInputCommandInteraction
}) })
const guildMemberIDs = hypixelGuildMembers.map(gmember => gmember.uuid) const guildMemberIDs = hypixelGuildMembers.map(gmember => gmember.uuid)
const verifiedUsers = await db.query.verifies.findMany() const verifiedUsers = await getVerifies()
await interaction.editReply({ await interaction.editReply({
embeds: [{ embeds: [{

View File

@@ -1,5 +1,5 @@
import { GuildMember, InteractionContextType, SlashCommandBuilder } from "discord.js" import { GuildMember, InteractionContextType, SlashCommandBuilder } from "discord.js"
import db from "src/drizzle/db.js" import { getVerify } from "src/drizzle/functions.js"
import { devMessage, embedColor, hypixelGuildID } from "~/config/options.js" import { devMessage, embedColor, hypixelGuildID } from "~/config/options.js"
import { waitingListRole } from "~/config/roles.js" import { waitingListRole } from "~/config/roles.js"
import { ICommand } from "~/interfaces" import { ICommand } from "~/interfaces"
@@ -21,9 +21,7 @@ export default {
await interaction.deferReply() await interaction.deferReply()
const user = interaction.member as GuildMember const user = interaction.member as GuildMember
const verifyData = await db.query.verifies.findFirst({ const verifyData = await getVerify({ userID: user.id })
where: ({ userID }, { eq }) => eq(userID, user.user.id)
})
if (!verifyData) { if (!verifyData) {
await user.setNickname(`${user.user.username} (X)`, "User used the update command").catch(() => { await user.setNickname(`${user.user.username} (X)`, "User used the update command").catch(() => {

View File

@@ -1,6 +1,5 @@
import { GuildMember, InteractionContextType, SlashCommandBuilder } from "discord.js" import { GuildMember, InteractionContextType, SlashCommandBuilder } from "discord.js"
import db from "src/drizzle/db.js" import { addVerify, getVerify } from "src/drizzle/functions.js"
import { verifies } from "src/drizzle/schema.js"
import { devMessage, embedColor, hypixelGuildID } from "~/config/options.js" import { devMessage, embedColor, hypixelGuildID } from "~/config/options.js"
import { ICommand } from "~/interfaces" import { ICommand } from "~/interfaces"
import { IPlayerData } from "~/interfaces" import { IPlayerData } from "~/interfaces"
@@ -33,9 +32,7 @@ export default {
const user = interaction.member! as GuildMember const user = interaction.member! as GuildMember
const ign = interaction.options.getString("ign")! const ign = interaction.options.getString("ign")!
const verifyData = await db.query.verifies.findFirst({ const verifyData = await getVerify({ userID: user.id })
where: ({ userID }, { eq }) => eq(userID, user.id)
})
if (verifyData) { if (verifyData) {
interaction.editReply("You are already verified.\n" + "Try running /update to update your roles.") interaction.editReply("You are already verified.\n" + "Try running /update to update your roles.")
return return
@@ -166,7 +163,7 @@ export default {
// Do nothing // Do nothing
}) })
await db.insert(verifies).values({ await addVerify({
userID: user.id, userID: user.id,
uuid: uuid uuid: uuid
}) })

View File

@@ -1,5 +1,5 @@
import { InteractionContextType, SlashCommandBuilder, userMention } from "discord.js" import { InteractionContextType, SlashCommandBuilder, userMention } from "discord.js"
import db from "src/drizzle/db.js" import { getVerify } from "src/drizzle/functions.js"
import { devMessage, embedColor } from "~/config/options.js" import { devMessage, embedColor } from "~/config/options.js"
import { ICommand } from "~/interfaces" import { ICommand } from "~/interfaces"
import { getHeadURL, getIGN } from "~/utils/Hypixel.js" import { getHeadURL, getIGN } from "~/utils/Hypixel.js"
@@ -19,9 +19,7 @@ export default {
await interaction.deferReply() await interaction.deferReply()
const user = interaction.user const user = interaction.user
const verifyData = await db.query.verifies.findFirst({ const verifyData = await getVerify({ userID: user.id })
where: ({ userID }, { eq }) => eq(userID, user.id)
})
if (!verifyData) { if (!verifyData) {
await interaction.editReply({ await interaction.editReply({

View File

@@ -1,5 +1,5 @@
import { InteractionContextType, PermissionFlagsBits, SlashCommandBuilder, userMention } from "discord.js" import { InteractionContextType, PermissionFlagsBits, SlashCommandBuilder, userMention } from "discord.js"
import db from "src/drizzle/db.js" import { getVerify } from "src/drizzle/functions.js"
import { devMessage, embedColor } from "~/config/options.js" import { devMessage, embedColor } from "~/config/options.js"
import { ICommand } from "~/interfaces" import { ICommand } from "~/interfaces"
import { getHeadURL, getIGN } from "~/utils/Hypixel.js" import { getHeadURL, getIGN } from "~/utils/Hypixel.js"
@@ -26,9 +26,7 @@ export default {
await interaction.deferReply() await interaction.deferReply()
const user = interaction.options.getUser("user")! const user = interaction.options.getUser("user")!
const verifiedUser = await db.query.verifies.findFirst({ const verifiedUser = await getVerify({ userID: user.id })
where: ({ userID }, { eq }) => eq(userID, user.id)
})
if (!verifiedUser) { if (!verifiedUser) {
interaction.editReply({ interaction.editReply({
embeds: [{ embeds: [{

View File

@@ -1,4 +1,4 @@
import db from "src/drizzle/db.js" import { getGuildApp } from "src/drizzle/functions.js"
import { devMessage, embedColor } from "~/config/options.js" import { devMessage, embedColor } from "~/config/options.js"
import { bwfkdr, bwstars, bwwins, duelswins, duelswlr, swkdr, swstars } from "~/config/reqs.js" import { bwfkdr, bwstars, bwwins, duelswins, duelswlr, swkdr, swstars } from "~/config/reqs.js"
import { IButton } from "~/interfaces" import { IButton } from "~/interfaces"
@@ -14,9 +14,7 @@ export default {
const message = interaction.message const message = interaction.message
const embed = message.embeds[0] const embed = message.embeds[0]
const applicantId = embed.footer!.text.split(" ")[1] const applicantId = embed.footer!.text.split(" ")[1]
const guildappdata = await db.query.guildApps.findFirst({ const guildappdata = await getGuildApp({ userID: applicantId })
where: ({ userID }, { eq }) => eq(userID, applicantId)
})
const uuid = guildappdata!.uuid const uuid = guildappdata!.uuid
const player = await getPlayer(uuid) const player = await getPlayer(uuid)

View File

@@ -1,7 +1,6 @@
import { ActionRowBuilder, ButtonBuilder, ButtonStyle, TextChannel } from "discord.js" import { ActionRowBuilder, ButtonBuilder, ButtonStyle, TextChannel } from "discord.js"
import { eq } from "drizzle-orm" import { getGuildApp, removeVerify } from "src/drizzle/functions.js"
import db from "src/drizzle/db.js" import { addWaitingList, getWaitingLists, removeWaitingList } from "src/drizzle/functions.js"
import { guildApps, waitingLists } from "src/drizzle/schema.js"
import { embedColor, hypixelGuildID, waitingListChannel, waitingListMessage } from "~/config/options.js" import { embedColor, hypixelGuildID, waitingListChannel, waitingListMessage } from "~/config/options.js"
import { waitingListRole } from "~/config/roles.js" import { waitingListRole } from "~/config/roles.js"
import { IButton } from "~/interfaces" import { IButton } from "~/interfaces"
@@ -54,20 +53,18 @@ export default {
}] }]
}) })
const applicantEntry = await db.query.guildApps.findFirst({ const applicantEntry = await getGuildApp({ userID: applicantId })
where: ({ userID }, { eq }) => eq(userID, applicantId)
})
const applicantUUID = applicantEntry!.uuid const applicantUUID = applicantEntry!.uuid
const time = Date.now() const time = Date.now()
await db.insert(waitingLists).values({ await addWaitingList({
userID: applicantId, userID: applicantId,
uuid: applicantUUID, uuid: applicantUUID,
timestamp: time timestamp: time
}) })
await applicant.roles.add(waitingListRole) await applicant.roles.add(waitingListRole)
await db.delete(guildApps).where(eq(guildApps.userID, applicantId)) await removeVerify({ userID: applicantId })
await interaction.editReply({ await interaction.editReply({
embeds: [{ embeds: [{
@@ -90,14 +87,14 @@ export default {
const wlmessage = await channel!.messages.fetch(waitingListMessage) const wlmessage = await channel!.messages.fetch(waitingListMessage)
const wlembed = wlmessage.embeds[0] const wlembed = wlmessage.embeds[0]
const accepted = await db.query.waitingLists.findMany() const accepted = await getWaitingLists()
for (let i = 0; i < accepted.length; i++) { for (let i = 0; i < accepted.length; i++) {
const uuid = accepted[i].uuid const uuid = accepted[i].uuid
const guild = await getGuild(uuid) const guild = await getGuild(uuid)
if (guild && guild._id === hypixelGuildID) { if (guild && guild._id === hypixelGuildID) {
await db.delete(waitingLists).where(eq(waitingLists.uuid, uuid)) await removeWaitingList({ uuid })
continue continue
} }
} }

View File

@@ -1,6 +1,5 @@
import { ActionRowBuilder, ButtonBuilder, ButtonStyle, GuildMember, TextChannel } from "discord.js" import { ActionRowBuilder, ButtonBuilder, ButtonStyle, GuildMember, TextChannel } from "discord.js"
import db from "src/drizzle/db.js" import { addGuildApp, getGuildApp } from "src/drizzle/functions.js"
import { guildApps } from "src/drizzle/schema.js"
import { ignM, largeM, smallM } from "~/config/limitmessages.js" import { ignM, largeM, smallM } from "~/config/limitmessages.js"
import { applicationsChannel, embedColor } from "~/config/options.js" import { applicationsChannel, embedColor } from "~/config/options.js"
import { guild as guildQuestions } from "~/config/questions.js" import { guild as guildQuestions } from "~/config/questions.js"
@@ -31,9 +30,7 @@ export default {
return return
} }
const application = await db.query.guildApps.findFirst({ const application = await getGuildApp({ userID: user.user.id })
where: ({ userID }, { eq }) => eq(userID, user.user.id)
})
if (application) { if (application) {
await interaction.editReply("You already have an application in progress.") await interaction.editReply("You already have an application in progress.")
@@ -251,7 +248,7 @@ export default {
}] }]
}) })
await db.insert(guildApps).values({ await addGuildApp({
userID: user.user.id, userID: user.user.id,
uuid: uuid uuid: uuid
}) })

View File

@@ -1,7 +1,5 @@
import { ActionRowBuilder, ButtonBuilder, ButtonStyle } from "discord.js" import { ActionRowBuilder, ButtonBuilder, ButtonStyle } from "discord.js"
import { eq } from "drizzle-orm" import { removeStaffApp } from "src/drizzle/functions.js"
import db from "src/drizzle/db.js"
import { staffApps } from "src/drizzle/schema.js"
import { embedColor } from "~/config/options.js" import { embedColor } from "~/config/options.js"
import { IButton } from "~/interfaces" import { IButton } from "~/interfaces"
@@ -45,7 +43,7 @@ export default {
] ]
}) })
await db.delete(staffApps).where(eq(staffApps.userID, applicantId)) await removeStaffApp({ userID: applicantId })
await interaction.editReply({ await interaction.editReply({
embeds: [{ embeds: [{

View File

@@ -1,6 +1,5 @@
import { ActionRowBuilder, ButtonBuilder, ButtonStyle, GuildMember, TextChannel } from "discord.js" import { ActionRowBuilder, ButtonBuilder, ButtonStyle, GuildMember, TextChannel } from "discord.js"
import db from "src/drizzle/db.js" import { addStaffApp, getSetting, getStaffApp } from "src/drizzle/functions.js"
import { staffApps } from "src/drizzle/schema.js"
import { ignM, largeM } from "~/config/limitmessages.js" import { ignM, largeM } from "~/config/limitmessages.js"
import { embedColor, staffApplicationsChannel } from "~/config/options.js" import { embedColor, staffApplicationsChannel } from "~/config/options.js"
import { staff as staffQuestions } from "~/config/questions.js" import { staff as staffQuestions } from "~/config/questions.js"
@@ -17,9 +16,7 @@ export default {
const user = interaction.member as GuildMember const user = interaction.member as GuildMember
const guild = interaction.guild! const guild = interaction.guild!
const userRoles = user.roles.cache const userRoles = user.roles.cache
const setting = await db.query.settings.findFirst({ const setting = await getSetting({ name: "staffapplications" })
where: ({ name }, { eq }) => eq(name, "staffApplications")
})
const status = setting?.value || "0" const status = setting?.value || "0"
function sq(n: number): string { function sq(n: number): string {
@@ -50,9 +47,7 @@ export default {
return return
} }
const application = await db.query.staffApps.findFirst({ const application = await getStaffApp({ userID: user.user.id })
where: ({ userID }, { eq }) => eq(userID, user.user.id)
})
if (application) { if (application) {
await interaction.editReply("You already have an application in progress.") await interaction.editReply("You already have an application in progress.")
@@ -225,7 +220,7 @@ export default {
}] }]
}) })
await db.insert(staffApps).values({ await addStaffApp({
userID: user.user.id, userID: user.user.id,
uuid: uuid uuid: uuid
}) })

View File

@@ -1,6 +1,4 @@
import { eq } from "drizzle-orm" import { getWaitingLists, removeWaitingList } from "src/drizzle/functions.js"
import db from "src/drizzle/db.js"
import { waitingLists } from "src/drizzle/schema.js"
import { hypixelGuildID } from "~/config/options.js" import { hypixelGuildID } from "~/config/options.js"
import { IButton } from "~/interfaces" import { IButton } from "~/interfaces"
import { getGuild, getIGN } from "~/utils/Hypixel.js" import { getGuild, getIGN } from "~/utils/Hypixel.js"
@@ -15,14 +13,14 @@ export default {
const user = interaction.user const user = interaction.user
const message = interaction.message const message = interaction.message
const embed = message.embeds[0] const embed = message.embeds[0]
const accepted = await db.query.waitingLists.findMany() const accepted = await getWaitingLists()
for (let i = 0; i < accepted.length; i++) { for (let i = 0; i < accepted.length; i++) {
const uuid = accepted[i].uuid const uuid = accepted[i].uuid
const guild = await getGuild(uuid) const guild = await getGuild(uuid)
if (guild && guild._id === hypixelGuildID) { if (guild && guild._id === hypixelGuildID) {
await db.delete(waitingLists).where(eq(waitingLists.uuid, uuid)) await removeWaitingList({ uuid })
continue continue
} }
} }

View File

@@ -1,7 +1,5 @@
import { ActionRowBuilder, ButtonBuilder, ButtonStyle, EmbedBuilder, GuildMember, Message } from "discord.js" import { ActionRowBuilder, ButtonBuilder, ButtonStyle, EmbedBuilder, GuildMember, Message } from "discord.js"
import { eq } from "drizzle-orm" import { removeGuildApp } from "src/drizzle/functions.js"
import db from "src/drizzle/db.js"
import { guildApps } from "src/drizzle/schema.js"
import { embedColor } from "~/config/options.js" import { embedColor } from "~/config/options.js"
import { IModal } from "~/interfaces" import { IModal } from "~/interfaces"
@@ -83,7 +81,7 @@ export default {
responseEmbeds = [responseEmbed] responseEmbeds = [responseEmbed]
} }
await db.delete(guildApps).where(eq(guildApps.userID, applicantId)) await removeGuildApp({ userID: applicantId })
await interaction.editReply({ await interaction.editReply({
embeds: responseEmbeds embeds: responseEmbeds

View File

@@ -1,7 +1,5 @@
import { ActionRowBuilder, ButtonBuilder, ButtonStyle, EmbedBuilder } from "discord.js" import { ActionRowBuilder, ButtonBuilder, ButtonStyle, EmbedBuilder } from "discord.js"
import { eq } from "drizzle-orm" import { removeStaffApp } from "src/drizzle/functions.js"
import db from "src/drizzle/db.js"
import { staffApps } from "src/drizzle/schema.js"
import { embedColor } from "~/config/options.js" import { embedColor } from "~/config/options.js"
import { IModal } from "~/interfaces" import { IModal } from "~/interfaces"
@@ -45,7 +43,7 @@ export default {
await applicant.send({ embeds: [dmMessage] }) await applicant.send({ embeds: [dmMessage] })
await db.delete(staffApps).where(eq(staffApps.userID, applicantId)) await removeStaffApp({ userID: applicantId })
await interaction.editReply({ await interaction.editReply({
embeds: [{ embeds: [{

View File

@@ -1,6 +1,5 @@
import { GuildMember } from "discord.js" import { GuildMember } from "discord.js"
import db from "src/drizzle/db.js" import { addVerify, getVerify } from "src/drizzle/functions.js"
import { verifies } from "src/drizzle/schema.js"
import { devMessage, embedColor, hypixelGuildID } from "~/config/options.js" import { devMessage, embedColor, hypixelGuildID } from "~/config/options.js"
import { IModal } from "~/interfaces" import { IModal } from "~/interfaces"
import roleManage from "~/utils/Functions/rolesmanage.js" import roleManage from "~/utils/Functions/rolesmanage.js"
@@ -15,9 +14,7 @@ export default {
const user = interaction.member as GuildMember const user = interaction.member as GuildMember
const ign = interaction.fields.fields.get("verifyign")!.value const ign = interaction.fields.fields.get("verifyign")!.value
const verifyData = await db.query.verifies.findFirst({ const verifyData = await getVerify({ userID: user.id })
where: ({ userID }, { eq }) => eq(userID, user.id)
})
if (verifyData) { if (verifyData) {
interaction.editReply("You are already verified.\n" + "Try running /update to update your roles.") interaction.editReply("You are already verified.\n" + "Try running /update to update your roles.")
return return
@@ -147,7 +144,7 @@ export default {
// Do nothing // Do nothing
}) })
await db.insert(verifies).values({ await addVerify({
userID: user.id, userID: user.id,
uuid: uuid uuid: uuid
}) })

5
src/drizzle/functions.ts Normal file
View File

@@ -0,0 +1,5 @@
export * from "./functions/guildApps.js"
export * from "./functions/settings.js"
export * from "./functions/staffApps.js"
export * from "./functions/verifies.js"
export * from "./functions/waitingList.js"

View File

@@ -0,0 +1,32 @@
import { eq, or } from "drizzle-orm"
import db from "../db.js"
import { guildApps, InsertGuildApp } from "../schema.js"
type GuildAppDBData = Partial<Pick<InsertGuildApp, "userID" | "uuid">>
export async function addGuildApp(data: InsertGuildApp) {
await db.insert(guildApps).values(data)
}
export async function getGuildApp(data: GuildAppDBData) {
const userId = data.userID ?? ""
const uuid = data.uuid ?? ""
return await db.query.guildApps.findFirst({
where: (({ userID: dbUserId, uuid: dbUuid }, { eq, or }) =>
or(
eq(dbUuid, uuid),
eq(dbUserId, userId)
))
})
}
export async function removeGuildApp(data: GuildAppDBData) {
const userId = data.userID ?? ""
const uuid = data.uuid ?? ""
await db.delete(guildApps).where(or(
eq(guildApps.userID, userId),
eq(guildApps.uuid, uuid)
))
}

View File

@@ -0,0 +1,41 @@
import { eq, or } from "drizzle-orm"
import db from "../db.js"
import { InsertSetting, settings } from "../schema.js"
type SettingsDBData = Partial<Pick<InsertSetting, "name" | "value">>
export async function addSetting(data: InsertSetting) {
await db.insert(settings).values(data)
}
export async function getSetting(data: SettingsDBData) {
const name = data.name ?? ""
const value = data.value ?? ""
return await db.query.settings.findFirst({
where: (({ name: dbName, value: dbValue }, { eq, or }) =>
or(
eq(dbName, name),
eq(dbValue, value)
))
})
}
export async function updateSetting(data: SettingsDBData) {
const name = data.name ?? ""
const value = data.value
await db.update(settings).set({
value: value
}).where(eq(settings.name, name))
}
export async function removeSetting(data: SettingsDBData) {
const name = data.name ?? ""
const value = data.value ?? ""
await db.delete(settings).where(or(
eq(settings.name, name),
eq(settings.value, value)
))
}

View File

@@ -0,0 +1,32 @@
import { eq, or } from "drizzle-orm"
import db from "../db.js"
import { InsertStaffApp, staffApps } from "../schema.js"
type StaffAppDBData = Partial<Pick<InsertStaffApp, "userID" | "uuid">>
export async function addStaffApp(data: InsertStaffApp) {
await db.insert(staffApps).values(data)
}
export async function getStaffApp(data: StaffAppDBData) {
const userId = data.userID ?? ""
const uuid = data.uuid ?? ""
return await db.query.staffApps.findFirst({
where: (({ userID: dbUserId, uuid: dbUuid }, { eq, or }) =>
or(
eq(dbUuid, uuid),
eq(dbUserId, userId)
))
})
}
export async function removeStaffApp(data: StaffAppDBData) {
const userId = data.userID ?? ""
const uuid = data.uuid ?? ""
await db.delete(staffApps).where(or(
eq(staffApps.userID, userId),
eq(staffApps.uuid, uuid)
))
}

View File

@@ -0,0 +1,36 @@
import { eq, or } from "drizzle-orm"
import db from "../db.js"
import { InsertVerify, verifies } from "../schema.js"
type VerifyDBData = Partial<Pick<InsertVerify, "userID" | "uuid">>
export async function addVerify(data: InsertVerify) {
await db.insert(verifies).values(data)
}
export async function getVerify(data: VerifyDBData) {
const userId = data.userID ?? ""
const uuid = data.uuid ?? ""
return await db.query.verifies.findFirst({
where: (({ userID: dbUserId, uuid: dbUuid }, { eq, or }) =>
or(
eq(dbUuid, uuid),
eq(dbUserId, userId)
))
})
}
export async function getVerifies() {
return await db.query.verifies.findMany()
}
export async function removeVerify(data: VerifyDBData) {
const userId = data.userID ?? ""
const uuid = data.uuid ?? ""
await db.delete(verifies).where(or(
eq(verifies.userID, userId),
eq(verifies.uuid, uuid)
))
}

View File

@@ -0,0 +1,36 @@
import { eq, or } from "drizzle-orm"
import db from "../db.js"
import { InsertWaitingList, waitingLists } from "../schema.js"
type WaitingListDBData = Partial<Pick<InsertWaitingList, "userID" | "uuid">>
export async function addWaitingList(data: InsertWaitingList) {
await db.insert(waitingLists).values(data)
}
export async function getWaitingList(data: WaitingListDBData) {
const userId = data.userID ?? ""
const uuid = data.uuid ?? ""
return await db.query.waitingLists.findFirst({
where: (({ userID: dbUserId, uuid: dbUuid }, { eq, or }) =>
or(
eq(dbUuid, uuid),
eq(dbUserId, userId)
))
})
}
export async function getWaitingLists() {
return await db.query.waitingLists.findMany()
}
export async function removeWaitingList(data: WaitingListDBData) {
const userId = data.userID ?? ""
const uuid = data.uuid ?? ""
await db.delete(waitingLists).where(or(
eq(waitingLists.userID, userId),
eq(waitingLists.uuid, uuid)
))
}

View File

@@ -2,12 +2,13 @@ import fs from "fs"
import path from "path" import path from "path"
import { ExtendedClient as Client } from "~/utils/Client.js" import { ExtendedClient as Client } from "~/utils/Client.js"
const __dirname = import.meta.dirname const __dirname = import.meta.dirname
type FileType = "js" | "ts"
export default async function loadEvents(client: Client) { export default async function loadEvents(client: Client, ft: FileType) {
const serverDir = path.join(__dirname, "..", "..", "events", "server") const serverDir = path.join(__dirname, "..", "..", "events", "server")
const eventDirs = fs.readdirSync(serverDir) const eventDirs = fs.readdirSync(serverDir)
for (const eventDir of eventDirs) { for (const eventDir of eventDirs) {
const eventFiles = fs.readdirSync(path.join(serverDir, eventDir)) const eventFiles = fs.readdirSync(path.join(serverDir, eventDir)).filter(file => file.endsWith(ft))
for (const eventFile of eventFiles) { for (const eventFile of eventFiles) {
const eventPath = path.join(serverDir, eventDir, eventFile) const eventPath = path.join(serverDir, eventDir, eventFile)
const { default: event } = await import("file://" + eventPath) const { default: event } = await import("file://" + eventPath)

View File

@@ -8,7 +8,7 @@ import loadEvents from "./events.js"
import loadModalEvents from "./modal.js" import loadModalEvents from "./modal.js"
export default async function loadAllEvents(client: Client, ft: "js" | "ts") { export default async function loadAllEvents(client: Client, ft: "js" | "ts") {
await loadEvents(client) await loadEvents(client, ft)
await loadButtonEvents(client, ft) await loadButtonEvents(client, ft)
await loadSlashCommandsEvents(client, ft) await loadSlashCommandsEvents(client, ft)
await loadContextMenuEvents(client, ft) await loadContextMenuEvents(client, ft)

View File

@@ -12,7 +12,6 @@
"strictNullChecks": true, "strictNullChecks": true,
"resolveJsonModule": true, "resolveJsonModule": true,
"removeComments": true, "removeComments": true,
"noUnusedLocals": true,
"outDir": "dist", "outDir": "dist",
"baseUrl": ".", "baseUrl": ".",
"paths": { "paths": {