@stoatx/client 0.5.0 → 0.6.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 CHANGED
@@ -46,6 +46,7 @@ __export(index_exports, {
46
46
  Emoji: () => Emoji,
47
47
  EmojiManager: () => EmojiManager,
48
48
  GatewayManager: () => GatewayManager,
49
+ GroupChannel: () => GroupChannel,
49
50
  Member: () => Member,
50
51
  MemberManager: () => MemberManager,
51
52
  Message: () => Message,
@@ -112,7 +113,7 @@ var Base = class _Base {
112
113
  };
113
114
 
114
115
  // src/structures/Message.ts
115
- var util2 = __toESM(require("util"), 1);
116
+ var util3 = __toESM(require("util"), 1);
116
117
 
117
118
  // src/structures/Attachment.ts
118
119
  var Attachment = class extends Base {
@@ -458,6 +459,82 @@ var ReactionCollector = class extends Collector {
458
459
  }
459
460
  };
460
461
 
462
+ // src/structures/MessageMentions.ts
463
+ var import_node_util = __toESM(require("util"), 1);
464
+ var MessageMentions = class _MessageMentions {
465
+ constructor(client, message, userIds, roleIds) {
466
+ this.client = client;
467
+ this.message = message;
468
+ this.userIds = userIds ?? [];
469
+ this.roleIds = roleIds ?? [];
470
+ this.channelIds = message.content ? _MessageMentions.parseChannelIds(message.content) : [];
471
+ }
472
+ /** Raw user IDs from the API */
473
+ userIds;
474
+ /** Raw role IDs from the API */
475
+ roleIds;
476
+ /** Raw channel IDs parsed from message content */
477
+ channelIds;
478
+ /** Mentioned users resolved from cache */
479
+ get users() {
480
+ const col = new Collection();
481
+ for (const id of this.userIds) {
482
+ const user = this.client.users.cache.get(id);
483
+ if (user) col.set(id, user);
484
+ }
485
+ return col;
486
+ }
487
+ /** Mentioned members resolved from cache (only in server channels) */
488
+ get members() {
489
+ const col = new Collection();
490
+ const server = this.message.server;
491
+ if (!server) return col;
492
+ for (const id of this.userIds) {
493
+ const member = server.members.cache.get(id);
494
+ if (member) col.set(id, member);
495
+ }
496
+ return col;
497
+ }
498
+ /** Mentioned roles resolved from cache */
499
+ get roles() {
500
+ const col = new Collection();
501
+ const server = this.message.server;
502
+ if (!server) return col;
503
+ for (const id of this.roleIds) {
504
+ const role = server.roles.cache.get(id);
505
+ if (role) col.set(id, role);
506
+ }
507
+ return col;
508
+ }
509
+ /** Mentioned channels resolved from cache */
510
+ get channels() {
511
+ const col = new Collection();
512
+ for (const id of this.channelIds) {
513
+ const channel = this.client.channels.cache.get(id);
514
+ if (channel) col.set(id, channel);
515
+ }
516
+ return col;
517
+ }
518
+ /** Whether the given user ID is mentioned */
519
+ has(userId) {
520
+ return this.userIds.includes(userId);
521
+ }
522
+ static parseChannelIds(content) {
523
+ return [...content.matchAll(/<#([A-Z0-9]+)>/g)].flatMap((m) => m[1] ? [m[1]] : []);
524
+ }
525
+ [import_node_util.default.inspect.custom](depth, options, inspect12) {
526
+ const { client, message, ...props } = this;
527
+ const data = {
528
+ ...props,
529
+ members: this.members,
530
+ channels: this.channels,
531
+ users: this.users,
532
+ roles: this.roles
533
+ };
534
+ return `${this.constructor.name} ${inspect12(data, { ...options, depth: depth ?? options.depth })}`;
535
+ }
536
+ };
537
+
461
538
  // src/structures/Message.ts
462
539
  var Message = class extends Base {
463
540
  content = null;
@@ -470,11 +547,10 @@ var Message = class extends Base {
470
547
  flags = 0;
471
548
  interactions = null;
472
549
  masquerade = null;
473
- mentions = null;
550
+ mentions;
474
551
  pinned = false;
475
552
  reactions = {};
476
553
  replies = [];
477
- role_mentions = [];
478
554
  constructor(client, data) {
479
555
  super(client, data);
480
556
  this.authorId = data.author;
@@ -487,10 +563,9 @@ var Message = class extends Base {
487
563
  this.attachments = data.attachments.map((fileData) => new Attachment(this.client, fileData));
488
564
  }
489
565
  if (data.masquerade !== void 0) this.masquerade = data.masquerade;
490
- if (data.mentions !== void 0) this.mentions = data.mentions;
491
566
  if (data.replies !== void 0) this.replies = data.replies;
492
- if (data.role_mentions !== void 0) this.role_mentions = data.role_mentions;
493
567
  this._patch(data);
568
+ this.mentions = new MessageMentions(client, this, data.mentions ?? null, data.role_mentions ?? null);
494
569
  }
495
570
  async reply(contentOrOptions) {
496
571
  let channel = this.channel;
@@ -664,7 +739,7 @@ var Message = class extends Base {
664
739
  }
665
740
  }
666
741
  // This tells Node.js exactly how to print this object in console.log()
667
- [util2.inspect.custom](depth, options, inspect12) {
742
+ [util3.inspect.custom](depth, options, inspect12) {
668
743
  const { client, authorId, channelId, ...props } = this;
669
744
  const data = {
670
745
  ...props,
@@ -818,6 +893,15 @@ var GatewayManager = class {
818
893
  }
819
894
  }
820
895
  }
896
+ if (payload.members) {
897
+ for (const rawMember of payload.members) {
898
+ const server = this.client.servers.cache.get(rawMember._id.server);
899
+ const user = this.client.users.cache.get(rawMember._id.user);
900
+ if (server && user) {
901
+ server.members._add({ ...rawMember, user });
902
+ }
903
+ }
904
+ }
821
905
  if (payload.emojis) {
822
906
  for (const rawEmoji of payload.emojis) {
823
907
  const emoji = this.client.emojis._add(rawEmoji);
@@ -1406,7 +1490,7 @@ var RESTManager = class {
1406
1490
  };
1407
1491
 
1408
1492
  // src/managers/MessageManager.ts
1409
- var util3 = __toESM(require("util"), 1);
1493
+ var util4 = __toESM(require("util"), 1);
1410
1494
 
1411
1495
  // src/managers/BaseManager.ts
1412
1496
  var BaseManager = class {
@@ -1671,7 +1755,7 @@ var MessageManager = class extends BaseManager {
1671
1755
  const id = this.resolveId(message);
1672
1756
  await this.client.rest.delete(`/channels/${this.channel.id}/messages/${id}/reactions`);
1673
1757
  }
1674
- [util3.inspect.custom]() {
1758
+ [util4.inspect.custom]() {
1675
1759
  return this.cache;
1676
1760
  }
1677
1761
  };
@@ -1708,6 +1792,8 @@ var MessageCollector = class extends Collector {
1708
1792
  super.handleCollect(message);
1709
1793
  if (!this.ended && this.collected.has(message.id)) {
1710
1794
  this.total++;
1795
+ }
1796
+ if (!this.ended) {
1711
1797
  this.checkEnd();
1712
1798
  }
1713
1799
  }
@@ -2088,7 +2174,7 @@ var DMChannel = class extends BaseChannel {
2088
2174
  };
2089
2175
 
2090
2176
  // src/structures/GroupChannel.ts
2091
- var util4 = __toESM(require("util"), 1);
2177
+ var util5 = __toESM(require("util"), 1);
2092
2178
  var GroupChannel = class extends BaseChannel {
2093
2179
  name;
2094
2180
  ownerId;
@@ -2148,7 +2234,7 @@ var GroupChannel = class extends BaseChannel {
2148
2234
  async setDefaultPermissions(permissions) {
2149
2235
  return await this.client.channels.setDefaultPermissions(this.id, permissions);
2150
2236
  }
2151
- [util4.inspect.custom](_depth, options, inspect12) {
2237
+ [util5.inspect.custom](_depth, options, inspect12) {
2152
2238
  const { client, ...props } = this;
2153
2239
  return `${this.constructor.name} ${inspect12(
2154
2240
  {
@@ -2700,7 +2786,7 @@ var ChannelManager = class extends BaseManager {
2700
2786
  };
2701
2787
 
2702
2788
  // src/structures/Member.ts
2703
- var util5 = __toESM(require("util"), 1);
2789
+ var util6 = __toESM(require("util"), 1);
2704
2790
 
2705
2791
  // src/managers/MemberRoleManager.ts
2706
2792
  var MemberRoleManager = class {
@@ -2927,7 +3013,7 @@ var Member = class extends Base {
2927
3013
  await server.members.kick(this.id);
2928
3014
  }
2929
3015
  /** @internal */
2930
- [util5.inspect.custom](depth, options, inspect12) {
3016
+ [util6.inspect.custom](depth, options, inspect12) {
2931
3017
  const { client, serverId, ...props } = this;
2932
3018
  return `${this.constructor.name} ${inspect12(
2933
3019
  {
@@ -2941,7 +3027,7 @@ var Member = class extends Base {
2941
3027
  };
2942
3028
 
2943
3029
  // src/managers/MemberManager.ts
2944
- var util6 = __toESM(require("util"), 1);
3030
+ var util7 = __toESM(require("util"), 1);
2945
3031
  var MemberManager = class extends BaseManager {
2946
3032
  constructor(client, server, limit = Infinity) {
2947
3033
  super(client, limit);
@@ -3111,13 +3197,13 @@ var MemberManager = class extends BaseManager {
3111
3197
  const id = this.resolveId(member);
3112
3198
  await this.client.rest.delete(`/servers/${this.server.id}/bans/${id}`);
3113
3199
  }
3114
- [util6.inspect.custom]() {
3200
+ [util7.inspect.custom]() {
3115
3201
  return this.cache;
3116
3202
  }
3117
3203
  };
3118
3204
 
3119
3205
  // src/managers/ServerChannelManager.ts
3120
- var util7 = __toESM(require("util"), 1);
3206
+ var util8 = __toESM(require("util"), 1);
3121
3207
  var ServerChannelManager = class {
3122
3208
  client;
3123
3209
  server;
@@ -3153,13 +3239,13 @@ var ServerChannelManager = class {
3153
3239
  const data = await this.client.rest.post(`/servers/${this.server.id}/channels`, payload);
3154
3240
  return this.client.channels._add(data);
3155
3241
  }
3156
- [util7.inspect.custom]() {
3242
+ [util8.inspect.custom]() {
3157
3243
  return this.cache;
3158
3244
  }
3159
3245
  };
3160
3246
 
3161
3247
  // src/structures/Role.ts
3162
- var util8 = __toESM(require("util"), 1);
3248
+ var util9 = __toESM(require("util"), 1);
3163
3249
  var Role = class extends Base {
3164
3250
  serverId;
3165
3251
  name;
@@ -3369,14 +3455,14 @@ var Role = class extends Base {
3369
3455
  * Hides the cyclic client reference and raw serverId for a cleaner output.
3370
3456
  * @internal
3371
3457
  */
3372
- [util8.inspect.custom]() {
3458
+ [util9.inspect.custom]() {
3373
3459
  const { client, serverId, ...props } = this;
3374
- return `${this.constructor.name} ${util8.inspect(props)}`;
3460
+ return `${this.constructor.name} ${util9.inspect(props)}`;
3375
3461
  }
3376
3462
  };
3377
3463
 
3378
3464
  // src/managers/RoleManager.ts
3379
- var util9 = __toESM(require("util"), 1);
3465
+ var util10 = __toESM(require("util"), 1);
3380
3466
  var RoleManager = class extends BaseManager {
3381
3467
  /**
3382
3468
  * Manages API methods and caching for server roles.
@@ -3415,7 +3501,7 @@ var RoleManager = class extends BaseManager {
3415
3501
  this.cache.set(role.id, role);
3416
3502
  return role;
3417
3503
  }
3418
- [util9.inspect.custom]() {
3504
+ [util10.inspect.custom]() {
3419
3505
  return this.cache;
3420
3506
  }
3421
3507
  /**
@@ -3747,7 +3833,7 @@ var Emoji = class extends Base {
3747
3833
  };
3748
3834
 
3749
3835
  // src/managers/EmojiManager.ts
3750
- var util10 = __toESM(require("util"), 1);
3836
+ var util11 = __toESM(require("util"), 1);
3751
3837
  var EmojiManager = class extends BaseManager {
3752
3838
  constructor(client, server, limit = Infinity) {
3753
3839
  super(client, limit);
@@ -3769,7 +3855,7 @@ var EmojiManager = class extends BaseManager {
3769
3855
  const data = await this.client.rest.get(`/custom/emoji/${id}`);
3770
3856
  return this._add(data);
3771
3857
  }
3772
- [util10.inspect.custom]() {
3858
+ [util11.inspect.custom]() {
3773
3859
  return this.cache;
3774
3860
  }
3775
3861
  };
@@ -3873,7 +3959,7 @@ var Server = class extends Base {
3873
3959
  };
3874
3960
 
3875
3961
  // src/managers/ServerManager.ts
3876
- var util11 = __toESM(require("util"), 1);
3962
+ var util12 = __toESM(require("util"), 1);
3877
3963
  var ServerManager = class extends BaseManager {
3878
3964
  constructor(client, limit = Infinity) {
3879
3965
  super(client, limit);
@@ -3944,7 +4030,7 @@ var ServerManager = class extends BaseManager {
3944
4030
  const data = await this.client.rest.patch(`/servers/${serverId}`, payload);
3945
4031
  return this._add(data);
3946
4032
  }
3947
- [util11.inspect.custom]() {
4033
+ [util12.inspect.custom]() {
3948
4034
  return this.cache;
3949
4035
  }
3950
4036
  };
@@ -4274,6 +4360,7 @@ var API = __toESM(require("stoat-api"), 1);
4274
4360
  Emoji,
4275
4361
  EmojiManager,
4276
4362
  GatewayManager,
4363
+ GroupChannel,
4277
4364
  Member,
4278
4365
  MemberManager,
4279
4366
  Message,