oceanic.js 1.10.3-dev.22ee190 → 1.10.3-dev.27ffa1e

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.
Files changed (205) hide show
  1. package/dist/lib/Client.d.ts +99 -0
  2. package/dist/lib/Client.js +263 -0
  3. package/dist/lib/Constants.d.ts +1219 -0
  4. package/dist/lib/Constants.js +1518 -0
  5. package/dist/lib/gateway/Shard.d.ts +83 -0
  6. package/dist/lib/gateway/Shard.js +1621 -0
  7. package/dist/lib/gateway/ShardManager.d.ts +29 -0
  8. package/dist/lib/gateway/ShardManager.js +300 -0
  9. package/dist/lib/index.d.ts +84 -0
  10. package/dist/lib/index.js +168 -0
  11. package/dist/lib/rest/Bucket.d.ts +33 -0
  12. package/dist/lib/rest/Bucket.js +78 -0
  13. package/dist/lib/rest/DiscordHTTPError.d.ts +16 -0
  14. package/dist/lib/rest/DiscordHTTPError.js +65 -0
  15. package/dist/lib/rest/DiscordRESTError.d.ts +19 -0
  16. package/dist/lib/rest/DiscordRESTError.js +89 -0
  17. package/dist/lib/rest/OAuthHelper.d.ts +62 -0
  18. package/dist/lib/rest/OAuthHelper.js +183 -0
  19. package/dist/lib/rest/RESTManager.d.ts +42 -0
  20. package/dist/lib/rest/RESTManager.js +82 -0
  21. package/dist/lib/rest/RequestHandler.d.ts +28 -0
  22. package/dist/lib/rest/RequestHandler.js +313 -0
  23. package/dist/lib/rest/SequentialBucket.d.ts +25 -0
  24. package/dist/lib/rest/SequentialBucket.js +76 -0
  25. package/dist/lib/routes/Applications.d.ts +171 -0
  26. package/dist/lib/routes/Applications.js +447 -0
  27. package/dist/lib/routes/Channels.d.ts +408 -0
  28. package/dist/lib/routes/Channels.js +1161 -0
  29. package/dist/lib/routes/Guilds.d.ts +606 -0
  30. package/dist/lib/routes/Guilds.js +1669 -0
  31. package/dist/lib/routes/Interactions.d.ts +74 -0
  32. package/dist/lib/routes/Interactions.js +141 -0
  33. package/dist/lib/routes/Miscellaneous.d.ts +31 -0
  34. package/dist/lib/routes/Miscellaneous.js +69 -0
  35. package/dist/lib/routes/OAuth.d.ts +108 -0
  36. package/dist/lib/routes/OAuth.js +312 -0
  37. package/dist/lib/routes/Users.d.ts +32 -0
  38. package/dist/lib/routes/Users.js +59 -0
  39. package/dist/lib/routes/Webhooks.d.ts +128 -0
  40. package/dist/lib/routes/Webhooks.js +265 -0
  41. package/dist/lib/structures/AnnouncementChannel.d.ts +36 -0
  42. package/dist/lib/structures/AnnouncementChannel.js +47 -0
  43. package/dist/lib/structures/AnnouncementThreadChannel.d.ts +18 -0
  44. package/dist/lib/structures/AnnouncementThreadChannel.js +27 -0
  45. package/dist/lib/structures/Application.d.ts +102 -0
  46. package/dist/lib/structures/Application.js +189 -0
  47. package/dist/lib/structures/ApplicationCommand.d.ts +74 -0
  48. package/dist/lib/structures/ApplicationCommand.js +141 -0
  49. package/dist/lib/structures/Attachment.d.ts +34 -0
  50. package/dist/lib/structures/Attachment.js +64 -0
  51. package/dist/lib/structures/AuditLogEntry.d.ts +25 -0
  52. package/dist/lib/structures/AuditLogEntry.js +53 -0
  53. package/dist/lib/structures/AutoModerationRule.d.ts +49 -0
  54. package/dist/lib/structures/AutoModerationRule.js +139 -0
  55. package/dist/lib/structures/AutocompleteInteraction.d.ts +62 -0
  56. package/dist/lib/structures/AutocompleteInteraction.js +115 -0
  57. package/dist/lib/structures/Base.d.ts +20 -0
  58. package/dist/lib/structures/Base.js +58 -0
  59. package/dist/lib/structures/BaseEntitlement.d.ts +19 -0
  60. package/dist/lib/structures/BaseEntitlement.js +44 -0
  61. package/dist/lib/structures/CategoryChannel.d.ts +41 -0
  62. package/dist/lib/structures/CategoryChannel.js +105 -0
  63. package/dist/lib/structures/Channel.d.ts +20 -0
  64. package/dist/lib/structures/Channel.js +91 -0
  65. package/dist/lib/structures/ClientApplication.d.ts +153 -0
  66. package/dist/lib/structures/ClientApplication.js +220 -0
  67. package/dist/lib/structures/CommandInteraction.d.ts +127 -0
  68. package/dist/lib/structures/CommandInteraction.js +297 -0
  69. package/dist/lib/structures/ComponentInteraction.d.ts +137 -0
  70. package/dist/lib/structures/ComponentInteraction.js +311 -0
  71. package/dist/lib/structures/Entitlement.d.ts +12 -0
  72. package/dist/lib/structures/Entitlement.js +26 -0
  73. package/dist/lib/structures/ExtendedUser.d.ts +26 -0
  74. package/dist/lib/structures/ExtendedUser.js +57 -0
  75. package/dist/lib/structures/ForumChannel.d.ts +11 -0
  76. package/dist/lib/structures/ForumChannel.js +19 -0
  77. package/dist/lib/structures/GroupChannel.d.ts +62 -0
  78. package/dist/lib/structures/GroupChannel.js +133 -0
  79. package/dist/lib/structures/Guild.d.ts +654 -0
  80. package/dist/lib/structures/Guild.js +1319 -0
  81. package/dist/lib/structures/GuildChannel.d.ts +34 -0
  82. package/dist/lib/structures/GuildChannel.js +75 -0
  83. package/dist/lib/structures/GuildPreview.d.ts +50 -0
  84. package/dist/lib/structures/GuildPreview.js +119 -0
  85. package/dist/lib/structures/GuildScheduledEvent.d.ts +60 -0
  86. package/dist/lib/structures/GuildScheduledEvent.js +154 -0
  87. package/dist/lib/structures/GuildTemplate.d.ts +55 -0
  88. package/dist/lib/structures/GuildTemplate.js +126 -0
  89. package/dist/lib/structures/Integration.d.ts +54 -0
  90. package/dist/lib/structures/Integration.js +156 -0
  91. package/dist/lib/structures/Interaction.d.ts +40 -0
  92. package/dist/lib/structures/Interaction.js +90 -0
  93. package/dist/lib/structures/InteractionResolvedChannel.d.ts +28 -0
  94. package/dist/lib/structures/InteractionResolvedChannel.js +45 -0
  95. package/dist/lib/structures/Invite.d.ts +64 -0
  96. package/dist/lib/structures/Invite.js +193 -0
  97. package/dist/lib/structures/InviteGuild.d.ts +52 -0
  98. package/dist/lib/structures/InviteGuild.js +88 -0
  99. package/dist/lib/structures/MediaChannel.d.ts +11 -0
  100. package/dist/lib/structures/MediaChannel.js +19 -0
  101. package/dist/lib/structures/Member.d.ts +122 -0
  102. package/dist/lib/structures/Member.js +255 -0
  103. package/dist/lib/structures/Message.d.ts +196 -0
  104. package/dist/lib/structures/Message.js +508 -0
  105. package/dist/lib/structures/ModalSubmitInteraction.d.ts +128 -0
  106. package/dist/lib/structures/ModalSubmitInteraction.js +240 -0
  107. package/dist/lib/structures/OAuthApplication.d.ts +79 -0
  108. package/dist/lib/structures/OAuthApplication.js +210 -0
  109. package/dist/lib/structures/OAuthGuild.d.ts +35 -0
  110. package/dist/lib/structures/OAuthGuild.js +61 -0
  111. package/dist/lib/structures/PartialApplication.d.ts +30 -0
  112. package/dist/lib/structures/PartialApplication.js +67 -0
  113. package/dist/lib/structures/Permission.d.ts +21 -0
  114. package/dist/lib/structures/Permission.js +68 -0
  115. package/dist/lib/structures/PermissionOverwrite.d.ts +26 -0
  116. package/dist/lib/structures/PermissionOverwrite.js +49 -0
  117. package/dist/lib/structures/PingInteraction.d.ts +16 -0
  118. package/dist/lib/structures/PingInteraction.js +26 -0
  119. package/dist/lib/structures/Poll.d.ts +28 -0
  120. package/dist/lib/structures/Poll.js +78 -0
  121. package/dist/lib/structures/PrivateChannel.d.ts +90 -0
  122. package/dist/lib/structures/PrivateChannel.js +131 -0
  123. package/dist/lib/structures/PrivateThreadChannel.d.ts +18 -0
  124. package/dist/lib/structures/PrivateThreadChannel.js +27 -0
  125. package/dist/lib/structures/PublicThreadChannel.d.ts +21 -0
  126. package/dist/lib/structures/PublicThreadChannel.js +37 -0
  127. package/dist/lib/structures/Role.d.ts +52 -0
  128. package/dist/lib/structures/Role.js +137 -0
  129. package/dist/lib/structures/SKU.d.ts +32 -0
  130. package/dist/lib/structures/SKU.js +53 -0
  131. package/dist/lib/structures/StageChannel.d.ts +33 -0
  132. package/dist/lib/structures/StageChannel.js +44 -0
  133. package/dist/lib/structures/StageInstance.d.ts +36 -0
  134. package/dist/lib/structures/StageInstance.js +94 -0
  135. package/dist/lib/structures/Team.d.ts +22 -0
  136. package/dist/lib/structures/Team.js +67 -0
  137. package/dist/lib/structures/TestEntitlement.d.ts +10 -0
  138. package/dist/lib/structures/TestEntitlement.js +21 -0
  139. package/dist/lib/structures/TextChannel.d.ts +34 -0
  140. package/dist/lib/structures/TextChannel.js +46 -0
  141. package/dist/lib/structures/TextableChannel.d.ts +158 -0
  142. package/dist/lib/structures/TextableChannel.js +276 -0
  143. package/dist/lib/structures/TextableVoiceChannel.d.ts +39 -0
  144. package/dist/lib/structures/TextableVoiceChannel.js +81 -0
  145. package/dist/lib/structures/ThreadChannel.d.ts +159 -0
  146. package/dist/lib/structures/ThreadChannel.js +295 -0
  147. package/dist/lib/structures/ThreadOnlyChannel.d.ts +99 -0
  148. package/dist/lib/structures/ThreadOnlyChannel.js +233 -0
  149. package/dist/lib/structures/ThreadableChannel.d.ts +36 -0
  150. package/dist/lib/structures/ThreadableChannel.js +58 -0
  151. package/dist/lib/structures/UnavailableGuild.d.ts +11 -0
  152. package/dist/lib/structures/UnavailableGuild.js +21 -0
  153. package/dist/lib/structures/User.d.ts +82 -0
  154. package/dist/lib/structures/User.js +168 -0
  155. package/dist/lib/structures/VoiceChannel.d.ts +20 -0
  156. package/dist/lib/structures/VoiceChannel.js +35 -0
  157. package/dist/lib/structures/VoiceState.d.ts +51 -0
  158. package/dist/lib/structures/VoiceState.js +140 -0
  159. package/dist/lib/structures/Webhook.d.ts +129 -0
  160. package/dist/lib/structures/Webhook.js +206 -0
  161. package/dist/lib/types/applications.d.ts +466 -0
  162. package/dist/lib/types/audit-log.d.ts +122 -0
  163. package/dist/lib/types/auto-moderation.d.ts +99 -0
  164. package/dist/lib/types/channels.d.ts +1260 -0
  165. package/dist/lib/types/client.d.ts +228 -0
  166. package/dist/lib/types/events.d.ts +265 -0
  167. package/dist/lib/types/gateway-raw.d.ts +584 -0
  168. package/dist/lib/types/gateway.d.ts +368 -0
  169. package/dist/lib/types/guild-template.d.ts +33 -0
  170. package/dist/lib/types/guilds.d.ts +855 -0
  171. package/dist/lib/types/index.d.ts +18 -0
  172. package/dist/lib/types/interactions.d.ts +377 -0
  173. package/dist/lib/types/json.d.ts +753 -0
  174. package/dist/lib/types/misc.d.ts +28 -0
  175. package/dist/lib/types/oauth.d.ts +201 -0
  176. package/dist/lib/types/request-handler.d.ts +52 -0
  177. package/dist/lib/types/scheduled-events.d.ts +88 -0
  178. package/dist/lib/types/shared.d.ts +9 -0
  179. package/dist/lib/types/users.d.ts +45 -0
  180. package/dist/lib/types/voice.d.ts +45 -0
  181. package/dist/lib/types/webhooks.d.ts +74 -0
  182. package/dist/lib/util/Collection.d.ts +47 -0
  183. package/dist/lib/util/Collection.js +78 -0
  184. package/dist/lib/util/Errors.d.ts +29 -0
  185. package/dist/lib/util/Errors.js +56 -0
  186. package/dist/lib/util/Routes.d.ts +127 -0
  187. package/dist/lib/util/Routes.js +248 -0
  188. package/dist/lib/util/SimpleCollection.d.ts +12 -0
  189. package/dist/lib/util/SimpleCollection.js +81 -0
  190. package/dist/lib/util/TypedCollection.d.ts +24 -0
  191. package/dist/lib/util/TypedCollection.js +76 -0
  192. package/dist/lib/util/TypedEmitter.d.ts +19 -0
  193. package/dist/lib/util/TypedEmitter.js +19 -0
  194. package/dist/lib/util/Util.d.ts +58 -0
  195. package/dist/lib/util/Util.js +535 -0
  196. package/dist/lib/util/interactions/InteractionOptionsWrapper.d.ts +170 -0
  197. package/dist/lib/util/interactions/InteractionOptionsWrapper.js +213 -0
  198. package/dist/lib/util/interactions/MessageInteractionResponse.d.ts +24 -0
  199. package/dist/lib/util/interactions/MessageInteractionResponse.js +28 -0
  200. package/dist/lib/util/interactions/ModalSubmitInteractionComponentsWrapper.d.ts +24 -0
  201. package/dist/lib/util/interactions/ModalSubmitInteractionComponentsWrapper.js +34 -0
  202. package/dist/lib/util/interactions/SelectMenuValuesWrapper.d.ts +60 -0
  203. package/dist/lib/util/interactions/SelectMenuValuesWrapper.js +124 -0
  204. package/dist/package.json +6 -6
  205. package/package.json +6 -6
