gralonium 0.2.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 (50) hide show
  1. package/README.md +62 -0
  2. package/lib/classes/Client.d.ts +44 -0
  3. package/lib/classes/Client.js +162 -0
  4. package/lib/classes/Context.d.ts +25 -0
  5. package/lib/classes/Context.js +139 -0
  6. package/lib/classes/Cooldowns.d.ts +25 -0
  7. package/lib/classes/Cooldowns.js +72 -0
  8. package/lib/classes/Errors.d.ts +135 -0
  9. package/lib/classes/Errors.js +1 -0
  10. package/lib/classes/HelpCommand.d.ts +15 -0
  11. package/lib/classes/HelpCommand.js +1 -0
  12. package/lib/classes/Loader.d.ts +85 -0
  13. package/lib/classes/Loader.js +359 -0
  14. package/lib/classes/Plugins.d.ts +52 -0
  15. package/lib/classes/Plugins.js +107 -0
  16. package/lib/classes/Utils.d.ts +25 -0
  17. package/lib/classes/Utils.js +705 -0
  18. package/lib/classes/builders/CommandBuilder.d.ts +50 -0
  19. package/lib/classes/builders/CommandBuilder.js +107 -0
  20. package/lib/classes/builders/ComponentsV2Builder.d.ts +125 -0
  21. package/lib/classes/builders/ComponentsV2Builder.js +287 -0
  22. package/lib/classes/builders/EventBuilder.d.ts +19 -0
  23. package/lib/classes/builders/EventBuilder.js +1 -0
  24. package/lib/classes/builders/GroupBuilder.d.ts +46 -0
  25. package/lib/classes/builders/GroupBuilder.js +90 -0
  26. package/lib/classes/builders/InteractionBuilder.d.ts +32 -0
  27. package/lib/classes/builders/InteractionBuilder.js +1 -0
  28. package/lib/classes/builders/ParamsBuilder.d.ts +87 -0
  29. package/lib/classes/builders/ParamsBuilder.js +1 -0
  30. package/lib/classes/builders/components/StyleMapper.d.ts +10 -0
  31. package/lib/classes/builders/components/StyleMapper.js +32 -0
  32. package/lib/classes/builders/components/helpers.d.ts +22 -0
  33. package/lib/classes/builders/components/helpers.js +51 -0
  34. package/lib/classes/builders/components/templates.d.ts +13 -0
  35. package/lib/classes/builders/components/templates.js +41 -0
  36. package/lib/classes/experiments/Confirmator.d.ts +58 -0
  37. package/lib/classes/experiments/Confirmator.js +114 -0
  38. package/lib/classes/experiments/Paginator.d.ts +65 -0
  39. package/lib/classes/experiments/Paginator.js +124 -0
  40. package/lib/events/interactionCreate.d.ts +4 -0
  41. package/lib/events/interactionCreate.js +17 -0
  42. package/lib/events/messageCreate.d.ts +4 -0
  43. package/lib/events/messageCreate.js +17 -0
  44. package/lib/events/messageUpdate.d.ts +4 -0
  45. package/lib/events/messageUpdate.js +17 -0
  46. package/lib/experiments.d.ts +2 -0
  47. package/lib/experiments.js +1 -0
  48. package/lib/main.d.ts +18 -0
  49. package/lib/main.js +25 -0
  50. package/package.json +69 -0
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Paginator = void 0;
4
+
5
+ const discord_js_1 = require("discord.js");
6
+
7
+ class Paginator {
8
+ pages;
9
+ filter = async (interaction) => interaction.user.id !== this._author.id;
10
+ bot;
11
+ message;
12
+ timeout;
13
+ _author;
14
+ _page = 0;
15
+ _filter = async (interaction) => interaction.reply({ content: "This interaction isn't for you!", ephemeral: true });
16
+ _update = async (content) => this.message.edit({ content: content.toString() });
17
+
18
+ constructor(bot, options) {
19
+ this.bot = bot;
20
+ this.pages = options.pages;
21
+ this._author = options.author;
22
+ if (options.filter) this.filter = options.filter;
23
+ this.timeout = options.timeout ?? 60;
24
+ }
25
+
26
+ get page() {
27
+ return this.pages[this._page];
28
+ }
29
+
30
+ get pageNumber() {
31
+ return this._page + 1;
32
+ }
33
+
34
+ get pagesFooter() {
35
+ return `${this._page + 1}/${this.pages.length}`;
36
+ }
37
+
38
+ setUpdateProcess(predicate) {
39
+ this._update = predicate;
40
+ return this;
41
+ }
42
+
43
+ setFilterProcess(predicate) {
44
+ this._filter = predicate;
45
+ return this;
46
+ }
47
+
48
+ setFilterCheckProcess(predicate) {
49
+ this.filter = predicate;
50
+ return this;
51
+ }
52
+
53
+ setMessage(message) {
54
+ this.message = message;
55
+ return this;
56
+ }
57
+
58
+ static Buttons(options) {
59
+ const nextButton = new discord_js_1.ButtonBuilder()
60
+ .setCustomId("continueButton")
61
+ .setStyle(options?.previous?.style || discord_js_1.ButtonStyle.Primary)
62
+ .setLabel(options?.next?.label || "Next");
63
+
64
+ const previousButton = new discord_js_1.ButtonBuilder()
65
+ .setCustomId("previousButton")
66
+ .setStyle(options?.previous?.style || discord_js_1.ButtonStyle.Primary)
67
+ .setLabel(options?.previous?.label || "Previous");
68
+
69
+ return new discord_js_1.ActionRowBuilder().addComponents(previousButton, nextButton).toJSON();
70
+ }
71
+
72
+ async #disableMessageComponents() {
73
+ if (!this.message?.editable || !this.message.components?.length) return;
74
+
75
+ const components = this.message.components.map((row) => {
76
+ const cloned = discord_js_1.ActionRowBuilder.from(row);
77
+ for (const component of cloned.components) {
78
+ component.setDisabled(true);
79
+ }
80
+ return cloned;
81
+ });
82
+
83
+ await this.message.edit({ components }).catch(() => null);
84
+ }
85
+
86
+ start() {
87
+ if (!this.message) {
88
+ throw new Error("Paginator.start() requires a message via setMessage().");
89
+ }
90
+
91
+ const collector = this.message.createMessageComponentCollector({
92
+ time: this.timeout * 1000,
93
+ componentType: discord_js_1.ComponentType.Button,
94
+ });
95
+
96
+ collector.on("collect", async (interaction) => {
97
+ if (interaction.customId !== "previousButton" && interaction.customId !== "continueButton") {
98
+ return;
99
+ }
100
+
101
+ if (await this.filter(interaction)) {
102
+ await this._filter(interaction);
103
+ return;
104
+ }
105
+
106
+ if (interaction.customId === "previousButton") {
107
+ await interaction.deferUpdate();
108
+ this._page = this._page <= 0 ? this.pages.length - 1 : this._page - 1;
109
+ await this._update(this.pages[this._page]);
110
+ return;
111
+ }
112
+
113
+ await interaction.deferUpdate();
114
+ this._page = this._page + 1 >= this.pages.length ? 0 : this._page + 1;
115
+ await this._update(this.pages[this._page]);
116
+ });
117
+
118
+ collector.on("end", async () => {
119
+ await this.#disableMessageComponents();
120
+ });
121
+ }
122
+ }
123
+
124
+ exports.Paginator = Paginator;
@@ -0,0 +1,4 @@
1
+ import { EventBuilder } from "../classes/builders/EventBuilder.js";
2
+ import { ModuleData } from "../classes/Loader.js";
3
+ import * as DJS from "discord.js";
4
+ export declare const data: ModuleData<EventBuilder, [DJS.Interaction]>;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.data = void 0;
4
+
5
+ const EventBuilder_js_1 = require("../classes/builders/EventBuilder.js");
6
+ const Utils_js_1 = require("../classes/Utils.js");
7
+
8
+ exports.data = {
9
+ data: new EventBuilder_js_1.EventBuilder({
10
+ name: "interactionCreate",
11
+ description: "Triggered when an interaction is created.",
12
+ once: false,
13
+ }),
14
+ code: async function (bot, interaction) {
15
+ await Utils_js_1.Utils.handleInteraction(bot, interaction);
16
+ },
17
+ };
@@ -0,0 +1,4 @@
1
+ import { EventBuilder } from "../classes/builders/EventBuilder.js";
2
+ import { ModuleData } from "../classes/Loader.js";
3
+ import { Message } from "discord.js";
4
+ export declare const data: ModuleData<EventBuilder, [Message]>;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.data = void 0;
4
+
5
+ const EventBuilder_js_1 = require("../classes/builders/EventBuilder.js");
6
+ const Utils_js_1 = require("../classes/Utils.js");
7
+
8
+ exports.data = {
9
+ data: new EventBuilder_js_1.EventBuilder({
10
+ name: "messageCreate",
11
+ description: "Triggered when a message is created.",
12
+ once: false,
13
+ }),
14
+ code: async function (bot, message) {
15
+ await Utils_js_1.Utils.handleMessage(bot, message, false);
16
+ },
17
+ };
@@ -0,0 +1,4 @@
1
+ import { EventBuilder } from "../classes/builders/EventBuilder.js";
2
+ import { ModuleData } from "../classes/Loader.js";
3
+ import { Message } from "discord.js";
4
+ export declare const data: ModuleData<EventBuilder, [Message]>;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.data = void 0;
4
+
5
+ const EventBuilder_js_1 = require("../classes/builders/EventBuilder.js");
6
+ const Utils_js_1 = require("../classes/Utils.js");
7
+
8
+ exports.data = {
9
+ data: new EventBuilder_js_1.EventBuilder({
10
+ name: "messageUpdate",
11
+ description: "Triggered when a message is updated.",
12
+ once: false,
13
+ }),
14
+ code: async function (bot, _oldMessage, newMessage) {
15
+ await Utils_js_1.Utils.handleMessage(bot, newMessage, true);
16
+ },
17
+ };
@@ -0,0 +1,2 @@
1
+ export * from "./classes/experiments/Paginator";
2
+ export * from "./classes/experiments/Confirmator";
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});const tslib_1=require("tslib");tslib_1.__exportStar(require("./classes/experiments/Paginator"),exports),tslib_1.__exportStar(require("./classes/experiments/Confirmator"),exports);
package/lib/main.d.ts ADDED
@@ -0,0 +1,18 @@
1
+ export * from "discord.js";
2
+ export * from "./classes/Client.js";
3
+ export * from "./classes/Loader.js";
4
+ export * from "./classes/Context.js";
5
+ export * from "./classes/builders/CommandBuilder.js";
6
+ export * from "./classes/builders/EventBuilder.js";
7
+ export * from "./classes/builders/InteractionBuilder.js";
8
+ export * from "./classes/builders/GroupBuilder.js";
9
+ export * from "./classes/builders/ParamsBuilder.js";
10
+ export * from "./classes/builders/ComponentsV2Builder.js";
11
+ export * from "./classes/HelpCommand.js";
12
+ export * from "./classes/Cooldowns.js";
13
+ export * as Errors from "./classes/Errors.js";
14
+ export * as Plugins from "./classes/Plugins.js";
15
+ export * as ErineUtils from "./classes/Utils.js";
16
+ export * as RedBotUtils from "./classes/Utils.js";
17
+ export * as EnireUtils from "./classes/Utils.js";
18
+ export * as GraloniumUtils from "./classes/Utils.js";
package/lib/main.js ADDED
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GraloniumUtils = exports.EnireUtils = exports.ErineUtils = exports.RedBotUtils = exports.Plugins = exports.Errors = void 0;
4
+
5
+ const tslib_1 = require("tslib");
6
+
7
+ tslib_1.__exportStar(require("discord.js"), exports);
8
+ tslib_1.__exportStar(require("./classes/Client.js"), exports);
9
+ tslib_1.__exportStar(require("./classes/Loader.js"), exports);
10
+ tslib_1.__exportStar(require("./classes/Context.js"), exports);
11
+ tslib_1.__exportStar(require("./classes/builders/CommandBuilder.js"), exports);
12
+ tslib_1.__exportStar(require("./classes/builders/EventBuilder.js"), exports);
13
+ tslib_1.__exportStar(require("./classes/builders/InteractionBuilder.js"), exports);
14
+ tslib_1.__exportStar(require("./classes/builders/GroupBuilder.js"), exports);
15
+ tslib_1.__exportStar(require("./classes/builders/ParamsBuilder.js"), exports);
16
+ tslib_1.__exportStar(require("./classes/builders/ComponentsV2Builder.js"), exports);
17
+ tslib_1.__exportStar(require("./classes/HelpCommand.js"), exports);
18
+ tslib_1.__exportStar(require("./classes/Cooldowns.js"), exports);
19
+
20
+ exports.Errors = tslib_1.__importStar(require("./classes/Errors.js"));
21
+ exports.Plugins = tslib_1.__importStar(require("./classes/Plugins.js"));
22
+ exports.ErineUtils = tslib_1.__importStar(require("./classes/Utils.js"));
23
+ exports.RedBotUtils = exports.ErineUtils;
24
+ exports.EnireUtils = exports.ErineUtils;
25
+ exports.GraloniumUtils = exports.ErineUtils;
package/package.json ADDED
@@ -0,0 +1,69 @@
1
+ {
2
+ "name": "gralonium",
3
+ "description": "i know.",
4
+ "version": "0.2.0",
5
+ "license": "MIT",
6
+ "author": "carzo",
7
+
8
+ "type": "commonjs",
9
+
10
+ "main": "./lib/main.js",
11
+ "types": "./lib/main.d.ts",
12
+
13
+ "exports": {
14
+ ".": {
15
+ "types": "./lib/main.d.ts",
16
+ "require": "./lib/main.js",
17
+ "import": "./lib/main.js",
18
+ "default": "./lib/main.js"
19
+ },
20
+ "./experiments": {
21
+ "types": "./lib/experiments.d.ts",
22
+ "require": "./lib/experiments.js",
23
+ "import": "./lib/experiments.js",
24
+ "default": "./lib/experiments.js"
25
+ }
26
+ },
27
+
28
+ "files": [
29
+ "lib/**/*"
30
+ ],
31
+
32
+ "sideEffects": false,
33
+
34
+ "scripts": {
35
+ "build": "node -e \"const fs=require('fs');const cp=require('child_process');if(!fs.existsSync('tsconfig.json')||!fs.existsSync('src')){console.log('Skipping build: tsconfig.json/src not found');process.exit(0)}cp.execSync('tsc -p tsconfig.json && tsc-alias -p tsconfig.json',{stdio:'inherit',shell:true})\"",
36
+ "watch": "tsc -w -p tsconfig.json",
37
+ "dev": "npm run watch",
38
+ "clean": "rimraf lib",
39
+ "prepublishOnly": "npm run build"
40
+ },
41
+
42
+ "keywords": [
43
+ "bot"
44
+ ],
45
+
46
+ "publishConfig": {
47
+ "access": "public",
48
+ "tag": "latest"
49
+ },
50
+
51
+ "engines": {
52
+ "node": ">=18.0.0"
53
+ },
54
+
55
+ "peerDependencies": {
56
+ "discord.js": "^14.0.0"
57
+ },
58
+
59
+ "dependencies": {
60
+ "@sapphire/shapeshift": "^3.9.7",
61
+ "tslib": "^2.6.2"
62
+ },
63
+
64
+ "devDependencies": {
65
+ "typescript": "^5.4.5",
66
+ "tsc-alias": "^1.8.8",
67
+ "rimraf": "^5.0.5"
68
+ }
69
+ }