@stoatx/client 0.8.0 → 0.9.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
@@ -71,7 +71,8 @@ __export(index_exports, {
71
71
  User: () => User,
72
72
  UserManager: () => UserManager,
73
73
  VoiceConnection: () => VoiceConnection,
74
- VoiceManager: () => VoiceManager
74
+ VoiceManager: () => VoiceManager,
75
+ decodeTime: () => import_ulid8.decodeTime
75
76
  });
76
77
  module.exports = __toCommonJS(index_exports);
77
78
 
@@ -526,7 +527,7 @@ var MessageMentions = class _MessageMentions {
526
527
  static parseChannelIds(content) {
527
528
  return [...content.matchAll(/<#([A-Z0-9]+)>/g)].flatMap((m) => m[1] ? [m[1]] : []);
528
529
  }
529
- [import_node_util.default.inspect.custom](depth, options, inspect12) {
530
+ [import_node_util.default.inspect.custom](depth, options, inspect13) {
530
531
  const { client, message, ...props } = this;
531
532
  const data = {
532
533
  ...props,
@@ -535,7 +536,7 @@ var MessageMentions = class _MessageMentions {
535
536
  users: this.users,
536
537
  roles: this.roles
537
538
  };
538
- return `${this.constructor.name} ${inspect12(data, { ...options, depth: depth ?? options.depth })}`;
539
+ return `${this.constructor.name} ${inspect13(data, { ...options, depth: depth ?? options.depth })}`;
539
540
  }
540
541
  };
541
542
 
@@ -547,7 +548,8 @@ var Message = class extends Base {
547
548
  embeds = [];
548
549
  attachments = [];
549
550
  editedAt = null;
550
- createdAt = null;
551
+ createdAt;
552
+ createdTimestamp;
551
553
  flags = 0;
552
554
  interactions = null;
553
555
  masquerade = null;
@@ -559,10 +561,9 @@ var Message = class extends Base {
559
561
  super(client, data);
560
562
  this.authorId = data.author;
561
563
  this.channelId = data.channel;
562
- const timestamp = (0, import_ulid.decodeTime)(this.id);
563
- if (timestamp) {
564
- this.createdAt = new Date(timestamp);
565
- }
564
+ const timestamp = (0, import_ulid.decodeTime)(data._id);
565
+ this.createdAt = new Date(timestamp);
566
+ this.createdTimestamp = timestamp;
566
567
  if (data.attachments) {
567
568
  this.attachments = data.attachments.map((fileData) => new Attachment(this.client, fileData));
568
569
  }
@@ -743,7 +744,7 @@ var Message = class extends Base {
743
744
  }
744
745
  }
745
746
  // This tells Node.js exactly how to print this object in console.log()
746
- [util3.inspect.custom](depth, options, inspect12) {
747
+ [util3.inspect.custom](depth, options, inspect13) {
747
748
  const { client, authorId, channelId, ...props } = this;
748
749
  const data = {
749
750
  ...props,
@@ -752,11 +753,12 @@ var Message = class extends Base {
752
753
  server: this.server,
753
754
  member: this.member
754
755
  };
755
- return `${this.constructor.name} ${inspect12(data, { ...options, depth: depth ?? options.depth })}`;
756
+ return `${this.constructor.name} ${inspect13(data, { ...options, depth: depth ?? options.depth })}`;
756
757
  }
757
758
  };
758
759
 
759
760
  // src/structures/User.ts
761
+ var import_ulid2 = require("ulid");
760
762
  var User = class extends Base {
761
763
  discriminator;
762
764
  online;
@@ -769,11 +771,17 @@ var User = class extends Base {
769
771
  flags;
770
772
  privileged;
771
773
  status;
774
+ createdAt;
775
+ createdTimestamp;
776
+ pronouns = null;
772
777
  constructor(client, data) {
773
778
  super(client, data);
774
779
  this.bot = false;
775
780
  this.privileged = false;
776
781
  this.flags = 0;
782
+ const timestamp = (0, import_ulid2.decodeTime)(data._id);
783
+ this.createdAt = new Date(timestamp);
784
+ this.createdTimestamp = timestamp;
777
785
  this._patch(data);
778
786
  }
779
787
  _patch(data, clear) {
@@ -781,6 +789,7 @@ var User = class extends Base {
781
789
  if (data.discriminator !== void 0) this.discriminator = data.discriminator;
782
790
  if (data.online !== void 0) this.online = data.online;
783
791
  if (data.relationship !== void 0) this.relationship = data.relationship;
792
+ if (data.pronouns !== void 0) this.pronouns = data.pronouns;
784
793
  if (data.display_name !== void 0) this.displayName = data.display_name;
785
794
  if (data.badges !== void 0) this.badges = data.badges;
786
795
  if (data.flags !== void 0) this.flags = data.flags;
@@ -794,9 +803,23 @@ var User = class extends Base {
794
803
  }
795
804
  if (clear && Array.isArray(clear)) {
796
805
  for (const field of clear) {
797
- if (field === "Avatar") this.avatar = null;
798
- if (field === "StatusText" && this.status) this.status.text = null;
799
- if (field === "DisplayName") this.displayName = null;
806
+ switch (field) {
807
+ case "Avatar":
808
+ this.avatar = null;
809
+ break;
810
+ case "DisplayName":
811
+ this.displayName = null;
812
+ break;
813
+ case "Pronouns":
814
+ this.pronouns = null;
815
+ break;
816
+ case "StatusText":
817
+ this.status.text = null;
818
+ break;
819
+ case "StatusPresence":
820
+ this.status.presence = null;
821
+ break;
822
+ }
800
823
  }
801
824
  }
802
825
  }
@@ -912,11 +935,10 @@ var GatewayManager = class {
912
935
  }
913
936
  if (payload.emojis) {
914
937
  for (const rawEmoji of payload.emojis) {
915
- const emoji = this.client.emojis._add(rawEmoji);
916
938
  if (rawEmoji.parent && rawEmoji.parent.type === "Server") {
917
939
  const server = this.client.servers.cache.get(rawEmoji.parent.id);
918
940
  if (server) {
919
- server.emojis._add(emoji);
941
+ server.emojis._add(rawEmoji);
920
942
  }
921
943
  }
922
944
  }
@@ -1094,7 +1116,7 @@ var GatewayManager = class {
1094
1116
  case "ServerMemberJoin": {
1095
1117
  const server = this.client.servers.cache.get(payload.id);
1096
1118
  if (server) {
1097
- const member = server.members._add({ user: payload.user });
1119
+ const member = server.members._add(payload.member);
1098
1120
  this.client.emit("serverMemberJoin", member);
1099
1121
  }
1100
1122
  break;
@@ -1112,7 +1134,7 @@ var GatewayManager = class {
1112
1134
  if (payload.reason === "Ban") {
1113
1135
  if (server) {
1114
1136
  const dummyBanPayload = {
1115
- id: payload.user,
1137
+ _id: payload.user,
1116
1138
  reason: null
1117
1139
  };
1118
1140
  server.bans._add(dummyBanPayload);
@@ -1126,11 +1148,10 @@ var GatewayManager = class {
1126
1148
  break;
1127
1149
  }
1128
1150
  case "EmojiCreate": {
1129
- const emoji = this.client.emojis._add(payload);
1130
1151
  if (payload.parent?.type === "Server") {
1131
1152
  const server = this.client.servers.cache.get(payload.parent.id);
1132
1153
  if (server) {
1133
- server.emojis._add(emoji);
1154
+ server.emojis._add(payload);
1134
1155
  }
1135
1156
  }
1136
1157
  break;
@@ -1530,7 +1551,7 @@ var BaseManager = class {
1530
1551
  _add(data) {
1531
1552
  const id = this.extractId(data);
1532
1553
  const existing = this.cache.get(id);
1533
- if (existing && typeof existing._patch === "function") {
1554
+ if (existing && this.isPatchable(existing)) {
1534
1555
  existing._patch(data);
1535
1556
  return existing;
1536
1557
  }
@@ -1538,6 +1559,9 @@ var BaseManager = class {
1538
1559
  this.cache.set(id, structure);
1539
1560
  return structure;
1540
1561
  }
1562
+ isPatchable(value) {
1563
+ return typeof value._patch === "function";
1564
+ }
1541
1565
  };
1542
1566
 
1543
1567
  // src/builders/AttachmentBuilder.ts
@@ -1981,6 +2005,7 @@ var BaseChannel = class extends Base {
1981
2005
  };
1982
2006
 
1983
2007
  // src/structures/TextChannel.ts
2008
+ var import_ulid3 = require("ulid");
1984
2009
  var TextChannel = class extends BaseChannel {
1985
2010
  name;
1986
2011
  serverId;
@@ -1991,9 +2016,14 @@ var TextChannel = class extends BaseChannel {
1991
2016
  nsfw;
1992
2017
  slowmode;
1993
2018
  voice;
2019
+ createdAt;
2020
+ createdTimestamp;
1994
2021
  constructor(client, data) {
1995
2022
  super(client, data);
1996
2023
  this.serverId = data.server;
2024
+ const timestamp = (0, import_ulid3.decodeTime)(data._id);
2025
+ this.createdTimestamp = timestamp;
2026
+ this.createdAt = new Date(timestamp);
1997
2027
  this.defaultPermissions = data.default_permissions;
1998
2028
  this.description = data.description;
1999
2029
  if (data.icon !== void 0) {
@@ -2018,10 +2048,10 @@ var TextChannel = class extends BaseChannel {
2018
2048
  this.icon = null;
2019
2049
  break;
2020
2050
  case "DefaultPermissions":
2021
- this.defaultPermissions = data.default_permissions;
2051
+ this.defaultPermissions = null;
2022
2052
  break;
2023
2053
  case "Voice":
2024
- this.voice = data.voice;
2054
+ this.voice = null;
2025
2055
  break;
2026
2056
  }
2027
2057
  }
@@ -2216,6 +2246,7 @@ var DMChannel = class extends BaseChannel {
2216
2246
 
2217
2247
  // src/structures/GroupChannel.ts
2218
2248
  var util5 = __toESM(require("util"), 1);
2249
+ var import_ulid4 = require("ulid");
2219
2250
  var GroupChannel = class extends BaseChannel {
2220
2251
  name;
2221
2252
  ownerId;
@@ -2224,8 +2255,13 @@ var GroupChannel = class extends BaseChannel {
2224
2255
  icon = null;
2225
2256
  lastMessageId = null;
2226
2257
  nsfw = false;
2258
+ createdAt;
2259
+ createdTimestamp;
2227
2260
  constructor(client, data) {
2228
2261
  super(client, data);
2262
+ const timestamp = (0, import_ulid4.decodeTime)(data._id);
2263
+ this.createdAt = new Date(timestamp);
2264
+ this.createdTimestamp = timestamp;
2229
2265
  this._patch(data);
2230
2266
  }
2231
2267
  _patch(data, clear) {
@@ -2241,9 +2277,6 @@ var GroupChannel = class extends BaseChannel {
2241
2277
  if (clear && Array.isArray(clear)) {
2242
2278
  for (const field of clear) {
2243
2279
  switch (field) {
2244
- case "Name":
2245
- this.name = "";
2246
- break;
2247
2280
  case "Description":
2248
2281
  this.description = null;
2249
2282
  break;
@@ -2275,9 +2308,9 @@ var GroupChannel = class extends BaseChannel {
2275
2308
  async setDefaultPermissions(permissions) {
2276
2309
  return await this.client.channels.setDefaultPermissions(this.id, permissions);
2277
2310
  }
2278
- [util5.inspect.custom](_depth, options, inspect12) {
2311
+ [util5.inspect.custom](_depth, options, inspect13) {
2279
2312
  const { client, ...props } = this;
2280
- return `${this.constructor.name} ${inspect12(
2313
+ return `${this.constructor.name} ${inspect13(
2281
2314
  {
2282
2315
  ...props,
2283
2316
  owner: this.owner,
@@ -2924,6 +2957,8 @@ var Member = class extends Base {
2924
2957
  _roles = [];
2925
2958
  // The date the member joined the server
2926
2959
  joinedAt;
2960
+ // The timestamp the member joined the server
2961
+ joinedTimestamp;
2927
2962
  // The date the member's timeout expires, or null if not timed out
2928
2963
  timeout = null;
2929
2964
  // Whatever the user can talk in Voice Chat
@@ -2932,20 +2967,53 @@ var Member = class extends Base {
2932
2967
  canRecieve = false;
2933
2968
  // Member roles manager
2934
2969
  roles;
2970
+ // Member pronouns
2971
+ pronouns = null;
2935
2972
  constructor(client, data, serverId) {
2936
2973
  super(client, { _id: data._id?.user });
2937
2974
  this.serverId = data._id?.server ?? serverId;
2938
- this.joinedAt = new Date(data.joined_at);
2975
+ const timestamp = new Date(data.joined_at);
2976
+ this.joinedAt = timestamp;
2977
+ this.joinedTimestamp = timestamp.getTime();
2939
2978
  this.roles = new MemberRoleManager(this);
2940
2979
  this._patch(data);
2941
2980
  }
2942
- _patch(data) {
2981
+ _patch(data, clear) {
2943
2982
  if (data.nickname !== void 0) this.nickname = data.nickname;
2944
2983
  if (data.avatar !== void 0) this.avatar = data.avatar ? new Attachment(this.client, data.avatar) : null;
2945
2984
  if (data.roles !== void 0) this._roles = data.roles;
2946
2985
  if (data.timeout !== void 0) this.timeout = data.timeout ? new Date(data.timeout) : null;
2947
2986
  if (data.can_publish !== void 0) this.canPublish = data.can_publish;
2948
2987
  if (data.can_receive !== void 0) this.canRecieve = data.can_receive;
2988
+ if (data.pronouns !== void 0) this.pronouns = data.pronouns;
2989
+ if (clear && Array.isArray(clear)) {
2990
+ for (const field of clear) {
2991
+ switch (field) {
2992
+ case "Avatar":
2993
+ this.avatar = null;
2994
+ break;
2995
+ case "Nickname":
2996
+ this.nickname = null;
2997
+ break;
2998
+ case "Pronouns":
2999
+ this.pronouns = null;
3000
+ break;
3001
+ case "CanPublish":
3002
+ this.canPublish = false;
3003
+ break;
3004
+ case "Timeout":
3005
+ this.timeout = null;
3006
+ break;
3007
+ case "Roles":
3008
+ this._roles = [];
3009
+ this.roles = new MemberRoleManager(this);
3010
+ break;
3011
+ case "CanReceive":
3012
+ this.canRecieve = false;
3013
+ break;
3014
+ }
3015
+ }
3016
+ }
2949
3017
  }
2950
3018
  /**
2951
3019
  * Get member role IDs
@@ -3065,9 +3133,9 @@ var Member = class extends Base {
3065
3133
  await server.members.kick(this.id);
3066
3134
  }
3067
3135
  /** @internal */
3068
- [util6.inspect.custom](depth, options, inspect12) {
3136
+ [util6.inspect.custom](depth, options, inspect13) {
3069
3137
  const { client, serverId, ...props } = this;
3070
- return `${this.constructor.name} ${inspect12(
3138
+ return `${this.constructor.name} ${inspect13(
3071
3139
  {
3072
3140
  ...props,
3073
3141
  user: this.user,
@@ -3298,6 +3366,7 @@ var ServerChannelManager = class {
3298
3366
 
3299
3367
  // src/structures/Role.ts
3300
3368
  var util9 = __toESM(require("util"), 1);
3369
+ var import_ulid5 = require("ulid");
3301
3370
  var Role = class extends Base {
3302
3371
  serverId;
3303
3372
  name;
@@ -3306,16 +3375,21 @@ var Role = class extends Base {
3306
3375
  rank = 0;
3307
3376
  icon = null;
3308
3377
  _permissions = 0n;
3378
+ createdAt;
3379
+ createdTimestamp;
3309
3380
  constructor(client, data, serverId) {
3310
3381
  super(client, data);
3311
3382
  this.serverId = serverId;
3383
+ const timestamp = (0, import_ulid5.decodeTime)(data._id);
3384
+ this.createdAt = new Date(timestamp);
3385
+ this.createdTimestamp = timestamp;
3312
3386
  this._patch(data);
3313
3387
  }
3314
3388
  /**
3315
3389
  * Updates the role instance with new data without losing the object reference.
3316
3390
  * @internal
3317
3391
  */
3318
- _patch(data) {
3392
+ _patch(data, clear) {
3319
3393
  if (data.name !== void 0) this.name = data.name;
3320
3394
  if (data.colour !== void 0) this.color = data.colour;
3321
3395
  if (data.hoist !== void 0) this.hoist = data.hoist;
@@ -3333,6 +3407,18 @@ var Role = class extends Base {
3333
3407
  this._permissions = 0n;
3334
3408
  }
3335
3409
  }
3410
+ if (clear && Array.isArray(clear)) {
3411
+ for (const field of clear) {
3412
+ switch (field) {
3413
+ case "Colour":
3414
+ this.color = null;
3415
+ break;
3416
+ case "Icon":
3417
+ this.icon = null;
3418
+ break;
3419
+ }
3420
+ }
3421
+ }
3336
3422
  }
3337
3423
  /**
3338
3424
  * The server this role belongs to.
@@ -3828,7 +3914,7 @@ var ServerBanManager = class extends BaseManager {
3828
3914
  this.server = server;
3829
3915
  }
3830
3916
  extractId(data) {
3831
- return data._id?.user ?? data.id;
3917
+ return data._id?.user;
3832
3918
  }
3833
3919
  construct(data) {
3834
3920
  return new ServerBan(data);
@@ -3840,11 +3926,6 @@ var ServerBanManager = class extends BaseManager {
3840
3926
  */
3841
3927
  async fetch() {
3842
3928
  const data = await this.client.rest.get(`/servers/${this.server.id}/bans`);
3843
- if (data.users && Array.isArray(data.users)) {
3844
- for (const userData of data.users) {
3845
- this.client.users._add(userData);
3846
- }
3847
- }
3848
3929
  const rawBans = data.bans || (Array.isArray(data) ? data : []);
3849
3930
  const fetched = new Collection();
3850
3931
  for (const rawBan of rawBans) {
@@ -3865,14 +3946,20 @@ var ServerBanManager = class extends BaseManager {
3865
3946
  };
3866
3947
 
3867
3948
  // src/structures/Emoji.ts
3949
+ var import_ulid6 = require("ulid");
3868
3950
  var Emoji = class extends Base {
3869
3951
  creatorId;
3870
3952
  name;
3871
3953
  parent;
3954
+ createdAt;
3955
+ createdTimestamp;
3872
3956
  animated = false;
3873
3957
  nsfw = false;
3874
3958
  constructor(client, data) {
3875
3959
  super(client, data);
3960
+ const timestamp = (0, import_ulid6.decodeTime)(data._id);
3961
+ this.createdAt = new Date(timestamp);
3962
+ this.createdTimestamp = timestamp;
3876
3963
  this._patch(data);
3877
3964
  }
3878
3965
  _patch(data) {
@@ -4050,6 +4137,114 @@ var EmojiManager = class extends BaseManager {
4050
4137
  }
4051
4138
  };
4052
4139
 
4140
+ // src/structures/Server.ts
4141
+ var import_ulid7 = require("ulid");
4142
+
4143
+ // src/structures/AuditLogEntry.ts
4144
+ var util12 = __toESM(require("util"), 1);
4145
+ function resolveTargetId(data) {
4146
+ if (data.target) return data.target;
4147
+ const action = data.action;
4148
+ switch (action.type) {
4149
+ case "ChannelCreate":
4150
+ case "ChannelEdit":
4151
+ case "ChannelDelete":
4152
+ case "ChannelRolePermissionsEdit":
4153
+ return action.channel;
4154
+ case "RoleCreate":
4155
+ case "RoleEdit":
4156
+ case "RoleDelete":
4157
+ return action.role;
4158
+ case "InviteCreate":
4159
+ case "InviteDelete":
4160
+ return action.invite;
4161
+ case "WebhookCreate":
4162
+ case "WebhookDelete":
4163
+ return action.webhook;
4164
+ case "EmojiCreate":
4165
+ case "EmojiUpdate":
4166
+ case "EmojiDelete":
4167
+ return action.emoji;
4168
+ case "MessageDelete":
4169
+ return action.channel;
4170
+ case "MessagePin":
4171
+ case "MessageUnpin":
4172
+ return action.message;
4173
+ case "MessageBulkDelete":
4174
+ return action.channel;
4175
+ default:
4176
+ return null;
4177
+ }
4178
+ }
4179
+ var AuditLogEntry = class extends Base {
4180
+ serverId;
4181
+ userId;
4182
+ targetId;
4183
+ reason;
4184
+ action;
4185
+ constructor(client, data) {
4186
+ super(client, data);
4187
+ this.serverId = data.server;
4188
+ this.userId = data.user;
4189
+ this.targetId = resolveTargetId(data);
4190
+ this.reason = data.reason ?? null;
4191
+ this.action = data.action;
4192
+ }
4193
+ /** The action tag, e.g. "ChannelEdit" — narrow `entry.action` on this. */
4194
+ get type() {
4195
+ return this.action.type;
4196
+ }
4197
+ get server() {
4198
+ return this.client.servers.cache.get(this.serverId);
4199
+ }
4200
+ /** The user who performed this action, if cached. */
4201
+ get executor() {
4202
+ return this.client.users.cache.get(this.userId);
4203
+ }
4204
+ /**
4205
+ * Best-effort resolve of `targetId` into the actual entity, picked by
4206
+ * `action.type` since a bare id alone doesn't say whether it's a member,
4207
+ * a role, a channel, etc.
4208
+ */
4209
+ get target() {
4210
+ if (!this.targetId) return void 0;
4211
+ const server = this.server;
4212
+ switch (this.action.type) {
4213
+ case "MemberEdit":
4214
+ case "MemberKick":
4215
+ return server?.members.cache.get(this.targetId);
4216
+ case "BanCreate":
4217
+ case "BanDelete":
4218
+ return this.client.users.cache.get(this.targetId);
4219
+ case "ChannelCreate":
4220
+ case "ChannelEdit":
4221
+ case "ChannelDelete":
4222
+ case "ChannelRolePermissionsEdit":
4223
+ return server?.channels.cache.get(this.targetId);
4224
+ case "RoleCreate":
4225
+ case "RoleEdit":
4226
+ case "RoleDelete":
4227
+ return server?.roles.cache.get(this.targetId);
4228
+ default:
4229
+ return this.targetId;
4230
+ }
4231
+ }
4232
+ /**
4233
+ * Customizer for Node.js `console.log` and `util.inspect`.
4234
+ * Hides the cyclic client reference for a cleaner output.
4235
+ * @internal
4236
+ */
4237
+ [util12.inspect.custom]() {
4238
+ const { client, ...props } = this;
4239
+ return `${this.constructor.name} ${util12.inspect({
4240
+ ...props,
4241
+ type: this.type,
4242
+ executor: this.executor,
4243
+ target: this.target
4244
+ })}`;
4245
+ }
4246
+ };
4247
+
4053
4248
  // src/structures/Server.ts
4054
4249
  var Server = class extends Base {
4055
4250
  channelIds = [];
@@ -4070,6 +4265,8 @@ var Server = class extends Base {
4070
4265
  bans;
4071
4266
  invites;
4072
4267
  emojis;
4268
+ createdAt;
4269
+ createdTimestamp;
4073
4270
  constructor(client, data) {
4074
4271
  super(client, data);
4075
4272
  this.channels = new ServerChannelManager(client, this);
@@ -4078,6 +4275,9 @@ var Server = class extends Base {
4078
4275
  this.bans = new ServerBanManager(this.client, this);
4079
4276
  this.invites = new ServerInviteManager(this.client, this);
4080
4277
  this.emojis = new EmojiManager(this.client, this);
4278
+ const timestamp = (0, import_ulid7.decodeTime)(data._id);
4279
+ this.createdAt = new Date(timestamp);
4280
+ this.createdTimestamp = timestamp;
4081
4281
  this._patch(data);
4082
4282
  }
4083
4283
  /**
@@ -4120,6 +4320,12 @@ var Server = class extends Base {
4120
4320
  case "Icon":
4121
4321
  this.icon = null;
4122
4322
  break;
4323
+ case "Banner":
4324
+ this.banner = null;
4325
+ break;
4326
+ case "Categories":
4327
+ this.categories = null;
4328
+ break;
4123
4329
  }
4124
4330
  }
4125
4331
  }
@@ -4138,6 +4344,27 @@ var Server = class extends Base {
4138
4344
  async leave() {
4139
4345
  return this.client.rest.delete(`/servers/${this.id}/leave`);
4140
4346
  }
4347
+ /**
4348
+ * Fetch audit logs for this server
4349
+ * @param options Query params
4350
+ */
4351
+ async fetchAuditLogs(options) {
4352
+ const query = {};
4353
+ if (options?.user) query.user = options.user;
4354
+ if (options?.target) query.target = options.target;
4355
+ if (options?.type) query.type = options.type;
4356
+ if (options?.before) query.before = options.before;
4357
+ if (options?.after) query.after = options.after;
4358
+ if (options?.limit) query.limit = options.limit;
4359
+ const data = await this.client.rest.get(`/servers/${this.id}/audit_logs`, query);
4360
+ for (const user of data.users) this.client.users._add(user);
4361
+ for (const member of data.members) this.members._add(member);
4362
+ const entries = new Collection();
4363
+ for (const raw of data.audit_logs) {
4364
+ entries.set(raw._id, new AuditLogEntry(this.client, raw));
4365
+ }
4366
+ return entries;
4367
+ }
4141
4368
  /**
4142
4369
  * Fetches multiple members from this server.
4143
4370
  * @param options Filter options for the fetch request.
@@ -4149,7 +4376,7 @@ var Server = class extends Base {
4149
4376
  };
4150
4377
 
4151
4378
  // src/managers/ServerManager.ts
4152
- var util12 = __toESM(require("util"), 1);
4379
+ var util13 = __toESM(require("util"), 1);
4153
4380
  var ServerManager = class extends BaseManager {
4154
4381
  constructor(client, limit = Infinity) {
4155
4382
  super(client, limit);
@@ -4220,7 +4447,7 @@ var ServerManager = class extends BaseManager {
4220
4447
  const data = await this.client.rest.patch(`/servers/${serverId}`, payload);
4221
4448
  return this._add(data);
4222
4449
  }
4223
- [util12.inspect.custom]() {
4450
+ [util13.inspect.custom]() {
4224
4451
  return this.cache;
4225
4452
  }
4226
4453
  };
@@ -4790,6 +5017,7 @@ var EmbedBuilder = class {
4790
5017
  };
4791
5018
 
4792
5019
  // src/index.ts
5020
+ var import_ulid8 = require("ulid");
4793
5021
  var API = __toESM(require("stoat-api"), 1);
4794
5022
  // Annotate the CommonJS export names for ESM import in node:
4795
5023
  0 && (module.exports = {
@@ -4834,6 +5062,7 @@ var API = __toESM(require("stoat-api"), 1);
4834
5062
  User,
4835
5063
  UserManager,
4836
5064
  VoiceConnection,
4837
- VoiceManager
5065
+ VoiceManager,
5066
+ decodeTime
4838
5067
  });
4839
5068
  //# sourceMappingURL=index.cjs.map