djs-builder 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/.tsbuildinfo +1 -0
  2. package/README.md +243 -0
  3. package/dist/discord/builder/components/Buttons.d.ts +22 -0
  4. package/dist/discord/builder/components/Buttons.d.ts.map +1 -0
  5. package/dist/discord/builder/components/Buttons.js +80 -0
  6. package/dist/discord/builder/components/Buttons.js.map +1 -0
  7. package/dist/discord/builder/components/Menus.d.ts +31 -0
  8. package/dist/discord/builder/components/Menus.d.ts.map +1 -0
  9. package/dist/discord/builder/components/Menus.js +75 -0
  10. package/dist/discord/builder/components/Menus.js.map +1 -0
  11. package/dist/discord/builder/permissions/perms.d.ts +6 -0
  12. package/dist/discord/builder/permissions/perms.d.ts.map +1 -0
  13. package/dist/discord/builder/permissions/perms.js +68 -0
  14. package/dist/discord/builder/permissions/perms.js.map +1 -0
  15. package/dist/discord/builder/utils.d.ts +10 -0
  16. package/dist/discord/builder/utils.d.ts.map +1 -0
  17. package/dist/discord/builder/utils.js +13 -0
  18. package/dist/discord/builder/utils.js.map +1 -0
  19. package/dist/discord/events-handler/events.d.ts +3 -0
  20. package/dist/discord/events-handler/events.d.ts.map +1 -0
  21. package/dist/discord/events-handler/events.js +97 -0
  22. package/dist/discord/events-handler/events.js.map +1 -0
  23. package/dist/discord/events-handler/login.d.ts +4 -0
  24. package/dist/discord/events-handler/login.d.ts.map +1 -0
  25. package/dist/discord/events-handler/login.js +142 -0
  26. package/dist/discord/events-handler/login.js.map +1 -0
  27. package/dist/discord/events-handler/prefix-register.d.ts +7 -0
  28. package/dist/discord/events-handler/prefix-register.d.ts.map +1 -0
  29. package/dist/discord/events-handler/prefix-register.js +84 -0
  30. package/dist/discord/events-handler/prefix-register.js.map +1 -0
  31. package/dist/discord/events-handler/prefix-responder.d.ts +4 -0
  32. package/dist/discord/events-handler/prefix-responder.d.ts.map +1 -0
  33. package/dist/discord/events-handler/prefix-responder.js +89 -0
  34. package/dist/discord/events-handler/prefix-responder.js.map +1 -0
  35. package/dist/discord/events-handler/slash-register.d.ts +4 -0
  36. package/dist/discord/events-handler/slash-register.d.ts.map +1 -0
  37. package/dist/discord/events-handler/slash-register.js +84 -0
  38. package/dist/discord/events-handler/slash-register.js.map +1 -0
  39. package/dist/discord/events-handler/slash-responder.d.ts +4 -0
  40. package/dist/discord/events-handler/slash-responder.d.ts.map +1 -0
  41. package/dist/discord/events-handler/slash-responder.js +78 -0
  42. package/dist/discord/events-handler/slash-responder.js.map +1 -0
  43. package/dist/discord/events-handler/starter.d.ts +6 -0
  44. package/dist/discord/events-handler/starter.d.ts.map +1 -0
  45. package/dist/discord/events-handler/starter.js +57 -0
  46. package/dist/discord/events-handler/starter.js.map +1 -0
  47. package/dist/discord/functions/anticrash.d.ts +2 -0
  48. package/dist/discord/functions/anticrash.d.ts.map +1 -0
  49. package/dist/discord/functions/anticrash.js +50 -0
  50. package/dist/discord/functions/anticrash.js.map +1 -0
  51. package/dist/discord/functions/devLogs.d.ts +2 -0
  52. package/dist/discord/functions/devLogs.d.ts.map +1 -0
  53. package/dist/discord/functions/devLogs.js +127 -0
  54. package/dist/discord/functions/devLogs.js.map +1 -0
  55. package/dist/discord/functions/mongoDb.d.ts +4 -0
  56. package/dist/discord/functions/mongoDb.d.ts.map +1 -0
  57. package/dist/discord/functions/mongoDb.js +40 -0
  58. package/dist/discord/functions/mongoDb.js.map +1 -0
  59. package/dist/discord/functions/similarity.d.ts +4 -0
  60. package/dist/discord/functions/similarity.d.ts.map +1 -0
  61. package/dist/discord/functions/similarity.js +36 -0
  62. package/dist/discord/functions/similarity.js.map +1 -0
  63. package/dist/discord/functions/terminal.d.ts +3 -0
  64. package/dist/discord/functions/terminal.d.ts.map +1 -0
  65. package/dist/discord/functions/terminal.js +80 -0
  66. package/dist/discord/functions/terminal.js.map +1 -0
  67. package/dist/discord/functions/utils.d.ts +5 -0
  68. package/dist/discord/functions/utils.d.ts.map +1 -0
  69. package/dist/discord/functions/utils.js +11 -0
  70. package/dist/discord/functions/utils.js.map +1 -0
  71. package/dist/discord/functions/versedb.d.ts +3 -0
  72. package/dist/discord/functions/versedb.d.ts.map +1 -0
  73. package/dist/discord/functions/versedb.js +22 -0
  74. package/dist/discord/functions/versedb.js.map +1 -0
  75. package/dist/discord/types/starter.d.ts +97 -0
  76. package/dist/discord/types/starter.d.ts.map +1 -0
  77. package/dist/discord/types/starter.js +3 -0
  78. package/dist/discord/types/starter.js.map +1 -0
  79. package/dist/discord/types/utils.d.ts +3 -0
  80. package/dist/discord/types/utils.d.ts.map +1 -0
  81. package/dist/discord/types/utils.js +3 -0
  82. package/dist/discord/types/utils.js.map +1 -0
  83. package/dist/discord/utils.d.ts +4 -0
  84. package/dist/discord/utils.d.ts.map +1 -0
  85. package/dist/discord/utils.js +8 -0
  86. package/dist/discord/utils.js.map +1 -0
  87. package/dist/index.d.ts +12 -0
  88. package/dist/index.d.ts.map +1 -0
  89. package/dist/index.js +37 -0
  90. package/dist/index.js.map +1 -0
  91. package/lib/discord/builder/components/Buttons.ts +111 -0
  92. package/lib/discord/builder/components/Menus.ts +105 -0
  93. package/lib/discord/builder/permissions/perms.ts +66 -0
  94. package/lib/discord/builder/utils.ts +11 -0
  95. package/lib/discord/events-handler/events.ts +75 -0
  96. package/lib/discord/events-handler/login.ts +117 -0
  97. package/lib/discord/events-handler/prefix-register.ts +62 -0
  98. package/lib/discord/events-handler/prefix-responder.ts +105 -0
  99. package/lib/discord/events-handler/slash-register.ts +77 -0
  100. package/lib/discord/events-handler/slash-responder.ts +89 -0
  101. package/lib/discord/events-handler/starter.ts +56 -0
  102. package/lib/discord/functions/anticrash.ts +51 -0
  103. package/lib/discord/functions/devLogs.ts +116 -0
  104. package/lib/discord/functions/mongoDb.ts +38 -0
  105. package/lib/discord/functions/similarity.ts +44 -0
  106. package/lib/discord/functions/terminal.ts +95 -0
  107. package/lib/discord/functions/utils.ts +4 -0
  108. package/lib/discord/functions/versedb.ts +17 -0
  109. package/lib/discord/types/starter.ts +108 -0
  110. package/lib/discord/types/utils.ts +2 -0
  111. package/lib/discord/utils.ts +4 -0
  112. package/lib/index.ts +35 -0
  113. package/package.json +43 -0
