diff --git a/bun.lock b/bun.lock index a1f6b8b..32b3104 100644 --- a/bun.lock +++ b/bun.lock @@ -11,6 +11,7 @@ "@sapphire/utilities": "^3.18.2", "discord-api-types": "^0.37.119", "discord.js": "^14.18.0", + "dokdo": "^1.0.1", "es-hangul": "^2.3.1", "mongoose": "^8.10.1", }, @@ -130,6 +131,8 @@ "discord.js": ["discord.js@14.18.0", "", { "dependencies": { "@discordjs/builders": "^1.10.1", "@discordjs/collection": "1.5.3", "@discordjs/formatters": "^0.6.0", "@discordjs/rest": "^2.4.3", "@discordjs/util": "^1.1.1", "@discordjs/ws": "^1.2.1", "@sapphire/snowflake": "3.5.3", "discord-api-types": "^0.37.119", "fast-deep-equal": "3.1.3", "lodash.snakecase": "4.1.1", "tslib": "^2.6.3", "undici": "6.21.1" } }, "sha512-SvU5kVUvwunQhN2/+0t55QW/1EHfB1lp0TtLZUSXVHDmyHTrdOj5LRKdR0zLcybaA15F+NtdWuWmGOX9lE+CAw=="], + "dokdo": ["dokdo@1.0.1", "", { "dependencies": { "node-fetch": "^2.6.7" }, "peerDependencies": { "discord.js": "14" } }, "sha512-DquSmyQeSQbYhCMZO67z7toDMSd7fJef+0dgDXxFwRuPEE5shk0ggitdVGwKGXj36cf7ISuO3Ka5S8FZKcQXFQ=="], + "es-hangul": ["es-hangul@2.3.1", "", {}, "sha512-somwJpQpVP5LLI6DquIvRnoTSqVyfIfT1a8/jxHRueWNiTse7/kJ0JZVpf4KrzhY8CoqEK0LUZXFhGkf1hBZKQ=="], "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], @@ -182,6 +185,8 @@ "named-placeholders": ["named-placeholders@1.1.3", "", { "dependencies": { "lru-cache": "^7.14.1" } }, "sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w=="], + "node-fetch": ["node-fetch@2.7.0", "", { "dependencies": { "whatwg-url": "^5.0.0" }, "peerDependencies": { "encoding": "^0.1.0" }, "optionalPeers": ["encoding"] }, "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A=="], + "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="], "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], @@ -204,7 +209,7 @@ "sqlstring": ["sqlstring@2.3.3", "", {}, "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg=="], - "tr46": ["tr46@5.0.0", "", { "dependencies": { "punycode": "^2.3.1" } }, "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g=="], + "tr46": ["tr46@0.0.3", "", {}, "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="], "ts-mixer": ["ts-mixer@6.0.4", "", {}, "sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA=="], @@ -216,9 +221,9 @@ "undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="], - "webidl-conversions": ["webidl-conversions@7.0.0", "", {}, "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g=="], + "webidl-conversions": ["webidl-conversions@3.0.1", "", {}, "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="], - "whatwg-url": ["whatwg-url@14.1.1", "", { "dependencies": { "tr46": "^5.0.0", "webidl-conversions": "^7.0.0" } }, "sha512-mDGf9diDad/giZ/Sm9Xi2YcyzaFpbdLpJPr+E9fSkyQ7KpQD4SdFcugkRQYzhmfI4KeV4Qpnn2sKPdo+kmsgRQ=="], + "whatwg-url": ["whatwg-url@5.0.0", "", { "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" } }, "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw=="], "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], @@ -227,5 +232,11 @@ "@discordjs/rest/@discordjs/collection": ["@discordjs/collection@2.1.1", "", {}, "sha512-LiSusze9Tc7qF03sLCujF5iZp7K+vRNEDBZ86FT9aQAv3vxMLihUvKvpsCWiQ2DJq1tVckopKm1rxomgNUc9hg=="], "@discordjs/ws/@discordjs/collection": ["@discordjs/collection@2.1.1", "", {}, "sha512-LiSusze9Tc7qF03sLCujF5iZp7K+vRNEDBZ86FT9aQAv3vxMLihUvKvpsCWiQ2DJq1tVckopKm1rxomgNUc9hg=="], + + "mongodb-connection-string-url/whatwg-url": ["whatwg-url@14.1.1", "", { "dependencies": { "tr46": "^5.0.0", "webidl-conversions": "^7.0.0" } }, "sha512-mDGf9diDad/giZ/Sm9Xi2YcyzaFpbdLpJPr+E9fSkyQ7KpQD4SdFcugkRQYzhmfI4KeV4Qpnn2sKPdo+kmsgRQ=="], + + "mongodb-connection-string-url/whatwg-url/tr46": ["tr46@5.0.0", "", { "dependencies": { "punycode": "^2.3.1" } }, "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g=="], + + "mongodb-connection-string-url/whatwg-url/webidl-conversions": ["webidl-conversions@7.0.0", "", {}, "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g=="], } } diff --git a/package.json b/package.json index fcee70d..2c423e2 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "@sapphire/utilities": "^3.18.2", "discord-api-types": "^0.37.119", "discord.js": "^14.18.0", + "dokdo": "^1.0.1", "es-hangul": "^2.3.1", "mongoose": "^8.10.1" }, diff --git a/src/init.ts b/src/init.ts index 80cc8c5..3c0fd7f 100644 --- a/src/init.ts +++ b/src/init.ts @@ -16,6 +16,7 @@ declare module '@sapphire/pieces' { } channel: ReleaseChannel } + dokdo: Client } declare module '@sapphire/framework' { diff --git a/src/listeners/messageCreate.ts b/src/listeners/messageCreate.ts index 7cc400b..25c4962 100644 --- a/src/listeners/messageCreate.ts +++ b/src/listeners/messageCreate.ts @@ -2,6 +2,7 @@ import { Learn, Text, type IText } from '../lib/databases' import { ReleaseChannel } from '../lib/releaseChannel' import { Listener } from '@sapphire/framework' import type { Message, TextChannel } from 'discord.js' +import { Client } from 'dokdo' export class MessageCreateListener extends Listener { private _getRandom(length: number) { @@ -26,6 +27,8 @@ export class MessageCreateListener extends Listener { if (!msg.content.startsWith(this.container.prefix)) return if (this.container.stores.get('commands').get(content.split(' ')[0])) return + if (this.container.dokdo.options.aliases?.includes(content.split(' ')[0])) + return this.container.dokdo.run(msg) await msg.channel.sendTyping() diff --git a/src/listeners/ready.ts b/src/listeners/ready.ts index 224e72f..3056e9b 100644 --- a/src/listeners/ready.ts +++ b/src/listeners/ready.ts @@ -1,13 +1,29 @@ import { ApplyOptions } from '@sapphire/decorators' import { Listener } from '@sapphire/framework' -import { container } from '@sapphire/pieces' import { Client } from 'discord.js' +import { Client as DokdoClient } from 'dokdo' @ApplyOptions({ once: true, }) export default class ClientReadyListener extends Listener { public run(client: Client) { - container.logger.info('먹힐 준비 완료') + this.container.dokdo = new DokdoClient(client, { + prefix: this.container.prefix, + owners: [this.container.config.bot.ownerId], + secrets: [this.container.config.databaseUrl], + aliases: ['dokdo', 'dok', 'Dokdo', 'Dok', '테스트'], + noPerm: async msg => + await msg.reply({ + content: '당신은 내 제작자가 아니잖아!', + allowedMentions: { + repliedUser: false, + parse: [], + users: [], + roles: [], + }, + }), + }) + this.container.logger.info('먹힐 준비 완료') } }