@stoatx/client 0.1.0 → 0.2.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
@@ -18,6 +18,18 @@ declare class GatewayManager {
18
18
  disconnect(): void;
19
19
  }
20
20
 
21
+ /**
22
+ * Custom Error class for Stoat API failures
23
+ */
24
+ declare class StoatAPIError extends Error {
25
+ statusCode: number;
26
+ apiType: string;
27
+ location: string;
28
+ rawData: any;
29
+ method?: string | undefined;
30
+ path?: string | undefined;
31
+ constructor(statusCode: number, data: any, method?: string, path?: string);
32
+ }
21
33
  declare class RESTManager {
22
34
  private client;
23
35
  private baseURL;
@@ -205,9 +217,9 @@ declare class Collection<K, V> extends Map<K, V> {
205
217
  * @template Holds The type of the Structure this manager holds
206
218
  */
207
219
  declare abstract class BaseManager<K, Holds> {
208
- client: Client;
209
220
  cache: Collection<K, Holds>;
210
- constructor(client: Client, limit?: number);
221
+ protected readonly client: Client;
222
+ protected constructor(client: Client, limit?: number);
211
223
  /**
212
224
  * Defines how to extract the unique ID from a raw API payload.
213
225
  * @internal
@@ -252,8 +264,32 @@ declare class MemberManager extends BaseManager<string, Member> {
252
264
  * @internal
253
265
  */
254
266
  protected construct(data: any): Member;
267
+ /**
268
+ * Resolve a string or mention to Member
269
+ * @param member The MemberResolvable to resolve
270
+ * @returns The resolved Member or undefined if not found
271
+ */
255
272
  resolve(member: MemberResolvable): Member | undefined;
273
+ /**
274
+ * Resolve a Member to their ID string.
275
+ * @param member The MemberResolvable to resolve
276
+ * @returns The resolved ID string
277
+ * @throws {TypeError} If the provided resolvable is invalid
278
+ */
256
279
  resolveId(member: MemberResolvable): string;
280
+ /**
281
+ * Fetches a member from the server, or returns the cached version if available and not forced.
282
+ * @param member The MemberResolvable to fetch
283
+ * @param force Whether to bypass the cache and fetch fresh data from the API
284
+ * @returns A promise that resolves to the fetched Member
285
+ * @throws {Error} If the API request fails or the member is not found
286
+ * @example
287
+ * // Fetch a member by ID, using cache if available
288
+ * const member = await server.members.fetch("1234567890");
289
+ *
290
+ * // Fetch a member by mention, bypassing cache
291
+ * const member = await server.members.fetch("<@1234567890>", true);
292
+ */
257
293
  fetch(member: MemberResolvable, force?: boolean): Promise<Member>;
258
294
  /**
259
295
  * Fetches multiple members from the server.
@@ -272,24 +308,50 @@ declare class MemberManager extends BaseManager<string, Member> {
272
308
  * Edits a member in the server.
273
309
  * @param member The MemberResolvable to edit.
274
310
  * @param options The fields to update (nickname, roles, timeout, etc.).
311
+ * @returns A promise that resolves to the updated Member.
312
+ * @throws {Error} If the API request fails or the member is not found.
313
+ * @example
314
+ * // Change a member's nickname and add a role
315
+ * const updatedMember = await server.members.edit("1234567890", {
316
+ * nickname: "New Nickname",
317
+ * roles: ["roleId1", "roleId2"],
318
+ * });
275
319
  */
276
320
  edit(member: MemberResolvable, options: MemberEditOptions): Promise<Member>;
277
321
  /**
278
322
  * Kicks a member from the server.
279
323
  * @param member The MemberResolvable to kick.
324
+ * @example
325
+ * // Kick a member by ID
326
+ * await server.members.kick("1234567890");
280
327
  */
281
328
  kick(member: MemberResolvable): Promise<void>;
282
329
  /**
283
330
  * Bans a member from the server.
284
331
  * @param member The MemberResolvable to ban.
285
332
  * @param options The ban options
333
+ * @example
334
+ * // Ban a member by ID
335
+ * await server.members.ban("1234567890", { reason: "Spamming", deleteMessageSeconds: 3600 });
286
336
  */
287
337
  ban(member: MemberResolvable, options?: MemberBanOptions): Promise<void>;
288
338
  /**
289
339
  * Unbans a user from the server
290
340
  * @param member The MemberResolvable to unban
341
+ * @example
342
+ * // Unban a member by ID
343
+ * await server.members.unban("1234567890");
291
344
  */
292
345
  unban(member: MemberResolvable): Promise<void>;
346
+ /**
347
+ * Timeouts a member in the server for a specified duration.
348
+ * @param member The MemberResolvable to timeout
349
+ * @param duration The duration of the timeout in milliseconds
350
+ * @example
351
+ * // Timeout a member for 10 minutes
352
+ * await server.members.setTimeout("1234567890", 10 * 60 * 1000);
353
+ */
354
+ setTimeout(member: MemberResolvable, duration: number): Promise<void>;
293
355
  [util.inspect.custom](): Collection<string, Member>;
294
356
  }
295
357
 
@@ -344,7 +406,7 @@ declare class Permissions {
344
406
 
345
407
  declare class DMChannel extends BaseChannel {
346
408
  active: boolean;
347
- recipients: DMChannel[];
409
+ recipients: string[];
348
410
  lastMessageId: string | null;
349
411
  constructor(client: any, data: any);
350
412
  _patch(data: any): void;
@@ -848,7 +910,7 @@ declare class RoleManager extends BaseManager<string, Role> {
848
910
  * console.log("Role deleted successfully.");
849
911
  *
850
912
  * // Delete a role using a Role object
851
- * const role = await server.roles.fetch("01JE2MM759J5D7CHJF084R7MJ2");
913
+ * const role = await server.roles.fetch("01JE2MM759J5D7CHJF084R7");
852
914
  * await server.roles.delete(role);
853
915
  * console.log("Role deleted successfully.");
854
916
  *
@@ -1045,11 +1107,17 @@ declare class MemberRoleManager {
1045
1107
  set(roles: RoleResolvable[]): Promise<Member>;
1046
1108
  }
1047
1109
 
1110
+ /**
1111
+ * Represents a member of a server on Stoat
1112
+ *
1113
+ * @extends {Base}
1114
+ */
1048
1115
  declare class Member extends Base {
1049
1116
  serverId: string;
1050
1117
  nickname: string | null;
1051
- avatar: string | null;
1052
- roleIds: string[];
1118
+ avatar: Attachment | null;
1119
+ /** @internal */
1120
+ private _roles;
1053
1121
  joinedAt: Date;
1054
1122
  timeout: Date | null;
1055
1123
  canPublish: boolean;
@@ -1057,30 +1125,63 @@ declare class Member extends Base {
1057
1125
  roles: MemberRoleManager;
1058
1126
  constructor(client: Client, data: any);
1059
1127
  _patch(data: any): void;
1128
+ /**
1129
+ * Get member role IDs
1130
+ */
1131
+ get roleIds(): string[];
1060
1132
  /** Gets the global User object for this member */
1061
1133
  get user(): User | undefined;
1062
1134
  /** Gets the Server object this member belongs to */
1063
1135
  get server(): Server | undefined;
1064
- /** Resolves the array of role strings into actual Role objects */
1065
- get roleObjects(): Role[];
1066
1136
  /** Calculates the member's total permissions using BigInt */
1067
1137
  get permissions(): bigint;
1138
+ /** Get avatar URL for this member, or null if they don't have one.
1139
+ * @example
1140
+ * // Get a member's avatar URL
1141
+ * const avatarURL = member.avatarURL;
1142
+ * console.log(avatarURL); // https://cdn.stoat.chat/attachments/avatars/1234567890/avatar.png
1143
+ */
1144
+ get avatarURL(): string | null;
1145
+ /**
1146
+ * Ban this member from the server.
1147
+ * @param options The options for this ban
1148
+ * @example
1149
+ * // Ban a member with a reason and delete their messages from the last hour
1150
+ * await member.ban({ reason: "Spamming", deleteMessageSeconds: 3600 });
1151
+ */
1152
+ ban(options?: MemberBanOptions): Promise<void>;
1153
+ /**
1154
+ * Creates a DM channel between the client's user and this member.
1155
+ * @param force If true, forces the creation of a new DM channel even if one already exists.
1156
+ * @returns A promise that resolves to the created DMChannel object.
1157
+ * @throws {Error} If the API request fails.
1158
+ * @example
1159
+ * // Create a DM with this member
1160
+ * const dm = await member.createDM();
1161
+ * console.log(`DM channel ID: ${dm.id}`);
1162
+ */
1163
+ createDM(force?: boolean): Promise<void>;
1164
+ /**
1165
+ * Timeout this member for a specified duration.
1166
+ * @param duration The duration of the timeout in milliseconds.
1167
+ * @example
1168
+ * // Timeout a member for 10 minutes (600,000 milliseconds)
1169
+ * await member.setTimeout(600000);
1170
+ */
1171
+ setTimeout(duration: number): Promise<void>;
1068
1172
  /** Checks if the member has a specific permission */
1069
1173
  hasPermission(permission: PermissionResolvable): boolean;
1070
1174
  /**
1071
- * Edits this member's nickname, avatar, roles, or timeout.
1175
+ * Edit this member.
1176
+ * @param options The options to edit the member with (nickname, roles, timeout, etc.)
1177
+ * @returns A promise that resolves to the updated Member.
1072
1178
  */
1073
1179
  edit(options: MemberEditOptions): Promise<this>;
1074
1180
  /**
1075
- * Kicks this member from the server.
1181
+ * Kick this member from the server.
1076
1182
  */
1077
1183
  kick(): Promise<void>;
1078
- /**
1079
- * Bans this member from the server.
1080
- * @param options The options for this ban
1081
- */
1082
- ban(options?: MemberBanOptions): Promise<void>;
1083
- unban(): Promise<void>;
1184
+ /** @internal */
1084
1185
  [util.inspect.custom](depth: number, options: util.InspectOptions, inspect: typeof util.inspect): string;
1085
1186
  }
1086
1187
 
@@ -1255,6 +1356,30 @@ declare class UserManager extends BaseManager<string, User> {
1255
1356
  * await client.users.editMe({ avatar: null, displayName: null });
1256
1357
  */
1257
1358
  editMe(options: UserEditOptions): Promise<User>;
1359
+ /**
1360
+ * The DM between the client's user and a user
1361
+ *
1362
+ * @param {string} userId The user id
1363
+ * @returns {?DMChannel}
1364
+ * @private
1365
+ */
1366
+ dmChannel(userId: string): DMChannel | null;
1367
+ /**
1368
+ * Creates a DM channel between the client's user and another user.
1369
+ * @param user The UserResolvable to create a DM with.
1370
+ * @param options Additional options for DM creation.
1371
+ * @param options.force If true, forces the creation of a new DM channel even if one already exists.
1372
+ * @returns A promise that resolves to the created DMChannel object.
1373
+ * @throws {TypeError} If an invalid UserResolvable is provided.
1374
+ * @throws {Error} If the API request fails.
1375
+ * @example
1376
+ * // Create a DM with a user by ID
1377
+ * const dm = await client.users.createDM("1234567890");
1378
+ * console.log(`DM channel ID: ${dm.id}`);
1379
+ */
1380
+ createDM(user: UserResolvable, { force }?: {
1381
+ force?: boolean | undefined;
1382
+ }): Promise<DMChannel>;
1258
1383
  }
1259
1384
 
1260
1385
  /**
@@ -1335,4 +1460,4 @@ declare class UnknownChannel extends BaseChannel {
1335
1460
  constructor(client: Client, data: any);
1336
1461
  }
1337
1462
 
1338
- export { Attachment, type AttachmentMetadata, Base, BaseChannel, type BotInformation, type Categories, type ChannelCreateOptions, type ChannelEditOptions, ChannelManager, type ChannelResolvable, type ChannelRolePermissionOptions, ChannelType, Client, type ClientEvents, type ClientOptions, ClientUser, Collection, DMChannel, EmbedBuilder, type FetchMembersOptions, GatewayManager, type Interaction, type Masquerade, Member, type MemberBanOptions, type MemberEditOptions, MemberManager, type MemberResolvable, Message, type MessageFetchOptions, MessageManager, type MessageOptions, type MessageResolvable, PermissionFlags, type PermissionResolvable, type PermissionString, Permissions, RESTManager, type ReplyIntent, Role, type RoleCreateOptions, type RoleEditOptions, RoleManager, type RolePermissionOptions, type RoleResolvable, Server, ServerChannelManager, type ServerEditOptions, ServerManager, SweeperManager, type SweeperOptions, TextChannel, type TextEmbedData, UnknownChannel, User, type UserEditOptions, UserManager, UserPresence, type UserProfile, UserRelationship, type UserResolvable, type UserStatus };
1463
+ export { Attachment, type AttachmentMetadata, Base, BaseChannel, type BotInformation, type Categories, type ChannelCreateOptions, type ChannelEditOptions, ChannelManager, type ChannelResolvable, type ChannelRolePermissionOptions, ChannelType, Client, type ClientEvents, type ClientOptions, ClientUser, Collection, DMChannel, EmbedBuilder, type FetchMembersOptions, GatewayManager, type Interaction, type Masquerade, Member, type MemberBanOptions, type MemberEditOptions, MemberManager, type MemberResolvable, Message, type MessageFetchOptions, MessageManager, type MessageOptions, type MessageResolvable, PermissionFlags, type PermissionResolvable, type PermissionString, Permissions, RESTManager, 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, UserPresence, type UserProfile, UserRelationship, type UserResolvable, type UserStatus };
package/dist/index.d.ts CHANGED
@@ -18,6 +18,18 @@ declare class GatewayManager {
18
18
  disconnect(): void;
19
19
  }
20
20
 
21
+ /**
22
+ * Custom Error class for Stoat API failures
23
+ */
24
+ declare class StoatAPIError extends Error {
25
+ statusCode: number;
26
+ apiType: string;
27
+ location: string;
28
+ rawData: any;
29
+ method?: string | undefined;
30
+ path?: string | undefined;
31
+ constructor(statusCode: number, data: any, method?: string, path?: string);
32
+ }
21
33
  declare class RESTManager {
22
34
  private client;
23
35
  private baseURL;
@@ -205,9 +217,9 @@ declare class Collection<K, V> extends Map<K, V> {
205
217
  * @template Holds The type of the Structure this manager holds
206
218
  */
207
219
  declare abstract class BaseManager<K, Holds> {
208
- client: Client;
209
220
  cache: Collection<K, Holds>;
210
- constructor(client: Client, limit?: number);
221
+ protected readonly client: Client;
222
+ protected constructor(client: Client, limit?: number);
211
223
  /**
212
224
  * Defines how to extract the unique ID from a raw API payload.
213
225
  * @internal
@@ -252,8 +264,32 @@ declare class MemberManager extends BaseManager<string, Member> {
252
264
  * @internal
253
265
  */
254
266
  protected construct(data: any): Member;
267
+ /**
268
+ * Resolve a string or mention to Member
269
+ * @param member The MemberResolvable to resolve
270
+ * @returns The resolved Member or undefined if not found
271
+ */
255
272
  resolve(member: MemberResolvable): Member | undefined;
273
+ /**
274
+ * Resolve a Member to their ID string.
275
+ * @param member The MemberResolvable to resolve
276
+ * @returns The resolved ID string
277
+ * @throws {TypeError} If the provided resolvable is invalid
278
+ */
256
279
  resolveId(member: MemberResolvable): string;
280
+ /**
281
+ * Fetches a member from the server, or returns the cached version if available and not forced.
282
+ * @param member The MemberResolvable to fetch
283
+ * @param force Whether to bypass the cache and fetch fresh data from the API
284
+ * @returns A promise that resolves to the fetched Member
285
+ * @throws {Error} If the API request fails or the member is not found
286
+ * @example
287
+ * // Fetch a member by ID, using cache if available
288
+ * const member = await server.members.fetch("1234567890");
289
+ *
290
+ * // Fetch a member by mention, bypassing cache
291
+ * const member = await server.members.fetch("<@1234567890>", true);
292
+ */
257
293
  fetch(member: MemberResolvable, force?: boolean): Promise<Member>;
258
294
  /**
259
295
  * Fetches multiple members from the server.
@@ -272,24 +308,50 @@ declare class MemberManager extends BaseManager<string, Member> {
272
308
  * Edits a member in the server.
273
309
  * @param member The MemberResolvable to edit.
274
310
  * @param options The fields to update (nickname, roles, timeout, etc.).
311
+ * @returns A promise that resolves to the updated Member.
312
+ * @throws {Error} If the API request fails or the member is not found.
313
+ * @example
314
+ * // Change a member's nickname and add a role
315
+ * const updatedMember = await server.members.edit("1234567890", {
316
+ * nickname: "New Nickname",
317
+ * roles: ["roleId1", "roleId2"],
318
+ * });
275
319
  */
276
320
  edit(member: MemberResolvable, options: MemberEditOptions): Promise<Member>;
277
321
  /**
278
322
  * Kicks a member from the server.
279
323
  * @param member The MemberResolvable to kick.
324
+ * @example
325
+ * // Kick a member by ID
326
+ * await server.members.kick("1234567890");
280
327
  */
281
328
  kick(member: MemberResolvable): Promise<void>;
282
329
  /**
283
330
  * Bans a member from the server.
284
331
  * @param member The MemberResolvable to ban.
285
332
  * @param options The ban options
333
+ * @example
334
+ * // Ban a member by ID
335
+ * await server.members.ban("1234567890", { reason: "Spamming", deleteMessageSeconds: 3600 });
286
336
  */
287
337
  ban(member: MemberResolvable, options?: MemberBanOptions): Promise<void>;
288
338
  /**
289
339
  * Unbans a user from the server
290
340
  * @param member The MemberResolvable to unban
341
+ * @example
342
+ * // Unban a member by ID
343
+ * await server.members.unban("1234567890");
291
344
  */
292
345
  unban(member: MemberResolvable): Promise<void>;
346
+ /**
347
+ * Timeouts a member in the server for a specified duration.
348
+ * @param member The MemberResolvable to timeout
349
+ * @param duration The duration of the timeout in milliseconds
350
+ * @example
351
+ * // Timeout a member for 10 minutes
352
+ * await server.members.setTimeout("1234567890", 10 * 60 * 1000);
353
+ */
354
+ setTimeout(member: MemberResolvable, duration: number): Promise<void>;
293
355
  [util.inspect.custom](): Collection<string, Member>;
294
356
  }
295
357
 
@@ -344,7 +406,7 @@ declare class Permissions {
344
406
 
345
407
  declare class DMChannel extends BaseChannel {
346
408
  active: boolean;
347
- recipients: DMChannel[];
409
+ recipients: string[];
348
410
  lastMessageId: string | null;
349
411
  constructor(client: any, data: any);
350
412
  _patch(data: any): void;
@@ -848,7 +910,7 @@ declare class RoleManager extends BaseManager<string, Role> {
848
910
  * console.log("Role deleted successfully.");
849
911
  *
850
912
  * // Delete a role using a Role object
851
- * const role = await server.roles.fetch("01JE2MM759J5D7CHJF084R7MJ2");
913
+ * const role = await server.roles.fetch("01JE2MM759J5D7CHJF084R7");
852
914
  * await server.roles.delete(role);
853
915
  * console.log("Role deleted successfully.");
854
916
  *
@@ -1045,11 +1107,17 @@ declare class MemberRoleManager {
1045
1107
  set(roles: RoleResolvable[]): Promise<Member>;
1046
1108
  }
1047
1109
 
1110
+ /**
1111
+ * Represents a member of a server on Stoat
1112
+ *
1113
+ * @extends {Base}
1114
+ */
1048
1115
  declare class Member extends Base {
1049
1116
  serverId: string;
1050
1117
  nickname: string | null;
1051
- avatar: string | null;
1052
- roleIds: string[];
1118
+ avatar: Attachment | null;
1119
+ /** @internal */
1120
+ private _roles;
1053
1121
  joinedAt: Date;
1054
1122
  timeout: Date | null;
1055
1123
  canPublish: boolean;
@@ -1057,30 +1125,63 @@ declare class Member extends Base {
1057
1125
  roles: MemberRoleManager;
1058
1126
  constructor(client: Client, data: any);
1059
1127
  _patch(data: any): void;
1128
+ /**
1129
+ * Get member role IDs
1130
+ */
1131
+ get roleIds(): string[];
1060
1132
  /** Gets the global User object for this member */
1061
1133
  get user(): User | undefined;
1062
1134
  /** Gets the Server object this member belongs to */
1063
1135
  get server(): Server | undefined;
1064
- /** Resolves the array of role strings into actual Role objects */
1065
- get roleObjects(): Role[];
1066
1136
  /** Calculates the member's total permissions using BigInt */
1067
1137
  get permissions(): bigint;
1138
+ /** Get avatar URL for this member, or null if they don't have one.
1139
+ * @example
1140
+ * // Get a member's avatar URL
1141
+ * const avatarURL = member.avatarURL;
1142
+ * console.log(avatarURL); // https://cdn.stoat.chat/attachments/avatars/1234567890/avatar.png
1143
+ */
1144
+ get avatarURL(): string | null;
1145
+ /**
1146
+ * Ban this member from the server.
1147
+ * @param options The options for this ban
1148
+ * @example
1149
+ * // Ban a member with a reason and delete their messages from the last hour
1150
+ * await member.ban({ reason: "Spamming", deleteMessageSeconds: 3600 });
1151
+ */
1152
+ ban(options?: MemberBanOptions): Promise<void>;
1153
+ /**
1154
+ * Creates a DM channel between the client's user and this member.
1155
+ * @param force If true, forces the creation of a new DM channel even if one already exists.
1156
+ * @returns A promise that resolves to the created DMChannel object.
1157
+ * @throws {Error} If the API request fails.
1158
+ * @example
1159
+ * // Create a DM with this member
1160
+ * const dm = await member.createDM();
1161
+ * console.log(`DM channel ID: ${dm.id}`);
1162
+ */
1163
+ createDM(force?: boolean): Promise<void>;
1164
+ /**
1165
+ * Timeout this member for a specified duration.
1166
+ * @param duration The duration of the timeout in milliseconds.
1167
+ * @example
1168
+ * // Timeout a member for 10 minutes (600,000 milliseconds)
1169
+ * await member.setTimeout(600000);
1170
+ */
1171
+ setTimeout(duration: number): Promise<void>;
1068
1172
  /** Checks if the member has a specific permission */
1069
1173
  hasPermission(permission: PermissionResolvable): boolean;
1070
1174
  /**
1071
- * Edits this member's nickname, avatar, roles, or timeout.
1175
+ * Edit this member.
1176
+ * @param options The options to edit the member with (nickname, roles, timeout, etc.)
1177
+ * @returns A promise that resolves to the updated Member.
1072
1178
  */
1073
1179
  edit(options: MemberEditOptions): Promise<this>;
1074
1180
  /**
1075
- * Kicks this member from the server.
1181
+ * Kick this member from the server.
1076
1182
  */
1077
1183
  kick(): Promise<void>;
1078
- /**
1079
- * Bans this member from the server.
1080
- * @param options The options for this ban
1081
- */
1082
- ban(options?: MemberBanOptions): Promise<void>;
1083
- unban(): Promise<void>;
1184
+ /** @internal */
1084
1185
  [util.inspect.custom](depth: number, options: util.InspectOptions, inspect: typeof util.inspect): string;
1085
1186
  }
1086
1187
 
@@ -1255,6 +1356,30 @@ declare class UserManager extends BaseManager<string, User> {
1255
1356
  * await client.users.editMe({ avatar: null, displayName: null });
1256
1357
  */
1257
1358
  editMe(options: UserEditOptions): Promise<User>;
1359
+ /**
1360
+ * The DM between the client's user and a user
1361
+ *
1362
+ * @param {string} userId The user id
1363
+ * @returns {?DMChannel}
1364
+ * @private
1365
+ */
1366
+ dmChannel(userId: string): DMChannel | null;
1367
+ /**
1368
+ * Creates a DM channel between the client's user and another user.
1369
+ * @param user The UserResolvable to create a DM with.
1370
+ * @param options Additional options for DM creation.
1371
+ * @param options.force If true, forces the creation of a new DM channel even if one already exists.
1372
+ * @returns A promise that resolves to the created DMChannel object.
1373
+ * @throws {TypeError} If an invalid UserResolvable is provided.
1374
+ * @throws {Error} If the API request fails.
1375
+ * @example
1376
+ * // Create a DM with a user by ID
1377
+ * const dm = await client.users.createDM("1234567890");
1378
+ * console.log(`DM channel ID: ${dm.id}`);
1379
+ */
1380
+ createDM(user: UserResolvable, { force }?: {
1381
+ force?: boolean | undefined;
1382
+ }): Promise<DMChannel>;
1258
1383
  }
1259
1384
 
1260
1385
  /**
@@ -1335,4 +1460,4 @@ declare class UnknownChannel extends BaseChannel {
1335
1460
  constructor(client: Client, data: any);
1336
1461
  }
1337
1462
 
1338
- export { Attachment, type AttachmentMetadata, Base, BaseChannel, type BotInformation, type Categories, type ChannelCreateOptions, type ChannelEditOptions, ChannelManager, type ChannelResolvable, type ChannelRolePermissionOptions, ChannelType, Client, type ClientEvents, type ClientOptions, ClientUser, Collection, DMChannel, EmbedBuilder, type FetchMembersOptions, GatewayManager, type Interaction, type Masquerade, Member, type MemberBanOptions, type MemberEditOptions, MemberManager, type MemberResolvable, Message, type MessageFetchOptions, MessageManager, type MessageOptions, type MessageResolvable, PermissionFlags, type PermissionResolvable, type PermissionString, Permissions, RESTManager, type ReplyIntent, Role, type RoleCreateOptions, type RoleEditOptions, RoleManager, type RolePermissionOptions, type RoleResolvable, Server, ServerChannelManager, type ServerEditOptions, ServerManager, SweeperManager, type SweeperOptions, TextChannel, type TextEmbedData, UnknownChannel, User, type UserEditOptions, UserManager, UserPresence, type UserProfile, UserRelationship, type UserResolvable, type UserStatus };
1463
+ export { Attachment, type AttachmentMetadata, Base, BaseChannel, type BotInformation, type Categories, type ChannelCreateOptions, type ChannelEditOptions, ChannelManager, type ChannelResolvable, type ChannelRolePermissionOptions, ChannelType, Client, type ClientEvents, type ClientOptions, ClientUser, Collection, DMChannel, EmbedBuilder, type FetchMembersOptions, GatewayManager, type Interaction, type Masquerade, Member, type MemberBanOptions, type MemberEditOptions, MemberManager, type MemberResolvable, Message, type MessageFetchOptions, MessageManager, type MessageOptions, type MessageResolvable, PermissionFlags, type PermissionResolvable, type PermissionString, Permissions, RESTManager, 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, UserPresence, type UserProfile, UserRelationship, type UserResolvable, type UserStatus };