diff --git a/package.json b/package.json index 75e519d..38e0d2b 100644 --- a/package.json +++ b/package.json @@ -21,10 +21,10 @@ "dotenv": "16.0.3" }, "devDependencies": { - "@types/node": "^18.16.5", + "@types/node": "^20.4.4", "nodemon": "^2.0.22", "prettier": "^2.8.8", - "prisma": "^4.15.0", + "prisma": "^4.16.2", "ts-node": "^10.9.1", "typescript": "4.9.5" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ee9a780..70cedd5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,4 +1,4 @@ -lockfileVersion: "6.1" +lockfileVersion: "6.0" settings: autoInstallPeers: true @@ -10,7 +10,7 @@ dependencies: version: 1.2.2 "@prisma/client": specifier: 4.15.0 - version: 4.15.0(prisma@4.15.0) + version: 4.15.0(prisma@4.16.2) discord.js: specifier: ^14.11.0 version: 14.11.0 @@ -23,8 +23,8 @@ dependencies: devDependencies: "@types/node": - specifier: ^18.16.5 - version: 18.16.5 + specifier: ^20.4.4 + version: 20.4.4 nodemon: specifier: ^2.0.22 version: 2.0.22 @@ -32,11 +32,11 @@ devDependencies: specifier: ^2.8.8 version: 2.8.8 prisma: - specifier: ^4.15.0 - version: 4.15.0 + specifier: ^4.16.2 + version: 4.16.2 ts-node: specifier: ^10.9.1 - version: 10.9.1(@types/node@18.16.5)(typescript@4.9.5) + version: 10.9.1(@types/node@20.4.4)(typescript@4.9.5) typescript: specifier: 4.9.5 version: 4.9.5 @@ -61,11 +61,11 @@ packages: dependencies: "@discordjs/formatters": 0.3.1 "@discordjs/util": 0.3.1 - "@sapphire/shapeshift": 3.8.2 - discord-api-types: 0.37.41 + "@sapphire/shapeshift": 3.9.2 + discord-api-types: 0.37.50 fast-deep-equal: 3.1.3 ts-mixer: 6.0.3 - tslib: 2.5.0 + tslib: 2.6.0 dev: false /@discordjs/collection@1.5.1: @@ -83,7 +83,7 @@ packages: } engines: { node: ">=16.9.0" } dependencies: - discord-api-types: 0.37.41 + discord-api-types: 0.37.50 dev: false /@discordjs/rest@1.7.1: @@ -96,11 +96,11 @@ packages: "@discordjs/collection": 1.5.1 "@discordjs/util": 0.3.1 "@sapphire/async-queue": 1.5.0 - "@sapphire/snowflake": 3.4.2 - discord-api-types: 0.37.41 - file-type: 18.3.0 - tslib: 2.5.0 - undici: 5.22.0 + "@sapphire/snowflake": 3.5.1 + discord-api-types: 0.37.50 + file-type: 18.5.0 + tslib: 2.6.0 + undici: 5.22.1 dev: false /@discordjs/util@0.3.1: @@ -122,10 +122,10 @@ packages: "@discordjs/rest": 1.7.1 "@discordjs/util": 0.3.1 "@sapphire/async-queue": 1.5.0 - "@types/ws": 8.5.4 - "@vladfrangu/async_event_emitter": 2.2.1 - discord-api-types: 0.37.41 - tslib: 2.5.0 + "@types/ws": 8.5.5 + "@vladfrangu/async_event_emitter": 2.2.2 + discord-api-types: 0.37.50 + tslib: 2.6.0 ws: 8.13.0 transitivePeerDependencies: - bufferutil @@ -139,7 +139,7 @@ packages: } engines: { node: ">=16.0.0", npm: ">=7.0.0" } dependencies: - tsyringe: 4.7.0 + tsyringe: 4.8.0 typedi: 0.10.0 dev: false @@ -149,8 +149,8 @@ packages: integrity: sha512-JVUDCHzf+dTXqcF2hU++JzCJgVYt6G+StIubaF96SLGTMw8ZcaPUlrYClGAld3JXevzrQVr1yrRYScGObNgEMg==, } dependencies: - glob: 10.2.2 - tslib: 2.5.0 + glob: 10.3.3 + tslib: 2.6.0 dev: false /@discordx/internal@1.0.2: @@ -160,7 +160,7 @@ packages: } engines: { node: ">=16.0.0", npm: ">=7.0.0" } dependencies: - tslib: 2.5.0 + tslib: 2.6.0 dev: false /@isaacs/cliui@8.0.2: @@ -172,7 +172,7 @@ packages: dependencies: string-width: 5.1.2 string-width-cjs: /string-width@4.2.3 - strip-ansi: 7.0.1 + 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 @@ -213,7 +213,7 @@ packages: dev: false optional: true - /@prisma/client@4.15.0(prisma@4.15.0): + /@prisma/client@4.15.0(prisma@4.16.2): resolution: { integrity: sha512-xnROvyABcGiwqRNdrObHVZkD9EjkJYHOmVdlKy1yGgI+XOzvMzJ4tRg3dz1pUlsyhKxXGCnjIQjWW+2ur+YXuw==, @@ -227,7 +227,7 @@ packages: optional: true dependencies: "@prisma/engines-version": 4.15.0-28.8fbc245156db7124f997f4cecdd8d1219e360944 - prisma: 4.15.0 + prisma: 4.16.2 dev: false /@prisma/engines-version@4.15.0-28.8fbc245156db7124f997f4cecdd8d1219e360944: @@ -237,10 +237,10 @@ packages: } dev: false - /@prisma/engines@4.15.0: + /@prisma/engines@4.16.2: resolution: { - integrity: sha512-FTaOCGs0LL0OW68juZlGxFtYviZa4xdQj/rQEdat2txw0s3Vu/saAPKjNVXfIgUsGXmQ72HPgNr6935/P8FNAA==, + integrity: sha512-vx1nxVvN4QeT/cepQce68deh/Turxy5Mr+4L4zClFuK1GlxN3+ivxfuv+ej/gvidWn1cE1uAhW7ALLNlYbRUAw==, } requiresBuild: true @@ -252,10 +252,10 @@ packages: engines: { node: ">=v14.0.0", npm: ">=7.0.0" } dev: false - /@sapphire/shapeshift@3.8.2: + /@sapphire/shapeshift@3.9.2: resolution: { - integrity: sha512-NXpnJAsxN3/h9TqQPntOeVWZrpIuucqXI3IWF6tj2fWCoRLCuVK5wx7Dtg7pRrtkYfsMUbDqgKoX26vrC5iYfA==, + integrity: sha512-YRbCXWy969oGIdqR/wha62eX8GNHsvyYi0Rfd4rNW6tSVVa8p0ELiMEuOH/k8rgtvRoM+EMV7Csqz77YdwiDpA==, } engines: { node: ">=v14.0.0", npm: ">=7.0.0" } dependencies: @@ -263,10 +263,10 @@ packages: lodash: 4.17.21 dev: false - /@sapphire/snowflake@3.4.2: + /@sapphire/snowflake@3.5.1: resolution: { - integrity: sha512-KJwlv5gkGjs1uFV7/xx81n3tqgBwBJvH94n1xDyH3q+JSmtsMeSleJffarEBfG2yAFeJiFA4BnGOK6FFPHc19g==, + integrity: sha512-BxcYGzgEsdlG0dKAyOm0ehLGm2CafIrfQTZGWgkfKYbj+pNNsorZ7EotuZukc2MT70E0UbppVbtpBrqpzVzjNA==, } engines: { node: ">=v14.0.0", npm: ">=7.0.0" } dev: false @@ -299,32 +299,32 @@ packages: } dev: true - /@tsconfig/node16@1.0.3: + /@tsconfig/node16@1.0.4: resolution: { - integrity: sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==, + integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==, } dev: true - /@types/node@18.16.5: + /@types/node@20.4.4: resolution: { - integrity: sha512-seOA34WMo9KB+UA78qaJoCO20RJzZGVXQ5Sh6FWu0g/hfT44nKXnej3/tCQl7FL97idFpBhisLYCTB50S0EirA==, + integrity: sha512-CukZhumInROvLq3+b5gLev+vgpsIqC2D0deQr/yS1WnxvmYLlJXZpaQrQiseMY+6xusl79E04UjWoqyr+t1/Ew==, } - /@types/ws@8.5.4: + /@types/ws@8.5.5: resolution: { - integrity: sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==, + integrity: sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==, } dependencies: - "@types/node": 18.16.5 + "@types/node": 20.4.4 dev: false - /@vladfrangu/async_event_emitter@2.2.1: + /@vladfrangu/async_event_emitter@2.2.2: resolution: { - integrity: sha512-XtUEAS0m6uVddXW+EImGunLiJZzWNWAZQBoQCUneowrYXPQ6y7c0iWEm/wVYyGpTixTIhUfLRSoYCwojL64htA==, + integrity: sha512-HIzRG7sy88UZjBJamssEczH5q7t5+axva19UbZLO6u0ySbYPrwzWiXBcC0WuHyhKKoeCyneH+FvYzKQq/zTtkQ==, } engines: { node: ">=v14.0.0", npm: ">=7.0.0" } dev: false @@ -344,10 +344,10 @@ packages: engines: { node: ">=0.4.0" } dev: true - /acorn@8.8.2: + /acorn@8.10.0: resolution: { - integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==, + integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==, } engines: { node: ">=0.4.0" } hasBin: true @@ -542,10 +542,10 @@ packages: engines: { node: ">=0.3.1" } dev: true - /discord-api-types@0.37.41: + /discord-api-types@0.37.50: resolution: { - integrity: sha512-FaPGBK9hx3zqSRX1x3KQWj+OElAJKmcyyfcdCy+U4AKv+gYuIkRySM7zd1So2sE4gc1DikkghkSBgBgKh6pe4Q==, + integrity: sha512-X4CDiMnDbA3s3RaUXWXmgAIbY1uxab3fqe3qwzg5XutR3wjqi7M3IkgQbsIBzpqBN2YWr/Qdv7JrFRqSgb4TFg==, } dev: false @@ -562,13 +562,13 @@ packages: "@discordjs/rest": 1.7.1 "@discordjs/util": 0.3.1 "@discordjs/ws": 0.8.3 - "@sapphire/snowflake": 3.4.2 - "@types/ws": 8.5.4 - discord-api-types: 0.37.41 + "@sapphire/snowflake": 3.5.1 + "@types/ws": 8.5.5 + discord-api-types: 0.37.50 fast-deep-equal: 3.1.3 lodash.snakecase: 4.1.1 - tslib: 2.5.0 - undici: 5.22.0 + tslib: 2.6.0 + undici: 5.22.1 ws: 8.13.0 transitivePeerDependencies: - bufferutil @@ -588,7 +588,7 @@ packages: "@discordx/internal": 1.0.2 discord.js: 14.11.0 lodash: 4.17.21 - tslib: 2.5.0 + tslib: 2.6.0 dev: false /dotenv@16.0.3: @@ -627,10 +627,10 @@ packages: } dev: false - /file-type@18.3.0: + /file-type@18.5.0: resolution: { - integrity: sha512-pkPZ5OGIq0TYb37b8bHDLNeQSe1H2KlaQ2ySGpJkkr2KZdaWsO4QhPzHA0mQcsUW2cSqJk+4gM/UyLz/UFbXdQ==, + integrity: sha512-yvpl5U868+V6PqXHMmsESpg6unQ5GfnPssl4dxdJudBrr9qy7Fddt7EVX1VLlddFfe8Gj9N7goCZH22FXuSQXQ==, } engines: { node: ">=14.16" } dependencies: @@ -657,7 +657,7 @@ packages: engines: { node: ">=14" } dependencies: cross-spawn: 7.0.3 - signal-exit: 4.0.1 + signal-exit: 4.0.2 dev: false /fsevents@2.3.2: @@ -681,19 +681,19 @@ packages: is-glob: 4.0.3 dev: true - /glob@10.2.2: + /glob@10.3.3: resolution: { - integrity: sha512-Xsa0BcxIC6th9UwNjZkhrMtNo/MnyRL8jGCP+uEwhA5oFOCY1f2s1/oNKY47xQ0Bg5nkjsfAEIej1VeH62bDDQ==, + integrity: sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==, } engines: { node: ">=16 || 14 >=14.17" } hasBin: true dependencies: foreground-child: 3.1.1 - jackspeak: 2.2.0 - minimatch: 9.0.0 - minipass: 5.0.0 - path-scurry: 1.7.0 + jackspeak: 2.2.1 + minimatch: 9.0.3 + minipass: 7.0.2 + path-scurry: 1.10.1 dev: false /has-flag@3.0.0: @@ -776,10 +776,10 @@ packages: } dev: false - /jackspeak@2.2.0: + /jackspeak@2.2.1: resolution: { - integrity: sha512-r5XBrqIJfwRIjRt/Xr5fv9Wh09qyhHfKnYddDlpM+ibRR20qrYActpCAgU6U+d53EOEjzkvxPMVHSlgR7leXrQ==, + integrity: sha512-MXbxovZ/Pm42f6cDIDkl3xpwv1AGwObKwfmjs2nQePiy85tP3fatofl3FC1aBsOtP/6fq5SbtgHwWcMsLP+bDw==, } engines: { node: ">=14" } dependencies: @@ -802,10 +802,10 @@ packages: } dev: false - /lru-cache@9.1.1: + /lru-cache@10.0.0: resolution: { - integrity: sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A==, + integrity: sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw==, } engines: { node: 14 || >=16.14 } dev: false @@ -826,22 +826,22 @@ packages: brace-expansion: 1.1.11 dev: true - /minimatch@9.0.0: + /minimatch@9.0.3: resolution: { - integrity: sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==, + integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==, } engines: { node: ">=16 || 14 >=14.17" } dependencies: brace-expansion: 2.0.1 dev: false - /minipass@5.0.0: + /minipass@7.0.2: resolution: { - integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==, + integrity: sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA==, } - engines: { node: ">=8" } + engines: { node: ">=16 || 14 >=14.17" } dev: false /ms@2.1.3: @@ -864,7 +864,7 @@ packages: ignore-by-default: 1.0.1 minimatch: 3.1.2 pstree.remy: 1.1.8 - semver: 5.7.1 + semver: 5.7.2 simple-update-notifier: 1.1.0 supports-color: 5.5.0 touch: 3.1.0 @@ -897,15 +897,15 @@ packages: engines: { node: ">=8" } dev: false - /path-scurry@1.7.0: + /path-scurry@1.10.1: resolution: { - integrity: sha512-UkZUeDjczjYRE495+9thsgcVgsaCPkaw80slmfVFgllxY+IO8ubTsOpFVjDPROBqJdHfVPUFRHPBV/WciOVfWg==, + integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==, } engines: { node: ">=16 || 14 >=14.17" } dependencies: - lru-cache: 9.1.1 - minipass: 5.0.0 + lru-cache: 10.0.0 + minipass: 7.0.2 dev: false /peek-readable@5.0.0: @@ -933,16 +933,16 @@ packages: hasBin: true dev: true - /prisma@4.15.0: + /prisma@4.16.2: resolution: { - integrity: sha512-iKZZpobPl48gTcSZVawLMQ3lEy6BnXwtoMj7hluoGFYu2kQ6F9LBuBrUyF95zRVnNo8/3KzLXJXJ5TEnLSJFiA==, + integrity: sha512-SYCsBvDf0/7XSJyf2cHTLjLeTLVXYfqp7pG5eEVafFLeT0u/hLFz/9W196nDRGUOo1JfPatAEb+uEnTQImQC1g==, } engines: { node: ">=14.17" } hasBin: true requiresBuild: true dependencies: - "@prisma/engines": 4.15.0 + "@prisma/engines": 4.16.2 /pstree.remy@1.1.8: resolution: @@ -990,10 +990,10 @@ packages: } dev: false - /semver@5.7.1: + /semver@5.7.2: resolution: { - integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==, + integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==, } hasBin: true dev: true @@ -1024,10 +1024,10 @@ packages: engines: { node: ">=8" } dev: false - /signal-exit@4.0.1: + /signal-exit@4.0.2: resolution: { - integrity: sha512-uUWsN4aOxJAS8KOuf3QMyFtgm1pkb6I+KRZbRF/ghdf5T7sM+B1lLLzPDxswUjkmHyxQAVzEgG35E3NzDM9GVw==, + integrity: sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==, } engines: { node: ">=14" } dev: false @@ -1071,7 +1071,7 @@ packages: dependencies: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 - strip-ansi: 7.0.1 + strip-ansi: 7.1.0 dev: false /string_decoder@1.3.0: @@ -1093,10 +1093,10 @@ packages: ansi-regex: 5.0.1 dev: false - /strip-ansi@7.0.1: + /strip-ansi@7.1.0: resolution: { - integrity: sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==, + integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==, } engines: { node: ">=12" } dependencies: @@ -1162,7 +1162,7 @@ packages: } dev: false - /ts-node@10.9.1(@types/node@18.16.5)(typescript@4.9.5): + /ts-node@10.9.1(@types/node@20.4.4)(typescript@4.9.5): resolution: { integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==, @@ -1183,9 +1183,9 @@ packages: "@tsconfig/node10": 1.0.9 "@tsconfig/node12": 1.0.11 "@tsconfig/node14": 1.0.3 - "@tsconfig/node16": 1.0.3 - "@types/node": 18.16.5 - acorn: 8.8.2 + "@tsconfig/node16": 1.0.4 + "@types/node": 20.4.4 + acorn: 8.10.0 acorn-walk: 8.2.0 arg: 4.1.3 create-require: 1.1.1 @@ -1203,17 +1203,17 @@ packages: } dev: false - /tslib@2.5.0: + /tslib@2.6.0: resolution: { - integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==, + integrity: sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==, } dev: false - /tsyringe@4.7.0: + /tsyringe@4.8.0: resolution: { - integrity: sha512-ncFDM1jTLsok4ejMvSW5jN1VGPQD48y2tfAR0pdptWRKYX4bkbqPt92k7KJ5RFJ1KV36JEs/+TMh7I6OUgj74g==, + integrity: sha512-YB1FG+axdxADa3ncEtRnQCFq/M0lALGLxSZeVNbTU8NqhOVc51nnv2CISTcvc1kyv6EGPtXVr0v6lWeDxiijOA==, } engines: { node: ">= 6.0.0" } dependencies: @@ -1243,10 +1243,10 @@ packages: } dev: true - /undici@5.22.0: + /undici@5.22.1: resolution: { - integrity: sha512-fR9RXCc+6Dxav4P9VV/sp5w3eFiSdOjJYsbtWfd4s5L5C4ogyuVpdKIVHeW0vV1MloM65/f7W45nR9ZxwVdyiA==, + integrity: sha512-Ji2IJhFXZY0x/0tVBXeQwgPlLWw13GVzpsWPQ3rV50IFMMof2I55PZZxtm4P6iNq+L5znYN9nSTAq0ZyE6lSJw==, } engines: { node: ">=14.0" } dependencies: @@ -1299,7 +1299,7 @@ packages: dependencies: ansi-styles: 6.2.1 string-width: 5.1.2 - strip-ansi: 7.0.1 + strip-ansi: 7.1.0 dev: false /ws@8.13.0: diff --git a/src/commands/report.ts b/src/commands/report.ts new file mode 100644 index 0000000..8aec202 --- /dev/null +++ b/src/commands/report.ts @@ -0,0 +1,55 @@ +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"); + } +}