lunibee 0.1.5 → 0.1.7
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.
- package/README.md +13 -24
- package/dist/builders/commands.d.ts +37 -0
- package/dist/builders/components.d.ts +127 -12
- package/dist/builders/embed.d.ts +3 -1
- package/dist/builders/index.d.ts +2 -2
- package/dist/builders/index.js +319 -16
- package/dist/builders/index.js.map +8 -7
- package/dist/collection/index.d.ts +36 -0
- package/dist/collection/index.js +110 -6
- package/dist/collection/index.js.map +4 -4
- package/dist/core/events.d.ts +69 -3
- package/dist/core/index.d.ts +158 -90
- package/dist/core/index.js +1543 -1169
- package/dist/core/index.js.map +24 -23
- package/dist/core/permissions.d.ts +112 -53
- package/dist/formatters/index.d.ts +43 -3
- package/dist/formatters/index.js +64 -1
- package/dist/formatters/index.js.map +3 -3
- package/dist/handlers/index.js.map +2 -2
- package/dist/index.d.ts +5 -4
- package/dist/index.js +3882 -1588
- package/dist/index.js.map +43 -35
- package/dist/managers/emoji.d.ts +38 -0
- package/dist/managers/guild.d.ts +141 -0
- package/dist/managers/index.d.ts +86 -75
- package/dist/managers/index.js +1084 -67
- package/dist/managers/index.js.map +21 -16
- package/dist/managers/message.d.ts +7 -12
- package/dist/managers/user.d.ts +20 -0
- package/dist/rest/index.d.ts +173 -1
- package/dist/rest/index.js +343 -47
- package/dist/rest/index.js.map +8 -6
- package/dist/rest/redis.d.ts +37 -0
- package/dist/rest/routes.d.ts +26 -1
- package/dist/rest/store.d.ts +38 -0
- package/dist/rest/webhook.d.ts +2 -2
- package/dist/sharding/cluster.d.ts +61 -0
- package/dist/sharding/index.d.ts +8 -0
- package/dist/sharding/index.js +289 -18
- package/dist/sharding/index.js.map +8 -7
- package/dist/structures/audit-log.d.ts +26 -0
- package/dist/structures/base.d.ts +131 -48
- package/dist/structures/embed.d.ts +65 -0
- package/dist/structures/index.d.ts +74 -26
- package/dist/structures/index.js +1528 -59
- package/dist/structures/index.js.map +14 -8
- package/dist/structures/interactions.d.ts +72 -17
- package/dist/structures/resources.d.ts +199 -7
- package/dist/types/index.d.ts +605 -84
- package/dist/types/index.js +71 -1
- package/dist/types/index.js.map +3 -3
- package/dist/utils/index.js.map +2 -2
- package/dist/voice/index.d.ts +88 -0
- package/dist/voice/index.js +204 -5
- package/dist/voice/index.js.map +3 -3
- package/dist/ws/index.d.ts +40 -1
- package/dist/ws/index.js +105 -18
- package/dist/ws/index.js.map +4 -4
- package/package.json +16 -16
- package/dist/structures/permissions.d.ts +0 -73
package/dist/builders/index.js
CHANGED
|
@@ -53,16 +53,20 @@ class EmbedBuilder {
|
|
|
53
53
|
return this;
|
|
54
54
|
}
|
|
55
55
|
addFields(...fields) {
|
|
56
|
-
|
|
56
|
+
const resolved = fields.length === 1 && Array.isArray(fields[0]) ? fields[0] : fields;
|
|
57
|
+
if (!resolved.length)
|
|
57
58
|
throw new TypeError("At least one embed field is required.");
|
|
58
59
|
const current = this.#data.fields ?? [];
|
|
59
|
-
if (current.length +
|
|
60
|
+
if (current.length + resolved.length > 25)
|
|
60
61
|
throw new RangeError("An embed cannot contain more than 25 fields.");
|
|
61
|
-
for (const field of
|
|
62
|
+
for (const field of resolved) {
|
|
62
63
|
validate(field.name, 256, "Embed field name");
|
|
63
64
|
validate(field.value, 1024, "Embed field value");
|
|
64
65
|
}
|
|
65
|
-
this.#data.fields = [
|
|
66
|
+
this.#data.fields = [
|
|
67
|
+
...current,
|
|
68
|
+
...resolved.map((field) => ({ ...field }))
|
|
69
|
+
];
|
|
66
70
|
return this;
|
|
67
71
|
}
|
|
68
72
|
setFields(fields) {
|
|
@@ -110,6 +114,67 @@ function url(value, field) {
|
|
|
110
114
|
throw new TypeError(`${field} must be a valid URL.`, { cause: error });
|
|
111
115
|
}
|
|
112
116
|
}
|
|
117
|
+
// packages/types/src/index.ts
|
|
118
|
+
var GatewayIntentBits = {
|
|
119
|
+
Guilds: 1 << 0,
|
|
120
|
+
GuildMembers: 1 << 1,
|
|
121
|
+
GuildModeration: 1 << 2,
|
|
122
|
+
GuildExpressions: 1 << 3,
|
|
123
|
+
GuildIntegrations: 1 << 4,
|
|
124
|
+
GuildWebhooks: 1 << 5,
|
|
125
|
+
GuildInvites: 1 << 6,
|
|
126
|
+
GuildVoiceStates: 1 << 7,
|
|
127
|
+
GuildPresences: 1 << 8,
|
|
128
|
+
GuildMessages: 1 << 9,
|
|
129
|
+
GuildMessageReactions: 1 << 10,
|
|
130
|
+
GuildMessageTyping: 1 << 11,
|
|
131
|
+
DirectMessages: 1 << 12,
|
|
132
|
+
DirectMessageReactions: 1 << 13,
|
|
133
|
+
DirectMessageTyping: 1 << 14,
|
|
134
|
+
MessageContent: 1 << 15,
|
|
135
|
+
GuildScheduledEvents: 1 << 16,
|
|
136
|
+
AutoModerationConfiguration: 1 << 20,
|
|
137
|
+
AutoModerationExecution: 1 << 21,
|
|
138
|
+
GuildMessagePolls: 1 << 24,
|
|
139
|
+
DirectMessagePolls: 1 << 25
|
|
140
|
+
};
|
|
141
|
+
var IntentBits = {
|
|
142
|
+
guild: 1 << 0,
|
|
143
|
+
guilds: 1 << 0,
|
|
144
|
+
guildMembers: 1 << 1,
|
|
145
|
+
guildModeration: 1 << 2,
|
|
146
|
+
guildBans: 1 << 2,
|
|
147
|
+
guildExpressions: 1 << 3,
|
|
148
|
+
guildEmojis: 1 << 3,
|
|
149
|
+
guildEmojisAndStickers: 1 << 3,
|
|
150
|
+
guildIntegrations: 1 << 4,
|
|
151
|
+
guildWebhooks: 1 << 5,
|
|
152
|
+
guildInvites: 1 << 6,
|
|
153
|
+
guildVoiceStates: 1 << 7,
|
|
154
|
+
guildPresences: 1 << 8,
|
|
155
|
+
guildMessages: 1 << 9,
|
|
156
|
+
guildMessage: 1 << 9,
|
|
157
|
+
guildMessageReactions: 1 << 10,
|
|
158
|
+
guildMessageTyping: 1 << 11,
|
|
159
|
+
directMessages: 1 << 12,
|
|
160
|
+
directMessageReactions: 1 << 13,
|
|
161
|
+
directMessageTyping: 1 << 14,
|
|
162
|
+
messageContent: 1 << 15,
|
|
163
|
+
guildScheduledEvents: 1 << 16,
|
|
164
|
+
autoModerationConfiguration: 1 << 20,
|
|
165
|
+
autoModerationExecution: 1 << 21,
|
|
166
|
+
guildMessagePolls: 1 << 24,
|
|
167
|
+
directMessagePolls: 1 << 25
|
|
168
|
+
};
|
|
169
|
+
var ButtonStyle = {
|
|
170
|
+
Primary: 1,
|
|
171
|
+
Secondary: 2,
|
|
172
|
+
Success: 3,
|
|
173
|
+
Danger: 4,
|
|
174
|
+
Link: 5,
|
|
175
|
+
Premium: 6
|
|
176
|
+
};
|
|
177
|
+
|
|
113
178
|
// packages/builders/src/components.ts
|
|
114
179
|
var ComponentType = {
|
|
115
180
|
ActionRow: 1,
|
|
@@ -119,14 +184,15 @@ var ComponentType = {
|
|
|
119
184
|
UserSelect: 5,
|
|
120
185
|
RoleSelect: 6,
|
|
121
186
|
MentionableSelect: 7,
|
|
122
|
-
ChannelSelect: 8
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
187
|
+
ChannelSelect: 8,
|
|
188
|
+
Section: 9,
|
|
189
|
+
TextDisplay: 10,
|
|
190
|
+
Thumbnail: 11,
|
|
191
|
+
MediaGallery: 12,
|
|
192
|
+
File: 13,
|
|
193
|
+
Separator: 14,
|
|
194
|
+
ContentInventoryEntry: 16,
|
|
195
|
+
Container: 17
|
|
130
196
|
};
|
|
131
197
|
var TextInputStyle = { Short: 1, Paragraph: 2 };
|
|
132
198
|
|
|
@@ -236,7 +302,9 @@ class ButtonBuilder {
|
|
|
236
302
|
try {
|
|
237
303
|
url2 = new URL(value);
|
|
238
304
|
} catch (error) {
|
|
239
|
-
throw new TypeError("Button URL must be a valid URL.", {
|
|
305
|
+
throw new TypeError("Button URL must be a valid URL.", {
|
|
306
|
+
cause: error
|
|
307
|
+
});
|
|
240
308
|
}
|
|
241
309
|
this.#data.style = ButtonStyle.Link;
|
|
242
310
|
delete this.#data.custom_id;
|
|
@@ -292,7 +360,7 @@ class EntitySelectBuilder {
|
|
|
292
360
|
return this;
|
|
293
361
|
}
|
|
294
362
|
setDefaultValues(...values) {
|
|
295
|
-
this.#data.default_values = values;
|
|
363
|
+
this.#data.default_values = values.map((value) => ({ ...value }));
|
|
296
364
|
return this;
|
|
297
365
|
}
|
|
298
366
|
toJSON() {
|
|
@@ -379,6 +447,191 @@ class TextInputBuilder {
|
|
|
379
447
|
return structuredClone(this.#data);
|
|
380
448
|
}
|
|
381
449
|
}
|
|
450
|
+
|
|
451
|
+
class ContainerBuilder {
|
|
452
|
+
#components = [];
|
|
453
|
+
#accentColor;
|
|
454
|
+
#spoiler;
|
|
455
|
+
addComponents(...components) {
|
|
456
|
+
if (!components.length)
|
|
457
|
+
throw new TypeError("At least one component is required.");
|
|
458
|
+
this.#components.push(...components);
|
|
459
|
+
return this;
|
|
460
|
+
}
|
|
461
|
+
setAccentColor(color) {
|
|
462
|
+
if (!Number.isInteger(color) || color < 0 || color > 16777215) {
|
|
463
|
+
throw new RangeError("Accent color must be an integer between 0 and 16777215 (0xFFFFFF).");
|
|
464
|
+
}
|
|
465
|
+
this.#accentColor = color;
|
|
466
|
+
return this;
|
|
467
|
+
}
|
|
468
|
+
setSpoiler(spoiler = true) {
|
|
469
|
+
this.#spoiler = spoiler;
|
|
470
|
+
return this;
|
|
471
|
+
}
|
|
472
|
+
toJSON() {
|
|
473
|
+
const data = {
|
|
474
|
+
type: ComponentType.Container,
|
|
475
|
+
components: this.#components.map((c) => c.toJSON())
|
|
476
|
+
};
|
|
477
|
+
if (this.#accentColor !== undefined)
|
|
478
|
+
data.accent_color = this.#accentColor;
|
|
479
|
+
if (this.#spoiler !== undefined)
|
|
480
|
+
data.spoiler = this.#spoiler;
|
|
481
|
+
return data;
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
class SectionBuilder {
|
|
486
|
+
#components = [];
|
|
487
|
+
#accessory;
|
|
488
|
+
addComponents(...components) {
|
|
489
|
+
if (!components.length)
|
|
490
|
+
throw new TypeError("At least one component is required.");
|
|
491
|
+
this.#components.push(...components);
|
|
492
|
+
return this;
|
|
493
|
+
}
|
|
494
|
+
setAccessory(accessory) {
|
|
495
|
+
this.#accessory = accessory;
|
|
496
|
+
return this;
|
|
497
|
+
}
|
|
498
|
+
toJSON() {
|
|
499
|
+
return {
|
|
500
|
+
type: ComponentType.Section,
|
|
501
|
+
components: this.#components.length ? this.#components.map((c) => c.toJSON()) : undefined,
|
|
502
|
+
accessory: this.#accessory?.toJSON()
|
|
503
|
+
};
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
class TextDisplayBuilder {
|
|
508
|
+
#content = "";
|
|
509
|
+
setContent(content) {
|
|
510
|
+
validateText(content, 4000, "Text display content");
|
|
511
|
+
this.#content = content;
|
|
512
|
+
return this;
|
|
513
|
+
}
|
|
514
|
+
toJSON() {
|
|
515
|
+
return {
|
|
516
|
+
type: ComponentType.TextDisplay,
|
|
517
|
+
content: this.#content
|
|
518
|
+
};
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
class MediaGalleryBuilder {
|
|
523
|
+
#items = [];
|
|
524
|
+
addItems(...items) {
|
|
525
|
+
if (!items.length) {
|
|
526
|
+
throw new TypeError("At least one media gallery item is required.");
|
|
527
|
+
}
|
|
528
|
+
if (this.#items.length + items.length > 10) {
|
|
529
|
+
throw new RangeError("MediaGallery can only contain up to 10 items.");
|
|
530
|
+
}
|
|
531
|
+
this.#items.push(...items.map((item) => ({ media: item })));
|
|
532
|
+
return this;
|
|
533
|
+
}
|
|
534
|
+
toJSON() {
|
|
535
|
+
return {
|
|
536
|
+
type: ComponentType.MediaGallery,
|
|
537
|
+
items: structuredClone(this.#items)
|
|
538
|
+
};
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
class FileComponentBuilder {
|
|
543
|
+
#url = "";
|
|
544
|
+
#spoiler;
|
|
545
|
+
setUrl(url2) {
|
|
546
|
+
validateText(url2, 2048, "File component URL");
|
|
547
|
+
this.#url = url2;
|
|
548
|
+
return this;
|
|
549
|
+
}
|
|
550
|
+
setSpoiler(spoiler = true) {
|
|
551
|
+
this.#spoiler = spoiler;
|
|
552
|
+
return this;
|
|
553
|
+
}
|
|
554
|
+
toJSON() {
|
|
555
|
+
if (!this.#url)
|
|
556
|
+
throw new Error("File component must have a URL.");
|
|
557
|
+
const data = {
|
|
558
|
+
type: ComponentType.File,
|
|
559
|
+
file: { url: this.#url }
|
|
560
|
+
};
|
|
561
|
+
if (this.#spoiler !== undefined)
|
|
562
|
+
data.spoiler = this.#spoiler;
|
|
563
|
+
return data;
|
|
564
|
+
}
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
class SeparatorBuilder {
|
|
568
|
+
#spacing;
|
|
569
|
+
#divider;
|
|
570
|
+
setSpacing(spacing) {
|
|
571
|
+
this.#spacing = spacing;
|
|
572
|
+
return this;
|
|
573
|
+
}
|
|
574
|
+
setDivider(divider = true) {
|
|
575
|
+
this.#divider = divider;
|
|
576
|
+
return this;
|
|
577
|
+
}
|
|
578
|
+
toJSON() {
|
|
579
|
+
const data = {
|
|
580
|
+
type: ComponentType.Separator
|
|
581
|
+
};
|
|
582
|
+
if (this.#spacing !== undefined)
|
|
583
|
+
data.spacing = this.#spacing;
|
|
584
|
+
if (this.#divider !== undefined)
|
|
585
|
+
data.divider = this.#divider;
|
|
586
|
+
return data;
|
|
587
|
+
}
|
|
588
|
+
}
|
|
589
|
+
|
|
590
|
+
class ThumbnailBuilder {
|
|
591
|
+
#url = "";
|
|
592
|
+
#description;
|
|
593
|
+
#spoiler;
|
|
594
|
+
setUrl(url2) {
|
|
595
|
+
validateText(url2, 2048, "Thumbnail URL");
|
|
596
|
+
this.#url = url2;
|
|
597
|
+
return this;
|
|
598
|
+
}
|
|
599
|
+
setDescription(description) {
|
|
600
|
+
validateText(description, 1024, "Thumbnail description");
|
|
601
|
+
this.#description = description;
|
|
602
|
+
return this;
|
|
603
|
+
}
|
|
604
|
+
setSpoiler(spoiler = true) {
|
|
605
|
+
this.#spoiler = spoiler;
|
|
606
|
+
return this;
|
|
607
|
+
}
|
|
608
|
+
toJSON() {
|
|
609
|
+
const data = {
|
|
610
|
+
type: ComponentType.Thumbnail,
|
|
611
|
+
url: this.#url
|
|
612
|
+
};
|
|
613
|
+
if (this.#description !== undefined)
|
|
614
|
+
data.description = this.#description;
|
|
615
|
+
if (this.#spoiler !== undefined)
|
|
616
|
+
data.spoiler = this.#spoiler;
|
|
617
|
+
return data;
|
|
618
|
+
}
|
|
619
|
+
}
|
|
620
|
+
|
|
621
|
+
class ContentInventoryEntryBuilder {
|
|
622
|
+
#id = "";
|
|
623
|
+
setId(id) {
|
|
624
|
+
validateText(id, 100, "Content inventory entry ID");
|
|
625
|
+
this.#id = id;
|
|
626
|
+
return this;
|
|
627
|
+
}
|
|
628
|
+
toJSON() {
|
|
629
|
+
return {
|
|
630
|
+
type: ComponentType.ContentInventoryEntry,
|
|
631
|
+
id: this.#id
|
|
632
|
+
};
|
|
633
|
+
}
|
|
634
|
+
}
|
|
382
635
|
function validateText(value, max, field) {
|
|
383
636
|
if (typeof value !== "string")
|
|
384
637
|
throw new TypeError(`${field} must be a string.`);
|
|
@@ -750,6 +1003,46 @@ function validateNumberRange(value, minimum, maximum, field, integerOnly = true)
|
|
|
750
1003
|
if (!Number.isFinite(value) || integerOnly && !Number.isInteger(value) || value < minimum || value > maximum)
|
|
751
1004
|
throw new RangeError(`${field} must be ${integerOnly ? "an integer" : "a number"} between ${minimum} and ${maximum}.`);
|
|
752
1005
|
}
|
|
1006
|
+
|
|
1007
|
+
class ContextMenuCommandBuilder {
|
|
1008
|
+
data;
|
|
1009
|
+
constructor(type) {
|
|
1010
|
+
this.data = { type };
|
|
1011
|
+
}
|
|
1012
|
+
setName(name) {
|
|
1013
|
+
if (typeof name !== "string" || name.trim().length < 1 || name.length > 32)
|
|
1014
|
+
throw new RangeError("Command name must contain 1-32 characters.");
|
|
1015
|
+
this.data.name = name;
|
|
1016
|
+
return this;
|
|
1017
|
+
}
|
|
1018
|
+
setDefaultMemberPermissions(permissions) {
|
|
1019
|
+
this.data.default_member_permissions = permissions === null ? null : BigInt(permissions).toString();
|
|
1020
|
+
return this;
|
|
1021
|
+
}
|
|
1022
|
+
setDMPermission(enabled) {
|
|
1023
|
+
this.data.dm_permission = enabled;
|
|
1024
|
+
return this;
|
|
1025
|
+
}
|
|
1026
|
+
setIntegrationTypes(...types) {
|
|
1027
|
+
this.data.integration_types = [...types];
|
|
1028
|
+
return this;
|
|
1029
|
+
}
|
|
1030
|
+
toJSON() {
|
|
1031
|
+
return structuredClone(this.data);
|
|
1032
|
+
}
|
|
1033
|
+
}
|
|
1034
|
+
|
|
1035
|
+
class UserCommandBuilder extends ContextMenuCommandBuilder {
|
|
1036
|
+
constructor() {
|
|
1037
|
+
super(2);
|
|
1038
|
+
}
|
|
1039
|
+
}
|
|
1040
|
+
|
|
1041
|
+
class MessageCommandBuilder extends ContextMenuCommandBuilder {
|
|
1042
|
+
constructor() {
|
|
1043
|
+
super(3);
|
|
1044
|
+
}
|
|
1045
|
+
}
|
|
753
1046
|
// packages/builders/src/attachment.ts
|
|
754
1047
|
import { readFile } from "fs/promises";
|
|
755
1048
|
import { basename } from "path";
|
|
@@ -795,7 +1088,7 @@ class AttachmentBuilder {
|
|
|
795
1088
|
if (typeof Buffer !== "undefined" && Buffer.isBuffer(this.file)) {
|
|
796
1089
|
return new Uint8Array(this.file);
|
|
797
1090
|
}
|
|
798
|
-
|
|
1091
|
+
throw new TypeError("Attachment file must be a supported binary value or file path.");
|
|
799
1092
|
}
|
|
800
1093
|
}
|
|
801
1094
|
export {
|
|
@@ -808,21 +1101,31 @@ export {
|
|
|
808
1101
|
ButtonStyle,
|
|
809
1102
|
ChannelOptionBuilder,
|
|
810
1103
|
ComponentType,
|
|
1104
|
+
ContainerBuilder,
|
|
1105
|
+
ContentInventoryEntryBuilder,
|
|
811
1106
|
EmbedBuilder,
|
|
812
1107
|
EntitySelectBuilder,
|
|
1108
|
+
FileComponentBuilder,
|
|
813
1109
|
IntegerOptionBuilder,
|
|
1110
|
+
MediaGalleryBuilder,
|
|
814
1111
|
MentionableOptionBuilder,
|
|
1112
|
+
MessageCommandBuilder,
|
|
815
1113
|
ModalBuilder,
|
|
816
1114
|
NumberOptionBuilder,
|
|
817
1115
|
RoleOptionBuilder,
|
|
1116
|
+
SectionBuilder,
|
|
1117
|
+
SeparatorBuilder,
|
|
818
1118
|
SlashCommandBuilder,
|
|
819
1119
|
StringOptionBuilder,
|
|
820
1120
|
StringSelectBuilder,
|
|
821
1121
|
SubcommandBuilder,
|
|
822
1122
|
SubcommandGroupBuilder,
|
|
1123
|
+
TextDisplayBuilder,
|
|
823
1124
|
TextInputBuilder,
|
|
824
1125
|
TextInputStyle,
|
|
1126
|
+
ThumbnailBuilder,
|
|
1127
|
+
UserCommandBuilder,
|
|
825
1128
|
UserOptionBuilder
|
|
826
1129
|
};
|
|
827
1130
|
|
|
828
|
-
//# debugId=
|
|
1131
|
+
//# debugId=1FE9A1C7B4113D0264756E2164756E21
|