lunibee 0.1.6 → 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 +3 -3
- package/dist/builders/commands.d.ts +37 -0
- package/dist/builders/components.d.ts +19 -12
- package/dist/builders/embed.d.ts +3 -1
- package/dist/builders/index.d.ts +1 -1
- package/dist/builders/index.js +146 -19
- package/dist/builders/index.js.map +8 -7
- package/dist/collection/index.d.ts +30 -0
- package/dist/collection/index.js +78 -5
- package/dist/collection/index.js.map +4 -4
- package/dist/core/events.d.ts +2 -0
- package/dist/core/index.d.ts +38 -0
- package/dist/core/index.js +754 -175
- package/dist/core/index.js.map +24 -22
- 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 +1 -1
- package/dist/index.js +1762 -291
- package/dist/index.js.map +43 -38
- package/dist/managers/emoji.d.ts +38 -0
- package/dist/managers/guild.d.ts +112 -1
- package/dist/managers/index.d.ts +31 -1
- package/dist/managers/index.js +803 -77
- package/dist/managers/index.js.map +21 -20
- package/dist/rest/index.d.ts +101 -11
- package/dist/rest/index.js +301 -45
- package/dist/rest/index.js.map +8 -6
- package/dist/rest/redis.d.ts +37 -0
- package/dist/rest/routes.d.ts +22 -0
- 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 +286 -18
- package/dist/sharding/index.js.map +8 -7
- package/dist/structures/audit-log.d.ts +26 -0
- package/dist/structures/base.d.ts +32 -0
- package/dist/structures/index.d.ts +29 -1
- package/dist/structures/index.js +1022 -86
- package/dist/structures/index.js.map +14 -10
- package/dist/structures/resources.d.ts +192 -4
- package/dist/types/index.d.ts +76 -0
- package/dist/types/index.js.map +2 -2
- 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 +102 -18
- package/dist/ws/index.js.map +4 -4
- package/package.json +16 -16
- package/dist/structures/permissions.d.ts +0 -73
package/dist/managers/index.js
CHANGED
|
@@ -145,6 +145,75 @@ class Collection extends Map {
|
|
|
145
145
|
}
|
|
146
146
|
return result;
|
|
147
147
|
}
|
|
148
|
+
partition(predicate) {
|
|
149
|
+
const pass = new Collection;
|
|
150
|
+
const fail = new Collection;
|
|
151
|
+
for (const [key, value] of this) {
|
|
152
|
+
if (predicate(value, key, this))
|
|
153
|
+
pass.set(key, value);
|
|
154
|
+
else
|
|
155
|
+
fail.set(key, value);
|
|
156
|
+
}
|
|
157
|
+
return [pass, fail];
|
|
158
|
+
}
|
|
159
|
+
tap(fn) {
|
|
160
|
+
fn(this);
|
|
161
|
+
return this;
|
|
162
|
+
}
|
|
163
|
+
flatMap(transform) {
|
|
164
|
+
const result = [];
|
|
165
|
+
for (const [key, value] of this) {
|
|
166
|
+
for (const item of transform(value, key, this))
|
|
167
|
+
result.push(item);
|
|
168
|
+
}
|
|
169
|
+
return result;
|
|
170
|
+
}
|
|
171
|
+
reduce(fn, initialValue) {
|
|
172
|
+
let acc = initialValue;
|
|
173
|
+
for (const [key, value] of this)
|
|
174
|
+
acc = fn(acc, value, key, this);
|
|
175
|
+
return acc;
|
|
176
|
+
}
|
|
177
|
+
sorted(comparator) {
|
|
178
|
+
const decorated = [...this.entries()].map((entry, index) => ({
|
|
179
|
+
entry,
|
|
180
|
+
index
|
|
181
|
+
}));
|
|
182
|
+
if (comparator)
|
|
183
|
+
decorated.sort((x, y) => {
|
|
184
|
+
const comparison = comparator(x.entry[1], y.entry[1], x.entry[0], y.entry[0]);
|
|
185
|
+
return comparison !== 0 ? comparison : x.index - y.index;
|
|
186
|
+
});
|
|
187
|
+
const result = new Collection;
|
|
188
|
+
for (const { entry } of decorated)
|
|
189
|
+
result.set(entry[0], entry[1]);
|
|
190
|
+
return result;
|
|
191
|
+
}
|
|
192
|
+
random() {
|
|
193
|
+
const arr = [...this.values()];
|
|
194
|
+
if (!arr.length)
|
|
195
|
+
return;
|
|
196
|
+
return arr[Math.floor(Math.random() * arr.length)];
|
|
197
|
+
}
|
|
198
|
+
randomKey() {
|
|
199
|
+
const arr = [...this.keys()];
|
|
200
|
+
if (!arr.length)
|
|
201
|
+
return;
|
|
202
|
+
return arr[Math.floor(Math.random() * arr.length)];
|
|
203
|
+
}
|
|
204
|
+
at(index) {
|
|
205
|
+
const arr = [...this.values()];
|
|
206
|
+
const i = index < 0 ? arr.length + index : index;
|
|
207
|
+
return arr[i];
|
|
208
|
+
}
|
|
209
|
+
keyAt(index) {
|
|
210
|
+
const arr = [...this.keys()];
|
|
211
|
+
const i = index < 0 ? arr.length + index : index;
|
|
212
|
+
return arr[i];
|
|
213
|
+
}
|
|
214
|
+
toJSON() {
|
|
215
|
+
return [...this.entries()];
|
|
216
|
+
}
|
|
148
217
|
}
|
|
149
218
|
|
|
150
219
|
// packages/managers/src/base.ts
|
|
@@ -216,7 +285,7 @@ class ResourceManager extends Manager {
|
|
|
216
285
|
// packages/rest/package.json
|
|
217
286
|
var package_default = {
|
|
218
287
|
name: "@lunibee/rest",
|
|
219
|
-
version: "0.1.
|
|
288
|
+
version: "0.1.7",
|
|
220
289
|
type: "module",
|
|
221
290
|
module: "./src/index.ts",
|
|
222
291
|
types: "./src/index.ts",
|
|
@@ -270,7 +339,18 @@ var Routes = {
|
|
|
270
339
|
guildAutoModerationRule: (guildId, ruleId) => `/guilds/${snowflake(guildId, "Guild ID")}/auto-moderation/rules/${snowflake(ruleId, "Rule ID")}`,
|
|
271
340
|
voiceRegions: () => "/voice/regions",
|
|
272
341
|
gateway: () => "/gateway",
|
|
273
|
-
gatewayBot: () => "/gateway/bot"
|
|
342
|
+
gatewayBot: () => "/gateway/bot",
|
|
343
|
+
guildAuditLog: (guildId) => `/guilds/${snowflake(guildId, "Guild ID")}/audit-logs`,
|
|
344
|
+
guildMembers: (guildId) => `/guilds/${snowflake(guildId, "Guild ID")}/members`,
|
|
345
|
+
guildWelcomeScreen: (guildId) => `/guilds/${snowflake(guildId, "Guild ID")}/welcome-screen`,
|
|
346
|
+
guildOnboarding: (guildId) => `/guilds/${snowflake(guildId, "Guild ID")}/onboarding`,
|
|
347
|
+
guildPrune: (guildId) => `/guilds/${snowflake(guildId, "Guild ID")}/prune`,
|
|
348
|
+
stageInstances: () => "/stage-instances",
|
|
349
|
+
stageInstanceByChannel: (channelId) => `/stage-instances/${snowflake(channelId, "Channel ID")}`,
|
|
350
|
+
invite: (code) => `/invites/${encodeURIComponent(code)}`,
|
|
351
|
+
guildVanity: (guildId) => `/guilds/${snowflake(guildId, "Guild ID")}/vanity-url`,
|
|
352
|
+
guildEmoji: (guildId, emojiId) => emojiId ? `/guilds/${snowflake(guildId, "Guild ID")}/emojis/${snowflake(emojiId, "Emoji ID")}` : `/guilds/${snowflake(guildId, "Guild ID")}/emojis`,
|
|
353
|
+
applicationEmoji: (applicationId, emojiId) => emojiId ? `/applications/${snowflake(applicationId, "Application ID")}/emojis/${snowflake(emojiId, "Emoji ID")}` : `/applications/${snowflake(applicationId, "Application ID")}/emojis`
|
|
274
354
|
};
|
|
275
355
|
function snowflake(value, field) {
|
|
276
356
|
if (!/^\d{1,20}$/.test(value))
|
|
@@ -281,6 +361,15 @@ function snowflake(value, field) {
|
|
|
281
361
|
var LIBRARY_VERSION = package_default.version;
|
|
282
362
|
var LIBRARY_URL = "https://github.com/Ekretos/lunibee";
|
|
283
363
|
var USER_AGENT = `DiscordBot (${LIBRARY_URL}, ${package_default.version})`;
|
|
364
|
+
var REQUEST_DATA_KEYS = new Set([
|
|
365
|
+
"body",
|
|
366
|
+
"files",
|
|
367
|
+
"query",
|
|
368
|
+
"headers",
|
|
369
|
+
"reason",
|
|
370
|
+
"auth",
|
|
371
|
+
"signal"
|
|
372
|
+
]);
|
|
284
373
|
|
|
285
374
|
// packages/structures/src/base.ts
|
|
286
375
|
class BaseStructure {
|
|
@@ -424,6 +513,13 @@ class Guild extends BaseStructure {
|
|
|
424
513
|
vanityUrlCode;
|
|
425
514
|
nsfwLevel;
|
|
426
515
|
discoverySplash;
|
|
516
|
+
rulesChannelId;
|
|
517
|
+
systemChannelId;
|
|
518
|
+
systemChannelFlags;
|
|
519
|
+
maxMembers;
|
|
520
|
+
mfaLevel;
|
|
521
|
+
explicitContentFilter;
|
|
522
|
+
defaultMessageNotifications;
|
|
427
523
|
constructor(data) {
|
|
428
524
|
super(data.id);
|
|
429
525
|
if (!data.name)
|
|
@@ -445,6 +541,14 @@ class Guild extends BaseStructure {
|
|
|
445
541
|
this.vanityUrlCode = data.vanity_url_code ?? null;
|
|
446
542
|
this.nsfwLevel = data.nsfw_level ?? 0;
|
|
447
543
|
this.discoverySplash = data.discovery_splash ?? null;
|
|
544
|
+
const d = data;
|
|
545
|
+
this.rulesChannelId = d.rules_channel_id ?? null;
|
|
546
|
+
this.systemChannelId = d.system_channel_id ?? null;
|
|
547
|
+
this.systemChannelFlags = d.system_channel_flags ?? 0;
|
|
548
|
+
this.maxMembers = d.max_members ?? 0;
|
|
549
|
+
this.mfaLevel = d.mfa_level ?? 0;
|
|
550
|
+
this.explicitContentFilter = d.explicit_content_filter ?? 0;
|
|
551
|
+
this.defaultMessageNotifications = d.default_message_notifications ?? 0;
|
|
448
552
|
}
|
|
449
553
|
iconURL(options = {}) {
|
|
450
554
|
if (!this.icon)
|
|
@@ -466,12 +570,27 @@ class Guild extends BaseStructure {
|
|
|
466
570
|
return null;
|
|
467
571
|
return cdnURL(`/discovery-splashes/${this.id}`, this.discoverySplash, options);
|
|
468
572
|
}
|
|
573
|
+
widgetImageURL(style = "shield") {
|
|
574
|
+
return `https://discord.com/api/guilds/${this.id}/widget.png?style=${style}`;
|
|
575
|
+
}
|
|
469
576
|
hasFeature(feature) {
|
|
470
577
|
return this.features.includes(feature);
|
|
471
578
|
}
|
|
472
579
|
get isCommunity() {
|
|
473
580
|
return this.hasFeature("COMMUNITY");
|
|
474
581
|
}
|
|
582
|
+
get isPartnered() {
|
|
583
|
+
return this.hasFeature("PARTNERED");
|
|
584
|
+
}
|
|
585
|
+
get isVerified() {
|
|
586
|
+
return this.hasFeature("VERIFIED");
|
|
587
|
+
}
|
|
588
|
+
get isBoosted() {
|
|
589
|
+
return this.premiumSubscriptionCount > 0;
|
|
590
|
+
}
|
|
591
|
+
get boostLevel() {
|
|
592
|
+
return this.premiumTier;
|
|
593
|
+
}
|
|
475
594
|
get hasVanityUrl() {
|
|
476
595
|
return this.vanityUrlCode !== null;
|
|
477
596
|
}
|
|
@@ -482,7 +601,58 @@ class Guild extends BaseStructure {
|
|
|
482
601
|
return this.name;
|
|
483
602
|
}
|
|
484
603
|
}
|
|
485
|
-
// packages/
|
|
604
|
+
// packages/core/src/permissions.ts
|
|
605
|
+
var Permission = {
|
|
606
|
+
createInstantInvite: 1n << 0n,
|
|
607
|
+
kickMembers: 1n << 1n,
|
|
608
|
+
banMembers: 1n << 2n,
|
|
609
|
+
administrator: 1n << 3n,
|
|
610
|
+
manageChannels: 1n << 4n,
|
|
611
|
+
manageGuild: 1n << 5n,
|
|
612
|
+
addReactions: 1n << 6n,
|
|
613
|
+
viewAuditLog: 1n << 7n,
|
|
614
|
+
prioritySpeaker: 1n << 8n,
|
|
615
|
+
stream: 1n << 9n,
|
|
616
|
+
viewChannel: 1n << 10n,
|
|
617
|
+
sendMessages: 1n << 11n,
|
|
618
|
+
sendTTSMessages: 1n << 12n,
|
|
619
|
+
manageMessages: 1n << 13n,
|
|
620
|
+
embedLinks: 1n << 14n,
|
|
621
|
+
attachFiles: 1n << 15n,
|
|
622
|
+
readMessageHistory: 1n << 16n,
|
|
623
|
+
mentionEveryone: 1n << 17n,
|
|
624
|
+
useExternalEmojis: 1n << 18n,
|
|
625
|
+
viewGuildInsights: 1n << 19n,
|
|
626
|
+
connect: 1n << 20n,
|
|
627
|
+
speak: 1n << 21n,
|
|
628
|
+
muteMembers: 1n << 22n,
|
|
629
|
+
deafenMembers: 1n << 23n,
|
|
630
|
+
moveMembers: 1n << 24n,
|
|
631
|
+
useVAD: 1n << 25n,
|
|
632
|
+
changeNickname: 1n << 26n,
|
|
633
|
+
manageNicknames: 1n << 27n,
|
|
634
|
+
manageRoles: 1n << 28n,
|
|
635
|
+
manageWebhooks: 1n << 29n,
|
|
636
|
+
manageGuildExpressions: 1n << 30n,
|
|
637
|
+
useApplicationCommands: 1n << 31n,
|
|
638
|
+
requestToSpeak: 1n << 32n,
|
|
639
|
+
manageEvents: 1n << 33n,
|
|
640
|
+
manageThreads: 1n << 34n,
|
|
641
|
+
createPublicThreads: 1n << 35n,
|
|
642
|
+
createPrivateThreads: 1n << 36n,
|
|
643
|
+
useExternalStickers: 1n << 37n,
|
|
644
|
+
sendMessagesInThreads: 1n << 38n,
|
|
645
|
+
useEmbeddedActivities: 1n << 39n,
|
|
646
|
+
moderateMembers: 1n << 40n,
|
|
647
|
+
viewCreatorMonetizationAnalytics: 1n << 41n,
|
|
648
|
+
useSoundboard: 1n << 42n,
|
|
649
|
+
createGuildExpressions: 1n << 43n,
|
|
650
|
+
createEvents: 1n << 44n,
|
|
651
|
+
useExternalSounds: 1n << 45n,
|
|
652
|
+
sendVoiceMessages: 1n << 46n,
|
|
653
|
+
sendPolls: 1n << 49n,
|
|
654
|
+
useExternalApps: 1n << 50n
|
|
655
|
+
};
|
|
486
656
|
var Permissions = {
|
|
487
657
|
CreateInstantInvite: 1n << 0n,
|
|
488
658
|
KickMembers: 1n << 1n,
|
|
@@ -534,6 +704,57 @@ var Permissions = {
|
|
|
534
704
|
SendPolls: 1n << 49n,
|
|
535
705
|
UseExternalApps: 1n << 50n
|
|
536
706
|
};
|
|
707
|
+
var PermissionFlagsBits = {
|
|
708
|
+
CreateInstantInvite: 1n << 0n,
|
|
709
|
+
KickMembers: 1n << 1n,
|
|
710
|
+
BanMembers: 1n << 2n,
|
|
711
|
+
Administrator: 1n << 3n,
|
|
712
|
+
ManageChannels: 1n << 4n,
|
|
713
|
+
ManageGuild: 1n << 5n,
|
|
714
|
+
AddReactions: 1n << 6n,
|
|
715
|
+
ViewAuditLog: 1n << 7n,
|
|
716
|
+
PrioritySpeaker: 1n << 8n,
|
|
717
|
+
Stream: 1n << 9n,
|
|
718
|
+
ViewChannel: 1n << 10n,
|
|
719
|
+
SendMessages: 1n << 11n,
|
|
720
|
+
SendTTSMessages: 1n << 12n,
|
|
721
|
+
ManageMessages: 1n << 13n,
|
|
722
|
+
EmbedLinks: 1n << 14n,
|
|
723
|
+
AttachFiles: 1n << 15n,
|
|
724
|
+
ReadMessageHistory: 1n << 16n,
|
|
725
|
+
MentionEveryone: 1n << 17n,
|
|
726
|
+
UseExternalEmojis: 1n << 18n,
|
|
727
|
+
ViewGuildInsights: 1n << 19n,
|
|
728
|
+
Connect: 1n << 20n,
|
|
729
|
+
Speak: 1n << 21n,
|
|
730
|
+
MuteMembers: 1n << 22n,
|
|
731
|
+
DeafenMembers: 1n << 23n,
|
|
732
|
+
MoveMembers: 1n << 24n,
|
|
733
|
+
UseVAD: 1n << 25n,
|
|
734
|
+
ChangeNickname: 1n << 26n,
|
|
735
|
+
ManageNicknames: 1n << 27n,
|
|
736
|
+
ManageRoles: 1n << 28n,
|
|
737
|
+
ManageWebhooks: 1n << 29n,
|
|
738
|
+
ManageGuildExpressions: 1n << 30n,
|
|
739
|
+
UseApplicationCommands: 1n << 31n,
|
|
740
|
+
RequestToSpeak: 1n << 32n,
|
|
741
|
+
ManageEvents: 1n << 33n,
|
|
742
|
+
ManageThreads: 1n << 34n,
|
|
743
|
+
CreatePublicThreads: 1n << 35n,
|
|
744
|
+
CreatePrivateThreads: 1n << 36n,
|
|
745
|
+
UseExternalStickers: 1n << 37n,
|
|
746
|
+
SendMessagesInThreads: 1n << 38n,
|
|
747
|
+
UseEmbeddedActivities: 1n << 39n,
|
|
748
|
+
ModerateMembers: 1n << 40n,
|
|
749
|
+
ViewCreatorMonetizationAnalytics: 1n << 41n,
|
|
750
|
+
UseSoundboard: 1n << 42n,
|
|
751
|
+
CreateGuildExpressions: 1n << 43n,
|
|
752
|
+
CreateEvents: 1n << 44n,
|
|
753
|
+
UseExternalSounds: 1n << 45n,
|
|
754
|
+
SendVoiceMessages: 1n << 46n,
|
|
755
|
+
SendPolls: 1n << 49n,
|
|
756
|
+
UseExternalApps: 1n << 50n
|
|
757
|
+
};
|
|
537
758
|
|
|
538
759
|
class PermissionSet {
|
|
539
760
|
bitfield;
|
|
@@ -541,8 +762,9 @@ class PermissionSet {
|
|
|
541
762
|
try {
|
|
542
763
|
if (Array.isArray(value)) {
|
|
543
764
|
let bit = 0n;
|
|
544
|
-
for (const item of value)
|
|
765
|
+
for (const item of value) {
|
|
545
766
|
bit |= this.#resolve(item);
|
|
767
|
+
}
|
|
546
768
|
this.bitfield = bit;
|
|
547
769
|
} else if (value instanceof PermissionSet) {
|
|
548
770
|
this.bitfield = value.bitfield;
|
|
@@ -558,22 +780,195 @@ class PermissionSet {
|
|
|
558
780
|
throw new TypeError("Permission bitfield must be a valid non-negative integer.", { cause: error });
|
|
559
781
|
}
|
|
560
782
|
}
|
|
783
|
+
get createInstantInvite() {
|
|
784
|
+
return (this.bitfield & Permission.createInstantInvite) === Permission.createInstantInvite;
|
|
785
|
+
}
|
|
786
|
+
get kickMembers() {
|
|
787
|
+
return (this.bitfield & Permission.kickMembers) === Permission.kickMembers;
|
|
788
|
+
}
|
|
789
|
+
get banMembers() {
|
|
790
|
+
return (this.bitfield & Permission.banMembers) === Permission.banMembers;
|
|
791
|
+
}
|
|
792
|
+
get administrator() {
|
|
793
|
+
return (this.bitfield & Permission.administrator) === Permission.administrator;
|
|
794
|
+
}
|
|
795
|
+
get manageChannels() {
|
|
796
|
+
return (this.bitfield & Permission.manageChannels) === Permission.manageChannels;
|
|
797
|
+
}
|
|
798
|
+
get manageGuild() {
|
|
799
|
+
return (this.bitfield & Permission.manageGuild) === Permission.manageGuild;
|
|
800
|
+
}
|
|
801
|
+
get addReactions() {
|
|
802
|
+
return (this.bitfield & Permission.addReactions) === Permission.addReactions;
|
|
803
|
+
}
|
|
804
|
+
get viewAuditLog() {
|
|
805
|
+
return (this.bitfield & Permission.viewAuditLog) === Permission.viewAuditLog;
|
|
806
|
+
}
|
|
807
|
+
get prioritySpeaker() {
|
|
808
|
+
return (this.bitfield & Permission.prioritySpeaker) === Permission.prioritySpeaker;
|
|
809
|
+
}
|
|
810
|
+
get stream() {
|
|
811
|
+
return (this.bitfield & Permission.stream) === Permission.stream;
|
|
812
|
+
}
|
|
813
|
+
get viewChannel() {
|
|
814
|
+
return (this.bitfield & Permission.viewChannel) === Permission.viewChannel;
|
|
815
|
+
}
|
|
816
|
+
get sendMessages() {
|
|
817
|
+
return (this.bitfield & Permission.sendMessages) === Permission.sendMessages;
|
|
818
|
+
}
|
|
819
|
+
get sendTTSMessages() {
|
|
820
|
+
return (this.bitfield & Permission.sendTTSMessages) === Permission.sendTTSMessages;
|
|
821
|
+
}
|
|
822
|
+
get manageMessages() {
|
|
823
|
+
return (this.bitfield & Permission.manageMessages) === Permission.manageMessages;
|
|
824
|
+
}
|
|
825
|
+
get embedLinks() {
|
|
826
|
+
return (this.bitfield & Permission.embedLinks) === Permission.embedLinks;
|
|
827
|
+
}
|
|
828
|
+
get attachFiles() {
|
|
829
|
+
return (this.bitfield & Permission.attachFiles) === Permission.attachFiles;
|
|
830
|
+
}
|
|
831
|
+
get readMessageHistory() {
|
|
832
|
+
return (this.bitfield & Permission.readMessageHistory) === Permission.readMessageHistory;
|
|
833
|
+
}
|
|
834
|
+
get mentionEveryone() {
|
|
835
|
+
return (this.bitfield & Permission.mentionEveryone) === Permission.mentionEveryone;
|
|
836
|
+
}
|
|
837
|
+
get useExternalEmojis() {
|
|
838
|
+
return (this.bitfield & Permission.useExternalEmojis) === Permission.useExternalEmojis;
|
|
839
|
+
}
|
|
840
|
+
get viewGuildInsights() {
|
|
841
|
+
return (this.bitfield & Permission.viewGuildInsights) === Permission.viewGuildInsights;
|
|
842
|
+
}
|
|
843
|
+
get connect() {
|
|
844
|
+
return (this.bitfield & Permission.connect) === Permission.connect;
|
|
845
|
+
}
|
|
846
|
+
get speak() {
|
|
847
|
+
return (this.bitfield & Permission.speak) === Permission.speak;
|
|
848
|
+
}
|
|
849
|
+
get muteMembers() {
|
|
850
|
+
return (this.bitfield & Permission.muteMembers) === Permission.muteMembers;
|
|
851
|
+
}
|
|
852
|
+
get deafenMembers() {
|
|
853
|
+
return (this.bitfield & Permission.deafenMembers) === Permission.deafenMembers;
|
|
854
|
+
}
|
|
855
|
+
get moveMembers() {
|
|
856
|
+
return (this.bitfield & Permission.moveMembers) === Permission.moveMembers;
|
|
857
|
+
}
|
|
858
|
+
get useVAD() {
|
|
859
|
+
return (this.bitfield & Permission.useVAD) === Permission.useVAD;
|
|
860
|
+
}
|
|
861
|
+
get changeNickname() {
|
|
862
|
+
return (this.bitfield & Permission.changeNickname) === Permission.changeNickname;
|
|
863
|
+
}
|
|
864
|
+
get manageNicknames() {
|
|
865
|
+
return (this.bitfield & Permission.manageNicknames) === Permission.manageNicknames;
|
|
866
|
+
}
|
|
867
|
+
get manageRoles() {
|
|
868
|
+
return (this.bitfield & Permission.manageRoles) === Permission.manageRoles;
|
|
869
|
+
}
|
|
870
|
+
get manageWebhooks() {
|
|
871
|
+
return (this.bitfield & Permission.manageWebhooks) === Permission.manageWebhooks;
|
|
872
|
+
}
|
|
873
|
+
get manageGuildExpressions() {
|
|
874
|
+
return (this.bitfield & Permission.manageGuildExpressions) === Permission.manageGuildExpressions;
|
|
875
|
+
}
|
|
876
|
+
get useApplicationCommands() {
|
|
877
|
+
return (this.bitfield & Permission.useApplicationCommands) === Permission.useApplicationCommands;
|
|
878
|
+
}
|
|
879
|
+
get requestToSpeak() {
|
|
880
|
+
return (this.bitfield & Permission.requestToSpeak) === Permission.requestToSpeak;
|
|
881
|
+
}
|
|
882
|
+
get manageEvents() {
|
|
883
|
+
return (this.bitfield & Permission.manageEvents) === Permission.manageEvents;
|
|
884
|
+
}
|
|
885
|
+
get manageThreads() {
|
|
886
|
+
return (this.bitfield & Permission.manageThreads) === Permission.manageThreads;
|
|
887
|
+
}
|
|
888
|
+
get createPublicThreads() {
|
|
889
|
+
return (this.bitfield & Permission.createPublicThreads) === Permission.createPublicThreads;
|
|
890
|
+
}
|
|
891
|
+
get createPrivateThreads() {
|
|
892
|
+
return (this.bitfield & Permission.createPrivateThreads) === Permission.createPrivateThreads;
|
|
893
|
+
}
|
|
894
|
+
get useExternalStickers() {
|
|
895
|
+
return (this.bitfield & Permission.useExternalStickers) === Permission.useExternalStickers;
|
|
896
|
+
}
|
|
897
|
+
get sendMessagesInThreads() {
|
|
898
|
+
return (this.bitfield & Permission.sendMessagesInThreads) === Permission.sendMessagesInThreads;
|
|
899
|
+
}
|
|
900
|
+
get useEmbeddedActivities() {
|
|
901
|
+
return (this.bitfield & Permission.useEmbeddedActivities) === Permission.useEmbeddedActivities;
|
|
902
|
+
}
|
|
903
|
+
get moderateMembers() {
|
|
904
|
+
return (this.bitfield & Permission.moderateMembers) === Permission.moderateMembers;
|
|
905
|
+
}
|
|
906
|
+
get viewCreatorMonetizationAnalytics() {
|
|
907
|
+
return (this.bitfield & Permission.viewCreatorMonetizationAnalytics) === Permission.viewCreatorMonetizationAnalytics;
|
|
908
|
+
}
|
|
909
|
+
get useSoundboard() {
|
|
910
|
+
return (this.bitfield & Permission.useSoundboard) === Permission.useSoundboard;
|
|
911
|
+
}
|
|
912
|
+
get createGuildExpressions() {
|
|
913
|
+
return (this.bitfield & Permission.createGuildExpressions) === Permission.createGuildExpressions;
|
|
914
|
+
}
|
|
915
|
+
get createEvents() {
|
|
916
|
+
return (this.bitfield & Permission.createEvents) === Permission.createEvents;
|
|
917
|
+
}
|
|
918
|
+
get useExternalSounds() {
|
|
919
|
+
return (this.bitfield & Permission.useExternalSounds) === Permission.useExternalSounds;
|
|
920
|
+
}
|
|
921
|
+
get sendVoiceMessages() {
|
|
922
|
+
return (this.bitfield & Permission.sendVoiceMessages) === Permission.sendVoiceMessages;
|
|
923
|
+
}
|
|
924
|
+
get sendPolls() {
|
|
925
|
+
return (this.bitfield & Permission.sendPolls) === Permission.sendPolls;
|
|
926
|
+
}
|
|
927
|
+
get useExternalApps() {
|
|
928
|
+
return (this.bitfield & Permission.useExternalApps) === Permission.useExternalApps;
|
|
929
|
+
}
|
|
561
930
|
has(...permissions) {
|
|
562
|
-
|
|
931
|
+
if (permissions.length === 1) {
|
|
932
|
+
const p = permissions[0];
|
|
933
|
+
const bit = typeof p === "bigint" ? p : this.#resolve(p);
|
|
934
|
+
return (this.bitfield & bit) === bit;
|
|
935
|
+
}
|
|
936
|
+
for (let i = 0;i < permissions.length; i++) {
|
|
937
|
+
const p = permissions[i];
|
|
938
|
+
const bit = typeof p === "bigint" ? p : this.#resolve(p);
|
|
939
|
+
if ((this.bitfield & bit) !== bit)
|
|
940
|
+
return false;
|
|
941
|
+
}
|
|
942
|
+
return true;
|
|
563
943
|
}
|
|
564
944
|
any(...permissions) {
|
|
565
|
-
|
|
945
|
+
if (permissions.length === 1) {
|
|
946
|
+
const p = permissions[0];
|
|
947
|
+
const bit = typeof p === "bigint" ? p : this.#resolve(p);
|
|
948
|
+
return (this.bitfield & bit) !== 0n;
|
|
949
|
+
}
|
|
950
|
+
for (let i = 0;i < permissions.length; i++) {
|
|
951
|
+
const p = permissions[i];
|
|
952
|
+
const bit = typeof p === "bigint" ? p : this.#resolve(p);
|
|
953
|
+
if ((this.bitfield & bit) !== 0n)
|
|
954
|
+
return true;
|
|
955
|
+
}
|
|
956
|
+
return false;
|
|
566
957
|
}
|
|
567
958
|
add(...permissions) {
|
|
568
959
|
let bitfield = this.bitfield;
|
|
569
|
-
for (
|
|
570
|
-
|
|
960
|
+
for (let i = 0;i < permissions.length; i++) {
|
|
961
|
+
const p = permissions[i];
|
|
962
|
+
bitfield |= typeof p === "bigint" ? p : this.#resolve(p);
|
|
963
|
+
}
|
|
571
964
|
return new PermissionSet(bitfield);
|
|
572
965
|
}
|
|
573
966
|
remove(...permissions) {
|
|
574
967
|
let bitfield = this.bitfield;
|
|
575
|
-
for (
|
|
576
|
-
|
|
968
|
+
for (let i = 0;i < permissions.length; i++) {
|
|
969
|
+
const p = permissions[i];
|
|
970
|
+
bitfield &= ~(typeof p === "bigint" ? p : this.#resolve(p));
|
|
971
|
+
}
|
|
577
972
|
return new PermissionSet(bitfield);
|
|
578
973
|
}
|
|
579
974
|
equals(other) {
|
|
@@ -583,27 +978,31 @@ class PermissionSet {
|
|
|
583
978
|
return this.bitfield.toString();
|
|
584
979
|
}
|
|
585
980
|
toArray() {
|
|
586
|
-
return Object.keys(
|
|
981
|
+
return Object.keys(Permission).filter((permission) => this.has(permission));
|
|
587
982
|
}
|
|
588
983
|
#resolve(permission) {
|
|
589
|
-
if (permission instanceof PermissionSet)
|
|
590
|
-
return permission.bitfield;
|
|
591
984
|
if (typeof permission === "bigint")
|
|
592
985
|
return permission;
|
|
593
986
|
if (typeof permission === "number")
|
|
594
987
|
return BigInt(permission);
|
|
988
|
+
if (permission instanceof PermissionSet)
|
|
989
|
+
return permission.bitfield;
|
|
595
990
|
if (Array.isArray(permission)) {
|
|
596
991
|
let bit = 0n;
|
|
597
|
-
for (
|
|
598
|
-
bit |= this.#resolve(
|
|
992
|
+
for (let i = 0;i < permission.length; i++)
|
|
993
|
+
bit |= this.#resolve(permission[i]);
|
|
599
994
|
return bit;
|
|
600
995
|
}
|
|
601
996
|
if (typeof permission === "string") {
|
|
997
|
+
if (permission in Permission)
|
|
998
|
+
return Permission[permission];
|
|
602
999
|
if (permission in Permissions)
|
|
603
1000
|
return Permissions[permission];
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
1001
|
+
if (permission in PermissionFlagsBits)
|
|
1002
|
+
return PermissionFlagsBits[permission];
|
|
1003
|
+
const lower = permission.charAt(0).toLowerCase() + permission.slice(1);
|
|
1004
|
+
if (lower in Permission)
|
|
1005
|
+
return Permission[lower];
|
|
607
1006
|
return BigInt(permission);
|
|
608
1007
|
}
|
|
609
1008
|
return 0n;
|
|
@@ -611,63 +1010,12 @@ class PermissionSet {
|
|
|
611
1010
|
}
|
|
612
1011
|
|
|
613
1012
|
class PermissionsBitField extends PermissionSet {
|
|
1013
|
+
static Flags = PermissionFlagsBits;
|
|
1014
|
+
static All = Permission;
|
|
614
1015
|
constructor(value = 0n) {
|
|
615
1016
|
super(value);
|
|
616
1017
|
}
|
|
617
1018
|
}
|
|
618
|
-
|
|
619
|
-
// packages/structures/src/resources.ts
|
|
620
|
-
class GuildMember {
|
|
621
|
-
user;
|
|
622
|
-
guildId;
|
|
623
|
-
nickname;
|
|
624
|
-
roleIds;
|
|
625
|
-
pending;
|
|
626
|
-
joinedAt;
|
|
627
|
-
permissions;
|
|
628
|
-
constructor(data) {
|
|
629
|
-
this.user = new User(data.user);
|
|
630
|
-
if (!/^\d{1,20}$/.test(data.guild_id))
|
|
631
|
-
throw new TypeError("Member guild_id must be a valid snowflake.");
|
|
632
|
-
this.guildId = data.guild_id;
|
|
633
|
-
this.nickname = data.nick ?? null;
|
|
634
|
-
this.roleIds = [...data.roles ?? []];
|
|
635
|
-
this.pending = data.pending ?? false;
|
|
636
|
-
this.joinedAt = data.joined_at ? new Date(data.joined_at) : undefined;
|
|
637
|
-
if (this.joinedAt?.toString() === "Invalid Date")
|
|
638
|
-
throw new RangeError("Member joined_at must be a valid date.");
|
|
639
|
-
this.permissions = new PermissionsBitField(data.permissions ?? 0n);
|
|
640
|
-
}
|
|
641
|
-
get displayName() {
|
|
642
|
-
return this.nickname ?? this.user.displayName;
|
|
643
|
-
}
|
|
644
|
-
toString() {
|
|
645
|
-
return this.user.toString();
|
|
646
|
-
}
|
|
647
|
-
}
|
|
648
|
-
|
|
649
|
-
class Role extends BaseStructure {
|
|
650
|
-
name;
|
|
651
|
-
color;
|
|
652
|
-
hoist;
|
|
653
|
-
permissions;
|
|
654
|
-
managed;
|
|
655
|
-
mentionable;
|
|
656
|
-
constructor(data) {
|
|
657
|
-
super(data.id);
|
|
658
|
-
if (!data.name)
|
|
659
|
-
throw new TypeError("Role name cannot be empty.");
|
|
660
|
-
this.name = data.name;
|
|
661
|
-
this.color = data.color ?? 0;
|
|
662
|
-
this.hoist = data.hoist ?? false;
|
|
663
|
-
this.permissions = new PermissionsBitField(data.permissions ?? 0n);
|
|
664
|
-
this.managed = data.managed ?? false;
|
|
665
|
-
this.mentionable = data.mentionable ?? false;
|
|
666
|
-
}
|
|
667
|
-
toString() {
|
|
668
|
-
return `<@&${this.id}>`;
|
|
669
|
-
}
|
|
670
|
-
}
|
|
671
1019
|
// packages/types/src/index.ts
|
|
672
1020
|
var GatewayIntentBits = {
|
|
673
1021
|
Guilds: 1 << 0,
|
|
@@ -720,7 +1068,178 @@ var IntentBits = {
|
|
|
720
1068
|
guildMessagePolls: 1 << 24,
|
|
721
1069
|
directMessagePolls: 1 << 25
|
|
722
1070
|
};
|
|
1071
|
+
// packages/structures/src/resources.ts
|
|
1072
|
+
function toDateOrNull(value) {
|
|
1073
|
+
if (!value)
|
|
1074
|
+
return null;
|
|
1075
|
+
const date = new Date(value);
|
|
1076
|
+
return Number.isNaN(date.getTime()) ? null : date;
|
|
1077
|
+
}
|
|
1078
|
+
|
|
1079
|
+
class GuildMember {
|
|
1080
|
+
user;
|
|
1081
|
+
guildId;
|
|
1082
|
+
nickname;
|
|
1083
|
+
roleIds;
|
|
1084
|
+
pending;
|
|
1085
|
+
joinedAt;
|
|
1086
|
+
permissions;
|
|
1087
|
+
avatarHash;
|
|
1088
|
+
premiumSince;
|
|
1089
|
+
timedOutUntil;
|
|
1090
|
+
flags;
|
|
1091
|
+
constructor(data) {
|
|
1092
|
+
this.user = new User(data.user);
|
|
1093
|
+
if (!/^\d{1,20}$/.test(data.guild_id))
|
|
1094
|
+
throw new TypeError("Member guild_id must be a valid snowflake.");
|
|
1095
|
+
this.guildId = data.guild_id;
|
|
1096
|
+
this.nickname = data.nick ?? null;
|
|
1097
|
+
this.roleIds = [...data.roles ?? []];
|
|
1098
|
+
this.pending = data.pending ?? false;
|
|
1099
|
+
this.joinedAt = data.joined_at ? new Date(data.joined_at) : undefined;
|
|
1100
|
+
if (this.joinedAt?.toString() === "Invalid Date")
|
|
1101
|
+
throw new RangeError("Member joined_at must be a valid date.");
|
|
1102
|
+
this.permissions = new PermissionsBitField(data.permissions ?? 0n);
|
|
1103
|
+
this.avatarHash = data.avatar ?? null;
|
|
1104
|
+
this.premiumSince = toDateOrNull(data.premium_since);
|
|
1105
|
+
this.timedOutUntil = toDateOrNull(data.communication_disabled_until);
|
|
1106
|
+
this.flags = data.flags ?? 0;
|
|
1107
|
+
}
|
|
1108
|
+
get displayName() {
|
|
1109
|
+
return this.nickname ?? this.user.displayName;
|
|
1110
|
+
}
|
|
1111
|
+
get isTimedOut() {
|
|
1112
|
+
return this.timedOutUntil !== null && this.timedOutUntil > new Date;
|
|
1113
|
+
}
|
|
1114
|
+
avatarURL(options = {}) {
|
|
1115
|
+
if (this.avatarHash)
|
|
1116
|
+
return cdnURL(`/guilds/${this.guildId}/users/${this.user.id}/avatars`, this.avatarHash, options);
|
|
1117
|
+
return this.user.avatarURL(options);
|
|
1118
|
+
}
|
|
1119
|
+
displayAvatarURL(options = {}) {
|
|
1120
|
+
return this.avatarURL(options) ?? this.user.displayAvatarURL(options);
|
|
1121
|
+
}
|
|
1122
|
+
toString() {
|
|
1123
|
+
return this.user.toString();
|
|
1124
|
+
}
|
|
1125
|
+
}
|
|
1126
|
+
|
|
1127
|
+
class Role extends BaseStructure {
|
|
1128
|
+
name;
|
|
1129
|
+
color;
|
|
1130
|
+
hoist;
|
|
1131
|
+
permissions;
|
|
1132
|
+
managed;
|
|
1133
|
+
mentionable;
|
|
1134
|
+
position;
|
|
1135
|
+
unicodeEmoji;
|
|
1136
|
+
iconHash;
|
|
1137
|
+
tags;
|
|
1138
|
+
constructor(data) {
|
|
1139
|
+
super(data.id);
|
|
1140
|
+
if (!data.name)
|
|
1141
|
+
throw new TypeError("Role name cannot be empty.");
|
|
1142
|
+
this.name = data.name;
|
|
1143
|
+
this.color = data.color ?? 0;
|
|
1144
|
+
this.hoist = data.hoist ?? false;
|
|
1145
|
+
this.permissions = new PermissionsBitField(data.permissions ?? 0n);
|
|
1146
|
+
this.managed = data.managed ?? false;
|
|
1147
|
+
this.mentionable = data.mentionable ?? false;
|
|
1148
|
+
this.position = data.position ?? 0;
|
|
1149
|
+
this.unicodeEmoji = data.unicode_emoji ?? null;
|
|
1150
|
+
this.iconHash = data.icon ?? null;
|
|
1151
|
+
this.tags = data.tags ?? null;
|
|
1152
|
+
}
|
|
1153
|
+
get colorHex() {
|
|
1154
|
+
return `#${this.color.toString(16).padStart(6, "0").toUpperCase()}`;
|
|
1155
|
+
}
|
|
1156
|
+
iconURL(options = {}) {
|
|
1157
|
+
if (!this.iconHash)
|
|
1158
|
+
return null;
|
|
1159
|
+
return cdnURL(`/role-icons/${this.id}`, this.iconHash, options);
|
|
1160
|
+
}
|
|
1161
|
+
isEveryone(guildId) {
|
|
1162
|
+
return this.id === guildId;
|
|
1163
|
+
}
|
|
1164
|
+
toString() {
|
|
1165
|
+
return `<@&${this.id}>`;
|
|
1166
|
+
}
|
|
1167
|
+
}
|
|
1168
|
+
class Emoji extends BaseStructure {
|
|
1169
|
+
name;
|
|
1170
|
+
roleIds;
|
|
1171
|
+
user;
|
|
1172
|
+
requireColons;
|
|
1173
|
+
managed;
|
|
1174
|
+
animated;
|
|
1175
|
+
available;
|
|
1176
|
+
constructor(data) {
|
|
1177
|
+
super(data.id ?? "unicode");
|
|
1178
|
+
this.name = data.name;
|
|
1179
|
+
this.roleIds = data.roles ?? [];
|
|
1180
|
+
this.user = data.user ? new User(data.user) : null;
|
|
1181
|
+
this.requireColons = data.require_colons ?? false;
|
|
1182
|
+
this.managed = data.managed ?? false;
|
|
1183
|
+
this.animated = data.animated ?? false;
|
|
1184
|
+
this.available = data.available ?? true;
|
|
1185
|
+
}
|
|
1186
|
+
url(options = {}) {
|
|
1187
|
+
if (!this.id || this.id === "unicode")
|
|
1188
|
+
return null;
|
|
1189
|
+
const ext = options.extension ?? (this.animated ? "gif" : "png");
|
|
1190
|
+
const size = options.size ? `?size=${options.size}` : "";
|
|
1191
|
+
return `${CDN_BASE}/emojis/${this.id}.${ext}${size}`;
|
|
1192
|
+
}
|
|
1193
|
+
toString() {
|
|
1194
|
+
return this.id !== "unicode" ? `<${this.animated ? "a" : ""}:${this.name}:${this.id}>` : this.name ?? "";
|
|
1195
|
+
}
|
|
1196
|
+
}
|
|
1197
|
+
|
|
1198
|
+
class AutoModerationRule extends BaseStructure {
|
|
1199
|
+
guildId;
|
|
1200
|
+
name;
|
|
1201
|
+
creatorId;
|
|
1202
|
+
eventType;
|
|
1203
|
+
triggerType;
|
|
1204
|
+
triggerMetadata;
|
|
1205
|
+
actions;
|
|
1206
|
+
enabled;
|
|
1207
|
+
exemptRoles;
|
|
1208
|
+
exemptChannels;
|
|
1209
|
+
constructor(data) {
|
|
1210
|
+
super(data.id);
|
|
1211
|
+
if (!/^\d{1,20}$/.test(data.guild_id))
|
|
1212
|
+
throw new TypeError("AutoModerationRule guild_id must be a valid snowflake.");
|
|
1213
|
+
this.guildId = data.guild_id;
|
|
1214
|
+
this.name = data.name;
|
|
1215
|
+
this.creatorId = data.creator_id;
|
|
1216
|
+
this.eventType = data.event_type;
|
|
1217
|
+
this.triggerType = data.trigger_type;
|
|
1218
|
+
this.triggerMetadata = data.trigger_metadata;
|
|
1219
|
+
this.actions = data.actions;
|
|
1220
|
+
this.enabled = data.enabled;
|
|
1221
|
+
this.exemptRoles = data.exempt_roles;
|
|
1222
|
+
this.exemptChannels = data.exempt_channels;
|
|
1223
|
+
}
|
|
1224
|
+
toJSON() {
|
|
1225
|
+
return {
|
|
1226
|
+
id: this.id,
|
|
1227
|
+
guildId: this.guildId,
|
|
1228
|
+
name: this.name,
|
|
1229
|
+
creatorId: this.creatorId,
|
|
1230
|
+
eventType: this.eventType,
|
|
1231
|
+
triggerType: this.triggerType,
|
|
1232
|
+
triggerMetadata: this.triggerMetadata,
|
|
1233
|
+
actions: this.actions,
|
|
1234
|
+
enabled: this.enabled,
|
|
1235
|
+
exemptRoles: this.exemptRoles,
|
|
1236
|
+
exemptChannels: this.exemptChannels
|
|
1237
|
+
};
|
|
1238
|
+
}
|
|
1239
|
+
}
|
|
723
1240
|
// packages/structures/src/index.ts
|
|
1241
|
+
var NON_SYSTEM_MESSAGE_TYPES = new Set([0, 19, 20, 23]);
|
|
1242
|
+
|
|
724
1243
|
class Message extends BaseStructure {
|
|
725
1244
|
content;
|
|
726
1245
|
author;
|
|
@@ -766,6 +1285,12 @@ class Message extends BaseStructure {
|
|
|
766
1285
|
get embedsSuppressed() {
|
|
767
1286
|
return (this.flags & 4) !== 0;
|
|
768
1287
|
}
|
|
1288
|
+
get createdTimestamp() {
|
|
1289
|
+
return this.timestamp.getTime();
|
|
1290
|
+
}
|
|
1291
|
+
get createdAt() {
|
|
1292
|
+
return this.timestamp;
|
|
1293
|
+
}
|
|
769
1294
|
edit(options) {
|
|
770
1295
|
if (!this.#context)
|
|
771
1296
|
throw new Error("This message is not attached to a client.");
|
|
@@ -820,6 +1345,51 @@ class Message extends BaseStructure {
|
|
|
820
1345
|
throw new Error("This message is not attached to a client.");
|
|
821
1346
|
return this.#context.unpinMessage(this.channelId, this.id);
|
|
822
1347
|
}
|
|
1348
|
+
get isEphemeral() {
|
|
1349
|
+
return (this.flags & 64) !== 0;
|
|
1350
|
+
}
|
|
1351
|
+
get isPinned() {
|
|
1352
|
+
return this.pinned;
|
|
1353
|
+
}
|
|
1354
|
+
get isSystemMessage() {
|
|
1355
|
+
return !NON_SYSTEM_MESSAGE_TYPES.has(this.type);
|
|
1356
|
+
}
|
|
1357
|
+
get isCrosspost() {
|
|
1358
|
+
return (this.flags & 2) !== 0;
|
|
1359
|
+
}
|
|
1360
|
+
get hasAttachments() {
|
|
1361
|
+
return this.attachments.length > 0;
|
|
1362
|
+
}
|
|
1363
|
+
get hasEmbeds() {
|
|
1364
|
+
return this.embeds.length > 0;
|
|
1365
|
+
}
|
|
1366
|
+
get hasComponents() {
|
|
1367
|
+
return this.components.length > 0;
|
|
1368
|
+
}
|
|
1369
|
+
suppressEmbeds() {
|
|
1370
|
+
return this.edit({ flags: this.flags | 4 });
|
|
1371
|
+
}
|
|
1372
|
+
toJSON() {
|
|
1373
|
+
return {
|
|
1374
|
+
id: this.id,
|
|
1375
|
+
content: this.content,
|
|
1376
|
+
channelId: this.channelId,
|
|
1377
|
+
guildId: this.guildId,
|
|
1378
|
+
flags: this.flags,
|
|
1379
|
+
pinned: this.pinned,
|
|
1380
|
+
mentionEveryone: this.mentionEveryone,
|
|
1381
|
+
type: this.type,
|
|
1382
|
+
timestamp: this.timestamp.toISOString(),
|
|
1383
|
+
author: { id: this.author.id, username: this.author.username },
|
|
1384
|
+
attachments: [...this.attachments],
|
|
1385
|
+
embeds: [...this.embeds],
|
|
1386
|
+
components: [...this.components],
|
|
1387
|
+
mentions: this.mentions.map((u) => u.id),
|
|
1388
|
+
mentionRoles: [...this.mentionRoles],
|
|
1389
|
+
reference: this.reference,
|
|
1390
|
+
referencedMessage: this.referencedMessage ? this.referencedMessage.id : this.referencedMessage
|
|
1391
|
+
};
|
|
1392
|
+
}
|
|
823
1393
|
}
|
|
824
1394
|
|
|
825
1395
|
// packages/managers/src/message.ts
|
|
@@ -911,6 +1481,11 @@ class UserManager extends ResourceManager {
|
|
|
911
1481
|
}
|
|
912
1482
|
}
|
|
913
1483
|
// packages/managers/src/guild.ts
|
|
1484
|
+
function withQuery(path, params) {
|
|
1485
|
+
const suffix = params.toString();
|
|
1486
|
+
return suffix ? `${path}?${suffix}` : path;
|
|
1487
|
+
}
|
|
1488
|
+
|
|
914
1489
|
class GuildManager extends ResourceManager {
|
|
915
1490
|
#rest;
|
|
916
1491
|
constructor(rest) {
|
|
@@ -940,7 +1515,101 @@ class GuildManager extends ResourceManager {
|
|
|
940
1515
|
async fetchInvites(id) {
|
|
941
1516
|
return this.#rest.get(Routes.guildInvites(id));
|
|
942
1517
|
}
|
|
1518
|
+
async fetchAuditLog(guildId, options = {}) {
|
|
1519
|
+
const params = new URLSearchParams;
|
|
1520
|
+
if (options.userId)
|
|
1521
|
+
params.set("user_id", options.userId);
|
|
1522
|
+
if (options.actionType !== undefined)
|
|
1523
|
+
params.set("action_type", String(options.actionType));
|
|
1524
|
+
if (options.before)
|
|
1525
|
+
params.set("before", options.before);
|
|
1526
|
+
if (options.after)
|
|
1527
|
+
params.set("after", options.after);
|
|
1528
|
+
if (options.limit !== undefined)
|
|
1529
|
+
params.set("limit", String(Math.min(100, Math.max(1, options.limit))));
|
|
1530
|
+
return this.#rest.get(withQuery(Routes.guildAuditLog(guildId), params));
|
|
1531
|
+
}
|
|
1532
|
+
async fetchMembers(guildId, options = {}) {
|
|
1533
|
+
const params = new URLSearchParams;
|
|
1534
|
+
if (options.limit !== undefined)
|
|
1535
|
+
params.set("limit", String(Math.min(1000, Math.max(1, options.limit))));
|
|
1536
|
+
if (options.after)
|
|
1537
|
+
params.set("after", options.after);
|
|
1538
|
+
return this.#rest.get(withQuery(Routes.guildMembers(guildId), params));
|
|
1539
|
+
}
|
|
1540
|
+
async fetchAutoModerationRules(guildId) {
|
|
1541
|
+
const rules = await this.#rest.get(Routes.guildAutoModerationRules(guildId));
|
|
1542
|
+
return rules.map((r) => new AutoModerationRule(r));
|
|
1543
|
+
}
|
|
1544
|
+
async fetchAutoModerationRule(guildId, ruleId) {
|
|
1545
|
+
const rule = await this.#rest.get(Routes.guildAutoModerationRule(guildId, ruleId));
|
|
1546
|
+
return new AutoModerationRule(rule);
|
|
1547
|
+
}
|
|
1548
|
+
async createAutoModerationRule(guildId, options) {
|
|
1549
|
+
const rule = await this.#rest.post(Routes.guildAutoModerationRules(guildId), options);
|
|
1550
|
+
return new AutoModerationRule(rule);
|
|
1551
|
+
}
|
|
1552
|
+
async editAutoModerationRule(guildId, ruleId, options) {
|
|
1553
|
+
const rule = await this.#rest.patch(Routes.guildAutoModerationRule(guildId, ruleId), options);
|
|
1554
|
+
return new AutoModerationRule(rule);
|
|
1555
|
+
}
|
|
1556
|
+
async deleteAutoModerationRule(guildId, ruleId) {
|
|
1557
|
+
await this.#rest.delete(Routes.guildAutoModerationRule(guildId, ruleId));
|
|
1558
|
+
}
|
|
943
1559
|
}
|
|
1560
|
+
var AuditLogEvent = {
|
|
1561
|
+
GuildUpdate: 1,
|
|
1562
|
+
ChannelCreate: 10,
|
|
1563
|
+
ChannelUpdate: 11,
|
|
1564
|
+
ChannelDelete: 12,
|
|
1565
|
+
ChannelOverwriteCreate: 13,
|
|
1566
|
+
ChannelOverwriteUpdate: 14,
|
|
1567
|
+
ChannelOverwriteDelete: 15,
|
|
1568
|
+
MemberKick: 20,
|
|
1569
|
+
MemberPrune: 21,
|
|
1570
|
+
MemberBanAdd: 22,
|
|
1571
|
+
MemberBanRemove: 23,
|
|
1572
|
+
MemberUpdate: 24,
|
|
1573
|
+
MemberRoleUpdate: 25,
|
|
1574
|
+
MemberMove: 26,
|
|
1575
|
+
MemberDisconnect: 27,
|
|
1576
|
+
BotAdd: 28,
|
|
1577
|
+
RoleCreate: 30,
|
|
1578
|
+
RoleUpdate: 31,
|
|
1579
|
+
RoleDelete: 32,
|
|
1580
|
+
InviteCreate: 40,
|
|
1581
|
+
InviteUpdate: 41,
|
|
1582
|
+
InviteDelete: 42,
|
|
1583
|
+
WebhookCreate: 50,
|
|
1584
|
+
WebhookUpdate: 51,
|
|
1585
|
+
WebhookDelete: 52,
|
|
1586
|
+
EmojiCreate: 60,
|
|
1587
|
+
EmojiUpdate: 61,
|
|
1588
|
+
EmojiDelete: 62,
|
|
1589
|
+
MessageDelete: 72,
|
|
1590
|
+
MessageBulkDelete: 73,
|
|
1591
|
+
MessagePin: 74,
|
|
1592
|
+
MessageUnpin: 75,
|
|
1593
|
+
IntegrationCreate: 80,
|
|
1594
|
+
IntegrationUpdate: 81,
|
|
1595
|
+
IntegrationDelete: 82,
|
|
1596
|
+
StageInstanceCreate: 83,
|
|
1597
|
+
StageInstanceUpdate: 84,
|
|
1598
|
+
StageInstanceDelete: 85,
|
|
1599
|
+
StickerCreate: 90,
|
|
1600
|
+
StickerUpdate: 91,
|
|
1601
|
+
StickerDelete: 92,
|
|
1602
|
+
ScheduledEventCreate: 100,
|
|
1603
|
+
ScheduledEventUpdate: 101,
|
|
1604
|
+
ScheduledEventDelete: 102,
|
|
1605
|
+
ThreadCreate: 110,
|
|
1606
|
+
ThreadUpdate: 111,
|
|
1607
|
+
ThreadDelete: 112,
|
|
1608
|
+
AutoModerationRuleCreate: 140,
|
|
1609
|
+
AutoModerationRuleUpdate: 141,
|
|
1610
|
+
AutoModerationRuleDelete: 142,
|
|
1611
|
+
AutoModerationBlockMessage: 143
|
|
1612
|
+
};
|
|
944
1613
|
// packages/managers/src/role.ts
|
|
945
1614
|
class RoleManager extends ResourceManager {
|
|
946
1615
|
#rest;
|
|
@@ -1061,6 +1730,44 @@ class ApplicationCommandManager {
|
|
|
1061
1730
|
await this.#rest.delete(Routes.guildApplicationCommand(this.#applicationId, guildId, commandId));
|
|
1062
1731
|
}
|
|
1063
1732
|
}
|
|
1733
|
+
// packages/managers/src/emoji.ts
|
|
1734
|
+
class EmojiManager extends Manager {
|
|
1735
|
+
#rest;
|
|
1736
|
+
#guildId;
|
|
1737
|
+
constructor(rest, guildId) {
|
|
1738
|
+
super();
|
|
1739
|
+
this.#rest = rest;
|
|
1740
|
+
this.#guildId = guildId;
|
|
1741
|
+
}
|
|
1742
|
+
async fetch(emojiId) {
|
|
1743
|
+
return this.upsert(await this.#rest.get(Routes.guildEmoji(this.#guildId, emojiId)));
|
|
1744
|
+
}
|
|
1745
|
+
async fetchAll() {
|
|
1746
|
+
const data = await this.#rest.get(Routes.guildEmoji(this.#guildId));
|
|
1747
|
+
return data.map((item) => this.upsert(item));
|
|
1748
|
+
}
|
|
1749
|
+
async create(options) {
|
|
1750
|
+
return this.upsert(await this.#rest.post(Routes.guildEmoji(this.#guildId), options));
|
|
1751
|
+
}
|
|
1752
|
+
async edit(emojiId, options) {
|
|
1753
|
+
return this.upsert(await this.#rest.patch(Routes.guildEmoji(this.#guildId, emojiId), options));
|
|
1754
|
+
}
|
|
1755
|
+
async deleteEmoji(emojiId) {
|
|
1756
|
+
await this.#rest.delete(Routes.guildEmoji(this.#guildId, emojiId));
|
|
1757
|
+
this.delete(emojiId);
|
|
1758
|
+
}
|
|
1759
|
+
upsert(data) {
|
|
1760
|
+
const key = data.id != null ? data.id : `unicode:${data.name ?? ""}`;
|
|
1761
|
+
const existing = this.get(key);
|
|
1762
|
+
const emoji = new Emoji(data);
|
|
1763
|
+
if (existing) {
|
|
1764
|
+
Object.assign(existing, emoji);
|
|
1765
|
+
return existing;
|
|
1766
|
+
}
|
|
1767
|
+
this.set(key, emoji);
|
|
1768
|
+
return emoji;
|
|
1769
|
+
}
|
|
1770
|
+
}
|
|
1064
1771
|
|
|
1065
1772
|
// packages/managers/src/index.ts
|
|
1066
1773
|
class ChannelManager extends Manager {
|
|
@@ -1123,8 +1830,11 @@ class ChannelManager extends Manager {
|
|
|
1123
1830
|
}
|
|
1124
1831
|
async deleteChannel(channelId) {
|
|
1125
1832
|
await this.#rest.delete(Routes.channel(channelId));
|
|
1833
|
+
this.delete(channelId);
|
|
1834
|
+
}
|
|
1835
|
+
delete(channelId) {
|
|
1126
1836
|
this.#messageManagers.delete(channelId);
|
|
1127
|
-
super.delete(channelId);
|
|
1837
|
+
return super.delete(channelId);
|
|
1128
1838
|
}
|
|
1129
1839
|
send(channelId, options) {
|
|
1130
1840
|
return this.messages(channelId).send(options);
|
|
@@ -1169,6 +1879,8 @@ class ChannelManager extends Manager {
|
|
|
1169
1879
|
}
|
|
1170
1880
|
async bulkDeleteMessages(channelId, messageIds) {
|
|
1171
1881
|
const ids = [...messageIds];
|
|
1882
|
+
if (ids.length < 2 || ids.length > 100)
|
|
1883
|
+
throw new RangeError("bulkDelete requires between 2 and 100 message IDs.");
|
|
1172
1884
|
await this.#rest.post(Routes.channelBulkDelete(channelId), {
|
|
1173
1885
|
messages: ids
|
|
1174
1886
|
});
|
|
@@ -1176,7 +1888,7 @@ class ChannelManager extends Manager {
|
|
|
1176
1888
|
this.messages(channelId).delete(id);
|
|
1177
1889
|
}
|
|
1178
1890
|
async addReaction(channelId, messageId, emoji) {
|
|
1179
|
-
await this.#rest.put(Routes.messageReactions(channelId, messageId, emoji));
|
|
1891
|
+
await this.#rest.put(`${Routes.messageReactions(channelId, messageId, emoji)}/@me`);
|
|
1180
1892
|
}
|
|
1181
1893
|
async fetchReactions(channelId, messageId, emoji, options = {}) {
|
|
1182
1894
|
const params = new URLSearchParams;
|
|
@@ -1210,9 +1922,21 @@ class ChannelManager extends Manager {
|
|
|
1210
1922
|
createThreadFromMessage(channelId, messageId, options) {
|
|
1211
1923
|
return this.threads(channelId).createFromMessage(messageId, options);
|
|
1212
1924
|
}
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1925
|
+
async fetchPage(channelId, options = {}) {
|
|
1926
|
+
const limit = Math.min(100, Math.max(1, options.limit ?? 50));
|
|
1927
|
+
const messages = await this.fetchMessages(channelId, {
|
|
1928
|
+
...options,
|
|
1929
|
+
limit
|
|
1930
|
+
});
|
|
1931
|
+
return {
|
|
1932
|
+
messages,
|
|
1933
|
+
before: messages[0]?.id,
|
|
1934
|
+
after: messages[messages.length - 1]?.id,
|
|
1935
|
+
hasMore: messages.length === limit
|
|
1936
|
+
};
|
|
1937
|
+
}
|
|
1938
|
+
async bulkDelete(channelId, messageIds) {
|
|
1939
|
+
return this.bulkDeleteMessages(channelId, messageIds);
|
|
1216
1940
|
}
|
|
1217
1941
|
clear() {
|
|
1218
1942
|
this.#messageManagers.clear();
|
|
@@ -1224,7 +1948,9 @@ function isMessageQuery(value) {
|
|
|
1224
1948
|
}
|
|
1225
1949
|
export {
|
|
1226
1950
|
ApplicationCommandManager,
|
|
1951
|
+
AuditLogEvent,
|
|
1227
1952
|
ChannelManager,
|
|
1953
|
+
EmojiManager,
|
|
1228
1954
|
GuildManager,
|
|
1229
1955
|
GuildMemberManager,
|
|
1230
1956
|
Manager,
|
|
@@ -1235,4 +1961,4 @@ export {
|
|
|
1235
1961
|
UserManager
|
|
1236
1962
|
};
|
|
1237
1963
|
|
|
1238
|
-
//# debugId=
|
|
1964
|
+
//# debugId=EA438691ADA8387364756E2164756E21
|