bakit 2.2.4 → 3.0.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.
package/dist/index.cjs ADDED
@@ -0,0 +1,672 @@
1
+ 'use strict';
2
+
3
+ var gateway = require('@bakit/gateway');
4
+ var rest = require('@bakit/rest');
5
+ var service = require('@bakit/service');
6
+ var utils = require('@bakit/utils');
7
+ var EventEmitter = require('events');
8
+ var collection = require('@discordjs/collection');
9
+ var v10 = require('discord-api-types/v10');
10
+ var tinyMixin = require('tiny-mixin');
11
+
12
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
13
+
14
+ function _interopNamespace(e) {
15
+ if (e && e.__esModule) return e;
16
+ var n = Object.create(null);
17
+ if (e) {
18
+ Object.keys(e).forEach(function (k) {
19
+ if (k !== 'default') {
20
+ var d = Object.getOwnPropertyDescriptor(e, k);
21
+ Object.defineProperty(n, k, d.get ? d : {
22
+ enumerable: true,
23
+ get: function () { return e[k]; }
24
+ });
25
+ }
26
+ });
27
+ }
28
+ n.default = e;
29
+ return Object.freeze(n);
30
+ }
31
+
32
+ var EventEmitter__default = /*#__PURE__*/_interopDefault(EventEmitter);
33
+ var v10__namespace = /*#__PURE__*/_interopNamespace(v10);
34
+
35
+ // src/modules/gateway.ts
36
+
37
+ // src/lib/structures/BaseStructure.ts
38
+ var BaseStructure = class {
39
+ constructor(client) {
40
+ Object.defineProperty(this, "client", {
41
+ value: client,
42
+ enumerable: false,
43
+ writable: false
44
+ });
45
+ }
46
+ toJSON() {
47
+ return {};
48
+ }
49
+ };
50
+ var User = class extends BaseStructure {
51
+ constructor(client, data) {
52
+ super(client);
53
+ this.data = data;
54
+ }
55
+ get id() {
56
+ return this.data.id;
57
+ }
58
+ get username() {
59
+ return this.data.username;
60
+ }
61
+ get discriminator() {
62
+ return this.data.discriminator;
63
+ }
64
+ get globalName() {
65
+ return this.data.global_name;
66
+ }
67
+ get tag() {
68
+ return this.discriminator !== "0" && this.discriminator !== "0000" ? `${this.username}#${this.discriminator}` : this.username;
69
+ }
70
+ get displayName() {
71
+ return this.globalName ?? this.tag;
72
+ }
73
+ get avatar() {
74
+ return this.data.avatar ?? void 0;
75
+ }
76
+ get bot() {
77
+ return !!this.data.bot;
78
+ }
79
+ get system() {
80
+ return !!this.data.system;
81
+ }
82
+ get mfaEnabled() {
83
+ return this.data.mfa_enabled;
84
+ }
85
+ get locale() {
86
+ return this.data.locale;
87
+ }
88
+ get verified() {
89
+ return this.data.verified;
90
+ }
91
+ get email() {
92
+ return this.data.email;
93
+ }
94
+ get flags() {
95
+ return this.data.flags;
96
+ }
97
+ get premiumType() {
98
+ return this.data.premium_type;
99
+ }
100
+ get publicFlags() {
101
+ return this.data.public_flags;
102
+ }
103
+ get banner() {
104
+ return this.data.banner;
105
+ }
106
+ get accentColor() {
107
+ return this.data.accent_color ?? void 0;
108
+ }
109
+ get createdAt() {
110
+ return utils.getSnowflakeDate(this.id);
111
+ }
112
+ get createdTimestamp() {
113
+ return this.createdAt.getTime();
114
+ }
115
+ get hexAccentColor() {
116
+ return this.accentColor !== void 0 ? `#${this.accentColor.toString(16).padStart(6, "0")}` : void 0;
117
+ }
118
+ get defaultAvatarURL() {
119
+ return `https://cdn.discordapp.com/embed/avatars/${this.discriminator !== "0" && this.discriminator !== "0000" ? BigInt(this.discriminator) % 5n : (BigInt(this.id) >> 22n) % 6n}.png`;
120
+ }
121
+ getAvatarURL(options) {
122
+ if (!this.avatar)
123
+ return;
124
+ let isAnimated = this.avatar.startsWith("a_"), ext = options?.extension ?? (isAnimated ? "gif" : "png"), size = options?.size ? `?size=${options.size}` : "";
125
+ return `https://cdn.discordapp.com/avatars/${this.id}/${this.avatar}.${ext}${size}`;
126
+ }
127
+ getDisplayAvatarURL(options) {
128
+ return this.getAvatarURL(options) ?? this.defaultAvatarURL;
129
+ }
130
+ equals(other) {
131
+ return typeof other == "string" ? other === this.id : other.id === this.id && other.username === this.username && other.discriminator === this.discriminator && other.bot === this.bot && other.createdTimestamp === this.createdTimestamp;
132
+ }
133
+ toJSON() {
134
+ return this.data;
135
+ }
136
+ toString() {
137
+ return `<@${this.id}>`;
138
+ }
139
+ };
140
+
141
+ // src/lib/structures/Message.ts
142
+ var Message = class extends BaseStructure {
143
+ constructor(client, data) {
144
+ super(client);
145
+ this.data = data;
146
+ }
147
+ cachedAuthor;
148
+ get partial() {
149
+ return typeof this.data.content != "string" || typeof this.data.author != "object";
150
+ }
151
+ get content() {
152
+ return this.data.content;
153
+ }
154
+ get id() {
155
+ return this.data.id;
156
+ }
157
+ get channelId() {
158
+ return this.data.channel_id;
159
+ }
160
+ get channel() {
161
+ return this.guild.channels.get(this.channelId);
162
+ }
163
+ get guildId() {
164
+ return "guild_id" in this.data ? this.data.guild_id : void 0;
165
+ }
166
+ get guild() {
167
+ return this.guildId ? this.client.guilds.get(this.guildId) : void 0;
168
+ }
169
+ get author() {
170
+ return this.cachedAuthor ??= new User(this.client, this.data.author), this.cachedAuthor;
171
+ }
172
+ get createdAt() {
173
+ return new Date(this.data.timestamp);
174
+ }
175
+ get editedAt() {
176
+ return this.data.edited_timestamp ? new Date(this.data.edited_timestamp) : void 0;
177
+ }
178
+ get createdTimestamp() {
179
+ return this.createdAt.getTime();
180
+ }
181
+ get editedTimestamp() {
182
+ return this.editedAt?.getTime();
183
+ }
184
+ get url() {
185
+ return `https://discord.com/channels/${this.guildId ?? "@me"}/${this.channelId}/${this.id}`;
186
+ }
187
+ async fetch() {
188
+ let message = await this.client.helper.fetchMessage(this.channelId, this.id);
189
+ return this.data = message.data, this.cachedAuthor = message.cachedAuthor, this;
190
+ }
191
+ async reply(options) {
192
+ return this.client.helper.replyMessage(this.channelId, this.id, options);
193
+ }
194
+ async sendToChannel(options) {
195
+ return this.client.helper.createMessage(this.channelId, options);
196
+ }
197
+ toJSON() {
198
+ return this.data;
199
+ }
200
+ toString() {
201
+ return this.data.content;
202
+ }
203
+ };
204
+
205
+ // src/lib/structures/channel/BaseChannel.ts
206
+ var BaseChannel = class extends BaseStructure {
207
+ constructor(client, data) {
208
+ super(client);
209
+ this.data = data;
210
+ }
211
+ get id() {
212
+ return this.data.id;
213
+ }
214
+ get type() {
215
+ return this.data.type;
216
+ }
217
+ toString() {
218
+ return `<#${this.id}>`;
219
+ }
220
+ toJSON() {
221
+ return this.data;
222
+ }
223
+ isTextBased() {
224
+ return "send" in this;
225
+ }
226
+ isVoiceBased() {
227
+ return "join" in this;
228
+ }
229
+ inGuild() {
230
+ return "guild_id" in this.data;
231
+ }
232
+ _patch(data) {
233
+ this.data = { ...this.data, ...data };
234
+ }
235
+ };
236
+ var TextBasedChannelMixin = tinyMixin.createMixin((base) => {
237
+ class TextBasedChannel extends base {
238
+ send(options) {
239
+ return this.client.helper.createMessage(this.id, options);
240
+ }
241
+ }
242
+ return TextBasedChannel;
243
+ }), VoiceBasedChannelMixin = tinyMixin.createMixin((base) => {
244
+ class VoiceBasedChannel extends base {
245
+ }
246
+ return VoiceBasedChannel;
247
+ }), GuildChannelMixin = tinyMixin.createMixin((base) => {
248
+ class GuildChannel extends base {
249
+ get guildId() {
250
+ if (!this.data.guild_id)
251
+ throw new Error("This channel is not a guild channel");
252
+ return this.data.guild_id;
253
+ }
254
+ get guild() {
255
+ return this.client.guilds.get(this.guildId);
256
+ }
257
+ }
258
+ return GuildChannel;
259
+ });
260
+ var GuildTextChannel = class extends tinyMixin.applyMixins(BaseChannel, [
261
+ GuildChannelMixin,
262
+ TextBasedChannelMixin
263
+ ]) {
264
+ };
265
+ var GuildVoiceChannel = class extends tinyMixin.applyMixins(BaseChannel, [
266
+ GuildChannelMixin,
267
+ TextBasedChannelMixin,
268
+ VoiceBasedChannelMixin
269
+ ]) {
270
+ };
271
+ function createChannel(client, data) {
272
+ switch (data.type) {
273
+ case v10.ChannelType.GuildText:
274
+ return new GuildTextChannel(client, data);
275
+ case v10.ChannelType.GuildVoice:
276
+ return new GuildVoiceChannel(client, data);
277
+ default:
278
+ return null;
279
+ }
280
+ }
281
+
282
+ // src/lib/structures/Guild.ts
283
+ var Guild = class extends BaseStructure {
284
+ constructor(client, data) {
285
+ super(client);
286
+ this.data = data;
287
+ }
288
+ cachedChannels;
289
+ get id() {
290
+ return this.data.id;
291
+ }
292
+ get name() {
293
+ return this.data.name;
294
+ }
295
+ get icon() {
296
+ return this.data.icon;
297
+ }
298
+ get banner() {
299
+ return this.data.banner;
300
+ }
301
+ get owner() {
302
+ return this.data.owner_id;
303
+ }
304
+ get mfaLevel() {
305
+ return this.data.mfa_level;
306
+ }
307
+ get verificationLevel() {
308
+ return this.data.verification_level;
309
+ }
310
+ get channels() {
311
+ if (!this.cachedChannels && (this.cachedChannels = new collection.Collection(), "channels" in this.data))
312
+ for (let data of this.data.channels) {
313
+ let channel = createChannel(this.client, data);
314
+ channel && this.cachedChannels.set(channel.id, channel);
315
+ }
316
+ return this.cachedChannels;
317
+ }
318
+ _patch(data) {
319
+ this.data = { ...this.data, ...data };
320
+ }
321
+ // public get roles() {
322
+ // return this.data.roles;
323
+ // }
324
+ };
325
+ var ClientHelper = class _ClientHelper {
326
+ constructor(client) {
327
+ Object.defineProperty(this, "client", {
328
+ value: client,
329
+ enumerable: false,
330
+ writable: false
331
+ });
332
+ }
333
+ async fetchMessage(channelId, messageId) {
334
+ let data = await this.client.rest.get(v10.Routes.channelMessage(channelId, messageId));
335
+ return new Message(this.client, data);
336
+ }
337
+ async deleteMessage(channelId, messageId) {
338
+ return this.client.rest.delete(v10.Routes.channelMessage(channelId, messageId));
339
+ }
340
+ async createMessage(channelId, options) {
341
+ return this.client.rest.post(v10.Routes.channelMessages(channelId), {
342
+ body: _ClientHelper.toAPICreateMessagePayload(options)
343
+ });
344
+ }
345
+ async replyMessage(channelId, messageId, options) {
346
+ return this.createMessage(channelId, {
347
+ ...options,
348
+ messageReference: {
349
+ channel_id: channelId,
350
+ message_id: messageId
351
+ }
352
+ });
353
+ }
354
+ async fetchGuild(guildId) {
355
+ let data = await this.client.rest.get(v10.Routes.guild(guildId));
356
+ return new Guild(this.client, data);
357
+ }
358
+ static toAPICreateMessagePayload(options) {
359
+ return {
360
+ content: options.content,
361
+ tts: options.tts,
362
+ embeds: options.embeds,
363
+ allowed_mentions: options.allowedMentions,
364
+ message_reference: options.messageReference,
365
+ flags: options.flags
366
+ };
367
+ }
368
+ };
369
+
370
+ // src/lib/client/Partial.ts
371
+ var Partial = /* @__PURE__ */ ((Partial2) => (Partial2[Partial2.Message = 0] = "Message", Partial2[Partial2.User = 1] = "User", Partial2))(Partial || {});
372
+ var IntentsBitField = class _IntentsBitField {
373
+ value;
374
+ constructor(input) {
375
+ this.value = _IntentsBitField.resolve(input);
376
+ }
377
+ static resolve(input) {
378
+ return Array.isArray(input) ? input.reduce((acc, intent) => acc | BigInt(intent), 0n) : BigInt(input);
379
+ }
380
+ has(intent) {
381
+ return (this.value & BigInt(intent)) !== 0n;
382
+ }
383
+ toBigInt() {
384
+ return this.value;
385
+ }
386
+ toNumber() {
387
+ return Number(this.value);
388
+ }
389
+ toJSON() {
390
+ return this.value.toString();
391
+ }
392
+ toString() {
393
+ return this.value.toString();
394
+ }
395
+ };
396
+
397
+ // src/lib/client/Client.ts
398
+ var Client = class extends EventEmitter__default.default {
399
+ options;
400
+ shards;
401
+ rest;
402
+ helper;
403
+ guilds = new collection.Collection();
404
+ #user;
405
+ #ready = false;
406
+ constructor(options, rest$1) {
407
+ super();
408
+ let intents = options.intents instanceof IntentsBitField ? options.intents : new IntentsBitField(options.intents), sharding = {
409
+ shardsPerCluster: options.sharding?.shardsPerCluster ?? 1,
410
+ totalShards: options.sharding?.totalShards ?? 1
411
+ };
412
+ this.options = {
413
+ token: options.token,
414
+ intents,
415
+ sharding,
416
+ partials: new Set(options.partials ?? [])
417
+ }, this.rest = rest$1 ?? new rest.REST({ token: options.token }), this.shards = new gateway.ShardingManager(
418
+ {
419
+ ...this.options.sharding,
420
+ token: this.options.token,
421
+ intents: this.options.intents.toBigInt()
422
+ },
423
+ rest$1
424
+ ), this.helper = new ClientHelper(this), this.#setupShardsListeners();
425
+ }
426
+ get user() {
427
+ return this.#user;
428
+ }
429
+ async login() {
430
+ if (this.#user || this.shards.ready || this.shards.clusters.size > 0)
431
+ throw new Error("Cannot login twice");
432
+ return await this.shards.spawn(), new Promise((resolve, reject) => {
433
+ let cleanup = () => {
434
+ this.removeListener("ready", onReady), this.removeListener("error", onError);
435
+ }, onReady = () => {
436
+ cleanup(), resolve();
437
+ }, onError = (error) => {
438
+ cleanup(), reject(error);
439
+ };
440
+ this.once("ready", onReady), this.once("error", onError);
441
+ });
442
+ }
443
+ #setupShardsListeners() {
444
+ this.shards.on("dispatch", (_, shardId, payload) => this.#handleDispatch(shardId, payload)), this.shards.on("raw", (_, shardId, payload) => this.emit("raw", shardId, payload)), this.shards.once("ready", () => this.#tryEmitReady());
445
+ }
446
+ async #handleDispatch(shardId, payload) {
447
+ switch (this.emit("dispatch", shardId, payload), payload.t) {
448
+ case v10.GatewayDispatchEvents.Ready: {
449
+ this.#user ??= new User(this, payload.d.user), this.#tryEmitReady();
450
+ break;
451
+ }
452
+ case v10.GatewayDispatchEvents.MessageCreate: {
453
+ let message = new Message(this, payload.d);
454
+ if (message.partial && !this.options.partials.has(0 /* Message */))
455
+ return;
456
+ this.emit("messageCreate", message);
457
+ break;
458
+ }
459
+ case v10.GatewayDispatchEvents.MessageUpdate: {
460
+ let message = new Message(this, payload.d);
461
+ if (message.partial && !this.options.partials.has(0 /* Message */))
462
+ return;
463
+ this.emit("messageUpdate", message);
464
+ break;
465
+ }
466
+ case v10.GatewayDispatchEvents.MessageDelete: {
467
+ this.emit("messageDelete", {
468
+ id: payload.d.id,
469
+ channelId: payload.d.channel_id,
470
+ guildId: payload.d.guild_id
471
+ });
472
+ break;
473
+ }
474
+ case v10.GatewayDispatchEvents.UserUpdate: {
475
+ payload.d.id === this.#user?.id && (this.#user = new User(this, payload.d)), this.emit("userUpdate", new User(this, payload.d));
476
+ break;
477
+ }
478
+ case v10.GatewayDispatchEvents.GuildCreate: {
479
+ let guild = this.guilds.get(payload.d.id);
480
+ guild ? guild._patch(payload.d) : guild = new Guild(this, payload.d), this.guilds.set(payload.d.id, guild), payload.d.unavailable ? this.emit("guildCreate", guild) : this.emit("guildAvailable", guild);
481
+ break;
482
+ }
483
+ case v10.GatewayDispatchEvents.GuildDelete: {
484
+ let guild = this.guilds.get(payload.d.id);
485
+ if (!guild)
486
+ return;
487
+ this.guilds.delete(payload.d.id), this.emit("guildDelete", guild);
488
+ break;
489
+ }
490
+ case v10.GatewayDispatchEvents.GuildUpdate: {
491
+ let guild = this.guilds.get(payload.d.id);
492
+ guild ? guild._patch(payload.d) : (guild = new Guild(this, payload.d), this.guilds.set(payload.d.id, guild)), this.emit("guildUpdate", guild);
493
+ break;
494
+ }
495
+ case v10.GatewayDispatchEvents.ChannelCreate: {
496
+ let channel = createChannel(this, payload.d);
497
+ if (!channel)
498
+ return;
499
+ channel.inGuild() && channel.guild.channels.set(channel.id, channel), this.emit("channelCreate", channel);
500
+ break;
501
+ }
502
+ case v10.GatewayDispatchEvents.ChannelUpdate: {
503
+ let guild = this.guilds.get(payload.d.guild_id);
504
+ if (!guild)
505
+ return;
506
+ let channel = guild.channels.get(payload.d.id);
507
+ if (channel)
508
+ channel._patch(payload.d);
509
+ else {
510
+ if (channel = createChannel(this, payload.d), !channel)
511
+ return;
512
+ guild.channels.set(payload.d.id, channel);
513
+ }
514
+ this.emit("channelUpdate", channel);
515
+ break;
516
+ }
517
+ case v10.GatewayDispatchEvents.ChannelDelete: {
518
+ let guild = this.guilds.get(payload.d.guild_id);
519
+ if (!guild)
520
+ return;
521
+ let channel = guild.channels.get(payload.d.id);
522
+ if (!channel)
523
+ return;
524
+ guild.channels.delete(payload.d.id), this.emit("channelDelete", channel);
525
+ break;
526
+ }
527
+ }
528
+ }
529
+ /**
530
+ * We use this method to emit ready event only once since we have 2 ways to emit it.
531
+ * @private
532
+ */
533
+ #tryEmitReady() {
534
+ this.#ready || !this.#user || !this.shards.ready || (this.#ready = true, this.emit("ready", this.#user));
535
+ }
536
+ };
537
+ function createClient(options) {
538
+ return new Client(options);
539
+ }
540
+
541
+ Object.defineProperty(exports, "Cluster", {
542
+ enumerable: true,
543
+ get: function () { return gateway.Cluster; }
544
+ });
545
+ Object.defineProperty(exports, "Shard", {
546
+ enumerable: true,
547
+ get: function () { return gateway.Shard; }
548
+ });
549
+ Object.defineProperty(exports, "ShardState", {
550
+ enumerable: true,
551
+ get: function () { return gateway.ShardState; }
552
+ });
553
+ Object.defineProperty(exports, "ShardStrategy", {
554
+ enumerable: true,
555
+ get: function () { return gateway.ShardStrategy; }
556
+ });
557
+ Object.defineProperty(exports, "ShardingManager", {
558
+ enumerable: true,
559
+ get: function () { return gateway.ShardingManager; }
560
+ });
561
+ Object.defineProperty(exports, "DEFAULT_REST_OPTIONS", {
562
+ enumerable: true,
563
+ get: function () { return rest.DEFAULT_REST_OPTIONS; }
564
+ });
565
+ Object.defineProperty(exports, "DiscordHTTPError", {
566
+ enumerable: true,
567
+ get: function () { return rest.DiscordHTTPError; }
568
+ });
569
+ Object.defineProperty(exports, "REST", {
570
+ enumerable: true,
571
+ get: function () { return rest.REST; }
572
+ });
573
+ Object.defineProperty(exports, "RESTAdapter", {
574
+ enumerable: true,
575
+ get: function () { return rest.RESTAdapter; }
576
+ });
577
+ Object.defineProperty(exports, "RESTMethod", {
578
+ enumerable: true,
579
+ get: function () { return rest.RESTMethod; }
580
+ });
581
+ Object.defineProperty(exports, "createREST", {
582
+ enumerable: true,
583
+ get: function () { return rest.createREST; }
584
+ });
585
+ Object.defineProperty(exports, "createRESTAdapter", {
586
+ enumerable: true,
587
+ get: function () { return rest.createRESTAdapter; }
588
+ });
589
+ Object.defineProperty(exports, "Service", {
590
+ enumerable: true,
591
+ get: function () { return service.Service; }
592
+ });
593
+ Object.defineProperty(exports, "ServiceDriver", {
594
+ enumerable: true,
595
+ get: function () { return service.ServiceDriver; }
596
+ });
597
+ Object.defineProperty(exports, "ServiceProcess", {
598
+ enumerable: true,
599
+ get: function () { return service.ServiceProcess; }
600
+ });
601
+ Object.defineProperty(exports, "ServiceState", {
602
+ enumerable: true,
603
+ get: function () { return service.ServiceState; }
604
+ });
605
+ Object.defineProperty(exports, "TransportClient", {
606
+ enumerable: true,
607
+ get: function () { return service.TransportClient; }
608
+ });
609
+ Object.defineProperty(exports, "TransportServer", {
610
+ enumerable: true,
611
+ get: function () { return service.TransportServer; }
612
+ });
613
+ Object.defineProperty(exports, "createService", {
614
+ enumerable: true,
615
+ get: function () { return service.createService; }
616
+ });
617
+ Object.defineProperty(exports, "createTransportClient", {
618
+ enumerable: true,
619
+ get: function () { return service.createTransportClient; }
620
+ });
621
+ Object.defineProperty(exports, "createTransportServer", {
622
+ enumerable: true,
623
+ get: function () { return service.createTransportServer; }
624
+ });
625
+ Object.defineProperty(exports, "capitalize", {
626
+ enumerable: true,
627
+ get: function () { return utils.capitalize; }
628
+ });
629
+ Object.defineProperty(exports, "instanceToObject", {
630
+ enumerable: true,
631
+ get: function () { return utils.instanceToObject; }
632
+ });
633
+ Object.defineProperty(exports, "isCommonJS", {
634
+ enumerable: true,
635
+ get: function () { return utils.isCommonJS; }
636
+ });
637
+ Object.defineProperty(exports, "isESM", {
638
+ enumerable: true,
639
+ get: function () { return utils.isESM; }
640
+ });
641
+ Object.defineProperty(exports, "isPlainObject", {
642
+ enumerable: true,
643
+ get: function () { return utils.isPlainObject; }
644
+ });
645
+ Object.defineProperty(exports, "isPromiseLike", {
646
+ enumerable: true,
647
+ get: function () { return utils.isPromiseLike; }
648
+ });
649
+ Object.defineProperty(exports, "promisify", {
650
+ enumerable: true,
651
+ get: function () { return utils.promisify; }
652
+ });
653
+ Object.defineProperty(exports, "sleep", {
654
+ enumerable: true,
655
+ get: function () { return utils.sleep; }
656
+ });
657
+ exports.DiscordAPIV10 = v10__namespace;
658
+ Object.defineProperty(exports, "Intent", {
659
+ enumerable: true,
660
+ get: function () { return v10.GatewayIntentBits; }
661
+ });
662
+ exports.BaseChannel = BaseChannel;
663
+ exports.Client = Client;
664
+ exports.ClientHelper = ClientHelper;
665
+ exports.Guild = Guild;
666
+ exports.GuildTextChannel = GuildTextChannel;
667
+ exports.GuildVoiceChannel = GuildVoiceChannel;
668
+ exports.IntentsBitField = IntentsBitField;
669
+ exports.Message = Message;
670
+ exports.Partial = Partial;
671
+ exports.User = User;
672
+ exports.createClient = createClient;