@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.d.cts CHANGED
@@ -3,6 +3,7 @@ import { APIRoutes, File, User as User$1, Member as Member$1, Channel, Message a
3
3
  import * as stoatApi from 'stoat-api';
4
4
  export { stoatApi as API };
5
5
  import * as util from 'node:util';
6
+ import util__default from 'node:util';
6
7
 
7
8
  declare class GatewayManager {
8
9
  private client;
@@ -1904,6 +1905,30 @@ declare class ReactionCollector extends Collector<string, MessageReaction> {
1904
1905
  endReason(): string | null;
1905
1906
  }
1906
1907
 
1908
+ declare class MessageMentions {
1909
+ private readonly client;
1910
+ private readonly message;
1911
+ /** Raw user IDs from the API */
1912
+ readonly userIds: string[];
1913
+ /** Raw role IDs from the API */
1914
+ readonly roleIds: string[];
1915
+ /** Raw channel IDs parsed from message content */
1916
+ readonly channelIds: string[];
1917
+ constructor(client: Client, message: Message, userIds: string[] | null, roleIds: string[] | null);
1918
+ /** Mentioned users resolved from cache */
1919
+ get users(): Collection<string, User>;
1920
+ /** Mentioned members resolved from cache (only in server channels) */
1921
+ get members(): Collection<string, Member>;
1922
+ /** Mentioned roles resolved from cache */
1923
+ get roles(): Collection<string, Role>;
1924
+ /** Mentioned channels resolved from cache */
1925
+ get channels(): Collection<string, BaseChannel>;
1926
+ /** Whether the given user ID is mentioned */
1927
+ has(userId: string): boolean;
1928
+ private static parseChannelIds;
1929
+ [util__default.inspect.custom](depth: number, options: util__default.InspectOptions, inspect: typeof util__default.inspect): string;
1930
+ }
1931
+
1907
1932
  interface MessageOptions {
1908
1933
  content?: string;
1909
1934
  embeds?: (TextEmbedData | EmbedBuilder)[];
@@ -1938,11 +1963,10 @@ declare class Message extends Base {
1938
1963
  flags: number;
1939
1964
  interactions: Interaction | null;
1940
1965
  masquerade: Masquerade | null;
1941
- mentions: string[] | null;
1966
+ mentions: MessageMentions;
1942
1967
  pinned: null | boolean;
1943
1968
  reactions: Record<string, string[]>;
1944
1969
  replies: string[] | null;
1945
- role_mentions: string[] | null;
1946
1970
  constructor(client: Client, data: Message$1);
1947
1971
  reply(contentOrOptions: string | MessageOptions): Promise<Message>;
1948
1972
  /**
@@ -2132,4 +2156,4 @@ declare class UnknownChannel extends BaseChannel {
2132
2156
  constructor(client: Client, data: Channel);
2133
2157
  }
2134
2158
 
2135
- export { Attachment, AttachmentBuilder, type AttachmentMetadata, Base, BaseChannel, BitField, type BitFieldResolvable, type BotInformation, type CDNTag, type ChannelCreateOptions, type ChannelEditOptions, ChannelManager, type ChannelResolvable, type ChannelRolePermissionOptions, type ChannelType, Client, type ClientEvents, type ClientOptions, ClientUser, Collection, Collector, type CollectorOptions, DMChannel, EmbedBuilder, Emoji, EmojiManager, type EmojiParent, type FetchMembersOptions, GatewayManager, type Interaction, type Masquerade, Member, type MemberBanOptions, type MemberEditOptions, MemberManager, type MemberResolvable, Message, MessageCollector, type MessageCollectorOptions, type MessageFetchOptions, MessageManager, type MessageOptions, MessageReaction, type MessageResolvable, PermissionFlags, type PermissionResolvable, type PermissionString, Permissions, RESTManager, type RawDMChannel, type RawTextChannel, ReactionCollector, type ReactionCollectorOptions, type ReplyIntent, Role, type RoleCreateOptions, type RoleEditOptions, RoleManager, type RolePermissionOptions, type RoleResolvable, Server, ServerChannelManager, type ServerEditOptions, ServerManager, StoatAPIError, SweeperManager, type SweeperOptions, TextChannel, type TextEmbedData, UnknownChannel, User, type UserEditOptions, UserManager, type UserPresence, type UserProfile, type UserRelationShip, type UserResolvable, type UserStatus };
2159
+ export { Attachment, AttachmentBuilder, type AttachmentMetadata, Base, BaseChannel, BitField, type BitFieldResolvable, type BotInformation, type CDNTag, type ChannelCreateOptions, type ChannelEditOptions, ChannelManager, type ChannelResolvable, type ChannelRolePermissionOptions, type ChannelType, Client, type ClientEvents, type ClientOptions, ClientUser, Collection, Collector, type CollectorOptions, DMChannel, EmbedBuilder, Emoji, EmojiManager, type EmojiParent, type FetchMembersOptions, GatewayManager, GroupChannel, type Interaction, type Masquerade, Member, type MemberBanOptions, type MemberEditOptions, MemberManager, type MemberResolvable, Message, MessageCollector, type MessageCollectorOptions, type MessageFetchOptions, MessageManager, type MessageOptions, MessageReaction, type MessageResolvable, PermissionFlags, type PermissionResolvable, type PermissionString, Permissions, RESTManager, type RawDMChannel, type RawGroupChannel, type RawTextChannel, ReactionCollector, type ReactionCollectorOptions, type ReplyIntent, Role, type RoleCreateOptions, type RoleEditOptions, RoleManager, type RolePermissionOptions, type RoleResolvable, Server, ServerChannelManager, type ServerEditOptions, ServerManager, StoatAPIError, SweeperManager, type SweeperOptions, TextChannel, type TextEmbedData, UnknownChannel, User, type UserEditOptions, UserManager, type UserPresence, type UserProfile, type UserRelationShip, type UserResolvable, type UserStatus };
package/dist/index.d.ts CHANGED
@@ -3,6 +3,7 @@ import { APIRoutes, File, User as User$1, Member as Member$1, Channel, Message a
3
3
  import * as stoatApi from 'stoat-api';
4
4
  export { stoatApi as API };
5
5
  import * as util from 'node:util';
6
+ import util__default from 'node:util';
6
7
 
7
8
  declare class GatewayManager {
8
9
  private client;
@@ -1904,6 +1905,30 @@ declare class ReactionCollector extends Collector<string, MessageReaction> {
1904
1905
  endReason(): string | null;
1905
1906
  }
1906
1907
 
1908
+ declare class MessageMentions {
1909
+ private readonly client;
1910
+ private readonly message;
1911
+ /** Raw user IDs from the API */
1912
+ readonly userIds: string[];
1913
+ /** Raw role IDs from the API */
1914
+ readonly roleIds: string[];
1915
+ /** Raw channel IDs parsed from message content */
1916
+ readonly channelIds: string[];
1917
+ constructor(client: Client, message: Message, userIds: string[] | null, roleIds: string[] | null);
1918
+ /** Mentioned users resolved from cache */
1919
+ get users(): Collection<string, User>;
1920
+ /** Mentioned members resolved from cache (only in server channels) */
1921
+ get members(): Collection<string, Member>;
1922
+ /** Mentioned roles resolved from cache */
1923
+ get roles(): Collection<string, Role>;
1924
+ /** Mentioned channels resolved from cache */
1925
+ get channels(): Collection<string, BaseChannel>;
1926
+ /** Whether the given user ID is mentioned */
1927
+ has(userId: string): boolean;
1928
+ private static parseChannelIds;
1929
+ [util__default.inspect.custom](depth: number, options: util__default.InspectOptions, inspect: typeof util__default.inspect): string;
1930
+ }
1931
+
1907
1932
  interface MessageOptions {
1908
1933
  content?: string;
1909
1934
  embeds?: (TextEmbedData | EmbedBuilder)[];
@@ -1938,11 +1963,10 @@ declare class Message extends Base {
1938
1963
  flags: number;
1939
1964
  interactions: Interaction | null;
1940
1965
  masquerade: Masquerade | null;
1941
- mentions: string[] | null;
1966
+ mentions: MessageMentions;
1942
1967
  pinned: null | boolean;
1943
1968
  reactions: Record<string, string[]>;
1944
1969
  replies: string[] | null;
1945
- role_mentions: string[] | null;
1946
1970
  constructor(client: Client, data: Message$1);
1947
1971
  reply(contentOrOptions: string | MessageOptions): Promise<Message>;
1948
1972
  /**
@@ -2132,4 +2156,4 @@ declare class UnknownChannel extends BaseChannel {
2132
2156
  constructor(client: Client, data: Channel);
2133
2157
  }
2134
2158
 
2135
- export { Attachment, AttachmentBuilder, type AttachmentMetadata, Base, BaseChannel, BitField, type BitFieldResolvable, type BotInformation, type CDNTag, type ChannelCreateOptions, type ChannelEditOptions, ChannelManager, type ChannelResolvable, type ChannelRolePermissionOptions, type ChannelType, Client, type ClientEvents, type ClientOptions, ClientUser, Collection, Collector, type CollectorOptions, DMChannel, EmbedBuilder, Emoji, EmojiManager, type EmojiParent, type FetchMembersOptions, GatewayManager, type Interaction, type Masquerade, Member, type MemberBanOptions, type MemberEditOptions, MemberManager, type MemberResolvable, Message, MessageCollector, type MessageCollectorOptions, type MessageFetchOptions, MessageManager, type MessageOptions, MessageReaction, type MessageResolvable, PermissionFlags, type PermissionResolvable, type PermissionString, Permissions, RESTManager, type RawDMChannel, type RawTextChannel, ReactionCollector, type ReactionCollectorOptions, type ReplyIntent, Role, type RoleCreateOptions, type RoleEditOptions, RoleManager, type RolePermissionOptions, type RoleResolvable, Server, ServerChannelManager, type ServerEditOptions, ServerManager, StoatAPIError, SweeperManager, type SweeperOptions, TextChannel, type TextEmbedData, UnknownChannel, User, type UserEditOptions, UserManager, type UserPresence, type UserProfile, type UserRelationShip, type UserResolvable, type UserStatus };
2159
+ export { Attachment, AttachmentBuilder, type AttachmentMetadata, Base, BaseChannel, BitField, type BitFieldResolvable, type BotInformation, type CDNTag, type ChannelCreateOptions, type ChannelEditOptions, ChannelManager, type ChannelResolvable, type ChannelRolePermissionOptions, type ChannelType, Client, type ClientEvents, type ClientOptions, ClientUser, Collection, Collector, type CollectorOptions, DMChannel, EmbedBuilder, Emoji, EmojiManager, type EmojiParent, type FetchMembersOptions, GatewayManager, GroupChannel, type Interaction, type Masquerade, Member, type MemberBanOptions, type MemberEditOptions, MemberManager, type MemberResolvable, Message, MessageCollector, type MessageCollectorOptions, type MessageFetchOptions, MessageManager, type MessageOptions, MessageReaction, type MessageResolvable, PermissionFlags, type PermissionResolvable, type PermissionString, Permissions, RESTManager, type RawDMChannel, type RawGroupChannel, type RawTextChannel, ReactionCollector, type ReactionCollectorOptions, type ReplyIntent, Role, type RoleCreateOptions, type RoleEditOptions, RoleManager, type RolePermissionOptions, type RoleResolvable, Server, ServerChannelManager, type ServerEditOptions, ServerManager, StoatAPIError, SweeperManager, type SweeperOptions, TextChannel, type TextEmbedData, UnknownChannel, User, type UserEditOptions, UserManager, type UserPresence, type UserProfile, type UserRelationShip, type UserResolvable, type UserStatus };
package/dist/index.js CHANGED
@@ -40,7 +40,7 @@ var Base = class _Base {
40
40
  };
41
41
 
42
42
  // src/structures/Message.ts
43
- import * as util2 from "util";
43
+ import * as util3 from "util";
44
44
 
45
45
  // src/structures/Attachment.ts
46
46
  var Attachment = class extends Base {
@@ -386,6 +386,82 @@ var ReactionCollector = class extends Collector {
386
386
  }
387
387
  };
388
388
 
389
+ // src/structures/MessageMentions.ts
390
+ import util2 from "util";
391
+ var MessageMentions = class _MessageMentions {
392
+ constructor(client, message, userIds, roleIds) {
393
+ this.client = client;
394
+ this.message = message;
395
+ this.userIds = userIds ?? [];
396
+ this.roleIds = roleIds ?? [];
397
+ this.channelIds = message.content ? _MessageMentions.parseChannelIds(message.content) : [];
398
+ }
399
+ /** Raw user IDs from the API */
400
+ userIds;
401
+ /** Raw role IDs from the API */
402
+ roleIds;
403
+ /** Raw channel IDs parsed from message content */
404
+ channelIds;
405
+ /** Mentioned users resolved from cache */
406
+ get users() {
407
+ const col = new Collection();
408
+ for (const id of this.userIds) {
409
+ const user = this.client.users.cache.get(id);
410
+ if (user) col.set(id, user);
411
+ }
412
+ return col;
413
+ }
414
+ /** Mentioned members resolved from cache (only in server channels) */
415
+ get members() {
416
+ const col = new Collection();
417
+ const server = this.message.server;
418
+ if (!server) return col;
419
+ for (const id of this.userIds) {
420
+ const member = server.members.cache.get(id);
421
+ if (member) col.set(id, member);
422
+ }
423
+ return col;
424
+ }
425
+ /** Mentioned roles resolved from cache */
426
+ get roles() {
427
+ const col = new Collection();
428
+ const server = this.message.server;
429
+ if (!server) return col;
430
+ for (const id of this.roleIds) {
431
+ const role = server.roles.cache.get(id);
432
+ if (role) col.set(id, role);
433
+ }
434
+ return col;
435
+ }
436
+ /** Mentioned channels resolved from cache */
437
+ get channels() {
438
+ const col = new Collection();
439
+ for (const id of this.channelIds) {
440
+ const channel = this.client.channels.cache.get(id);
441
+ if (channel) col.set(id, channel);
442
+ }
443
+ return col;
444
+ }
445
+ /** Whether the given user ID is mentioned */
446
+ has(userId) {
447
+ return this.userIds.includes(userId);
448
+ }
449
+ static parseChannelIds(content) {
450
+ return [...content.matchAll(/<#([A-Z0-9]+)>/g)].flatMap((m) => m[1] ? [m[1]] : []);
451
+ }
452
+ [util2.inspect.custom](depth, options, inspect12) {
453
+ const { client, message, ...props } = this;
454
+ const data = {
455
+ ...props,
456
+ members: this.members,
457
+ channels: this.channels,
458
+ users: this.users,
459
+ roles: this.roles
460
+ };
461
+ return `${this.constructor.name} ${inspect12(data, { ...options, depth: depth ?? options.depth })}`;
462
+ }
463
+ };
464
+
389
465
  // src/structures/Message.ts
390
466
  var Message = class extends Base {
391
467
  content = null;
@@ -398,11 +474,10 @@ var Message = class extends Base {
398
474
  flags = 0;
399
475
  interactions = null;
400
476
  masquerade = null;
401
- mentions = null;
477
+ mentions;
402
478
  pinned = false;
403
479
  reactions = {};
404
480
  replies = [];
405
- role_mentions = [];
406
481
  constructor(client, data) {
407
482
  super(client, data);
408
483
  this.authorId = data.author;
@@ -415,10 +490,9 @@ var Message = class extends Base {
415
490
  this.attachments = data.attachments.map((fileData) => new Attachment(this.client, fileData));
416
491
  }
417
492
  if (data.masquerade !== void 0) this.masquerade = data.masquerade;
418
- if (data.mentions !== void 0) this.mentions = data.mentions;
419
493
  if (data.replies !== void 0) this.replies = data.replies;
420
- if (data.role_mentions !== void 0) this.role_mentions = data.role_mentions;
421
494
  this._patch(data);
495
+ this.mentions = new MessageMentions(client, this, data.mentions ?? null, data.role_mentions ?? null);
422
496
  }
423
497
  async reply(contentOrOptions) {
424
498
  let channel = this.channel;
@@ -592,7 +666,7 @@ var Message = class extends Base {
592
666
  }
593
667
  }
594
668
  // This tells Node.js exactly how to print this object in console.log()
595
- [util2.inspect.custom](depth, options, inspect12) {
669
+ [util3.inspect.custom](depth, options, inspect12) {
596
670
  const { client, authorId, channelId, ...props } = this;
597
671
  const data = {
598
672
  ...props,
@@ -746,6 +820,15 @@ var GatewayManager = class {
746
820
  }
747
821
  }
748
822
  }
823
+ if (payload.members) {
824
+ for (const rawMember of payload.members) {
825
+ const server = this.client.servers.cache.get(rawMember._id.server);
826
+ const user = this.client.users.cache.get(rawMember._id.user);
827
+ if (server && user) {
828
+ server.members._add({ ...rawMember, user });
829
+ }
830
+ }
831
+ }
749
832
  if (payload.emojis) {
750
833
  for (const rawEmoji of payload.emojis) {
751
834
  const emoji = this.client.emojis._add(rawEmoji);
@@ -1334,7 +1417,7 @@ var RESTManager = class {
1334
1417
  };
1335
1418
 
1336
1419
  // src/managers/MessageManager.ts
1337
- import * as util3 from "util";
1420
+ import * as util4 from "util";
1338
1421
 
1339
1422
  // src/managers/BaseManager.ts
1340
1423
  var BaseManager = class {
@@ -1599,7 +1682,7 @@ var MessageManager = class extends BaseManager {
1599
1682
  const id = this.resolveId(message);
1600
1683
  await this.client.rest.delete(`/channels/${this.channel.id}/messages/${id}/reactions`);
1601
1684
  }
1602
- [util3.inspect.custom]() {
1685
+ [util4.inspect.custom]() {
1603
1686
  return this.cache;
1604
1687
  }
1605
1688
  };
@@ -1636,6 +1719,8 @@ var MessageCollector = class extends Collector {
1636
1719
  super.handleCollect(message);
1637
1720
  if (!this.ended && this.collected.has(message.id)) {
1638
1721
  this.total++;
1722
+ }
1723
+ if (!this.ended) {
1639
1724
  this.checkEnd();
1640
1725
  }
1641
1726
  }
@@ -2016,7 +2101,7 @@ var DMChannel = class extends BaseChannel {
2016
2101
  };
2017
2102
 
2018
2103
  // src/structures/GroupChannel.ts
2019
- import * as util4 from "util";
2104
+ import * as util5 from "util";
2020
2105
  var GroupChannel = class extends BaseChannel {
2021
2106
  name;
2022
2107
  ownerId;
@@ -2076,7 +2161,7 @@ var GroupChannel = class extends BaseChannel {
2076
2161
  async setDefaultPermissions(permissions) {
2077
2162
  return await this.client.channels.setDefaultPermissions(this.id, permissions);
2078
2163
  }
2079
- [util4.inspect.custom](_depth, options, inspect12) {
2164
+ [util5.inspect.custom](_depth, options, inspect12) {
2080
2165
  const { client, ...props } = this;
2081
2166
  return `${this.constructor.name} ${inspect12(
2082
2167
  {
@@ -2628,7 +2713,7 @@ var ChannelManager = class extends BaseManager {
2628
2713
  };
2629
2714
 
2630
2715
  // src/structures/Member.ts
2631
- import * as util5 from "util";
2716
+ import * as util6 from "util";
2632
2717
 
2633
2718
  // src/managers/MemberRoleManager.ts
2634
2719
  var MemberRoleManager = class {
@@ -2855,7 +2940,7 @@ var Member = class extends Base {
2855
2940
  await server.members.kick(this.id);
2856
2941
  }
2857
2942
  /** @internal */
2858
- [util5.inspect.custom](depth, options, inspect12) {
2943
+ [util6.inspect.custom](depth, options, inspect12) {
2859
2944
  const { client, serverId, ...props } = this;
2860
2945
  return `${this.constructor.name} ${inspect12(
2861
2946
  {
@@ -2869,7 +2954,7 @@ var Member = class extends Base {
2869
2954
  };
2870
2955
 
2871
2956
  // src/managers/MemberManager.ts
2872
- import * as util6 from "util";
2957
+ import * as util7 from "util";
2873
2958
  var MemberManager = class extends BaseManager {
2874
2959
  constructor(client, server, limit = Infinity) {
2875
2960
  super(client, limit);
@@ -3039,13 +3124,13 @@ var MemberManager = class extends BaseManager {
3039
3124
  const id = this.resolveId(member);
3040
3125
  await this.client.rest.delete(`/servers/${this.server.id}/bans/${id}`);
3041
3126
  }
3042
- [util6.inspect.custom]() {
3127
+ [util7.inspect.custom]() {
3043
3128
  return this.cache;
3044
3129
  }
3045
3130
  };
3046
3131
 
3047
3132
  // src/managers/ServerChannelManager.ts
3048
- import * as util7 from "util";
3133
+ import * as util8 from "util";
3049
3134
  var ServerChannelManager = class {
3050
3135
  client;
3051
3136
  server;
@@ -3081,13 +3166,13 @@ var ServerChannelManager = class {
3081
3166
  const data = await this.client.rest.post(`/servers/${this.server.id}/channels`, payload);
3082
3167
  return this.client.channels._add(data);
3083
3168
  }
3084
- [util7.inspect.custom]() {
3169
+ [util8.inspect.custom]() {
3085
3170
  return this.cache;
3086
3171
  }
3087
3172
  };
3088
3173
 
3089
3174
  // src/structures/Role.ts
3090
- import * as util8 from "util";
3175
+ import * as util9 from "util";
3091
3176
  var Role = class extends Base {
3092
3177
  serverId;
3093
3178
  name;
@@ -3297,14 +3382,14 @@ var Role = class extends Base {
3297
3382
  * Hides the cyclic client reference and raw serverId for a cleaner output.
3298
3383
  * @internal
3299
3384
  */
3300
- [util8.inspect.custom]() {
3385
+ [util9.inspect.custom]() {
3301
3386
  const { client, serverId, ...props } = this;
3302
- return `${this.constructor.name} ${util8.inspect(props)}`;
3387
+ return `${this.constructor.name} ${util9.inspect(props)}`;
3303
3388
  }
3304
3389
  };
3305
3390
 
3306
3391
  // src/managers/RoleManager.ts
3307
- import * as util9 from "util";
3392
+ import * as util10 from "util";
3308
3393
  var RoleManager = class extends BaseManager {
3309
3394
  /**
3310
3395
  * Manages API methods and caching for server roles.
@@ -3343,7 +3428,7 @@ var RoleManager = class extends BaseManager {
3343
3428
  this.cache.set(role.id, role);
3344
3429
  return role;
3345
3430
  }
3346
- [util9.inspect.custom]() {
3431
+ [util10.inspect.custom]() {
3347
3432
  return this.cache;
3348
3433
  }
3349
3434
  /**
@@ -3675,7 +3760,7 @@ var Emoji = class extends Base {
3675
3760
  };
3676
3761
 
3677
3762
  // src/managers/EmojiManager.ts
3678
- import * as util10 from "util";
3763
+ import * as util11 from "util";
3679
3764
  var EmojiManager = class extends BaseManager {
3680
3765
  constructor(client, server, limit = Infinity) {
3681
3766
  super(client, limit);
@@ -3697,7 +3782,7 @@ var EmojiManager = class extends BaseManager {
3697
3782
  const data = await this.client.rest.get(`/custom/emoji/${id}`);
3698
3783
  return this._add(data);
3699
3784
  }
3700
- [util10.inspect.custom]() {
3785
+ [util11.inspect.custom]() {
3701
3786
  return this.cache;
3702
3787
  }
3703
3788
  };
@@ -3801,7 +3886,7 @@ var Server = class extends Base {
3801
3886
  };
3802
3887
 
3803
3888
  // src/managers/ServerManager.ts
3804
- import * as util11 from "util";
3889
+ import * as util12 from "util";
3805
3890
  var ServerManager = class extends BaseManager {
3806
3891
  constructor(client, limit = Infinity) {
3807
3892
  super(client, limit);
@@ -3872,7 +3957,7 @@ var ServerManager = class extends BaseManager {
3872
3957
  const data = await this.client.rest.patch(`/servers/${serverId}`, payload);
3873
3958
  return this._add(data);
3874
3959
  }
3875
- [util11.inspect.custom]() {
3960
+ [util12.inspect.custom]() {
3876
3961
  return this.cache;
3877
3962
  }
3878
3963
  };
@@ -4201,6 +4286,7 @@ export {
4201
4286
  Emoji,
4202
4287
  EmojiManager,
4203
4288
  GatewayManager,
4289
+ GroupChannel,
4204
4290
  Member,
4205
4291
  MemberManager,
4206
4292
  Message,