@@ -0,0 +1,99 @@
1
+ /** @module Client */
2
+ import RESTManager from "./rest/RESTManager";
3
+ import TypedCollection from "./util/TypedCollection";
4
+ import PrivateChannel from "./structures/PrivateChannel";
5
+ import GroupChannel from "./structures/GroupChannel";
6
+ import User from "./structures/User";
7
+ import Guild from "./structures/Guild";
8
+ import type { AnyChannel, RawGroupChannel, RawPrivateChannel } from "./types/channels";
9
+ import type { RawGuild, RawUnavailableGuild } from "./types/guilds";
10
+ import type { RawUser } from "./types/users";
11
+ import type { ClientInstanceOptions, ClientOptions } from "./types/client";
12
+ import TypedEmitter from "./util/TypedEmitter";
13
+ import type ClientApplication from "./structures/ClientApplication";
14
+ import ShardManager from "./gateway/ShardManager";
15
+ import type { BotActivity, SendStatuses } from "./types/gateway";
16
+ import UnavailableGuild from "./structures/UnavailableGuild";
17
+ import type ExtendedUser from "./structures/ExtendedUser";
18
+ import Util from "./util/Util";
19
+ import type { ClientEvents } from "./types/events";
20
+ import type { JoinVoiceChannelOptions } from "./types/voice";
21
+ import type OAuthHelper from "./rest/OAuthHelper";
22
+ import type { DiscordGatewayAdapterLibraryMethods, VoiceConnection } from "@discordjs/voice";
23
+ /** The primary class for interfacing with Discord. See {@link ClientEvents | Client Events} for a list of events. */
24
+ export default class Client<E extends ClientEvents = ClientEvents> extends TypedEmitter<E> {
25
+ private _application?;
26
+ private _user?;
27
+ /** A key-value mapping of channel IDs to guild IDs. In most cases, every channel listed here should be cached in their respective guild's {@link Guild#channels | channels collection}. */
28
+ channelGuildMap: Record<string, string>;
29
+ groupChannels: TypedCollection<RawGroupChannel, GroupChannel>;
30
+ guildShardMap: Record<string, number>;
31
+ guilds: TypedCollection<RawGuild, Guild, [rest?: boolean]>;
32
+ options: ClientInstanceOptions;
33
+ privateChannels: TypedCollection<RawPrivateChannel, PrivateChannel>;
34
+ ready: boolean;
35
+ rest: RESTManager;
36
+ shards: ShardManager;
37
+ startTime: number;
38
+ /** A key-value mapping of thread IDs to guild IDs. In most cases, every channel listed here should be cached in their respective guild's {@link Guild#threads | threads collection}. */
39
+ threadGuildMap: Record<string, string>;
40
+ unavailableGuilds: TypedCollection<RawUnavailableGuild, UnavailableGuild>;
41
+ users: TypedCollection<RawUser, User>;
42
+ util: Util;
43
+ voiceAdapters: Map<string, DiscordGatewayAdapterLibraryMethods>;
44
+ /**
45
+ * @constructor
46
+ * @param options The options to create the client with.
47
+ */
48
+ constructor(options?: ClientOptions);
49
+ /** The client's partial application. This will throw an error if not using a gateway connection or no shard is READY. If using a client for rest only, consider enabling rest mode. */
50
+ get application(): ClientApplication;
51
+ get uptime(): number;
52
+ /** The client's user. This will throw an error if not using a gateway connection or no shard is READY. If using a client for rest only, consider enabling rest mode. */
53
+ get user(): ExtendedUser;
54
+ /** The active voice connections of this client. */
55
+ get voiceConnections(): Map<string, VoiceConnection>;
56
+ /** Connect the client to Discord. */
57
+ connect(): Promise<void>;
58
+ /**
59
+ * Disconnect all shards.
60
+ * @param reconnect If shards should be reconnected. Defaults to {@link Types/Gateway~GatewayOptions#autoReconnect | GatewayOptions#autoReconnect}
61
+ */
62
+ disconnect(reconnect?: boolean): void;
63
+ /**
64
+ * Edit the client's status across all shards.
65
+ * @param status The status.
66
+ * @param activities An array of activities.
67
+ */
68
+ editStatus(status: SendStatuses, activities?: Array<BotActivity>): Promise<void>;
69
+ /**
70
+ * Get a channel from an ID. This will return undefined if the channel is not cached.
71
+ * @param channelID The id of the channel.
72
+ */
73
+ getChannel<T extends AnyChannel = AnyChannel>(channelID: string): T | undefined;
74
+ /**
75
+ * Get a helper instance that can be used with a specific access token.
76
+ * @param accessToken The access token. Must be prefixed with `Bearer `.
77
+ */
78
+ getOAuthHelper(accessToken: string): OAuthHelper;
79
+ /**
80
+ * Get a voice connection.
81
+ * @param guildID The ID of the guild the voice channel belongs to.
82
+ */
83
+ getVoiceConnection(guildID: string): VoiceConnection | undefined;
84
+ /**
85
+ * Join a voice channel.
86
+ * @param options The options to join the channel with.
87
+ * */
88
+ joinVoiceChannel(options: JoinVoiceChannelOptions): VoiceConnection;
89
+ /**
90
+ * Leave a voice channel.
91
+ * @param guildID The ID of the guild the voice channel belongs to.
92
+ */
93
+ leaveVoiceChannel(guildID: string): void;
94
+ /**
95
+ * Initialize this client for rest only use. Currently, this sets both the `application` and `user` properties (if not already present), as would happen with a gateway connection.
96
+ * @param fakeReady If the client should emit a ready event. Defaults to true.
97
+ */
98
+ restMode(fakeReady?: boolean): Promise<this>;
99
+ }
@@ -0,0 +1,263 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ /** @module Client */
5
+ const RESTManager_1 = tslib_1.__importDefault(require("./rest/RESTManager"));
6
+ const TypedCollection_1 = tslib_1.__importDefault(require("./util/TypedCollection"));
7
+ const PrivateChannel_1 = tslib_1.__importDefault(require("./structures/PrivateChannel"));
8
+ const GroupChannel_1 = tslib_1.__importDefault(require("./structures/GroupChannel"));
9
+ const User_1 = tslib_1.__importDefault(require("./structures/User"));
10
+ const Guild_1 = tslib_1.__importDefault(require("./structures/Guild"));
11
+ const TypedEmitter_1 = tslib_1.__importDefault(require("./util/TypedEmitter"));
12
+ const ShardManager_1 = tslib_1.__importDefault(require("./gateway/ShardManager"));
13
+ const UnavailableGuild_1 = tslib_1.__importDefault(require("./structures/UnavailableGuild"));
14
+ const Util_1 = tslib_1.__importDefault(require("./util/Util"));
15
+ const Errors_1 = require("./util/Errors");
16
+ // @ts-ignore
17
+ let DiscordJSVoice;
18
+ try {
19
+ DiscordJSVoice = require("@discordjs/voice");
20
+ }
21
+ catch { }
22
+ /* eslint-enable @typescript-eslint/ban-ts-comment, @typescript-eslint/no-redundant-type-constituents, @typescript-eslint/no-var-requires, @typescript-eslint/no-unsafe-assignment, unicorn/prefer-module */
23
+ /** The primary class for interfacing with Discord. See {@link ClientEvents | Client Events} for a list of events. */
24
+ class Client extends TypedEmitter_1.default {
25
+ _application;
26
+ _user;
27
+ /** A key-value mapping of channel IDs to guild IDs. In most cases, every channel listed here should be cached in their respective guild's {@link Guild#channels | channels collection}. */
28
+ channelGuildMap;
29
+ groupChannels;
30
+ guildShardMap;
31
+ guilds;
32
+ options;
33
+ privateChannels;
34
+ ready;
35
+ rest;
36
+ shards;
37
+ startTime = 0;
38
+ /** A key-value mapping of thread IDs to guild IDs. In most cases, every channel listed here should be cached in their respective guild's {@link Guild#threads | threads collection}. */
39
+ threadGuildMap;
40
+ unavailableGuilds;
41
+ users;
42
+ util;
43
+ voiceAdapters;
44
+ /**
45
+ * @constructor
46
+ * @param options The options to create the client with.
47
+ */
48
+ constructor(options) {
49
+ super();
50
+ this.util = new Util_1.default(this);
51
+ const disableCache = options?.disableCache === true || options?.disableCache === "no-warning";
52
+ const colZero = {
53
+ auditLogEntries: 0,
54
+ autoModerationRules: 0,
55
+ channels: 0,
56
+ emojis: 0,
57
+ groupChannels: 0,
58
+ guilds: 0,
59
+ guildThreads: 0,
60
+ integrations: 0,
61
+ invites: 0,
62
+ members: 0,
63
+ messages: 0,
64
+ privateChannels: 0,
65
+ roles: 0,
66
+ scheduledEvents: 0,
67
+ stageInstances: 0,
68
+ stickers: 0,
69
+ unavailableGuilds: 0,
70
+ users: 0,
71
+ voiceMembers: 0,
72
+ voiceStates: 0
73
+ };
74
+ this.options = {
75
+ allowedMentions: options?.allowedMentions ?? {
76
+ everyone: false,
77
+ repliedUser: false,
78
+ users: true,
79
+ roles: true
80
+ },
81
+ auth: options?.auth ?? null,
82
+ collectionLimits: disableCache ? colZero : {
83
+ auditLogEntries: this.util._setLimit(options?.collectionLimits?.auditLogEntries, 50),
84
+ autoModerationRules: this.util._setLimit(options?.collectionLimits?.autoModerationRules, Infinity),
85
+ channels: this.util._setLimit(options?.collectionLimits?.channels, Infinity),
86
+ emojis: this.util._setLimit(options?.collectionLimits?.emojis, Infinity),
87
+ groupChannels: options?.collectionLimits?.groupChannels ?? 10,
88
+ guilds: options?.collectionLimits?.guilds ?? Infinity,
89
+ guildThreads: this.util._setLimit(options?.collectionLimits?.guildThreads, Infinity),
90
+ integrations: this.util._setLimit(options?.collectionLimits?.integrations, Infinity),
91
+ invites: this.util._setLimit(options?.collectionLimits?.invites, Infinity),
92
+ members: this.util._setLimit(options?.collectionLimits?.members, Infinity),
93
+ messages: this.util._setLimit(options?.collectionLimits?.messages, 100),
94
+ privateChannels: options?.collectionLimits?.privateChannels ?? 25,
95
+ roles: this.util._setLimit(options?.collectionLimits?.roles, Infinity),
96
+ scheduledEvents: this.util._setLimit(options?.collectionLimits?.scheduledEvents, Infinity),
97
+ stageInstances: this.util._setLimit(options?.collectionLimits?.stageInstances, Infinity),
98
+ stickers: this.util._setLimit(options?.collectionLimits?.stickers, Infinity),
99
+ unavailableGuilds: options?.collectionLimits?.unavailableGuilds ?? Infinity,
100
+ users: options?.collectionLimits?.users ?? Infinity,
101
+ voiceMembers: this.util._setLimit(options?.collectionLimits?.voiceMembers, Infinity),
102
+ voiceStates: this.util._setLimit(options?.collectionLimits?.voiceStates, Infinity)
103
+ },
104
+ defaultImageFormat: options?.defaultImageFormat ?? "png",
105
+ defaultImageSize: options?.defaultImageSize ?? 4096,
106
+ disableMemberLimitScaling: options?.disableMemberLimitScaling ?? false,
107
+ restMode: false,
108
+ disableCache
109
+ };
110
+ if (options?.disableCache === true) {
111
+ process.emitWarning("Enabling the disableCache option is not recommended. This will break many aspects of the library, as it is not designed to function without cache.", {
112
+ code: "OCEANIC_CACHE_DISABLED",
113
+ detail: "Set the disableCache option to the literal string \"no-warning\" to disable this warning."
114
+ });
115
+ }
116
+ if (disableCache && options?.collectionLimits !== undefined && JSON.stringify(options.collectionLimits) !== JSON.stringify(colZero)) {
117
+ process.emitWarning("Providing the collectionsLimit option when the disableCache option has been enabled is redundant. Any provided values will be ignored.", {
118
+ code: "OCEANIC_COLLECTIONS_LIMIT_WITH_CACHE_DISABLED",
119
+ detail: "Remove the collectionsLimit option, or zero out all of the possible options to disable this warning."
120
+ });
121
+ }
122
+ this.voiceAdapters = new Map();
123
+ this.channelGuildMap = {};
124
+ this.groupChannels = new TypedCollection_1.default(GroupChannel_1.default, this, this.options.collectionLimits.groupChannels);
125
+ this.guilds = new TypedCollection_1.default(Guild_1.default, this, this.options.collectionLimits.guilds);
126
+ this.privateChannels = new TypedCollection_1.default(PrivateChannel_1.default, this, this.options.collectionLimits.privateChannels);
127
+ this.ready = false;
128
+ this.guildShardMap = {};
129
+ this.rest = new RESTManager_1.default(this, options?.rest);
130
+ this.shards = new ShardManager_1.default(this, options?.gateway);
131
+ this.threadGuildMap = {};
132
+ this.unavailableGuilds = new TypedCollection_1.default(UnavailableGuild_1.default, this, this.options.collectionLimits.unavailableGuilds);
133
+ this.users = new TypedCollection_1.default(User_1.default, this, this.options.collectionLimits.users);
134
+ }
135
+ /** The client's partial application. This will throw an error if not using a gateway connection or no shard is READY. If using a client for rest only, consider enabling rest mode. */
136
+ get application() {
137
+ if (this._application) {
138
+ return this._application;
139
+ }
140
+ else {
141
+ throw new Errors_1.UncachedError(`${this.constructor.name}#application is not present if not using a gateway connection or no shard is READY. Consider making sure you have connected your client, or enable rest mode.`);
142
+ }
143
+ }
144
+ get uptime() {
145
+ return this.startTime ? Date.now() - this.startTime : 0;
146
+ }
147
+ /** The client's user. This will throw an error if not using a gateway connection or no shard is READY. If using a client for rest only, consider enabling rest mode. */
148
+ get user() {
149
+ if (this._user) {
150
+ return this._user;
151
+ }
152
+ else {
153
+ throw new Errors_1.UncachedError(`${this.constructor.name}#user is not present if not using a gateway connection or no shard is READY. Consider making sure you have connected your client, or enable rest mode.`);
154
+ }
155
+ }
156
+ /** The active voice connections of this client. */
157
+ get voiceConnections() {
158
+ if (!DiscordJSVoice) {
159
+ throw new Errors_1.DependencyError("Voice is only supported with @discordjs/voice installed.");
160
+ }
161
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access
162
+ return DiscordJSVoice.getVoiceConnections();
163
+ }
164
+ /** Connect the client to Discord. */
165
+ async connect() {
166
+ if (this.options.restMode) {
167
+ throw new TypeError("Rest mode has been enabled on this client. You cannot connect to the gateway.");
168
+ }
169
+ if (!this.options.auth || !this.options.auth.startsWith("Bot ")) {
170
+ throw new TypeError("You must provide a bot token to connect. Make sure it has been prefixed with `Bot `.");
171
+ }
172
+ await this.shards.connect();
173
+ }
174
+ /**
175
+ * Disconnect all shards.
176
+ * @param reconnect If shards should be reconnected. Defaults to {@link Types/Gateway~GatewayOptions#autoReconnect | GatewayOptions#autoReconnect}
177
+ */
178
+ disconnect(reconnect = this.shards.options.autoReconnect) {
179
+ return this.shards.disconnect(reconnect);
180
+ }
181
+ /**
182
+ * Edit the client's status across all shards.
183
+ * @param status The status.
184
+ * @param activities An array of activities.
185
+ */
186
+ async editStatus(status, activities = []) {
187
+ for (const [, shard] of this.shards)
188
+ await shard.editStatus(status, activities);
189
+ }
190
+ /**
191
+ * Get a channel from an ID. This will return undefined if the channel is not cached.
192
+ * @param channelID The id of the channel.
193
+ */
194
+ getChannel(channelID) {
195
+ if (this.channelGuildMap[channelID]) {
196
+ return this.guilds.get(this.channelGuildMap[channelID])?.channels.get(channelID);
197
+ }
198
+ else if (this.threadGuildMap[channelID]) {
199
+ return this.guilds.get(this.threadGuildMap[channelID])?.threads.get(channelID);
200
+ }
201
+ return (this.privateChannels.get(channelID) ?? this.groupChannels.get(channelID));
202
+ }
203
+ /**
204
+ * Get a helper instance that can be used with a specific access token.
205
+ * @param accessToken The access token. Must be prefixed with `Bearer `.
206
+ */
207
+ getOAuthHelper(accessToken) {
208
+ return this.rest.oauth.getHelper(accessToken);
209
+ }
210
+ /**
211
+ * Get a voice connection.
212
+ * @param guildID The ID of the guild the voice channel belongs to.
213
+ */
214
+ getVoiceConnection(guildID) {
215
+ if (!DiscordJSVoice) {
216
+ throw new Errors_1.DependencyError("Voice is only supported with @discordjs/voice installed.");
217
+ }
218
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call
219
+ return DiscordJSVoice.getVoiceConnection(guildID);
220
+ }
221
+ /**
222
+ * Join a voice channel.
223
+ * @param options The options to join the channel with.
224
+ * */
225
+ joinVoiceChannel(options) {
226
+ if (!DiscordJSVoice) {
227
+ throw new Errors_1.DependencyError("Voice is only supported with @discordjs/voice installed.");
228
+ }
229
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access
230
+ return DiscordJSVoice.joinVoiceChannel({
231
+ channelId: options.channelID,
232
+ guildId: options.guildID,
233
+ debug: options.debug,
234
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
235
+ adapterCreator: options.voiceAdapterCreator,
236
+ selfDeaf: options.selfDeaf,
237
+ selfMute: options.selfMute
238
+ });
239
+ }
240
+ /**
241
+ * Leave a voice channel.
242
+ * @param guildID The ID of the guild the voice channel belongs to.
243
+ */
244
+ leaveVoiceChannel(guildID) {
245
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-member-access
246
+ return this.getVoiceConnection(guildID)?.destroy();
247
+ }
248
+ /**
249
+ * Initialize this client for rest only use. Currently, this sets both the `application` and `user` properties (if not already present), as would happen with a gateway connection.
250
+ * @param fakeReady If the client should emit a ready event. Defaults to true.
251
+ */
252
+ async restMode(fakeReady = true) {
253
+ this._application ??= await this.rest.applications.getCurrent();
254
+ this._user ??= await this.rest.oauth.getCurrentUser();
255
+ this.options.restMode = true;
256
+ if (fakeReady) {
257
+ this.emit("ready");
258
+ }
259
+ return this;
260
+ }
261
+ }
262
+ exports.default = Client;
263
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL0NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxQkFBcUI7QUFDckIsNkVBQTZDO0FBQzdDLHFGQUFxRDtBQUNyRCx5RkFBeUQ7QUFDekQscUZBQXFEO0FBQ3JELHFFQUFxQztBQUNyQyx1RUFBdUM7QUFLdkMsK0VBQStDO0FBRS9DLGtGQUFrRDtBQUVsRCw2RkFBNkQ7QUFFN0QsK0RBQStCO0FBRy9CLDBDQUErRDtBQU8vRCxhQUFhO0FBQ2IsSUFBSSxjQUE2RCxDQUFDO0FBQ2xFLElBQUksQ0FBQztJQUNELGNBQWMsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUNqRCxDQUFDO0FBQUMsTUFBTSxDQUFDLENBQUEsQ0FBQztBQUNWLDRNQUE0TTtBQUU1TSxxSEFBcUg7QUFDckgsTUFBcUIsTUFBOEMsU0FBUSxzQkFBZTtJQUM5RSxZQUFZLENBQXFCO0lBQ2pDLEtBQUssQ0FBZ0I7SUFDN0IsMkxBQTJMO0lBQzNMLGVBQWUsQ0FBeUI7SUFDeEMsYUFBYSxDQUFpRDtJQUM5RCxhQUFhLENBQXlCO0lBQ3RDLE1BQU0sQ0FBcUQ7SUFDM0QsT0FBTyxDQUF3QjtJQUMvQixlQUFlLENBQXFEO0lBQ3BFLEtBQUssQ0FBVTtJQUNmLElBQUksQ0FBYztJQUNsQixNQUFNLENBQWU7SUFDckIsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNkLHdMQUF3TDtJQUN4TCxjQUFjLENBQXlCO0lBQ3ZDLGlCQUFpQixDQUF5RDtJQUMxRSxLQUFLLENBQWlDO0lBQ3RDLElBQUksQ0FBTztJQUNYLGFBQWEsQ0FBbUQ7SUFDaEU7OztPQUdHO0lBQ0gsWUFBWSxPQUF1QjtRQUMvQixLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxjQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsTUFBTSxZQUFZLEdBQUcsT0FBTyxFQUFFLFlB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