@@ -0,0 +1,116 @@
1
+ import { WebhookClient, EmbedBuilder } from 'discord.js';
2
+ import * as fs from 'fs';
3
+ import * as path from 'path';
4
+
5
+ export async function devLogger(devLogger: any): Promise<void> {
6
+ const webhook = new WebhookClient({ url: devLogger.webhookURL });
7
+
8
+ const watchedExtensions = ['.js', '.json', '.txt', '.md', '.ts', '.tsx', '.jsx', '.html', '.css', '.py', '.verse'];
9
+
10
+ const MAX_FIELD_VALUE_LENGTH = 1024;
11
+
12
+ const watchDirectory = (directory: string) => {
13
+ fs.readdir(directory, (err, files) => {
14
+ if (err) {
15
+ console.error('Error reading directory:', err);
16
+ return;
17
+ }
18
+
19
+ for (const file of files) {
20
+ const filePath = path.join(directory, file);
21
+ fs.stat(filePath, (err, stats) => {
22
+ if (err) {
23
+ console.error('Error getting file stats:', err);
24
+ return;
25
+ }
26
+
27
+ if (stats.isDirectory()) {
28
+ watchDirectory(filePath);
29
+ } else {
30
+ if (watchedExtensions.some(ext => file.endsWith(ext))) {
31
+ watchFile(filePath);
32
+ }
33
+ }
34
+ });
35
+ }
36
+ });
37
+ };
38
+
39
+ const watchFile = (filePath: string) => {
40
+ fs.watchFile(filePath, { interval: 500 }, (curr, prev) => {
41
+ if (curr.mtime !== prev.mtime) {
42
+ readFile(filePath);
43
+ }
44
+ });
45
+ };
46
+
47
+ const readFile = (filePath: string) => {
48
+ fs.readFile(filePath, 'utf-8', (err, data) => {
49
+ if (err) {
50
+ console.error('Error reading file:', err);
51
+ return;
52
+ }
53
+
54
+ const embed = createEmbed(filePath, data);
55
+ sendWebhook(embed);
56
+ });
57
+ };
58
+
59
+ const createEmbed = (filePath: string, data: string) => {
60
+ let changes = '```' + getFileType(filePath) + '\n' + data + '\n```';
61
+
62
+ let changesChunks: string[] = [];
63
+ while (changes.length > MAX_FIELD_VALUE_LENGTH) {
64
+ changesChunks.push(changes.substring(0, MAX_FIELD_VALUE_LENGTH));
65
+ changes = changes.substring(MAX_FIELD_VALUE_LENGTH);
66
+ }
67
+ changesChunks.push(changes);
68
+
69
+ const embed = new EmbedBuilder()
70
+ .setColor('#3498db')
71
+ .setTitle('File Changed')
72
+ .setDescription(`> - File: \`${filePath}\``)
73
+ .setTimestamp();
74
+
75
+ for (let i = 0; i < changesChunks.length; i++) {
76
+ embed.addFields({ name: 'Changes:', value: changesChunks[i]});
77
+ }
78
+
79
+ return embed;
80
+ };
81
+
82
+ const sendWebhook = (embed: EmbedBuilder) => {
83
+ webhook.send({ content: devLogger.mention || '' ,embeds: [embed] })
84
+ .then()
85
+ .catch((error) => console.error('Error Dev Logger Message', error));
86
+ };
87
+
88
+ const getFileType = (filePath: string): string => {
89
+ const extension = path.extname(filePath);
90
+ switch (extension) {
91
+ case '.js':
92
+ case '.ts':
93
+ case '.jsx':
94
+ case '.tsx':
95
+ return 'javascript';
96
+ case '.json':
97
+ return 'json';
98
+ case '.txt':
99
+ case '.md':
100
+ return 'plaintext';
101
+ case '.html':
102
+ return 'html';
103
+ case '.css':
104
+ return 'css';
105
+ case '.py':
106
+ return 'python';
107
+ case '.verse':
108
+ return 'verse';
109
+ default:
110
+ return 'unknown';
111
+ }
112
+ };
113
+
114
+ watchDirectory(devLogger.pathToWatch);
115
+ }
116
+
@@ -0,0 +1,38 @@
1
+ import { MongoClient, Db } from 'mongodb';
2
+
3
+ let db: Db | null = null;
4
+ let isInitialized = false;
5
+ let connectionPromise: Promise<MongoClient> | null = null;
6
+
7
+ async function initialize(uri: string, dbName: string): Promise<void> {
8
+ if (isInitialized || connectionPromise) {
9
+ return;
10
+ }
11
+
12
+ try {
13
+ const client = new MongoClient(uri);
14
+ connectionPromise = client.connect();
15
+ const connectedClient = await connectionPromise;
16
+ db = connectedClient.db(dbName || 'djsBuilder');
17
+ isInitialized = true;
18
+ } catch (error) {
19
+ console.error('Error initializing MongoDB:', error);
20
+ } finally {
21
+ connectionPromise = null;
22
+ }
23
+ }
24
+
25
+ export async function mongoConnect(uri: string, dbName: string): Promise<void> {
26
+ await initialize(uri, dbName);
27
+ }
28
+
29
+ export async function getDb(): Promise<Db> {
30
+ if (!isInitialized) {
31
+ throw new Error('MongoDB connection not initialized');
32
+ }
33
+ if (!db) {
34
+ throw new Error('MongoDB connection not established');
35
+ }
36
+
37
+ return db;
38
+ }
@@ -0,0 +1,44 @@
1
+ import { Collection } from 'discord.js'
2
+ import { Command } from '../types/starter';
3
+ export function getSimilarCommands(commandName: string, commands: Collection<string, Command>): string[] {
4
+ const similarityThreshold = 0.6;
5
+ const similarCommands: { name: string; similarity: number }[] = [];
6
+
7
+ commands.forEach((_, cmdName) => {
8
+ const similarity = calculateSimilarity(commandName, cmdName);
9
+ if (similarity >= similarityThreshold) {
10
+ similarCommands.push({ name: cmdName, similarity });
11
+ }
12
+ });
13
+
14
+ similarCommands.sort((a, b) => b.similarity - a.similarity);
15
+
16
+ return similarCommands.map(cmd => cmd.name);
17
+ }
18
+
19
+ function calculateSimilarity(str1: string, str2: string): number {
20
+ const len1 = str1.length;
21
+ const len2 = str2.length;
22
+ const matrix = [];
23
+
24
+ // Initialize the matrix
25
+ for (let i = 0; i <= len1; i++) {
26
+ matrix[i] = [i];
27
+ }
28
+ for (let j = 0; j <= len2; j++) {
29
+ matrix[0][j] = j;
30
+ }
31
+
32
+ for (let i = 1; i <= len1; i++) {
33
+ for (let j = 1; j <= len2; j++) {
34
+ const cost = str1[i - 1] === str2[j - 1] ? 0 : 1;
35
+ matrix[i][j] = Math.min(
36
+ matrix[i - 1][j] + 1,
37
+ matrix[i][j - 1] + 1,
38
+ matrix[i - 1][j - 1] + cost
39
+ );
40
+ }
41
+ }
42
+
43
+ return 1 - matrix[len1][len2] / Math.max(len1, len2);
44
+ }
@@ -0,0 +1,95 @@
1
+ import { blue, cyan, green, magenta, red } from 'colorette';
2
+ import { BotOptions } from '../types/starter';
3
+ import Table from 'cli-table';
4
+ import fs from 'fs';
5
+ import path from 'path';
6
+
7
+ interface Client {
8
+ user: { username: string };
9
+ prefixSize?: number;
10
+ slashSize?: number;
11
+ eventSize?: number;
12
+ }
13
+
14
+ export async function terminalLogs(client: any, bot: BotOptions): Promise<void> {
15
+ const { user, prefixSize = 0, slashSize = 0, eventSize = 0 } = client;
16
+
17
+ const totalCommands = slashSize + prefixSize;
18
+ const totalGuilds = client.guilds.cache.size;
19
+ const totalMembers = client.guilds.cache.reduce((acc: any, guild: any) => acc + guild.memberCount, 0);
20
+
21
+ function getProjectSize(dir: string): number {
22
+ let size = 0;
23
+ const files = fs.readdirSync(dir, { withFileTypes: true });
24
+
25
+ files.forEach(file => {
26
+ const filePath = path.join(dir, file.name);
27
+ if (file.isDirectory() && file.name !== 'node_modules') {
28
+ size += getProjectSize(filePath);
29
+ } else if (file.isFile()) {
30
+ size += fs.statSync(filePath).size;
31
+ }
32
+ });
33
+
34
+ return size;
35
+ }
36
+
37
+ function findProjectRoot(): string {
38
+ let currentDir = __dirname;
39
+ while (!fs.existsSync(path.join(currentDir, 'package.json'))) {
40
+ currentDir = path.dirname(currentDir);
41
+ }
42
+ return currentDir;
43
+ }
44
+
45
+ const projectPath = findProjectRoot();
46
+ const projectSize = getProjectSize(projectPath);
47
+
48
+ const botStatesTable = new Table({
49
+ head: [blue('# Bot States')],
50
+ colWidths: [30, 20]
51
+ });
52
+ botStatesTable.push(
53
+ [magenta('Bot Name'), user.username],
54
+ [green('Prefix Count'), prefixSize],
55
+ [red('Slash Command Count'), slashSize],
56
+ [cyan('Total Commands'), totalCommands],
57
+ [magenta('Event Count'), eventSize]
58
+ );
59
+
60
+ const botInfoTable = new Table({
61
+ head: [blue('# Bot Info')],
62
+ colWidths: [30, 25]
63
+ });
64
+ if (client.presence?.Status) {
65
+ botInfoTable.push([magenta('Status'), client.presence.Status]);
66
+ }
67
+ if (bot.Status?.activities && bot.Status.activities.length > 0) {
68
+ botInfoTable.push([green('Activity'), bot.Status.activities[0]]);
69
+ }
70
+ if (bot.BotInfo?.botInvite) {
71
+ botInfoTable.push([magenta('Bot Invite'), bot.BotInfo.botInvite]);
72
+ }
73
+ botInfoTable.push(
74
+ [red('Guilds Count'), totalGuilds],
75
+ [cyan('Members Count'), totalMembers]
76
+ );
77
+ if (bot.Database?.verse) {
78
+ botInfoTable.push([magenta('Bot Database'), 'VerseDb']);
79
+ } else if (bot.Database?.mongo) {
80
+ botInfoTable.push([magenta('Bot Database'), 'MongoDb']);
81
+ }
82
+ botInfoTable.push([magenta('Bot Size'), `${(projectSize / (1024 * 1024)).toFixed(2)} MB`]);
83
+ if (client.user?.displayAvatarURL()) {
84
+ botInfoTable.push([magenta('AvatarURL'), client.user.displayAvatarURL()]);
85
+ }
86
+ if (bot.BotInfo?.ownerId) {
87
+ botInfoTable.push([magenta('Owner'), bot.BotInfo.ownerId]);
88
+ }
89
+ if (client.readyTimestamp) {
90
+ const loggedInAt = new Date(client.readyTimestamp).toLocaleString();
91
+ botInfoTable.push([magenta('Logged In At'), loggedInAt]);
92
+ }
93
+ console.log(botStatesTable.toString());
94
+ console.log(botInfoTable.toString());
95
+ }
@@ -0,0 +1,4 @@
1
+ import { getSimilarCommands } from './similarity';
2
+ import { mongoConnect, getDb } from './mongoDb';
3
+ import { verseConnect } from './versedb'
4
+ export { getSimilarCommands, mongoConnect, getDb, verseConnect }
@@ -0,0 +1,17 @@
1
+ import versedb from "verse.db";
2
+ import { LocalDb } from "../types/starter";
3
+
4
+ export async function verseConnect(options: LocalDb) {
5
+ const connection = {
6
+ adapter: options.apaterType,
7
+ dataPath: options.path,
8
+ encryption: { secret: options.encryption || 'djs-builder' },
9
+ devLogs: {
10
+ enable: options.dev.enable,
11
+ path: options.dev.logsPath || ''
12
+ }
13
+ };
14
+
15
+ const db = new versedb.connect(connection)
16
+ return db;
17
+ }
@@ -0,0 +1,108 @@
1
+ import { Client } from 'discord.js'
2
+
3
+ export interface BotOptions {
4
+ token?: string;
5
+ logs?: {
6
+ devLogs?: {
7
+ enable: boolean
8
+ pathToWatch: any;
9
+ webhookURL: string;
10
+ mention?: string;
11
+ };
12
+ terminal?: boolean
13
+ };
14
+ name?: string;
15
+ avatar?: string;
16
+ banner?: string;
17
+ BotInfo?: {
18
+ perms?: string[];
19
+ serverId?: string
20
+ botInvite?: string
21
+ serverInvite?: string
22
+ ownerId?: string
23
+ partners?: string[];
24
+ };
25
+ Status?: {
26
+ state: 'online' | 'dnd' | 'idle' | 'invisible' | 'Streaming' | any;
27
+ activities?: string[] | undefined;
28
+ type?: number;
29
+ delay?: number;
30
+ };
31
+ Database?: {
32
+ mongo?: MongoDbOptions;
33
+ verse?: LocalDb;
34
+ }
35
+ }
36
+
37
+ export interface SlashOptions {
38
+ path: string;
39
+ baseDir: any;
40
+ global?: boolean;
41
+ serverId?: string;
42
+ logsId?: string;
43
+ }
44
+
45
+ export interface PrefixOptions {
46
+ path: string;
47
+ baseDir: any;
48
+ prefix: string;
49
+ global?: boolean;
50
+ serverIds?: string[];
51
+ logsId?: string;
52
+ }
53
+
54
+ export interface MongoDbOptions{
55
+ mongoURI: string;
56
+ dbName?: string;
57
+ }
58
+
59
+ export interface LocalDb{
60
+ apaterType: 'json' | 'sql' | 'yaml';
61
+ path: string;
62
+ dev: {
63
+ enable: boolean;
64
+ logsPath?: string
65
+ };
66
+ encryption?: string
67
+ }
68
+
69
+ export interface AntiCrash{
70
+ enable: boolean;
71
+ webhookURL: string;
72
+ mention?: string;
73
+ }
74
+
75
+ export interface EventsOptions {
76
+ path: string;
77
+ baseDir: any;
78
+ logsId?: string;
79
+ recursive?: boolean;
80
+ eventBlacklist?: string[];
81
+ }
82
+
83
+
84
+ export interface Command {
85
+ name: string;
86
+ description?: string;
87
+ execute?: (...args: any[]) => void;
88
+ run?: (...args: any[]) => void;
89
+ aliases?: string[];
90
+ cooldown?: number;
91
+ usage?: string;
92
+ prefix?: boolean;
93
+ category?: string;
94
+ owner?: boolean;
95
+ }
96
+
97
+ export interface StarterOptions {
98
+ bot: BotOptions;
99
+ slash?: SlashOptions;
100
+ prefix?: PrefixOptions;
101
+ events?: EventsOptions;
102
+ anticrash?: AntiCrash;
103
+ }
104
+
105
+ export interface StarterInterface {
106
+ start(djs: Client, options: StarterOptions): Promise<any>;
107
+ }
108
+
@@ -0,0 +1,2 @@
1
+ import { StarterOptions, StarterInterface, EventsOptions, Command, PrefixOptions, SlashOptions } from './starter'
2
+ export { StarterOptions, StarterInterface, EventsOptions, Command, PrefixOptions, SlashOptions }
@@ -0,0 +1,4 @@
1
+ import { Starter } from "./events-handler/starter";
2
+ import { Components } from './builder/utils';
3
+
4
+ export { Starter, Components }
package/lib/index.ts ADDED
@@ -0,0 +1,35 @@
1
+ import axios from "axios";
2
+ import path from "path";
3
+ import fs from "fs";
4
+
5
+ const RED: string = "\x1b[31m";
6
+ const CYAN: string = "\x1b[36m";
7
+ const RESET: string = "\x1b[0m";
8
+
9
+ const packageJsonPath: string = path.resolve(process.cwd(), "package.json");
10
+ const packageJson: any = JSON.parse(fs.readFileSync(packageJsonPath, "utf8"));
11
+
12
+ const getLibraryVersion = function(library: string): string {
13
+ const dependencies: any = packageJson.dependencies || {};
14
+ const devDependencies: any = packageJson.devDependencies || {};
15
+ const version: string = (dependencies[library] || devDependencies[library] || "").replace(/^(\^|~)/, "") || "Not installed";
16
+ return version;
17
+ };
18
+
19
+ axios
20
+ .get("https://registry.npmjs.com/-/v1/search?text=djs-builder")
21
+ .then(function(response: any) {
22
+ const version: string = response.data.objects[0]?.package?.version;
23
+ if (version && getLibraryVersion("djs-builder") !== version) {
24
+ console.error(CYAN +
25
+ "Error: Please update djs-builder to the latest version (" + version + ")." +
26
+ RESET);
27
+ }
28
+ })
29
+ .catch(function(error: any) {});
30
+
31
+
32
+ import { Starter, Components } from "./discord/utils";
33
+
34
+ export { Starter, Components };
35
+ export default { Starter, Components };
package/package.json ADDED
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "djs-builder",
3
+ "version": "0.1.0",
4
+ "description": "Discord.js bot builder. Supports Ts and Js.",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "scripts": {
8
+ "dev": "ts-node lib/index.ts",
9
+ "start": "node dist/index.js"
10
+ },
11
+ "author": "zenith-79",
12
+ "license": "MIT",
13
+ "keywords": [
14
+ "discord",
15
+ "discord bots",
16
+ "discord.js",
17
+ "bots",
18
+ "bot builder",
19
+ "handler",
20
+ "slash",
21
+ "prefix",
22
+ "slash commands",
23
+ "prefix commands",
24
+ "commands",
25
+ "events",
26
+ "logger",
27
+ "database",
28
+ "verse",
29
+ "mongodb"
30
+ ],
31
+ "dependencies": {
32
+ "cli-table": "^0.3.11",
33
+ "colorette": "^2.0.20",
34
+ "discord.js": "^14.14.1",
35
+ "mongodb": "^6.5.0",
36
+ "verse.db": "^1.1.6"
37
+ },
38
+ "devDependencies": {
39
+ "@types/cli-table": "^0.3.4",
40
+ "ts-node": "^10.9.2",
41
+ "typescript": "^5.4.5"
42
+ }
43
+ }