From 27ff15a8aac9d9230b76f845e27aaae1eaf255ce Mon Sep 17 00:00:00 2001 From: "Jyotirmoy Bandyopadhyaya [Bravo68]" Date: Fri, 12 May 2023 20:56:58 +0530 Subject: [PATCH] feat: Added Discord Bot && Added Upload Service --- packages/api/configs/index.ts | 13 + .../api/controllers/discord.controller.ts | 20 +- packages/api/controllers/upload.controller.ts | 27 ++ packages/api/data/uploader.service.ts | 67 +++ packages/api/helpers/discord_bot.factory.ts | 54 +++ packages/api/helpers/discord_bot_client.ts | 29 ++ packages/api/helpers/upload.factory.ts | 97 ++-- packages/api/index.ts | 3 + packages/api/package.json | 2 + packages/api/routes/api/upload.routes.ts | 23 + packages/api/routes/me/discord.routes.ts | 8 +- packages/api/services/discord.service.ts | 10 + packages/api/services/upload.service.ts | 26 + packages/api/types/index.d.ts | 1 + packages/bot/assets/jail.png | Bin 0 -> 6570 bytes packages/bot/assets/rip.jpg | Bin 0 -> 95247 bytes packages/bot/assets/trash.png | Bin 0 -> 164479 bytes packages/bot/assets/triggered.png | Bin 0 -> 41750 bytes packages/bot/config/bot.json | 8 + packages/bot/config/emojis.json | 5 + packages/bot/config/guild.config.ts | 47 ++ packages/bot/package.json | 48 ++ packages/bot/src/bot.ts | 51 ++ .../src/commands/message/general/botinfo.ts | 67 +++ .../commands/message/general/channelinfo.ts | 194 ++++++++ .../bot/src/commands/message/general/help.ts | 99 ++++ .../src/commands/message/general/invite.ts | 27 ++ .../bot/src/commands/message/general/ping.ts | 23 + .../commands/message/general/serverinfo.ts | 96 ++++ .../src/commands/message/general/uptime.ts | 28 ++ .../bot/src/commands/message/images/cat.ts | 45 ++ .../bot/src/commands/message/images/dog.ts | 40 ++ .../bot/src/commands/message/images/joke.ts | 44 ++ .../bot/src/commands/message/images/meme.ts | 45 ++ .../bot/src/commands/message/images/qrcode.ts | 43 ++ .../bot/src/commands/message/images/rip.ts | 78 +++ .../bot/src/commands/message/images/trash.ts | 81 ++++ .../src/commands/message/images/trigger.ts | 108 +++++ .../bot/src/commands/message/owner/eval.ts | 57 +++ .../bot/src/commands/message/owner/exec.ts | 59 +++ .../bot/src/commands/message/utilities/aes.ts | 73 +++ .../src/commands/message/utilities/avatar.ts | 53 ++ .../commands/message/utilities/shortenurl.ts | 43 ++ .../src/commands/message/utilities/weather.ts | 143 ++++++ packages/bot/src/commands/slash/help.ts | 90 ++++ packages/bot/src/commands/slash/ping.ts | 23 + packages/bot/src/events/interaction-create.ts | 79 +++ packages/bot/src/events/message-create.ts | 456 ++++++++++++++++++ packages/bot/src/events/ready.ts | 26 + packages/bot/src/index.ts | 34 ++ packages/bot/src/loaders/command.ts | 167 +++++++ packages/bot/src/loaders/event.ts | 45 ++ packages/bot/src/sturctures/command.ts | 93 ++++ packages/bot/src/sturctures/database.ts | 67 +++ packages/bot/src/sturctures/event.ts | 10 + packages/bot/src/utils/cache.ts | 5 + packages/bot/src/utils/canvas.ts | 28 ++ packages/bot/src/utils/cmds.ts | 127 +++++ packages/bot/src/utils/constants.ts | 1 + packages/bot/src/utils/database.ts | 17 + packages/bot/src/utils/formatters.ts | 16 + packages/bot/src/utils/messages.ts | 93 ++++ packages/bot/src/validate-env.ts | 22 + packages/bot/tsconfig.json | 37 ++ 64 files changed, 3350 insertions(+), 71 deletions(-) create mode 100644 packages/api/controllers/upload.controller.ts create mode 100644 packages/api/data/uploader.service.ts create mode 100644 packages/api/helpers/discord_bot.factory.ts create mode 100644 packages/api/helpers/discord_bot_client.ts create mode 100644 packages/api/routes/api/upload.routes.ts create mode 100644 packages/api/services/upload.service.ts create mode 100644 packages/bot/assets/jail.png create mode 100644 packages/bot/assets/rip.jpg create mode 100644 packages/bot/assets/trash.png create mode 100644 packages/bot/assets/triggered.png create mode 100644 packages/bot/config/bot.json create mode 100644 packages/bot/config/emojis.json create mode 100644 packages/bot/config/guild.config.ts create mode 100644 packages/bot/package.json create mode 100644 packages/bot/src/bot.ts create mode 100644 packages/bot/src/commands/message/general/botinfo.ts create mode 100644 packages/bot/src/commands/message/general/channelinfo.ts create mode 100644 packages/bot/src/commands/message/general/help.ts create mode 100644 packages/bot/src/commands/message/general/invite.ts create mode 100644 packages/bot/src/commands/message/general/ping.ts create mode 100644 packages/bot/src/commands/message/general/serverinfo.ts create mode 100644 packages/bot/src/commands/message/general/uptime.ts create mode 100644 packages/bot/src/commands/message/images/cat.ts create mode 100644 packages/bot/src/commands/message/images/dog.ts create mode 100644 packages/bot/src/commands/message/images/joke.ts create mode 100644 packages/bot/src/commands/message/images/meme.ts create mode 100644 packages/bot/src/commands/message/images/qrcode.ts create mode 100644 packages/bot/src/commands/message/images/rip.ts create mode 100644 packages/bot/src/commands/message/images/trash.ts create mode 100644 packages/bot/src/commands/message/images/trigger.ts create mode 100644 packages/bot/src/commands/message/owner/eval.ts create mode 100644 packages/bot/src/commands/message/owner/exec.ts create mode 100644 packages/bot/src/commands/message/utilities/aes.ts create mode 100644 packages/bot/src/commands/message/utilities/avatar.ts create mode 100644 packages/bot/src/commands/message/utilities/shortenurl.ts create mode 100644 packages/bot/src/commands/message/utilities/weather.ts create mode 100644 packages/bot/src/commands/slash/help.ts create mode 100644 packages/bot/src/commands/slash/ping.ts create mode 100644 packages/bot/src/events/interaction-create.ts create mode 100644 packages/bot/src/events/message-create.ts create mode 100644 packages/bot/src/events/ready.ts create mode 100644 packages/bot/src/index.ts create mode 100644 packages/bot/src/loaders/command.ts create mode 100644 packages/bot/src/loaders/event.ts create mode 100644 packages/bot/src/sturctures/command.ts create mode 100644 packages/bot/src/sturctures/database.ts create mode 100644 packages/bot/src/sturctures/event.ts create mode 100644 packages/bot/src/utils/cache.ts create mode 100644 packages/bot/src/utils/canvas.ts create mode 100644 packages/bot/src/utils/cmds.ts create mode 100644 packages/bot/src/utils/constants.ts create mode 100644 packages/bot/src/utils/database.ts create mode 100644 packages/bot/src/utils/formatters.ts create mode 100644 packages/bot/src/utils/messages.ts create mode 100644 packages/bot/src/validate-env.ts create mode 100644 packages/bot/tsconfig.json diff --git a/packages/api/configs/index.ts b/packages/api/configs/index.ts index 77b1101..58f11bb 100644 --- a/packages/api/configs/index.ts +++ b/packages/api/configs/index.ts @@ -48,6 +48,19 @@ export interface IConfigKeys { KEYCLOAK_REDIRECT_URI: string KEYCLOAK_AUTH_SERVER_URL: string KEYCLOAK_REALM: string + R2_CLIENT_ID: string + R2_CLIENT_SECRET: string + R2_BUCKET_NAME: string + R2_BUCKET_REGION: string + R2_BUCKET_ENDPOINT: string + R2_BUCKET_URL: string + R2_BUCKET_FOLDER: string + DISCORD_BOT_TOKEN: string + DISCORD_BOT_CLIENT_ID: number + DISCORD_BOT_CLIENT_SECRET: string + DISCORD_SERVER_ID: number + DISCORD_WEBHOOK_URL: string + DISCORD_SELF_ID: number } export default class ConfigStoreFactory { diff --git a/packages/api/controllers/discord.controller.ts b/packages/api/controllers/discord.controller.ts index 27fb885..389cab0 100644 --- a/packages/api/controllers/discord.controller.ts +++ b/packages/api/controllers/discord.controller.ts @@ -3,7 +3,7 @@ import { Request, Response } from 'express' import { makeResponse } from '../libs' export default class DiscordController extends DiscordService { - public getProfile = async (req: Request, res: Response) => { + public getActivity = async (req: Request, res: Response) => { try { const data = await this.activity() res.send(makeResponse(data)) @@ -22,4 +22,22 @@ export default class DiscordController extends DiscordService { res.send(makeResponse(error.message, {}, 'Failed', true)) } } + + public getProfile = async (req: Request, res: Response) => { + try { + const data = await this.profile() + res.send(makeResponse(data)) + } catch (error: any) { + res.send(makeResponse(error.message, {}, 'Failed', true)) + } + } + + public getPresence = async (req: Request, res: Response) => { + try { + const data = await this.presence() + res.send(makeResponse(data)) + } catch (error: any) { + res.send(makeResponse(error.message, {}, 'Failed', true)) + } + } } diff --git a/packages/api/controllers/upload.controller.ts b/packages/api/controllers/upload.controller.ts new file mode 100644 index 0000000..ac7ef20 --- /dev/null +++ b/packages/api/controllers/upload.controller.ts @@ -0,0 +1,27 @@ +import { NextFunction, Request, Response } from 'express' +import { ModRequest } from '../types' +import Uploader from '../services/upload.service' + +export default class UploadController extends Uploader { + public upload = async ( + req: ModRequest, + res: Response, + next: NextFunction + ) => { + try { + const { file } = req + if (!file) { + const error = new Error('Please upload a file') + next(error) + } + const data = await this.uploadS(file) + res.status(200).json({ + success: true, + message: 'File uploaded successfully', + data, + }) + } catch (error: any) { + next(error) + } + } +} diff --git a/packages/api/data/uploader.service.ts b/packages/api/data/uploader.service.ts new file mode 100644 index 0000000..2b9c1e5 --- /dev/null +++ b/packages/api/data/uploader.service.ts @@ -0,0 +1,67 @@ +import { S3Client, PutObjectCommand, S3ClientConfig } from '@aws-sdk/client-s3' +import { configKeys } from '..' + +type IUploaderServerType = 's3' | 'r2' | 'safe' + +export default class UploaderService { + private static _s3Client + private static _s3Opts + private static _clientType + + constructor(bucket, clientType: IUploaderServerType = 's3') { + const options = { + bucket, + } + UploaderService._s3Opts = options + UploaderService._clientType = clientType + + if (clientType === 's3') { + const s3ClientOpts: S3ClientConfig = { + region: configKeys.S3_BUCKET_REGION || '', + endpoint: configKeys.S3_BUCKET_ENDPOINT || '', + forcePathStyle: true, + credentials: { + accessKeyId: configKeys.S3_CLIENT_ID || '', + secretAccessKey: configKeys.S3_CLIENT_SECRET || '', + }, + } + const client = new S3Client(s3ClientOpts) + UploaderService._s3Client = client + } else if (clientType === 'r2') { + const s3ClientOpts: S3ClientConfig = { + region: configKeys.R2_BUCKET_REGION || '', + endpoint: configKeys.R2_BUCKET_ENDPOINT || '', + forcePathStyle: true, + credentials: { + accessKeyId: configKeys.R2_CLIENT_ID || '', + secretAccessKey: configKeys.R2_CLIENT_SECRET || '', + }, + } + const client = new S3Client(s3ClientOpts) + UploaderService._s3Client = client + } + } + + async uploadFile( + entity: string, + id: string, + file: Buffer, + fileType: string, + acl?: string + ) { + const key = [entity, id].join('/') + const uploadParams = { + Bucket: UploaderService._s3Opts.bucket, + ACL: acl, + ContentType: fileType, + Body: file, + Key: key, + } + await UploaderService._s3Client.send(new PutObjectCommand(uploadParams)) + return { + url: configKeys.S3_BUCKET_URL, + bucket_name: configKeys.S3_BUCKET_NAME, + folder: configKeys.S3_BUCKET_FOLDER, + } + } +} diff --git a/packages/api/helpers/discord_bot.factory.ts b/packages/api/helpers/discord_bot.factory.ts new file mode 100644 index 0000000..3f2ec4c --- /dev/null +++ b/packages/api/helpers/discord_bot.factory.ts @@ -0,0 +1,54 @@ +import { REST } from '@discordjs/rest' +import { + WebSocketManager, + WebSocketShardStatus, + WebSocketShardEvents, +} from '@discordjs/ws' +import { + GatewayDispatchEvents, + GatewayIntentBits, + Client, +} from '@discordjs/core' +import { configKeys } from '..' + +export default class DiscordBotClient { + public static _client: Client + private static _rest: REST + public static _gateway: WebSocketManager + private static _currentPresence + + public static init() { + this._rest = new REST({ version: '10' }).setToken( + configKeys.DISCORD_BOT_TOKEN + ) + this._gateway = new WebSocketManager({ + token: configKeys.DISCORD_BOT_TOKEN, + intents: GatewayIntentBits.GuildPresences, + rest: this._rest, + shardCount: 1, + shardIds: [0], + }) + this._client = new Client({ + rest: this._rest, + gateway: this._gateway, + }) + } + + public static getPresence = async () => { + return this._currentPresence + } + + // public static getShard = async () => { + // return this._gateway.on(WebSocketShardEvents.Dispatch, (data) => { + // console.log(data) + // }) + // } + + public static setPresence = async (presence: any) => { + this._currentPresence = presence + } + + public static getUser = async (id: number) => { + return this._client.rest.get(`/users/${id}`) + } +} diff --git a/packages/api/helpers/discord_bot_client.ts b/packages/api/helpers/discord_bot_client.ts new file mode 100644 index 0000000..4a88176 --- /dev/null +++ b/packages/api/helpers/discord_bot_client.ts @@ -0,0 +1,29 @@ +import { GatewayDispatchEvents } from '@discordjs/core' + +import DiscordBotClient from './discord_bot.factory' +import { configKeys } from '..' + +export default async () => { + DiscordBotClient.init() + + const DiscordBot = DiscordBotClient._client + + DiscordBot.on(GatewayDispatchEvents.PresenceUpdate, async ({ data }) => { + if (data.user.id == String(configKeys.DISCORD_SELF_ID)) { + DiscordBotClient.setPresence(data) + } + }) + + const selfInfo = await DiscordBot.api.users.getCurrent() + DiscordBot.once(GatewayDispatchEvents.Ready, async () => { + console.log( + '๐Ÿ”ฎ ' + + selfInfo.username + + '#' + + selfInfo.discriminator + + ' : Gateway Connected!' + ) + }) + + DiscordBotClient._gateway.connect() +} diff --git a/packages/api/helpers/upload.factory.ts b/packages/api/helpers/upload.factory.ts index 9bd5250..c9cb4c9 100644 --- a/packages/api/helpers/upload.factory.ts +++ b/packages/api/helpers/upload.factory.ts @@ -1,82 +1,43 @@ -import { S3Client } from '@aws-sdk/client-s3' import multer from 'multer' -import multerS3 from 'multer-s3' import path from 'path' -import napiNanoId from 'napi-nanoid' -import { configKeys } from '..' -interface UploadFactoryOptions { - region: string - bucket: string - accessKey: string - secretKey: string -} +import { nanoid } from 'napi-nanoid' interface UploaderConfig { - folder: string mimeFilters: string[] } export class UploadFactory { - private options: UploadFactoryOptions & Partial - private s3Client: S3Client - - constructor(options?: Partial) { - this.options = { - bucket: options?.bucket || configKeys.S3_BUCKET_NAME || '', - region: options?.region || configKeys.S3_BUCKET_REGION || '', - accessKey: options?.accessKey || configKeys.S3_CLIENT_ID || '', - secretKey: options?.secretKey || configKeys.S3_CLIENT_SECRET || '', - } - - this.s3Client = new S3Client({ - region: this.options.region, - credentials: { - accessKeyId: this.options.accessKey, - secretAccessKey: this.options.secretKey, + public getUploader(config?: UploaderConfig) { + const storage = multer.memoryStorage({ + filename: (req, file, cb) => { + const fileName = + file.originalname + + '-' + + nanoid() + + path.extname(file.originalname) + cb(null, fileName) }, }) - } - - public get serviceName(): string { - return 'aws:' + this.options.bucket - } - - public getUploader( - config?: Partial - ) { - const finalOptions = { - ...this.options, - ...(config || {}), - } return multer({ - fileFilter(_req, file, cb) { - const res = finalOptions.mimeFilters - ? finalOptions.mimeFilters.includes(file.mimetype) - : true - cb(null, res) - }, - storage: multerS3({ - s3: this.s3Client, - bucket: this.options.bucket, - acl: 'public-read', - contentType: multerS3.AUTO_CONTENT_TYPE, - metadata: function (_req, file, cb) { - const meta = { - fieldName: file.fieldname, - fileName: file.originalname, - uploadOn: new Date().toISOString(), + storage: storage, + fileFilter: (req, file, cb) => { + const fileName = + file.originalname.split('.')[ + file.originalname.split('.').length - 2 + ] + + '-' + + nanoid() + + path.extname(file.originalname) + file.newName = fileName + if (config?.mimeFilters?.length) { + if (config.mimeFilters.includes(file.mimetype)) { + cb(null, true) + } else { + cb(new Error('File type not allowed'), false) } - cb(null, meta) - }, - key: function (_req, file, cb) { - const key: string[] = [] - if (finalOptions.folder) key.push(finalOptions.folder) - const value = napiNanoId.nanoid() - const ext = path.extname(file.originalname) - key.push(value + ext) - - cb(null, key.join('/')) - }, - }), + } else { + cb(null, true) + } + }, }) } } diff --git a/packages/api/index.ts b/packages/api/index.ts index 14eb085..b040b23 100644 --- a/packages/api/index.ts +++ b/packages/api/index.ts @@ -10,6 +10,7 @@ import routes from './routes' import { errorHandler, notFoundHandler } from './libs' import pkg from './package.json' assert { type: 'json' } import configStore, { IConfigKeys } from './configs' +import discordBotConnect from './helpers/discord_bot_client' export const app: express.Application = express() @@ -23,6 +24,8 @@ console.log(isDev ? '๐Ÿš€ Production Mode' : '๐Ÿ‘ท Development Mode') const configs = new configStore(isDev) const configKeys: IConfigKeys = (await configs.getConfigStore()) as IConfigKeys +discordBotConnect() + app.use(cors()) app.use(helmet()) app.use(morgan('dev')) diff --git a/packages/api/package.json b/packages/api/package.json index 34bd5aa..f087ab1 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -10,6 +10,8 @@ "private": true, "dependencies": { "@aws-sdk/client-s3": "^3.226.0", + "@discordjs/core": "^0.6.0", + "@discordjs/rest": "^1.7.1", "@types/express": "^4.17.14", "axios": "^1.2.1", "cors": "^2.8.5", diff --git a/packages/api/routes/api/upload.routes.ts b/packages/api/routes/api/upload.routes.ts new file mode 100644 index 0000000..c4f65a8 --- /dev/null +++ b/packages/api/routes/api/upload.routes.ts @@ -0,0 +1,23 @@ +import { UploadFactory } from '../../helpers/upload.factory' +import { Router } from 'express' +import UploadController from '../../controllers/upload.controller' + +const router = Router() +const uploadController = new UploadController() +const uploaderFactory = new UploadFactory() + +router.post( + '/', + uploaderFactory + .getUploader({ + mimeFilters: [ + 'image/jpeg', + 'image/png', + 'image/gif', + 'application/json', + ], + }) + .single('file'), + uploadController.upload as any +) +export default router diff --git a/packages/api/routes/me/discord.routes.ts b/packages/api/routes/me/discord.routes.ts index 064681b..3500796 100644 --- a/packages/api/routes/me/discord.routes.ts +++ b/packages/api/routes/me/discord.routes.ts @@ -2,9 +2,13 @@ import { Router } from 'express' import DiscordController from '../../controllers/discord.controller' const router = Router() -const { getProfile, getBanner } = new DiscordController() +const { getProfile, getBanner, getActivity, getPresence } = + new DiscordController() -router.get('/profile', getProfile) +router.get('/profile', getActivity) router.get('/banner', getBanner) +router.get('/v2/profile', getProfile) +router.get('/v2/activity', getPresence) + export default router diff --git a/packages/api/services/discord.service.ts b/packages/api/services/discord.service.ts index 0a7cf6b..3edffac 100644 --- a/packages/api/services/discord.service.ts +++ b/packages/api/services/discord.service.ts @@ -1,4 +1,6 @@ +import { configKeys } from '..' import axios from '../helpers/axios_client' +import DiscordBotClient from '../helpers/discord_bot.factory' export default class DiscordService { public activity = async () => { @@ -14,4 +16,12 @@ export default class DiscordService { ) return data } + + public profile = async () => { + return DiscordBotClient.getUser(configKeys.DISCORD_SELF_ID) + } + + public presence = async () => { + return DiscordBotClient.getPresence() + } } diff --git a/packages/api/services/upload.service.ts b/packages/api/services/upload.service.ts new file mode 100644 index 0000000..dbbfecb --- /dev/null +++ b/packages/api/services/upload.service.ts @@ -0,0 +1,26 @@ +import UploaderService from '../data/uploader.service' +import { configKeys } from '..' + +const uploaderService = new UploaderService(configKeys.S3_BUCKET_NAME, 'r2') + +export default class Uploader { + public uploadS = async (file: any) => { + await uploaderService.uploadFile( + configKeys.S3_BUCKET_FOLDER, + file.newName, + file.buffer, + file.mimetype, + 'public-read' + ) + return { + url: + configKeys.S3_BUCKET_URL + + '/' + + configKeys.S3_BUCKET_NAME + + '/' + + configKeys.S3_BUCKET_FOLDER + + '/' + + file.newName, + } + } +} diff --git a/packages/api/types/index.d.ts b/packages/api/types/index.d.ts index 93d3aab..ff56687 100644 --- a/packages/api/types/index.d.ts +++ b/packages/api/types/index.d.ts @@ -10,4 +10,5 @@ export interface PaginationType { export interface ModRequest extends Request { user: any + file: any } diff --git a/packages/bot/assets/jail.png b/packages/bot/assets/jail.png new file mode 100644 index 0000000000000000000000000000000000000000..d98efc0b22516482b4cf62b2d3352d531b0f42ff GIT binary patch literal 6570 zcmeI1eNYqW9miws40w)E)FbwIiK2*gz_guFY zn0TCU6{{^#&XD@jiARKh;U$` z!|abTvd@;{!gfXN+7rDy=KYN9wA9Rm!^Fr)JPwCTNzT|Cy$>6(B@7!Dy?0+s^uC>u zQM)4|c17&+o$uHhsd@6(=G%YH$;tcmui}}Xvp+2?I)Apbl)?PN4FT=cr&q5w=H;GN z%C-0Jd@Jpc)m{00Rn-@_Zr-_c>8rTdUmiM`EP2?Ol|}yY%dcf!>XhWPmIspT>>L2# ziS9p)*}LDHNg4LNmj5;>6?xTx=ViB7^6O7hN+W%clOt zVY+aL+#F0AcNo;Cbe^@7Qy*8edVs1Wb~!R{b-oxhEsxCEYDX!rwD#|YkkMx=W-Gwz z?NLjWQ2+h|ug}>A<^7@=C8t?G`gHy~yF6Z8c{Kk#=R%t>(hy#gkOZyRCR2)lnvNzq zSWr=DdFh~6z{@(Ryr#Elvr<{Zo-)c62=fUFFeN=F$}}7u`!Ir72{j2-gk(SldB%g` zEHuodHJ@SiREPv z8 zu>Mx_=J#BmZCHEZG%fe($JJxqz^iXjK(3UkD|!{Vlvq3%#O$u%|p z+2b^itUYr+o%iUW9%6X|dOZ*wkV0i;@av_yS6-`iVBJpj&5dKltSlTeo*C3eY7~Zo z<2Z1&qMJc$n@eLDi3FSD6xE17&=_+vKolnTnW6|2HbkY!C#F;q5{db2!sCQ#&XfXf zZvvq+6@_$k;S*Mej79~Lj>tI=&1sS`gQA+9Xn-sMRw%U!{OsL;taZ;5`{r-C--Y?@ z=zs9#91@RqwK=!}XICLz-LBt|VNhoiz{-Kyf2IRSHzhtkZ5~_fubt^@7#Cvy6>s1> z)n0zOo7SusezPd5jnA|ggTDVS3$izmW@r^gCgTLcI08-|ZYLHSfZRc-rbFH#<$V4~ zkvomYt0V5~i6=_$oIKAkq!1z;uyf-oyi-{%t>f-l4;+pDjNuPkZ*}VQ2NORXc*8M? zY52<0!2i<5=~5pjBm)y(&zXbx`92>Md+LK?BWA=iV?c&hZ38}3W`p`gzOJ+gX|*eV zTX6g}WSBVV67xK*ScTpHc78pet5nnnFxbBqS1(po`^YmEQI> zm-Za>`&#|)1YGfrS&RfRTKJ&Np)f#HP+7O`&^ZCMRTpgKiM7AKycz3*;u3j*{6vB5o zTy&OSQ*SmGjT-ODU`zgXx)=@B_8CI}59*ueVA39RF#>PCf6Vva0+W?NN^eU$ed+Ip CxR5OX literal 0 HcmV?d00001 diff --git a/packages/bot/assets/rip.jpg b/packages/bot/assets/rip.jpg new file mode 100644 index 0000000000000000000000000000000000000000..205b96907d3e46e1ab228bbd74b55e9b8fbe33f5 GIT binary patch literal 95247 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Ν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 literal 0 HcmV?d00001 diff --git a/packages/bot/assets/triggered.png b/packages/bot/assets/triggered.png new file mode 100644 index 0000000000000000000000000000000000000000..6e3010e95c5a223ca373872365e3dcd2935a35f1 GIT binary patch literal 41750 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 + commands: Collection + slashcommands: Collection + commandsCatagories: Collection + } +} diff --git a/packages/bot/src/commands/message/general/botinfo.ts b/packages/bot/src/commands/message/general/botinfo.ts new file mode 100644 index 0000000..3e9f040 --- /dev/null +++ b/packages/bot/src/commands/message/general/botinfo.ts @@ -0,0 +1,67 @@ +import { EmbedBuilder, version as discordJsVersion } from 'discord.js' +import pidusage from 'pidusage' + +import { version as packageVersion } from '../../../../package.json' +import type { TextCommand } from '../../../sturctures/command' +import { parseMsToVisibleText } from '../../../utils/formatters' + +export const command: TextCommand = { + data: { + name: 'botinfo', + description: 'Check Bot information.', + directMessageAllowed: true, + }, + run: async ({ message }) => { + const apiDelayMS = Math.round(message.client.ws.ping) + const osStats = await pidusage(process.pid) + + const embed = new EmbedBuilder() + .setTitle("Bot's Information") + .setDescription( + 'Hello! I am Draconian Bot, honored to see you here. Information below is my body analysis :)' + ) + .addFields([ + { + name: 'Version', + value: `\`${packageVersion}\``, + inline: true, + }, + { + name: 'Discord.js', + value: `\`${discordJsVersion}\``, + inline: true, + }, + { + name: 'Node', + value: `\`${process.version}\``, + inline: true, + }, + { + name: 'CPU', + value: `\`${Math.round(Number(osStats.cpu.toFixed(2)))}%\``, + inline: true, + }, + { + name: 'Memory', + value: `\`${Math.round( + osStats.memory / (1024 * 1024) + )}MB\``, + inline: true, + }, + { + name: 'Uptime', + value: `\`${parseMsToVisibleText(message.client.uptime)}\``, + inline: true, + }, + { + name: 'Network Delay', + value: `\`${apiDelayMS} ms\``, + inline: true, + }, + ]) + + await message.reply({ + embeds: [embed], + }) + }, +} diff --git a/packages/bot/src/commands/message/general/channelinfo.ts b/packages/bot/src/commands/message/general/channelinfo.ts new file mode 100644 index 0000000..694b5af --- /dev/null +++ b/packages/bot/src/commands/message/general/channelinfo.ts @@ -0,0 +1,194 @@ +import dayjs from 'dayjs' +import type { TextChannel, ThreadChannel, VoiceChannel } from 'discord.js' +import { EmbedBuilder } from 'discord.js' + +import type { TextCommand } from '../../../sturctures/command' + +export const command: TextCommand = { + data: { + name: 'channelinfo', + description: "Check server's channel information.", + directMessageAllowed: false, + }, + // eslint-disable-next-line + run: async ({ message, args }) => { + const { guild, channel, mentions, member } = message + + if (!guild || !member) return + + const targetNameId = args[0] + + let targetChannel = mentions.channels.first() + + if (!targetChannel && targetNameId) { + const fetchedChannel = guild.channels.cache.get(targetNameId) + if (fetchedChannel) targetChannel = fetchedChannel + else { + const name = String(targetNameId).toLowerCase() + const fetchedChannelByKW = guild.channels.cache.find((ur) => + ur.name.toLowerCase().includes(name) + ) + if (fetchedChannelByKW) targetChannel = fetchedChannelByKW + } + } + + if (!targetChannel) targetChannel = channel + + const embed = new EmbedBuilder() + + if (targetChannel.isTextBased()) { + const textChannel = targetChannel as TextChannel + + embed.setTitle(`${textChannel.name}'s information:`).addFields([ + { name: 'ID', value: textChannel.id }, + { + // eslint-disable-next-line + name: 'Created on', + // eslint-disable-next-line + value: dayjs(textChannel.createdAt.getTime()).format( + 'DD/MM/YYYY' + ), + inline: true, + }, + ]) + + if (textChannel.parent?.name) { + embed.addFields([ + { + name: 'Parent', + value: textChannel.parent.name, + inline: true, + }, + ]) + } + + embed.addFields([ + { + name: 'Position', + value: textChannel.rawPosition.toString(), + inline: true, + }, + { + name: 'NSFW', + value: textChannel.nsfw ? 'YES' : 'NO', + inline: true, + }, + { + name: 'Viewable', + value: textChannel.viewable ? 'YES' : 'NO', + inline: true, + }, + ]) + + embed.setFooter({ + iconURL: guild.iconURL() ?? '', + text: `Shard ID: ${guild.shardId}`, + }) + + await message.reply({ + embeds: [embed], + }) + + return + } + + if (targetChannel.isThread()) { + const voiceChannel = targetChannel as ThreadChannel + + embed.setTitle(`${voiceChannel.name}'s information:`).addFields([ + { name: 'ID', value: voiceChannel.id }, + { + name: 'Created on', + value: dayjs(voiceChannel.createdAt?.getTime()).format( + 'DD/MM/YYYY' + ), + inline: true, + }, + ]) + + if (voiceChannel.parent?.name) { + embed.addFields([ + { + name: 'Parent', + value: voiceChannel.parent.name, + inline: true, + }, + ]) + } + + embed.addFields([ + { + name: 'Joinable', + value: voiceChannel.joinable ? 'YES' : 'NO', + inline: true, + }, + { + name: 'Locked', + value: voiceChannel.locked ? 'YES' : 'NO', + inline: true, + }, + ]) + + embed.setFooter({ + iconURL: guild.iconURL() ?? '', + text: `Shard ID: ${guild.shardId}`, + }) + + await message.reply({ + embeds: [embed], + }) + } + + if (targetChannel.isVoiceBased()) { + const voiceChannel = targetChannel as unknown as VoiceChannel + + embed.setTitle(`${voiceChannel.name}'s information:`).addFields([ + { name: 'ID', value: voiceChannel.id }, + { + name: 'Created on', + value: dayjs(voiceChannel.createdAt.getTime()).format( + 'DD/MM/YYYY' + ), + inline: true, + }, + ]) + + if (voiceChannel.parent?.name) { + embed.addFields([ + { + name: 'Parent', + value: voiceChannel.parent.name, + inline: true, + }, + ]) + } + + embed.addFields([ + { + name: 'Position', + value: voiceChannel.rawPosition.toString(), + inline: true, + }, + { + name: 'Joinable', + value: voiceChannel.joinable ? 'YES' : 'NO', + inline: true, + }, + { + name: 'Speakable', + value: voiceChannel.speakable ? 'YES' : 'NO', + inline: true, + }, + ]) + + embed.setFooter({ + iconURL: guild.iconURL() ?? '', + text: `Shard ID: ${guild.shardId}`, + }) + + await message.reply({ + embeds: [embed], + }) + } + }, +} diff --git a/packages/bot/src/commands/message/general/help.ts b/packages/bot/src/commands/message/general/help.ts new file mode 100644 index 0000000..6de613e --- /dev/null +++ b/packages/bot/src/commands/message/general/help.ts @@ -0,0 +1,99 @@ +import type { TextChannel } from 'discord.js' +import { EmbedBuilder } from 'discord.js' + +import config from '../../../../config/bot.json' +import type { TextCommand } from '../../../sturctures/command' +import { getCommandHelpInfo } from '../../../utils/cmds' +import { callbackEmbed } from '../../../utils/messages' + +export const command: TextCommand = { + data: { + name: 'help', + description: 'Get information or help from the bot.', + directMessageAllowed: true, + }, + // eslint-disable-next-line + run: async ({ message, args }) => { + const embed = new EmbedBuilder() + + const { client, channel, guildId } = message + + if (args[0]) { + let cmd: TextCommand | undefined + + const commandMatching = client.commands.get(args[0]) + const aliasesMatching = client.aliases.get(args[0]) + + // Fetch command destination. + if (commandMatching) { + cmd = commandMatching + } else if (aliasesMatching) { + cmd = client.commands.get(aliasesMatching) + } else { + const cEmbed = callbackEmbed({ + text: 'Command requested does not exist!', + color: 'Red', + mode: 'error', + }) + await message.reply({ + embeds: [cEmbed], + }) + + return + } + + if (cmd) { + const helpInfo = getCommandHelpInfo(cmd) + await message.reply({ + embeds: [helpInfo], + }) + } + } else { + const commandsCatagories = client.commandsCatagories + + embed.setDescription( + `Hello๐Ÿ™‹โ€โ™‚๏ธ!\nOur source code: [Here](${config.githubLink})\nTurely appreciate that you are supporting us.` + ) + + for (const catagory of commandsCatagories) { + if (catagory[0].toLocaleLowerCase() === 'nsfw') { + if ((channel as TextChannel).nsfw) { + catagory[0] += ' THIS CHANNEL ONLY' + } else { + continue + } + } + const text = catagory[1] + .map((index: string) => { + let _text: string | undefined + const cmd = client.commands.get(index) + if ( + guildId || + (cmd && cmd.data.directMessageAllowed === true) + ) { + _text = `\`${index}\`` + } + + return _text + }) + .filter(Boolean) + .join(', ') + + if (text.length > 0) { + embed.addFields([{ name: catagory[0], value: text }]) + } + } + + const avatarURL = client.user.defaultAvatarURL + + embed.setTitle('Bot Assistance Centre').setFooter({ + text: `ยฉ ${new Date().getFullYear()} ${config.name}`, + iconURL: avatarURL, + }) + + await message.reply({ + embeds: [embed], + }) + } + }, +} diff --git a/packages/bot/src/commands/message/general/invite.ts b/packages/bot/src/commands/message/general/invite.ts new file mode 100644 index 0000000..21f0661 --- /dev/null +++ b/packages/bot/src/commands/message/general/invite.ts @@ -0,0 +1,27 @@ +import { EmbedBuilder } from 'discord.js' + +import type { TextCommand } from '../../../sturctures/command' +import { isDev } from '../../../utils/constants' + +export const command: TextCommand = { + data: { + name: 'invite', + description: 'Invite me to your server!', + directMessageAllowed: true, + }, + run: async ({ message }) => { + const { client } = message + + if (isDev || client.application.botPublic) { + const link = `https://discord.com/api/oauth2/authorize?client_id=${client.application.id}&permissions=1636381879799&scope=applications.commands%20bot` + + const embed = new EmbedBuilder().setDescription( + `Invite to your server: [HERE](${link})` + ) + + await message.reply({ + embeds: [embed], + }) + } + }, +} diff --git a/packages/bot/src/commands/message/general/ping.ts b/packages/bot/src/commands/message/general/ping.ts new file mode 100644 index 0000000..5c1bfed --- /dev/null +++ b/packages/bot/src/commands/message/general/ping.ts @@ -0,0 +1,23 @@ +import { EmbedBuilder } from 'discord.js' + +import type { TextCommand } from '../../../sturctures/command' + +export const command: TextCommand = { + data: { + name: 'ping', + description: "Check Bot's network delay.", + directMessageAllowed: true, + }, + run: async ({ message }) => { + const apiDelayMS = Math.round(message.client.ws.ping) + const messageDelayMS = Date.now() - message.createdTimestamp + + const embed = new EmbedBuilder().setDescription( + `Action Delay: \`${messageDelayMS}ms\`\nAPI Delay: \`${apiDelayMS}ms\`` + ) + + await message.reply({ + embeds: [embed], + }) + }, +} diff --git a/packages/bot/src/commands/message/general/serverinfo.ts b/packages/bot/src/commands/message/general/serverinfo.ts new file mode 100644 index 0000000..370169e --- /dev/null +++ b/packages/bot/src/commands/message/general/serverinfo.ts @@ -0,0 +1,96 @@ +import dayjs from 'dayjs' +import { EmbedBuilder } from 'discord.js' + +import type { TextCommand } from '../../../sturctures/command' + +export const command: TextCommand = { + data: { + name: 'serverinfo', + description: "Check server's stats and information.", + directMessageAllowed: false, + }, + run: async ({ message }) => { + const { guild } = message + + if (!guild) return + + const owner = await guild.fetchOwner() + + const embed = new EmbedBuilder() + .setThumbnail(guild.iconURL() ?? '') + .setTitle(`${guild.name}'s information:`) + .addFields([ + { name: 'Owner', value: owner.user.tag, inline: true }, + + { + name: 'Created on', + value: dayjs(guild.createdAt.getTime()).format( + 'DD/MM/YYYY' + ), + inline: true, + }, + + { + name: 'User Count', + value: guild.memberCount.toString(), + inline: true, + }, + + { + name: 'Bot Count', + value: guild.members.cache + .filter((mb) => mb.user.bot) + .size.toString(), + inline: true, + }, + { + name: 'Roles', + value: guild.members.cache + .filter((mb) => mb.user.bot) + .size.toString(), + inline: true, + }, + { + name: 'Roles', + value: guild.roles.cache.size.toString(), + inline: true, + }, + { + name: 'Emojis', + value: guild.channels.cache.size.toString(), + inline: true, + }, + { + name: 'Verification Level', + value: guild.verificationLevel.toString(), + inline: true, + }, + ]) + .setFooter({ + text: `Shard ID: ${guild.shardId}`, + }) + + if (guild.description) embed.setDescription(guild.description) + + if (guild.premiumSubscriptionCount) { + embed.addFields([ + { + name: 'Total Boosts', + value: guild.premiumSubscriptionCount.toString(), + inline: true, + }, + ]) + } + + if (guild.vanityURLCode) { + const url = `https://discord.gg/${guild.vanityURLCode}` + embed.addFields([ + { name: 'Vanity Invite URL', value: `[${url}](${url})` }, + ]) + } + + await message.reply({ + embeds: [embed], + }) + }, +} diff --git a/packages/bot/src/commands/message/general/uptime.ts b/packages/bot/src/commands/message/general/uptime.ts new file mode 100644 index 0000000..5856365 --- /dev/null +++ b/packages/bot/src/commands/message/general/uptime.ts @@ -0,0 +1,28 @@ +import { EmbedBuilder } from 'discord.js' + +import type { TextCommand } from '../../../sturctures/command' +import { parseMsToVisibleText } from '../../../utils/formatters' + +export const command: TextCommand = { + data: { + name: 'uptime', + description: 'Check Bot uptime duration.', + directMessageAllowed: true, + }, + run: async ({ message }) => { + const instanceBoot = message.client.uptime + const bootTimeMS = Math.round((Date.now() - instanceBoot) / 1000) + + const embed = new EmbedBuilder() + .setTitle("Bot's Uptime") + .setDescription( + `\`${parseMsToVisibleText( + instanceBoot + )}\`\n**Booted at** ` + ) + + await message.reply({ + embeds: [embed], + }) + }, +} diff --git a/packages/bot/src/commands/message/images/cat.ts b/packages/bot/src/commands/message/images/cat.ts new file mode 100644 index 0000000..7c679c5 --- /dev/null +++ b/packages/bot/src/commands/message/images/cat.ts @@ -0,0 +1,45 @@ +import axios from 'axios' +import { EmbedBuilder } from 'discord.js' + +import type { TextCommand } from '../../../sturctures/command' + +export const command: TextCommand = { + data: { + name: 'cat', + description: 'Fetch cat image.', + directMessageAllowed: true, + cooldownInterval: 6 * 1000, + }, + run: async ({ message }) => { + const embed = new EmbedBuilder() + + const url = 'https://api.thecatapi.com/v1/images/search?format=json' + + try { + const response = await axios.get(url) + const responseData = response.data + + const data: { + id: string + url: string + } = responseData[0] + + embed + .setTitle('Cat here') + .setImage(data.url) + .setFooter({ + text: `ID: ${data.id}`, + }) + + await message.reply({ + embeds: [embed], + }) + } catch { + embed.setDescription('Error occured when fetching meme content.') + + await message.reply({ + embeds: [embed], + }) + } + }, +} diff --git a/packages/bot/src/commands/message/images/dog.ts b/packages/bot/src/commands/message/images/dog.ts new file mode 100644 index 0000000..9261119 --- /dev/null +++ b/packages/bot/src/commands/message/images/dog.ts @@ -0,0 +1,40 @@ +import axios from 'axios' +import { EmbedBuilder } from 'discord.js' + +import type { TextCommand } from '../../../sturctures/command' + +export const command: TextCommand = { + data: { + name: 'dog', + description: 'Fetch dog image.', + directMessageAllowed: true, + cooldownInterval: 6 * 1000, + }, + run: async ({ message }) => { + const embed = new EmbedBuilder() + + const url = 'https://dog.ceo/api/breeds/image/random' + + try { + const response = await axios.get(url) + const responseData: { + status: string + message: string + } = response.data + + if (responseData.status === 'success') { + embed.setTitle('Dog here').setImage(responseData.message) + + await message.reply({ + embeds: [embed], + }) + } + } catch { + embed.setDescription('Error occured when fetching meme content.') + + await message.reply({ + embeds: [embed], + }) + } + }, +} diff --git a/packages/bot/src/commands/message/images/joke.ts b/packages/bot/src/commands/message/images/joke.ts new file mode 100644 index 0000000..b5a4a58 --- /dev/null +++ b/packages/bot/src/commands/message/images/joke.ts @@ -0,0 +1,44 @@ +import axios from 'axios' +import { EmbedBuilder } from 'discord.js' + +import type { TextCommand } from '../../../sturctures/command' + +export const command: TextCommand = { + data: { + name: 'joke', + description: 'Get some jokes.', + directMessageAllowed: true, + cooldownInterval: 6 * 1000, + }, + run: async ({ message }) => { + const embed = new EmbedBuilder() + + const url = 'https://v2.jokeapi.dev/joke/Any?type=single' + + try { + const response = await axios.get(url) + const responseData: { + id: string + joke: string + error: boolean + category: string + } = response.data + + if (responseData.error) throw 0 + + embed.setTitle(responseData.joke).setFooter({ + text: `Category: ${responseData.category} โ€ข ID: ${responseData.id}`, + }) + + await message.reply({ + embeds: [embed], + }) + } catch { + embed.setDescription('Error occured when fetching meme content.') + + await message.reply({ + embeds: [embed], + }) + } + }, +} diff --git a/packages/bot/src/commands/message/images/meme.ts b/packages/bot/src/commands/message/images/meme.ts new file mode 100644 index 0000000..0c37784 --- /dev/null +++ b/packages/bot/src/commands/message/images/meme.ts @@ -0,0 +1,45 @@ +import axios from 'axios' +import { EmbedBuilder } from 'discord.js' + +import type { TextCommand } from '../../../sturctures/command' + +export const command: TextCommand = { + data: { + name: 'meme', + description: "Fetch meme's image.", + directMessageAllowed: true, + cooldownInterval: 6 * 1000, + }, + run: async ({ message }) => { + const embed = new EmbedBuilder() + + const url = 'https://meme-api.herokuapp.com/gimme' + + try { + const response = await axios.get(url) + const responseData: { + url: string + title: string + postLink: string + subreddit: string + } = response.data + + embed + .setTitle(responseData.title) + .setImage(responseData.url) + .setFooter({ + text: `Credit: ${responseData.subreddit} โ€ข ${responseData.postLink}`, + }) + + await message.reply({ + embeds: [embed], + }) + } catch { + embed.setDescription('Error occured when fetching meme content.') + + await message.reply({ + embeds: [embed], + }) + } + }, +} diff --git a/packages/bot/src/commands/message/images/qrcode.ts b/packages/bot/src/commands/message/images/qrcode.ts new file mode 100644 index 0000000..cd0ca0d --- /dev/null +++ b/packages/bot/src/commands/message/images/qrcode.ts @@ -0,0 +1,43 @@ +import { EmbedBuilder } from 'discord.js' + +import type { TextCommand } from '../../../sturctures/command' +import { callbackEmbed } from '../../../utils/messages' + +export const command: TextCommand = { + data: { + name: 'qrcode', + description: 'Generate QR Code by one click.', + directMessageAllowed: true, + cooldownInterval: 5 * 1000, + }, + run: async ({ message, args }) => { + if (message.channel.isVoiceBased()) return + + const embed = new EmbedBuilder() + + const data = args.join(' ') + + if (!data) { + const cEmbed = callbackEmbed({ + text: 'Missing QR Code data!', + color: 'Red', + mode: 'error', + }) + await message.reply({ + embeds: [cEmbed], + }) + return + } + + const url = `https://api.qrserver.com/v1/create-qr-code/?size=200x200&data=${data.replace( + /\s/g, + '%20' + )}` + + embed.setImage(url) + + await message.channel.send({ + embeds: [embed], + }) + }, +} diff --git a/packages/bot/src/commands/message/images/rip.ts b/packages/bot/src/commands/message/images/rip.ts new file mode 100644 index 0000000..57014d0 --- /dev/null +++ b/packages/bot/src/commands/message/images/rip.ts @@ -0,0 +1,78 @@ +import { createCanvas, loadImage } from 'canvas' +import { AttachmentBuilder } from 'discord.js' + +import type { TextCommand } from '../../../sturctures/command' + +export const command: TextCommand = { + data: { + name: 'rip', + description: 'R I P.', + directMessageAllowed: true, + cooldownInterval: 10 * 1000, + }, + run: async ({ message, args }) => { + const { attachments, author, guild, channel } = message + + if (channel.isVoiceBased()) return + + // Image fetching + let image = attachments.first()?.proxyURL + + for (let index = 0; index < 2; index++) { + if (image) break + + if (index === 1) { + image = author.displayAvatarURL({ + size: 256, + extension: 'png', + forceStatic: true, + }) + break + } + + if (guild && args[0]) { + if (args[0].length >= 18) { + const idMember = guild.members.cache.get(args[0]) + if (idMember) { + image = idMember.user.displayAvatarURL({ + size: 256, + extension: 'png', + forceStatic: true, + }) + } + } else { + const username = String(args[0]).toLowerCase() + const target = guild.members.cache.find((ur) => + ur.user.username.toLowerCase().includes(username) + ) + if (target) { + image = target.user.displayAvatarURL({ + size: 256, + extension: 'png', + forceStatic: true, + }) + } + } + } + } + + if (!image) return + + const targetImage = await loadImage(image) + const background = await loadImage('./assets/rip.jpg') + + const canvas = createCanvas(background.width, background.height) + const context = canvas.getContext('2d') + + context.drawImage(background, 0, 0, canvas.width, canvas.height) + context.drawImage(targetImage, 95, 200, 150, 150) + + const attachment = new AttachmentBuilder(canvas.toBuffer(), { + name: `${Date.now()}_rip.png`, + }) + + await channel.send({ + files: [attachment], + }) + }, +} diff --git a/packages/bot/src/commands/message/images/trash.ts b/packages/bot/src/commands/message/images/trash.ts new file mode 100644 index 0000000..dc6e8f9 --- /dev/null +++ b/packages/bot/src/commands/message/images/trash.ts @@ -0,0 +1,81 @@ +import { createCanvas, loadImage } from 'canvas' +import { AttachmentBuilder } from 'discord.js' + +import type { TextCommand } from '../../../sturctures/command' +import { blur } from '../../../utils/canvas' + +export const command: TextCommand = { + data: { + name: 'trash', + description: 'TRAshh.', + directMessageAllowed: true, + cooldownInterval: 10 * 1000, + }, + run: async ({ message, args }) => { + const { attachments, author, guild, channel } = message + + if (channel.isVoiceBased()) return + + // Image fetching + let image = attachments.first()?.proxyURL + + for (let index = 0; index < 2; index++) { + if (image) break + + if (index === 1) { + image = author.displayAvatarURL({ + size: 256, + extension: 'png', + forceStatic: true, + }) + break + } + + if (guild && args[0]) { + if (args[0].length >= 18) { + const idMember = guild.members.cache.get(args[0]) + if (idMember) { + image = idMember.user.displayAvatarURL({ + size: 256, + extension: 'png', + forceStatic: true, + }) + } + } else { + const username = String(args[0]).toLowerCase() + const target = guild.members.cache.find((ur) => + ur.user.username.toLowerCase().includes(username) + ) + if (target) { + image = target.user.displayAvatarURL({ + size: 256, + extension: 'png', + forceStatic: true, + }) + } + } + } + } + + if (!image) return + + const blurredImg = await blur(image) + + const targetImage = await loadImage(blurredImg) + const background = await loadImage('./assets/trash.png') + + const canvas = createCanvas(background.width, background.height) + const context = canvas.getContext('2d') + + context.drawImage(background, 0, 0) + context.drawImage(targetImage, 309, 0, 309, 309) + + const attachment = new AttachmentBuilder(canvas.toBuffer(), { + name: `${Date.now()}_trash.png`, + }) + + await channel.send({ + files: [attachment], + }) + }, +} diff --git a/packages/bot/src/commands/message/images/trigger.ts b/packages/bot/src/commands/message/images/trigger.ts new file mode 100644 index 0000000..7bb8f0f --- /dev/null +++ b/packages/bot/src/commands/message/images/trigger.ts @@ -0,0 +1,108 @@ +import { createCanvas, loadImage } from 'canvas' +import { AttachmentBuilder } from 'discord.js' +import GIFEncoder from 'gifencoder' + +import type { TextCommand } from '../../../sturctures/command' + +export const command: TextCommand = { + data: { + name: 'trigger', + description: 'TRIGGER~.', + directMessageAllowed: true, + cooldownInterval: 10 * 1000, + }, + run: async ({ message, args }) => { + const { attachments, author, guild, channel } = message + + if (channel.isVoiceBased()) return + + // Image fetching + let image = attachments.first()?.proxyURL + + for (let index = 0; index < 2; index++) { + if (image) break + + if (index === 1) { + image = author.displayAvatarURL({ + size: 256, + extension: 'png', + forceStatic: true, + }) + break + } + + if (guild && args[0]) { + if (args[0].length >= 18) { + const idMember = guild.members.cache.get(args[0]) + if (idMember) { + image = idMember.user.displayAvatarURL({ + size: 256, + extension: 'png', + forceStatic: true, + }) + } + } else { + const username = String(args[0]).toLowerCase() + const target = guild.members.cache.find((ur) => + ur.user.username.toLowerCase().includes(username) + ) + if (target) { + image = target.user.displayAvatarURL({ + size: 256, + extension: 'png', + forceStatic: true, + }) + } + } + } + } + + if (!image) return + + const targetImage = await loadImage(image) + const background = await loadImage('./assets/triggered.png') + + const gif: any = new GIFEncoder(256, 310) + + gif.start() + gif.setRepeat(0) + gif.setDelay(15) + + const canvas = createCanvas(256, 310) + const context = canvas.getContext('2d') + + const BR = 30 + const LR = 20 + + for (let index = 0; index < 9; index++) { + context.clearRect(0, 0, 256, 310) + context.drawImage( + targetImage, + Math.floor(Math.random() * BR) - BR, + Math.floor(Math.random() * BR) - BR, + 256 + BR, + 310 - 54 + BR + ) + context.fillStyle = '#FF000033' + context.fillRect(0, 0, 256, 310) + context.drawImage( + background, + Math.floor(Math.random() * LR) - LR, + 310 - 54 + Math.floor(Math.random() * LR) - LR, + 256 + LR, + 54 + LR + ) + gif.addFrame(context) + } + + gif.finish() + + const attachment = new AttachmentBuilder(gif.out.getData(), { + name: `${Date.now()}_trgigered.gif`, + }) + + await channel.send({ + files: [attachment], + }) + }, +} diff --git a/packages/bot/src/commands/message/owner/eval.ts b/packages/bot/src/commands/message/owner/eval.ts new file mode 100644 index 0000000..33aac56 --- /dev/null +++ b/packages/bot/src/commands/message/owner/eval.ts @@ -0,0 +1,57 @@ +import { inspect } from 'node:util' + +import type { TextCommand } from '../../../sturctures/command' +import { isDev } from '../../../utils/constants' + +function clean(text: string) { + if (typeof text === 'string') { + return text + .replaceAll('`', `\`${String.fromCodePoint(8203)}`) + .replaceAll(/@/g, `@${String.fromCodePoint(8203)}`) + } + return text +} + +export const command: TextCommand = { + enabled: isDev, + data: { + name: 'eval', + publicLevel: 'None', + description: 'Eval javascript code in Nodejs runtime.', + ownerOnly: true, + developmentOnly: true, + directMessageAllowed: true, + requiredArgs: [ + { + type: 'STRING', + rest: true, + }, + ], + }, + run: async ({ message, args }) => { + const { channel } = message + + if (channel.isVoiceBased()) return + + const code = args.join(' ') + + if (code) { + try { + let evaled = eval(code) + if (typeof evaled !== 'string') evaled = inspect(evaled) + if (evaled.length > 1999) return console.log(evaled) + await channel.send({ + content: `\`\`\`${clean(evaled as string)}\`\`\``, + }) + } catch (error) { + if (error instanceof Error && error.message.length < 1999) { + await channel.send({ + content: `\`ERROR\` \`\`\`xl\n${clean( + error.message + )}\n\`\`\``, + }) + } + } + } + }, +} diff --git a/packages/bot/src/commands/message/owner/exec.ts b/packages/bot/src/commands/message/owner/exec.ts new file mode 100644 index 0000000..c29f1ff --- /dev/null +++ b/packages/bot/src/commands/message/owner/exec.ts @@ -0,0 +1,59 @@ +import { exec } from 'node:child_process' + +import type { TextCommand } from '../../../sturctures/command' +import { isDev } from '../../../utils/constants' + +function clean(text: string) { + if (typeof text === 'string') { + return text + .replaceAll('`', `\`${String.fromCodePoint(8203)}`) + .replaceAll(/@/g, `@${String.fromCodePoint(8203)}`) + } + return text +} + +export const command: TextCommand = { + enabled: isDev, + data: { + name: 'exec', + publicLevel: 'None', + ownerOnly: true, + developmentOnly: true, + description: 'Execute shell command in Nodejs runtime.', + directMessageAllowed: true, + requiredArgs: [ + { + type: 'STRING', + rest: true, + }, + ], + }, + run: ({ message, args }) => { + const { channel } = message + if (channel.isVoiceBased()) return + + const code = args.join(' ') + + if (code) { + exec(code, async (error, stdout, stderr) => { + if (error) { + await channel.send({ + content: `\`ERROR\` \`\`\`xl\n${clean( + error.message + )}\n\`\`\``, + }) + return + } + + if (stderr) { + await channel.send({ + content: `\`ERROR\` \`\`\`xl\n${clean(stderr)}\n\`\`\``, + }) + return + } + + await channel.send({ content: `\`\`\`${clean(stdout)}\`\`\`` }) + }) + } + }, +} diff --git a/packages/bot/src/commands/message/utilities/aes.ts b/packages/bot/src/commands/message/utilities/aes.ts new file mode 100644 index 0000000..38a5661 --- /dev/null +++ b/packages/bot/src/commands/message/utilities/aes.ts @@ -0,0 +1,73 @@ +import AES from 'crypto-js/aes' +import { EmbedBuilder } from 'discord.js' + +import type { TextCommand } from '../../../sturctures/command' + +export const command: TextCommand = { + data: { + name: 'aes', + description: 'Encrypt and Decrypt stuff by AES256.', + directMessageAllowed: true, + requiredArgs: [ + { + name: 'mode', + type: 'STRING', + text: ['encrypt', 'decrypt'], + }, + { + name: 'key', + type: 'STRING', + }, + { + name: 'value', + type: 'STRING', + }, + ], + }, + run: async ({ message, args }) => { + if (message.channel.isVoiceBased()) return + + const [mode, key, ...value] = args + const string = value.join(' ') + + const embed = new EmbedBuilder() + + if (message.deletable) message.delete().catch(() => undefined) + + switch (mode) { + case 'encrypt': { + const encryptedValue = AES.encrypt(string, key).toString() + + embed + .setTitle('Encryped Data:') + .setDescription(`\`\`\`${encryptedValue}\`\`\``) + + await message.channel.send({ + embeds: [embed], + }) + break + } + case 'decrypt': { + const decryptedValue = AES.decrypt(string, key).toString() + + embed + .setTitle('Decryped Data:') + .setDescription(`\`\`\`${decryptedValue}\`\`\``) + + await message.channel.send({ + embeds: [embed], + }) + break + } + default: { + embed + .setTitle('Wrong Type!') + .setDescription('`encrypt / decrypt` [key] [value...]') + await message.reply({ + embeds: [embed], + }) + break + } + } + }, +} diff --git a/packages/bot/src/commands/message/utilities/avatar.ts b/packages/bot/src/commands/message/utilities/avatar.ts new file mode 100644 index 0000000..33cb4d7 --- /dev/null +++ b/packages/bot/src/commands/message/utilities/avatar.ts @@ -0,0 +1,53 @@ +import { EmbedBuilder } from 'discord.js' + +import type { TextCommand } from '../../../sturctures/command' + +export const command: TextCommand = { + data: { + name: 'avatar', + aliases: ['av'], + description: "Fetch user's avatar.", + directMessageAllowed: true, + }, + run: async ({ message, args }) => { + const embed = new EmbedBuilder() + + const { guild, mentions, author } = message + + let targetUser = mentions.users.first() + + if (!targetUser) { + if (guild && args[0]) { + if (args[0].length >= 18) { + const idMember = guild.members.cache.get(args[0]) + if (idMember) { + targetUser = idMember.user + } + } else { + const username = String(args[0]).toLowerCase() + const target = guild.members.cache.find((ur) => + ur.user.username.toLowerCase().includes(username) + ) + if (target) targetUser = target.user + } + } else { + targetUser = author + } + } + + if (!targetUser) targetUser = author + + const avatarURL = targetUser.displayAvatarURL({ + size: 4096, + }) + + embed + .setTitle(`Icon from ${targetUser.tag}`) + .setDescription(`Link: [Click Here](${avatarURL})`) + .setImage(avatarURL) + + await message.reply({ + embeds: [embed], + }) + }, +} diff --git a/packages/bot/src/commands/message/utilities/shortenurl.ts b/packages/bot/src/commands/message/utilities/shortenurl.ts new file mode 100644 index 0000000..6168da5 --- /dev/null +++ b/packages/bot/src/commands/message/utilities/shortenurl.ts @@ -0,0 +1,43 @@ +import axios from 'axios' +import { EmbedBuilder } from 'discord.js' + +import type { TextCommand } from '../../../sturctures/command' + +export const command: TextCommand = { + data: { + name: 'shortenurl', + description: "Fetch meme's image.", + directMessageAllowed: true, + cooldownInterval: 6 * 1000, + }, + run: async ({ message, args }) => { + const embed = new EmbedBuilder() + + const destination = args[0] + + try { + const url = `https://is.gd/create.php?format=simple&url=${encodeURI( + destination + )}` + + const response = await axios.get(url) + const responseData: string = response.data + + embed + .setTitle('Converted!') + .setDescription( + `URL: ${responseData}\nDestination: \`${destination}\`` + ) + + await message.reply({ + embeds: [embed], + }) + } catch { + embed.setDescription('Error occured when fetching the content.') + + await message.reply({ + embeds: [embed], + }) + } + }, +} diff --git a/packages/bot/src/commands/message/utilities/weather.ts b/packages/bot/src/commands/message/utilities/weather.ts new file mode 100644 index 0000000..65f0e14 --- /dev/null +++ b/packages/bot/src/commands/message/utilities/weather.ts @@ -0,0 +1,143 @@ +import axios from 'axios' +import { EmbedBuilder } from 'discord.js' +import { parseStringPromise } from 'xml2js' + +import type { TextCommand } from '../../../sturctures/command' + +export const command: TextCommand = { + data: { + name: 'weather', + description: 'Get weather.', + directMessageAllowed: true, + cooldownInterval: 10 * 1000, + }, + run: async ({ message, args }) => { + const embed = new EmbedBuilder() + + const targetLocation = args.join(' ') + + if (!targetLocation) { + return + } + + try { + const url = 'https://weather.service.msn.com/find.aspx' + + const response = await axios.get(url, { + params: { + src: 'outlook', + weadegreetype: 'C', + culture: 'en-US', + weasearchstr: targetLocation, + }, + timeout: 10_000, + }) + + const responseData = response.data as string + + if (!responseData.includes('<')) { + if (responseData.search(/not found/i) !== -1) { + throw new Error('Location not found!') + } + throw new Error('Unknown error!') + } + + const data = await parseStringPromise(responseData) + + interface CurrentWeather { + $: { + temperature: string + skytext: string + date: string + observationtime: string + observationpoint: string + feelslike: string + humidity: string + winddisplay: string + day: string + shortday: string + windspeed: string + } + } + + interface WeatherData { + $: { + weatherlocationname: string + timezone: string + url: string + imagerelativeurl: string + degreetype: string + entityid: string + } + current: CurrentWeather[] + } + + const weatherData: WeatherData = data.weatherdata.weather[0] + + embed + .setTitle( + `${weatherData.$.weatherlocationname}'s Current Weather:` + ) + .setDescription( + `More Information: [HERE](${weatherData.$.url})` + ) + .setFooter({ + text: `ID: ${weatherData.$.entityid}`, + }) + .addFields([ + { + name: 'Date', + value: `${weatherData.current[0].$.date} (${weatherData.current[0].$.day})`, + inline: false, + }, + { + name: 'Time Zone', + value: `UTC${ + weatherData.$.timezone.startsWith('-') + ? weatherData.$.timezone + : '+' + weatherData.$.timezone + }`, + inline: true, + }, + + { + name: 'Status', + value: weatherData.current[0].$.skytext, + inline: true, + }, + { + name: 'Temperature', + value: weatherData.current[0].$.temperature + 'ยฐC', + inline: true, + }, + { + name: 'Feels like', + value: weatherData.current[0].$.feelslike + 'ยฐC', + inline: true, + }, + { + name: 'Humidity', + value: weatherData.current[0].$.humidity, + inline: true, + }, + { + name: 'Windspeed', + value: weatherData.current[0].$.winddisplay, + inline: true, + }, + ]) + + await message.reply({ + embeds: [embed], + }) + } catch (error) { + if (error instanceof Error) { + embed.setTitle(error.message) + + await message.reply({ + embeds: [embed], + }) + } + } + }, +} diff --git a/packages/bot/src/commands/slash/help.ts b/packages/bot/src/commands/slash/help.ts new file mode 100644 index 0000000..7a62899 --- /dev/null +++ b/packages/bot/src/commands/slash/help.ts @@ -0,0 +1,90 @@ +import { SlashCommandBuilder } from '@discordjs/builders' +import type { TextChannel } from 'discord.js' +import { EmbedBuilder } from 'discord.js' + +import { githubLink, name as botname } from '../../../config/bot.json' +import type { SlashCommand, TextCommand } from '../../sturctures/command' +import { getCommandHelpInfo } from '../../utils/cmds' +import { callbackEmbed } from '../../utils/messages' +import { command as helpTextCommand } from '../message/general/help' + +export const command: SlashCommand = { + slashData: new SlashCommandBuilder() + .setName('help') + .setDescription(helpTextCommand.data.description) + .addStringOption((option) => + option + .setName('command') + .setDescription('Get specified Text Command') + .setRequired(false) + ), + run: async ({ interaction }) => { + const embed = new EmbedBuilder() + + const { client, channel, options } = interaction + + const commandInput = options.get('command')?.value + + if (!commandInput || typeof commandInput !== 'string') { + const commandsCatagories = client.commandsCatagories + + embed.setDescription( + `Hello๐Ÿ™‹โ€โ™‚๏ธ!\nOur source code: [Here](${githubLink})\nTurely appreciate that you are supporting us.` + ) + + for (const catagory of commandsCatagories) { + if (catagory[0].toLocaleLowerCase() === 'nsfw') { + if ((channel as TextChannel).nsfw) { + catagory[0] += ' THIS CHANNEL ONLY' + } else { + continue + } + } + const text = catagory[1] + .map((index: string) => `\`${index}\``) + .join(', ') + embed.addFields([{ name: catagory[0], value: text }]) + } + + const avatarURL = client.user.defaultAvatarURL + + embed.setTitle('Bot Assistance Centre').setFooter({ + text: `ยฉ ${new Date().getFullYear()} ${botname}`, + iconURL: avatarURL, + }) + + await interaction.reply({ + embeds: [embed], + }) + return + } + + let cmd: TextCommand | undefined + + const commandMatching = client.commands.get(commandInput) + const aliasesMatching = client.aliases.get(commandInput) + // Fetch command destination. + if (commandMatching) { + cmd = commandMatching + } else if (aliasesMatching) { + cmd = client.commands.get(aliasesMatching) + } else { + const cEmbed = callbackEmbed({ + text: 'Command requested does not exist!', + color: 'Red', + mode: 'error', + }) + await interaction.reply({ + embeds: [cEmbed], + }) + return + } + + if (cmd) { + const helpInfo = getCommandHelpInfo(cmd) + await interaction.reply({ + embeds: [helpInfo], + }) + } + }, +} diff --git a/packages/bot/src/commands/slash/ping.ts b/packages/bot/src/commands/slash/ping.ts new file mode 100644 index 0000000..8868a31 --- /dev/null +++ b/packages/bot/src/commands/slash/ping.ts @@ -0,0 +1,23 @@ +import { SlashCommandBuilder } from '@discordjs/builders' +import { EmbedBuilder } from 'discord.js' + +import type { SlashCommand } from '../../sturctures/command' +import { command as TextCommand } from '../message/general/ping' + +export const command: SlashCommand = { + slashData: new SlashCommandBuilder() + .setName('ping') + .setDescription(TextCommand.data.description), + run: async ({ interaction }) => { + const apiDelayMS = Math.round(interaction.client.ws.ping) + const messageDelayMS = Date.now() - interaction.createdTimestamp + + const embed = new EmbedBuilder().setDescription( + `Action Delay: \`${messageDelayMS}ms\`\nAPI Delay: \`${apiDelayMS}ms\`` + ) + + await interaction.reply({ + embeds: [embed], + }) + }, +} diff --git a/packages/bot/src/events/interaction-create.ts b/packages/bot/src/events/interaction-create.ts new file mode 100644 index 0000000..b64d971 --- /dev/null +++ b/packages/bot/src/events/interaction-create.ts @@ -0,0 +1,79 @@ +import type { CommandInteraction } from 'discord.js' + +import { ownerId } from '../../config/bot.json' +import type { DiscordEvent } from '../sturctures/event' +import { cooldownCache } from '../utils/cache' +import { isDev } from '../utils/constants' +import { parseMsToVisibleText } from '../utils/formatters' + +export const event: DiscordEvent = { + name: 'interactionCreate', + // eslint-disable-next-line + run: async (interaction: CommandInteraction) => { + if (interaction.guild && !interaction.member) { + await interaction.guild.members.fetch(interaction.user.id) + } + + const returnOfInter = async (content: string, ephemeral = true) => { + await interaction.reply({ content, ephemeral }) + } + + if (interaction.isChatInputCommand()) { + const { commandName, user, client } = interaction + + const slashCollection = client.slashcommands + + const slash = slashCollection.get(commandName) + + if (!slashCollection.has(commandName) || !slash) { + return returnOfInter('Error Occured!') + } + + // Eligibility Validations + if (slash.enabled === false) { + return returnOfInter('This command is not enabled to execute.') + } + + if (slash.data?.ownerOnly === true && user.id !== ownerId) { + return returnOfInter('This command is not enabled to execute.') + } + + if (slash.data?.developmentOnly === true && !isDev) { + return returnOfInter( + 'This command is not enabled to execute in current state.' + ) + } + + // Cooldown Validation + const now = Date.now() + const keyName = `CMD_${user.id}_${slash.slashData.name}` + const cooldownInterval = slash.data?.cooldownInterval ?? 3000 + + // Reject if user exists in cooldown. + if (cooldownCache.has(keyName)) { + const expectedEnd = cooldownCache.get(keyName) + if (expectedEnd && now < Number(expectedEnd)) { + const timeleft = parseMsToVisibleText( + Number(expectedEnd) - now + ) + return returnOfInter( + `Before using this command, please wait for **${timeleft}**.` + ) + } + } + + // Set cooldown + cooldownCache.set( + keyName, + now + cooldownInterval, + cooldownInterval / 1000 + ) + + try { + return slash.run({ interaction }) + } catch (error) { + if (error instanceof Error) console.error(error) + } + } + }, +} diff --git a/packages/bot/src/events/message-create.ts b/packages/bot/src/events/message-create.ts new file mode 100644 index 0000000..8560b4a --- /dev/null +++ b/packages/bot/src/events/message-create.ts @@ -0,0 +1,456 @@ +import type { Message, PermissionResolvable, TextChannel } from 'discord.js' + +import { ownerId } from '../../config/bot.json' +import type { TextCommand } from '../sturctures/command' +import type { GuildConfig } from '../sturctures/database' +import type { DiscordEvent } from '../sturctures/event' +import { cooldownCache } from '../utils/cache' +import { getCommandHelpInfo, resembleCommandCheck } from '../utils/cmds' +import { isDev } from '../utils/constants' +import { parseMsToVisibleText } from '../utils/formatters' +import { callbackEmbed } from '../utils/messages' +import MYGuildConfig from '../../config/guild.config' + +async function reject(message: Message, usage: string, missing: string) { + const postMessage = await message.reply({ + content: `Usage: \`${usage}\`\nMissing: \`${missing}\``, + allowedMentions: { repliedUser: true }, + }) + + setTimeout(() => { + if (postMessage.deletable) postMessage.delete().catch(() => undefined) + }, 6000) +} + +export const event: DiscordEvent = { + name: 'messageCreate', + // eslint-disable-next-line + run: async (message: Message) => { + const { content, channel, author, webhookId, member, guild, client } = + message + + if ( + author.bot || + channel.isVoiceBased() || + webhookId || + author.id === client.user.id + ) + return + + const prefix = 'd!' + + if (guild) { + if (!member) await guild.members.fetch(author.id) + } + + const guildDatabase: GuildConfig = MYGuildConfig + + const mentionReg = new RegExp(`^(<@!?${client.user.id}>)`) + const mentionTest = mentionReg.test(content) + if (mentionTest) { + await channel.send(`Hey! My prefix is \`${prefix}\``) + return + } + + const prefixReg = new RegExp(`^${prefix}`) + const prefixTest = content.match(prefixReg) + if (prefixTest) { + const [prefix] = prefixTest + const parsedContent = content.slice(prefix.length) + if (!parsedContent) return + + const command = parsedContent.split(' ')[0] + // Command Content Parsing. + let cmd: TextCommand | undefined + + let cmdName = command + + // Fetch command destination. + for (let index = 0; index < 2; index++) { + const commandMatching = client.commands.get(cmdName) + const aliasesMatching = client.aliases.get(cmdName) + + if (commandMatching) { + cmd = commandMatching + cmdName = cmd.data.name + break + } else if (aliasesMatching) { + cmd = client.commands.get(aliasesMatching) + if (cmd) { + cmdName = cmd.data.name + } + break + } else { + if (index === 0) { + const expectedCommandName = await resembleCommandCheck( + message, + cmdName + ) + if (expectedCommandName) { + cmdName = expectedCommandName.name + message.createdTimestamp += + expectedCommandName.timeTaken + continue + } + } + return + } + } + // Reject if no. + if (!cmd) return + + const cmdData = cmd.data + + /** + * Command's eligibility vaildation. + */ + + if (cmd.enabled === false) return + // Reject if not in development mode + if (cmdData.developmentOnly === true && !isDev) { + return + } + + if (cmdData.ownerOnly === true && author.id !== ownerId) return + + // Reject if dm mode while configurated to guild. + if (!guild && !cmdData.directMessageAllowed) return + + // Reject if command can executed NSFW channel when it's not in. + if ( + cmdData.nsfwChannelRequired && + (!guild || !channel.isTextBased()) && + !(channel as TextChannel).nsfw + ) { + const cEmbed = callbackEmbed({ + text: 'You must be in **NSFW** channel before executing this commmand.', + color: 'Red', + mode: 'error', + }) + author + .send({ + embeds: [cEmbed], + }) + .catch(() => undefined) + return + } + + // Reject if dm mode while configurated to guild. + if (!guild && !cmdData.directMessageAllowed) return + + // Reject when Target disabled or didn't pass. + if (guild) { + const commandDatasbase = guildDatabase?.commands + // GUILD specifies disabled command. + if ( + !commandDatasbase || + commandDatasbase.global.disabled.includes(cmdName) + ) { + return + } + + // Specified CATAGORIES + if ( + cmd.data.catagory && + commandDatasbase.global.disabledCatagories.includes( + cmd.data.catagory + ) + ) { + return + } + + // Specified CHANNEL + if ( + commandDatasbase.channelDisabled + .find((x) => x.id === channel.id) + ?.cmds.includes(cmdName) + ) { + author + .send({ + content: `Command cannot be executed in this channel (#${channel.id})!`, + allowedMentions: { repliedUser: true }, + }) + .catch(() => undefined) + return + } + + // Specified ROLE + if (member?.roles.cache) { + // eslint-disable-next-line no-unsafe-optional-chaining + for (const role of member.roles.cache) { + const hasRole = commandDatasbase.roleDisabled + .find((x) => x.id === role[1].id) + ?.cmds.includes(cmdName) + if (hasRole) return + } + } + + // Specified USER + if ( + commandDatasbase.userDisabled + .find((x) => x.id === author.id) + ?.cmds.includes(cmdName) + ) { + author + .send({ + content: + 'You are disabled from executing this command!', + allowedMentions: { repliedUser: true }, + }) + .catch(() => undefined) + return + } + + if ( + cmd.data.inVoiceChannelRequired === true && + !member?.voice.channel + ) { + const cEmbed = callbackEmbed({ + text: 'You must be in voice channel before executing this commmand.', + color: 'Red', + mode: 'error', + }) + await message.reply({ + embeds: [cEmbed], + }) + return + } + } + + /** + * END of Command's eligibility vaildation. + */ + + // Cooldown Validation + const now = Date.now() + const keyName = `CMD_${author.id}_${cmdName}` + + const cooldownInterval = cmd.data.cooldownInterval ?? 3000 + + // Reject if user exists in cooldown. + if (cooldownCache.has(keyName)) { + const expectedEnd = cooldownCache.get(keyName) + if (expectedEnd && now < Number(expectedEnd)) { + const timeleft = parseMsToVisibleText( + Number(expectedEnd) - now + ) + const postMessage = await message.reply({ + content: `Before using this command, please wait for **${timeleft}**.`, + allowedMentions: { repliedUser: true }, + }) + setTimeout(() => { + if (postMessage.deletable) + postMessage.delete().catch(() => undefined) + }, 6000) + return + } + } + + // Set cooldown. + cooldownCache.set( + keyName, + now + cooldownInterval, + cooldownInterval / 1000 + ) + + // Reject if excess usage. + if (cmd.data.intervalLimit) { + const key1 = 'INTERVAL' + keyName + + let doRejection = { is: false, which: '' } + const customTTL = { + minute: 60 * 1000, + hour: 60 * 60 * 1000, + day: 24 * 60 * 60 * 1000, + } + const intervalList = cmd.data.intervalLimit + for (const [key, ms] of Object.entries(intervalList)) { + if (!ms) continue + const keyTyped = key as keyof typeof intervalList + if (!intervalList[keyTyped]) continue + + const userFeq = cooldownCache.get(keyTyped + key1) ?? '0' + + // Do Rejection if number reached specified amount of allowed cooldown. + if (Number(userFeq) === intervalList[keyTyped]) { + doRejection = { is: true, which: keyTyped } + break + } + + // Set to Database with TTL. + cooldownCache.set( + keyTyped + key1, + (Number(userFeq) + 1).toString(), + customTTL[keyTyped] + ) + } + + if (doRejection.is) { + const postMessage = await message.reply({ + content: `You have reached the maxmium usage in 1 **${doRejection.which}**!`, + allowedMentions: { repliedUser: true }, + }) + + setTimeout(() => { + if (postMessage.deletable) + postMessage.delete().catch(() => undefined) + }, 6000) + + return + } + } + + // Permission Check (BOT) + const requestPermsClient = cmd.data.clientRequiredPermissions + if (guild && requestPermsClient) { + const permMissing: PermissionResolvable[] = [] + for (const perm of requestPermsClient) { + const botId = client.user.id + if (botId) { + const isOwned = guild.members.cache + .get(botId) + ?.permissions.has(perm) + if (!isOwned) permMissing.push(perm) + } + } + + // Reject if BOT doesn't own permission(s). + if (permMissing.length > 0) { + const perms = permMissing + .map((index) => `\`${Number(index)}\``) + .join(', ') + + await message.reply({ + content: `I don't have **PERMISSIONS**: ${perms}`, + }) + + return + } + } + + // Permission Check (AUTHOR) + const requestPermsAuthor = cmd.data.authorRequiredPermissions + if (guild && requestPermsAuthor) { + const permMissing: PermissionResolvable[] = [] + for (const perm of requestPermsAuthor) { + const isOwned = member?.permissions.has(perm) + if (!isOwned) permMissing.push(perm) + } + + // Reject if AUTHOR doesn't own permission(s). + if (permMissing.length > 0) { + const perms = permMissing + .map((index) => `\`${Number(index)}\``) + .join(', ') + + await message.reply({ + content: `You do not have required **PERMISSIONS**: ${perms}`, + }) + + return + } + } + + // Pass + console.log( + `[CMD] ${author.tag} executed ${cmdName} in ${ + guild?.name ?? 'DM' + }.` + ) + const arguments_ = parsedContent.split(' ').slice(1) + + if (arguments_[0] === 'help') { + if ( + cmd.data.nsfwChannelRequired === true && + (channel as TextChannel).nsfw + ) { + const helpInfo = getCommandHelpInfo(cmd) + await message.reply({ + embeds: [helpInfo], + }) + } + return + } + + // Arguments Checking + const requiredArugments = cmd.data.requiredArgs + if (requiredArugments && requiredArugments.length > 0) { + let usage = `${prefix}${cmd.data.name}` + for (const _argument_ of requiredArugments) { + let namedArguments: string = _argument_.type + if (_argument_.type === 'STRING' && _argument_.text) { + namedArguments = _argument_.text.join(' | ') + } else if (_argument_.name) { + namedArguments += `(${_argument_.name})` + } + usage += ` [${namedArguments}]` + } + + for ( + let index = 0, l = requiredArugments.length; + index < l; + index++ + ) { + const _argument = requiredArugments[index] + const userArgument = arguments_[index] + + switch (_argument.type) { + case 'STRING': { + if (_argument.required) { + if ( + !userArgument || + userArgument.length === 0 + ) { + return reject( + message, + usage, + index.toString() + ) + } + if ( + _argument.text && + !_argument.text.includes(userArgument) + ) { + const text = `${index.toString()} (NOT_MATCH)` + return reject(message, usage, text) + } + if ( + _argument.customLength && + (content.length > + _argument.customLength.max! || + content.length < + _argument.customLength.min!) + ) { + const text = `${index.toString()} (ERR_Length)` + return reject(message, usage, text) + } + } + break + } + case 'NUMBER': { + if ( + _argument.required && + Number.isNaN(Number(userArgument)) + ) { + return reject(message, usage, index.toString()) + } + break + } + default: { + break + } + } + + if (_argument.rest) break + } + } + + // Run the actual command. + try { + return cmd.run({ message, args: arguments_ }) + } catch (error) { + if (error instanceof Error) console.error(error) + } + } + }, +} diff --git a/packages/bot/src/events/ready.ts b/packages/bot/src/events/ready.ts new file mode 100644 index 0000000..c52a15e --- /dev/null +++ b/packages/bot/src/events/ready.ts @@ -0,0 +1,26 @@ +import type { Client } from 'discord.js' +import { ActivityType } from 'discord.js' + +import { defaultPrefix } from '../../config/bot.json' +import type { DiscordEvent } from '../sturctures/event' + +export const event: DiscordEvent = { + once: true, + name: 'ready', + run: (client: Client) => { + // Dynamic Status + let index = 0 + + const status = [`${client.guilds.cache.size} Servers`] + + setInterval(() => { + const _status = status[index++ % status.length] + const text = `${defaultPrefix}help | ${_status}` + client.user?.setActivity(text, { + type: ActivityType.Watching, + }) + }, 15 * 1000) + + console.log('Bot is in ready status!') + }, +} diff --git a/packages/bot/src/index.ts b/packages/bot/src/index.ts new file mode 100644 index 0000000..cb3474b --- /dev/null +++ b/packages/bot/src/index.ts @@ -0,0 +1,34 @@ +import 'dotenv/config' + +import chalk from 'chalk' + +import './validate-env' + +import { isDev } from './utils/constants' + +// Check NODE Version +const nodeVersions = process.versions.node.split('.') +if (Number(nodeVersions[0]) <= 16 && Number(nodeVersions[1]) < 9) { + throw new Error( + 'Node.js version must be 16.9.0 higher. Please update your Node.js version.' + ) +} + +process.setMaxListeners(15) + +// If instacne is not production mode. +if (isDev) { + const log = console.log + + log(chalk.bold.red('DEVELOPMENT / MAINTAINANCE MODE')) + log( + chalk.red.bold( + 'Some production features will be disrupted or terminated.' + ) + ) +} else { + process.on('uncaughtException', console.error) + process.on('unhandledRejection', console.error) +} + +import('./bot') diff --git a/packages/bot/src/loaders/command.ts b/packages/bot/src/loaders/command.ts new file mode 100644 index 0000000..5f14268 --- /dev/null +++ b/packages/bot/src/loaders/command.ts @@ -0,0 +1,167 @@ +import { basename, dirname, join } from 'node:path' +import { fileURLToPath } from 'node:url' + +import { REST } from '@discordjs/rest' +import chalk from 'chalk' +import type { Client } from 'discord.js' +import type { + RESTGetAPIApplicationCommandsResult, + RESTPostAPIApplicationCommandsJSONBody, +} from 'discord-api-types/v9' +import { Routes } from 'discord-api-types/v9' +import { glob } from 'glob' + +import { disabledCommandCatagories } from '../../config/bot.json' +import type { SlashCommand, TextCommand } from '../sturctures/command' +import { isDev } from '../utils/constants' + +type TextCommandCatagories = Record + +const __dirname = dirname(fileURLToPath(import.meta.url)) + +/** Text Command Loaders */ +export async function loadTextCommand(client: Client) { + let folderPath = join(__dirname, '../commands/message/**/*.ts') + + // Parse path in windows + if (process.platform === 'win32') { + folderPath = folderPath.replaceAll('\\', '/') + } + + const allFiles = await glob(folderPath) + + if (allFiles.length === 0) { + return + } + + const catagories: TextCommandCatagories = {} + + for (const filePath of allFiles) { + const commandFile = await import(filePath) + const command: TextCommand = commandFile.command + + // Neglect if disabled. + if (command.enabled === false) continue + + // Store command to memory. + const cmdName = command.data.name + if (client.commands.has(cmdName)) { + throw new Error('Duplicated command is found!') + } + + const catagory = basename(dirname(filePath)) + + const disabledCatagories: string[] = disabledCommandCatagories + + if (!disabledCatagories.includes(catagory)) { + if (catagory) { + command.data.catagory = catagory + if (command.data.publicLevel !== 'None') { + if (!catagories[String(catagory)]) { + catagories[String(catagory)] = [] + } + catagories[String(catagory)].push(cmdName) + } + } + + if (command.data.intervalLimit) { + const list = command.data.intervalLimit + if (list.minute! > list.hour! || list.hour! > list.day!) { + throw 'Impolitic Custom Interval style!' + } + } + + client.commands.set(cmdName, command) + + if (command.data.aliases) { + for (const alias of command.data.aliases) { + if (client.aliases.has(alias)) { + throw new Error('Duplicated alias is found!') + } + // Store aliase(s) to memory if exists. + client.aliases.set(alias, command.data.name) + } + } + } + } + + for (const value of Object.entries(catagories)) { + client.commandsCatagories.set(value[0], value[1]) + } + + // Print number of loaded commands. + console.log( + chalk.greenBright.bold(`Loaded ${client.commands.size} text commands.`) + ) +} + +/** Load Slash commands to API & Collection */ +export async function loadSlashCommand( + client: Client, + clientId: string, + token: string +) { + let folderPath = join(__dirname, '../commands/slash/**/*.ts') + + // Parse path in windows + if (process.platform === 'win32') { + folderPath = folderPath.replaceAll('\\', '/') + } + + const allFiles = await glob(folderPath) + + const slashCommandData: RESTPostAPIApplicationCommandsJSONBody[] = [] + + for (const filePath of allFiles) { + const commandFile = await import(filePath) + const slashCommand: SlashCommand = commandFile.command + + const slashCommandCollection = client.slashcommands + const name = slashCommand.slashData.name + + if (slashCommandCollection.has(name)) { + throw new Error('Duplicated slash command is found!') + } + + client.slashcommands.set(name, slashCommand) + + slashCommandData.push(slashCommand.slashData.toJSON()) + } + + const rest = new REST({ version: '9' }).setToken(token) + + if (isDev) { + // Guild & Development Commands. + const guildId = process.env.DEV_GUILD_ID + + if (guildId) { + const guildCommands = await rest.get( + Routes.applicationGuildCommands(clientId, guildId) + ) + + for (const command of guildCommands as RESTGetAPIApplicationCommandsResult) { + const deleteUrl = `${Routes.applicationGuildCommands( + clientId, + guildId + )}/${command.id}` + await rest.delete(`/${deleteUrl}`) + } + + await rest.put(Routes.applicationGuildCommands(clientId, guildId), { + body: slashCommandData, + }) + } + } else { + // Global Commands + await rest.put(Routes.applicationCommands(clientId), { + body: slashCommandData, + }) + } + + // Print number of loaded commands. + console.log( + chalk.greenBright.bold( + `Loaded ${client.slashcommands.size} slash commands.` + ) + ) +} diff --git a/packages/bot/src/loaders/event.ts b/packages/bot/src/loaders/event.ts new file mode 100644 index 0000000..29cbecf --- /dev/null +++ b/packages/bot/src/loaders/event.ts @@ -0,0 +1,45 @@ +import { dirname, join } from 'node:path' +import { fileURLToPath } from 'node:url' + +import chalk from 'chalk' +import type { Client } from 'discord.js' +import { glob } from 'glob' + +import type { DiscordEvent } from '../sturctures/event' + +const __dirname = dirname(fileURLToPath(import.meta.url)) + +export async function loadDiscordEvent(client: Client) { + let folderPath = join(__dirname, '../events/**/*.ts') + + // Parse path in windows + if (process.platform === 'win32') { + folderPath = folderPath.replaceAll('\\', '/') + } + + const allFiles = await glob(folderPath) + + if (allFiles.length === 0) { + return + } + + for (const filePath of allFiles) { + // Get event content. + const eventFile = await import(filePath) + const event: DiscordEvent = eventFile.event + + // Check triggering mode. + if (event.once === true) { + // eslint-disable-next-line + client.once(event.name, event.run.bind(undefined)) + } else { + // eslint-disable-next-line + client.on(event.name, event.run.bind(undefined)) + } + } + + // Print number of loaded events. + console.log( + chalk.greenBright.bold(`Loaded ${allFiles.length} Discord events.`) + ) +} diff --git a/packages/bot/src/sturctures/command.ts b/packages/bot/src/sturctures/command.ts new file mode 100644 index 0000000..1fcecd5 --- /dev/null +++ b/packages/bot/src/sturctures/command.ts @@ -0,0 +1,93 @@ +import type { SlashCommandBuilder } from '@discordjs/builders' +import type { + CommandInteraction, + Message, + PermissionResolvable, +} from 'discord.js' + +interface TextCommandExecution { + message: Message + args: string[] +} + +interface SlashCommandExecution { + interaction: CommandInteraction +} + +interface TextCommandRequiredArgumentsDefault { + name?: string + rest?: boolean + text?: string[] + type: 'NUMBER' | 'STRING' + customLength?: { + min?: number + max?: number + } + required?: boolean +} + +type TextCommandRequiredArguments = TextCommandRequiredArgumentsDefault + +/** + * As default, command can only be accessed in guild. + * + * Everyone can access wihtout any permission limitations. + * + * Cooldown Interval is 3 seconds (3000 milliseconds) + */ +export interface TextCommand { + enabled?: boolean + + // Command Data + readonly data: { + // Permissions + clientRequiredPermissions?: PermissionResolvable[] + authorRequiredPermissions?: PermissionResolvable[] + + // Access, Environment & Scenes + ownerOnly?: boolean + developmentOnly?: boolean + nsfwChannelRequired?: boolean + inVoiceChannelRequired?: boolean + threadChannelAllowed?: boolean + directMessageAllowed?: boolean + publicLevel?: 'All' | 'Permission' | 'None' + requiredArgs?: TextCommandRequiredArguments[] + + // Info + name: string + description: string + catagory?: string + usage?: string + aliases?: string[] + + // Specified Configurations + cooldownInterval?: number + intervalLimit?: { + minute?: number + hour?: number + day?: number + } + } + // eslint-disable-next-line no-unused-vars + run: ({ message, args }: TextCommandExecution) => Promise | void +} + +export interface SlashCommand { + enabled?: boolean + + // Slash Data + slashData: Omit + + readonly data?: { + clientRequiredPermissions?: PermissionResolvable[] + + ownerOnly?: boolean + developmentOnly?: boolean + + cooldownInterval?: number + } + + // eslint-disable-next-line no-unused-vars + run: ({ interaction }: SlashCommandExecution) => Promise +} diff --git a/packages/bot/src/sturctures/database.ts b/packages/bot/src/sturctures/database.ts new file mode 100644 index 0000000..e1496c7 --- /dev/null +++ b/packages/bot/src/sturctures/database.ts @@ -0,0 +1,67 @@ +export interface GuildConfig { + prefix: string + serverId: string + commands: { + global: { + // Access + disabled: string[] + disabledCatagories: string[] + // Cooldown + customCooldown: { + name: string + value: number + intervals: { + minute: number + hour: number + day: number + } + }[] + } + // Access + userDisabled: { id: string; cmds: string[] }[] + roleDisabled: { id: string; cmds: string[] }[] + channelDisabled: { id: string; cmds: string[] }[] + } + antiSpam: { + enabled: boolean + whitelistedUsers: string[] + whitelistedRoles: string[] + whitelistedChannels: string[] + inviteLinks: { + enabled: boolean + whitelistedUsers: string[] + whitelistedRoles: string[] + whitelistedChannels: string[] + } + mentions: { + enabled: boolean + maxmiumCheck: { + enabled: boolean + value: number + } + publicRoleCheck: boolean + whitelistedUsers: string[] + whitelistedRoles: string[] + whitelistedChannels: string[] + } + } + thread: { + listen?: boolean + } + snipe: { + channelDisabled: string[] + } +} + +export interface SnipeConfig { + channelId: string + author: { + id: string + name: string + } + content: { + text: string + date: number + imageURL: string | undefined + } +} diff --git a/packages/bot/src/sturctures/event.ts b/packages/bot/src/sturctures/event.ts new file mode 100644 index 0000000..cd73d54 --- /dev/null +++ b/packages/bot/src/sturctures/event.ts @@ -0,0 +1,10 @@ +import type { ClientEvents } from 'discord.js' + +/** Discord Client events */ +export interface DiscordEvent { + // Event Data + name: keyof ClientEvents + once?: boolean + // eslint-disable-next-line no-unused-vars + run: (...arguments_: any[]) => Promise | void +} diff --git a/packages/bot/src/utils/cache.ts b/packages/bot/src/utils/cache.ts new file mode 100644 index 0000000..99b752f --- /dev/null +++ b/packages/bot/src/utils/cache.ts @@ -0,0 +1,5 @@ +import NodeCache from 'node-cache' + +const cooldownCache = new NodeCache() + +export { cooldownCache } diff --git a/packages/bot/src/utils/canvas.ts b/packages/bot/src/utils/canvas.ts new file mode 100644 index 0000000..e50fd6d --- /dev/null +++ b/packages/bot/src/utils/canvas.ts @@ -0,0 +1,28 @@ +import { createCanvas, loadImage } from 'canvas' + +async function blur(image: string | Buffer): Promise { + if (!image) throw new Error('Image was not provided!') + const img = await loadImage(image) + const canvas = createCanvas(img.width, img.height) + const context = canvas.getContext('2d') + + context.fillStyle = '#ffffff' + context.fillRect(0, 0, canvas.width, canvas.height) + context.drawImage(img, 0, 0, canvas.width / 4, canvas.height / 4) + context.imageSmoothingEnabled = true + context.drawImage( + canvas, + 0, + 0, + canvas.width / 4, + canvas.height / 4, + 0, + 0, + canvas.width + 5, + canvas.height + 5 + ) + + return canvas.toBuffer() +} + +export { blur } diff --git a/packages/bot/src/utils/cmds.ts b/packages/bot/src/utils/cmds.ts new file mode 100644 index 0000000..3e52833 --- /dev/null +++ b/packages/bot/src/utils/cmds.ts @@ -0,0 +1,127 @@ +import type { + CollectorFilter, + Message, + MessageComponentInteraction, +} from 'discord.js' +import { + ActionRowBuilder, + ButtonBuilder, + ButtonStyle, + EmbedBuilder, +} from 'discord.js' +import { findBestMatch } from 'string-similarity' + +import type { TextCommand } from '../sturctures/command' + +/** Send command information message embed. */ +export function getCommandHelpInfo(cmd: TextCommand): EmbedBuilder { + const embed = new EmbedBuilder() + .setTitle(`Command: ${cmd.data.name}`) + .addFields([{ name: 'Description', value: cmd.data.description }]) + + if (cmd.data.usage) { + embed.addFields([{ name: 'Usage', value: cmd.data.usage }]) + } + + embed.addFields([ + { name: 'Catagory', value: cmd.data.catagory ?? '', inline: true }, + { + name: 'Cooldown', + value: `${ + (cmd.data.cooldownInterval ?? 3000) / 1000 || '3' + } seconds`, + inline: true, + }, + ]) + + if (cmd.data.intervalLimit) { + embed.addFields([ + { + name: 'Allowed Intervals', + value: Object.entries(cmd.data.intervalLimit) + .map((value) => { + return `${value[0]} - \`${value[1]}\`` + }) + .join('\n'), + inline: false, + }, + ]) + } + + return embed +} + +interface ExpectedWord { + name: string + timeTaken: number +} + +/** Similarity check of excuting commands. */ +export async function resembleCommandCheck( + message: Message, + word: string +): Promise { + const timeStarted = Date.now() + + const cmdList = [...message.client.commands.keys()] + + const { bestMatch } = findBestMatch(word, cmdList) + + if (bestMatch.rating < 0.65) return undefined + + const acceptButtonId = 'accCMD' + const declineButtonId = 'denCMD' + + const acceptButton = new ButtonBuilder() + .setStyle(ButtonStyle.Success) + .setEmoji('๐Ÿ‘') + .setCustomId(acceptButtonId) + const declineButton = new ButtonBuilder() + .setStyle(ButtonStyle.Danger) + .setEmoji('๐Ÿ‘Ž') + .setCustomId(declineButtonId) + + const row: ActionRowBuilder = new ActionRowBuilder().addComponents([ + acceptButton, + declineButton, + ]) + + const matchRate = Number(bestMatch.rating.toFixed(2)) + + const _message = await message.reply({ + content: `Do you prefer excuting \`${ + bestMatch.target + }\`? (Similarity: \`${matchRate * 100}%\`)`, + components: [row], + }) + + const filter: CollectorFilter<[MessageComponentInteraction]> = (inter) => { + return ( + [acceptButtonId, declineButtonId].includes(inter.customId) && + inter.user.id === message.author.id + ) + } + + return new Promise((resolve) => { + return _message + .awaitMessageComponent({ + filter, + time: 30_000, + }) + .then(async (_inter) => { + // Delete message first + if (_message.deletable) { + await _message.delete().catch(() => undefined) + } + if (_inter.customId === acceptButtonId) { + const timeTaken = timeStarted - Date.now() + return resolve({ name: bestMatch.target, timeTaken }) + } + throw new Error('Declined') + }) + .catch(() => { + // eslint-disable-next-line + return resolve(undefined) + }) + }) +} diff --git a/packages/bot/src/utils/constants.ts b/packages/bot/src/utils/constants.ts new file mode 100644 index 0000000..0a346c5 --- /dev/null +++ b/packages/bot/src/utils/constants.ts @@ -0,0 +1 @@ +export const isDev = process.env.NODE_ENV === 'development' diff --git a/packages/bot/src/utils/database.ts b/packages/bot/src/utils/database.ts new file mode 100644 index 0000000..f3800ef --- /dev/null +++ b/packages/bot/src/utils/database.ts @@ -0,0 +1,17 @@ +import { GraphQLClient } from 'graphql-request' + +export let client = new GraphQLClient('') + +export const hgqlInit = () => { + console.log('\n๐Ÿš€ GraphQL Client Initialized') + + let HASURA_URL: string = process.env.HASURA_GRAPHQL_ENDPOINT || '' + HASURA_URL += HASURA_URL.endsWith('/') ? 'v1/graphql' : '/v1/graphql' + const HASURA_ADMIN: string = process.env.HASURA_GRAPHQL_ADMIN_SECRET || '' + + client = new GraphQLClient(HASURA_URL, { + headers: { + 'x-hasura-admin-secret': HASURA_ADMIN, + }, + }) +} diff --git a/packages/bot/src/utils/formatters.ts b/packages/bot/src/utils/formatters.ts new file mode 100644 index 0000000..9a1c6e0 --- /dev/null +++ b/packages/bot/src/utils/formatters.ts @@ -0,0 +1,16 @@ +/** + * Transfer milliseconds to visible duration + * + * 1000 -> 0h 0m 1s + * */ +export function parseMsToVisibleText(ms: number): string { + if (ms < 1000) return 'less than 1s' + let seconds: number | string = Math.trunc((ms / 1000) % 60) + let minutes: number | string = Math.trunc((ms / (1000 * 60)) % 60) + let hours: number | string = Math.trunc((ms / (1000 * 60 * 60)) % 24) + seconds = seconds > 0 ? `${seconds}s` : '' + minutes = minutes > 0 ? `${minutes}m ` : '' + hours = hours > 0 ? `${hours}h ` : '' + + return `${hours}${minutes}${seconds}` +} diff --git a/packages/bot/src/utils/messages.ts b/packages/bot/src/utils/messages.ts new file mode 100644 index 0000000..41560cd --- /dev/null +++ b/packages/bot/src/utils/messages.ts @@ -0,0 +1,93 @@ +import type { + CollectorFilter, + ColorResolvable, + EmbedField, + Message, + MessageComponentInteraction, +} from 'discord.js' +import { + ActionRowBuilder, + ButtonBuilder, + ButtonStyle, + EmbedBuilder, +} from 'discord.js' + +import emoji from '../../config/emojis.json' + +interface ConfirmInformationButtons { + title: string + message: Message + fields: EmbedField[] +} + +export async function confirmInformationButtons({ + title, + fields, + message, +}: ConfirmInformationButtons): Promise { + if (message.channel.isVoiceBased()) return false + + const now = Date.now() + const embed = new EmbedBuilder().setTitle(title).addFields(fields) + + const confirmId = `CONFIRM_${now}` + const cancelId = `CANCEL_${now}` + + const buttonSuccess = new ButtonBuilder() + .setStyle(ButtonStyle.Success) + .setLabel('Confirm') + .setCustomId(confirmId) + const buttonCancel = new ButtonBuilder() + .setStyle(ButtonStyle.Danger) + .setLabel('Cancel') + .setCustomId(cancelId) + + const row: ActionRowBuilder = new ActionRowBuilder().addComponents([ + buttonSuccess, + buttonCancel, + ]) + + const respondAwaiting = await message.channel.send({ + embeds: [embed], + components: [row], + }) + + const filter: CollectorFilter<[MessageComponentInteraction]> = (inter) => { + return ( + [confirmId, cancelId].includes(inter.customId) && + inter.user.id === message.author.id + ) + } + + const interaction = await respondAwaiting.awaitMessageComponent({ + filter, + time: 30_000, + }) + + if (respondAwaiting.deletable) + await respondAwaiting.delete().catch(() => undefined) + + return interaction.customId === confirmId +} + +interface CallbackEmbed { + text: string + color?: ColorResolvable + mode?: 'error' | 'success' | 'warning' +} + +export function callbackEmbed({ + text, + color = 'Grey', + mode, +}: CallbackEmbed): EmbedBuilder { + let emojiText = '' + + if (mode && typeof mode === 'string') { + emojiText = emoji[mode] + } + + return new EmbedBuilder() + .setDescription(`${emojiText} ${text}`) + .setColor(color) +} diff --git a/packages/bot/src/validate-env.ts b/packages/bot/src/validate-env.ts new file mode 100644 index 0000000..9be29aa --- /dev/null +++ b/packages/bot/src/validate-env.ts @@ -0,0 +1,22 @@ +import { z } from 'zod' + +declare global { + // eslint-disable-next-line @typescript-eslint/no-namespace + namespace NodeJS { + // eslint-disable-next-line + interface ProcessEnv extends z.infer {} + } +} + +const ZodEnvironmentVariables = z.object({ + TOKEN: z.string(), + CLIENT_ID: z.string(), + DEV_GUILD_ID: z.string().optional(), + PORT: z.string().optional(), + HASURA_GRAPHQL_ADMIN_SECRET: z.string(), + HASURA_GRAPHQL_ENDPOINT: z.string(), +}) + +ZodEnvironmentVariables.parse(process.env) + +console.log('โœ… Environment variables verified!') diff --git a/packages/bot/tsconfig.json b/packages/bot/tsconfig.json new file mode 100644 index 0000000..a434882 --- /dev/null +++ b/packages/bot/tsconfig.json @@ -0,0 +1,37 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "compilerOptions": { + "allowJs": true, + "allowSyntheticDefaultImports": true, + "allowUnreachableCode": false, + "allowUnusedLabels": false, + "alwaysStrict": true, + "checkJs": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + + "isolatedModules": true, + "module": "esnext", + "moduleResolution": "node", + + "noEmit": true, + "noFallthroughCasesInSwitch": true, + "noImplicitAny": true, + "noImplicitOverride": true, + "noImplicitReturns": true, + "noImplicitThis": true, + "noUncheckedIndexedAccess": false, + + "noUnusedLocals": true, + "noUnusedParameters": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "strict": true, + "strictFunctionTypes": true, + "strictNullChecks": true, + "strictPropertyInitialization": true, + "target": "esnext" + }, + "display": "Default tsconfig.json", + "exclude": ["node_modules"] +}