oceanic.js 1.10.3-dev.5c8c9d5 → 1.10.3-dev.8b65faf

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 +351 -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 +1 -1
  205. package/package.json +1 -1
@@ -0,0 +1,508 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ /** @module Message */
5
+ const Base_1 = tslib_1.__importDefault(require("./Base"));
6
+ const Attachment_1 = tslib_1.__importDefault(require("./Attachment"));
7
+ const User_1 = tslib_1.__importDefault(require("./User"));
8
+ const PartialApplication_1 = tslib_1.__importDefault(require("./PartialApplication"));
9
+ const GuildChannel_1 = tslib_1.__importDefault(require("./GuildChannel"));
10
+ const Poll_1 = tslib_1.__importDefault(require("./Poll"));
11
+ const TypedCollection_1 = tslib_1.__importDefault(require("../util/TypedCollection"));
12
+ const Constants_1 = require("../Constants");
13
+ const Routes = tslib_1.__importStar(require("../util/Routes"));
14
+ const Errors_1 = require("../util/Errors");
15
+ /** Represents a message. */
16
+ class Message extends Base_1.default {
17
+ _cachedChannel;
18
+ _cachedGuild;
19
+ /** The [activity](https://discord.com/developers/docs/resources/channel#message-object-message-activity-structure) associated with this message. */
20
+ activity;
21
+ /**
22
+ * The application associated with this message. This can be present in two scenarios:
23
+ * * If the message was from an interaction or application owned webhook ({@link ClientApplication} if any shard has reached READY, {@link PartialApplication} otherwise).
24
+ * * If the message has a rich presence embed ({@link PartialApplication})
25
+ */
26
+ application;
27
+ /**
28
+ * The ID of the application associated with this message. This can be present in two scenarios:
29
+ * * If the message was from an interaction or application owned webhook ({@link ClientApplication} if any shard has reached READY, {@link PartialApplication} otherwise).
30
+ * * If the message has a rich presence embed ({@link PartialApplication})
31
+ */
32
+ applicationID;
33
+ /** The attachments on this message. */
34
+ attachments;
35
+ /** The author of this message. */
36
+ author;
37
+ /** The ID of the channel this message was created in. */
38
+ channelID;
39
+ /** The components on this message. */
40
+ components;
41
+ /** The content of this message. */
42
+ content;
43
+ /** The timestamp at which this message was last edited. */
44
+ editedTimestamp;
45
+ /** The embeds on this message. */
46
+ embeds;
47
+ /** The [flags](https://discord.com/developers/docs/resources/channel#message-object-message-flags) on this message. */
48
+ flags;
49
+ /** The ID of the guild this message is in. */
50
+ guildID;
51
+ /**
52
+ * The interaction info, if this message was the result of an interaction.
53
+ * @deprecated Use {@link Message#interactionMetadata | Message#interactionMetadata } instead.
54
+ */
55
+ interaction;
56
+ /** The interaction info, if this message was the result of an interaction. */
57
+ interactionMetadata;
58
+ /** The member that created this message, if this message is in a guild. */
59
+ member;
60
+ /** Channels mentioned in a `CROSSPOSTED` channel follower message. See [Discord's docs](https://discord.com/developers/docs/resources/channel#channel-mention-object) for more information. */
61
+ mentionChannels;
62
+ /** The mentions in this message. */
63
+ mentions;
64
+ /** If this message is a `REPLY` or `THREAD_STARTER_MESSAGE`, some info about the referenced message. */
65
+ messageReference;
66
+ /** A snapshot of the forwarded message. */
67
+ messageSnapshots;
68
+ /** A nonce for ensuring a message was sent. */
69
+ nonce;
70
+ /** If this message is pinned. */
71
+ pinned;
72
+ /** The poll on this message, if any. */
73
+ poll;
74
+ /** This message's relative position, if in a thread. */
75
+ position;
76
+ /** The reactions on this message. */
77
+ reactions;
78
+ /** If this message is a `REPLY` or `THREAD_STARTER_MESSAGE`, this will be the message that's referenced. */
79
+ referencedMessage;
80
+ /** The data of the role subscription purchase or renewal that prompted this message. */
81
+ roleSubscriptionData;
82
+ // stickers exists, but is deprecated
83
+ /** The sticker items on this message. */
84
+ stickerItems;
85
+ /** The thread associated with this message, if any. */
86
+ thread;
87
+ /** The timestamp at which this message was sent. */
88
+ timestamp;
89
+ /** If this message was read aloud. */
90
+ tts;
91
+ /** The [type](https://discord.com/developers/docs/resources/channel#message-object-message-types) of this message. */
92
+ type;
93
+ /** The webhook associated with this message, if sent via a webhook. This only has an `id` property. */
94
+ webhookID;
95
+ constructor(data, client) {
96
+ super(data.id, client);
97
+ this.attachments = new TypedCollection_1.default(Attachment_1.default, client);
98
+ this.channelID = data.channel_id;
99
+ this.components = [];
100
+ this.content = data.content ?? "";
101
+ this.editedTimestamp = null;
102
+ this.embeds = [];
103
+ this.flags = 0;
104
+ this.guildID = (data.guild_id === undefined ? null : data.guild_id);
105
+ this.member = (data.member === undefined ? undefined : this.client.util.updateMember(data.guild_id, data.author.id, { ...data.member, user: data.author }));
106
+ this.mentions = {
107
+ channels: [],
108
+ everyone: false,
109
+ members: [],
110
+ roles: [],
111
+ users: []
112
+ };
113
+ this.pinned = !!data.pinned;
114
+ this.poll = data.poll ? new Poll_1.default(data.poll, client, this) : undefined;
115
+ this.reactions = [];
116
+ // message updates can be missing a timestamp
117
+ this.timestamp = data.timestamp === undefined ? Base_1.default.getCreatedAt(this.id) : new Date(data.timestamp);
118
+ this.tts = !!data.tts;
119
+ this.type = data.type;
120
+ this.webhookID = data.webhook_id;
121
+ this.update(data);
122
+ // don't add webhook users to the cache
123
+ this.author = data.webhook_id === undefined ? client.users.update(data.author) : new User_1.default(data.author, client);
124
+ if (data.application_id === undefined) {
125
+ this.applicationID = null;
126
+ }
127
+ else {
128
+ if (client["_application"] && client.application.id === data.application_id) {
129
+ if (data.application) {
130
+ client.application["update"](data.application);
131
+ }
132
+ this.application = client.application;
133
+ }
134
+ else {
135
+ this.application = data.application ? new PartialApplication_1.default(data.application, client) : undefined;
136
+ }
137
+ this.applicationID = data.application_id;
138
+ }
139
+ }
140
+ update(data) {
141
+ if (data.mention_everyone !== undefined) {
142
+ this.mentions.everyone = data.mention_everyone;
143
+ }
144
+ if (data.mention_roles !== undefined) {
145
+ this.mentions.roles = data.mention_roles;
146
+ }
147
+ if (data.mentions !== undefined) {
148
+ const members = [];
149
+ this.mentions.users = data.mentions.map(user => {
150
+ if (this.channel && "guildID" in this.channel && user.member) {
151
+ members.push(this.client.util.updateMember(this.channel.guildID, user.id, { ...user.member, user }));
152
+ }
153
+ return this.client.users.update(user);
154
+ });
155
+ this.mentions.members = members;
156
+ }
157
+ if (data.activity !== undefined) {
158
+ this.activity = data.activity;
159
+ }
160
+ if (data.attachments !== undefined) {
161
+ if (this.attachments.size !== 0) {
162
+ for (const id of this.attachments.keys()) {
163
+ if (!data.attachments.some(attachment => attachment.id === id)) {
164
+ this.attachments.delete(id);
165
+ }
166
+ }
167
+ }
168
+ for (const attachment of data.attachments) {
169
+ this.attachments.update(attachment);
170
+ }
171
+ }
172
+ if (data.components !== undefined) {
173
+ this.components = this.client.util.componentsToParsed(data.components);
174
+ }
175
+ if (data.content !== undefined) {
176
+ this.content = data.content;
177
+ this.mentions.channels = (data.content.match(/<#\d{17,21}>/g) ?? []).map(mention => mention.slice(2, -1));
178
+ }
179
+ if (data.edited_timestamp !== undefined) {
180
+ this.editedTimestamp = data.edited_timestamp ? new Date(data.edited_timestamp) : null;
181
+ }
182
+ if (data.embeds !== undefined) {
183
+ this.embeds = this.client.util.embedsToParsed(data.embeds);
184
+ }
185
+ if (data.flags !== undefined) {
186
+ this.flags = data.flags;
187
+ }
188
+ if (data.interaction !== undefined) {
189
+ let member;
190
+ if (data.interaction.member) {
191
+ member = {
192
+ ...data.interaction.member,
193
+ user: data.interaction.user
194
+ };
195
+ }
196
+ this.interaction = {
197
+ id: data.interaction.id,
198
+ member: member ? this.client.util.updateMember(data.guild_id, member.user.id, member) : undefined,
199
+ name: data.interaction.name,
200
+ type: data.interaction.type,
201
+ user: this.client.users.update(data.interaction.user)
202
+ };
203
+ }
204
+ if (data.interaction_metadata !== undefined) {
205
+ this.interactionMetadata = {
206
+ authorizingIntegrationOwners: data.interaction_metadata.authorizing_integration_owners,
207
+ id: data.interaction_metadata.id,
208
+ interactedMessageID: data.interaction_metadata.interacted_message_id,
209
+ name: data.interaction_metadata.name,
210
+ originalResponseMessageID: data.interaction_metadata.original_response_message_id,
211
+ type: data.interaction_metadata.type,
212
+ user: this.client.users.update(data.interaction_metadata.user),
213
+ triggeringInteractionMetadata: data.interaction_metadata.triggering_interaction_metadata === undefined ? undefined : {
214
+ authorizingIntegrationOwners: data.interaction_metadata.triggering_interaction_metadata.authorizing_integration_owners,
215
+ id: data.interaction_metadata.triggering_interaction_metadata.id,
216
+ interactedMessageID: data.interaction_metadata.triggering_interaction_metadata.interacted_message_id,
217
+ originalResponseMessageID: data.interaction_metadata.triggering_interaction_metadata.original_response_message_id,
218
+ type: data.interaction_metadata.triggering_interaction_metadata.type,
219
+ user: this.client.users.update(data.interaction_metadata.triggering_interaction_metadata.user)
220
+ }
221
+ };
222
+ }
223
+ if (data.message_reference) {
224
+ this.messageReference = {
225
+ channelID: data.message_reference.channel_id,
226
+ failIfNotExists: data.message_reference.fail_if_not_exists,
227
+ guildID: data.message_reference.guild_id,
228
+ messageID: data.message_reference.message_id,
229
+ type: data.message_reference.type
230
+ };
231
+ }
232
+ if (data.message_snapshots) {
233
+ this.messageSnapshots = data.message_snapshots.map(snap => {
234
+ const attachments = new TypedCollection_1.default(Attachment_1.default, this.client);
235
+ snap.message.attachments.map(a => attachments.update(a));
236
+ return {
237
+ guildID: snap.guild_id,
238
+ message: {
239
+ attachments,
240
+ content: snap.message.content,
241
+ editedTimestamp: snap.message.edited_timestamp ? new Date(snap.message.edited_timestamp) : null,
242
+ embeds: snap.message.embeds,
243
+ flags: snap.message.flags ?? 0,
244
+ timestamp: new Date(snap.message.timestamp)
245
+ }
246
+ };
247
+ });
248
+ }
249
+ if (data.nonce !== undefined) {
250
+ this.nonce = data.nonce;
251
+ }
252
+ if (data.pinned !== undefined) {
253
+ this.pinned = data.pinned;
254
+ }
255
+ if (data.position !== undefined) {
256
+ this.position = data.position;
257
+ }
258
+ if (data.reactions) {
259
+ this.reactions = data.reactions.map(r => ({
260
+ burstColors: r.burst_colors,
261
+ count: r.count,
262
+ countDetails: r.count_details,
263
+ emoji: r.emoji,
264
+ me: r.me,
265
+ meBurst: r.me_burst
266
+ }));
267
+ }
268
+ if (data.referenced_message !== undefined) {
269
+ if (data.referenced_message === null) {
270
+ this.referencedMessage = null;
271
+ }
272
+ else {
273
+ this.referencedMessage = this.channel ? this.channel.messages?.update(data.referenced_message) : new Message(data.referenced_message, this.client);
274
+ }
275
+ }
276
+ if (data.role_subscription_data !== undefined) {
277
+ this.roleSubscriptionData = {
278
+ isRenewal: data.role_subscription_data.is_renewal,
279
+ roleSubscriptionListingID: data.role_subscription_data.role_subscription_listing_id,
280
+ tierName: data.role_subscription_data.tier_name,
281
+ totalMonthsSubscribed: data.role_subscription_data.total_months_subscribed
282
+ };
283
+ }
284
+ if (data.sticker_items !== undefined) {
285
+ this.stickerItems = data.sticker_items;
286
+ }
287
+ if (data.thread !== undefined) {
288
+ this.thread = this.client.util.updateThread(data.thread);
289
+ }
290
+ }
291
+ /** The channel this message was created in. */
292
+ get channel() {
293
+ return this._cachedChannel ??= this.client.getChannel(this.channelID);
294
+ }
295
+ /** The guild this message is in. This will throw an error if the guild is not cached. */
296
+ get guild() {
297
+ if (this.guildID !== null && this._cachedGuild !== null) {
298
+ this._cachedGuild ??= this.client.guilds.get(this.guildID);
299
+ if (!this._cachedGuild) {
300
+ if (this.client.options.restMode) {
301
+ throw new Errors_1.UncachedError(`${this.constructor.name}#guild is not present when rest mode is enabled.`);
302
+ }
303
+ if (!this.client.shards.connected) {
304
+ throw new Errors_1.UncachedError(`${this.constructor.name}#guild is not present without a gateway connection.`);
305
+ }
306
+ throw new Errors_1.UncachedError(`${this.constructor.name}#guild is not present.`);
307
+ }
308
+ return this._cachedGuild;
309
+ }
310
+ return this._cachedGuild === null ? this._cachedGuild : (this._cachedGuild = null);
311
+ }
312
+ /** A link to this message. */
313
+ get jumpLink() {
314
+ return `${Constants_1.BASE_URL}${Routes.MESSAGE_LINK(this.guildID ?? "@me", this.channelID, this.id)}`;
315
+ }
316
+ /**
317
+ * Add a reaction to this message.
318
+ * @param emoji The reaction to add to the message. `name:id` for custom emojis, and the unicode codepoint for default emojis.
319
+ */
320
+ async createReaction(emoji) {
321
+ return this.client.rest.channels.createReaction(this.channelID, this.id, emoji);
322
+ }
323
+ /**
324
+ * Crosspost this message in an announcement channel.
325
+ */
326
+ async crosspost() {
327
+ return this.client.rest.channels.crosspostMessage(this.channelID, this.id);
328
+ }
329
+ /**
330
+ * Delete this message.
331
+ * @param reason The reason for deleting the message.
332
+ */
333
+ async delete(reason) {
334
+ return this.client.rest.channels.deleteMessage(this.channelID, this.id, reason);
335
+ }
336
+ /**
337
+ * Remove a reaction from this message.
338
+ * @param emoji The reaction to remove from the message. `name:id` for custom emojis, and the unicode codepoint for default emojis.
339
+ * @param user The user to remove the reaction from, `@me` for the current user (default).
340
+ */
341
+ async deleteReaction(emoji, user = "@me") {
342
+ return this.client.rest.channels.deleteReaction(this.channelID, this.id, emoji, user);
343
+ }
344
+ /**
345
+ * Remove all, or a specific emoji's reactions from this message.
346
+ * @param emoji The reaction to remove from the message. `name:id` for custom emojis, and the unicode codepoint for default emojis. Omit to remove all reactions.
347
+ */
348
+ async deleteReactions(emoji) {
349
+ return this.client.rest.channels.deleteReactions(this.channelID, this.id, emoji);
350
+ }
351
+ /**
352
+ * Delete this message as a webhook.
353
+ * @param token The token of the webhook.
354
+ * @param options Options for deleting the message.
355
+ */
356
+ async deleteWebhook(token, options) {
357
+ if (!this.webhookID) {
358
+ throw new TypeError("This message is not a webhook message.");
359
+ }
360
+ return this.client.rest.webhooks.deleteMessage(this.webhookID, token, this.id, options);
361
+ }
362
+ /**
363
+ * Edit this message.
364
+ * @param options The options for editing the message.
365
+ */
366
+ async edit(options) {
367
+ return this.client.rest.channels.editMessage(this.channelID, this.id, options);
368
+ }
369
+ /**
370
+ * Edit this message as a webhook.
371
+ * @param token The token of the webhook.
372
+ * @param options The options for editing the message.
373
+ */
374
+ async editWebhook(token, options) {
375
+ if (!this.webhookID) {
376
+ throw new TypeError("This message is not a webhook message.");
377
+ }
378
+ return this.client.rest.webhooks.editMessage(this.webhookID, token, this.id, options);
379
+ }
380
+ /** End this The poll on this message now. */
381
+ async expire() {
382
+ if (this.poll === undefined) {
383
+ throw new TypeError("Message does not have a poll.");
384
+ }
385
+ await this.poll.expire();
386
+ }
387
+ /**
388
+ * Get the users that voted on a poll answer.
389
+ * @param answerID The ID of the poll answer to get voters for.
390
+ * @param options The options for getting the voters.
391
+ */
392
+ async getPollAnswerUsers(answerID, options) {
393
+ if (this.poll === undefined) {
394
+ throw new TypeError("Message does not have a poll.");
395
+ }
396
+ return this.poll.getAnswerUsers(answerID, options);
397
+ }
398
+ /**
399
+ * Get the users who reacted with a specific emoji on this message.
400
+ * @param emoji The reaction to remove from the message. `name:id` for custom emojis, and the unicode codepoint for default emojis.
401
+ * @param options The options for getting the reactions.
402
+ */
403
+ async getReactions(emoji, options) {
404
+ return this.client.rest.channels.getReactions(this.channelID, this.id, emoji, options);
405
+ }
406
+ /** Whether this message belongs to a cached guild channel. The only difference on using this method over a simple if statement is to easily update all the message properties typing definitions based on the channel it belongs to. */
407
+ inCachedGuildChannel() {
408
+ return this.channel instanceof GuildChannel_1.default;
409
+ }
410
+ /** Whether this message belongs to a direct message channel (PrivateChannel or uncached). The only difference on using this method over a simple if statement is to easily update all the message properties typing definitions based on the channel it belongs to. */
411
+ inDirectMessageChannel() {
412
+ return this.guildID === null;
413
+ }
414
+ /**
415
+ * Pin this message.
416
+ * @param reason The reason for pinning the message.
417
+ */
418
+ async pin(reason) {
419
+ return this.client.rest.channels.pinMessage(this.channelID, this.id, reason);
420
+ }
421
+ /**
422
+ * Create a thread from this message.
423
+ * @param options The options for creating the thread.
424
+ */
425
+ async startThread(options) {
426
+ return this.client.rest.channels.startThreadFromMessage(this.channelID, this.id, options);
427
+ }
428
+ toJSON() {
429
+ return {
430
+ ...super.toJSON(),
431
+ activity: this.activity,
432
+ applicationID: this.applicationID ?? undefined,
433
+ attachments: this.attachments.map(attachment => attachment.toJSON()),
434
+ author: this.author.toJSON(),
435
+ channelID: this.channelID,
436
+ components: this.components,
437
+ content: this.content,
438
+ editedTimestamp: this.editedTimestamp?.getTime() ?? null,
439
+ embeds: this.embeds,
440
+ flags: this.flags,
441
+ guildID: this.guildID ?? undefined,
442
+ interaction: this.interaction === undefined ? undefined : {
443
+ id: this.interaction.id,
444
+ member: this.interaction.member?.toJSON(),
445
+ name: this.interaction.name,
446
+ type: this.interaction.type,
447
+ user: this.interaction.user.toJSON()
448
+ },
449
+ interactionMetadata: this.interactionMetadata === undefined ? undefined : {
450
+ id: this.interactionMetadata.id,
451
+ interactedMessageID: this.interactionMetadata.interactedMessageID,
452
+ name: this.interactionMetadata.name,
453
+ originalResponseMessageID: this.interactionMetadata.originalResponseMessageID,
454
+ type: this.interactionMetadata.type,
455
+ user: this.interactionMetadata.user instanceof User_1.default ? this.interactionMetadata.user.toJSON() : this.interactionMetadata.user,
456
+ authorizingIntegrationOwners: this.interactionMetadata.authorizingIntegrationOwners,
457
+ triggeringInteractionMetadata: this.interactionMetadata.triggeringInteractionMetadata === undefined ? undefined : {
458
+ id: this.interactionMetadata.triggeringInteractionMetadata.id,
459
+ interactedMessageID: this.interactionMetadata.triggeringInteractionMetadata.interactedMessageID,
460
+ originalResponseMessageID: this.interactionMetadata.triggeringInteractionMetadata.originalResponseMessageID,
461
+ type: this.interactionMetadata.triggeringInteractionMetadata.type,
462
+ user: this.interactionMetadata.triggeringInteractionMetadata.user instanceof User_1.default ? this.interactionMetadata.triggeringInteractionMetadata.user.toJSON() : this.interactionMetadata.triggeringInteractionMetadata.user,
463
+ authorizingIntegrationOwners: this.interactionMetadata.triggeringInteractionMetadata.authorizingIntegrationOwners
464
+ }
465
+ },
466
+ mentionChannels: this.mentionChannels,
467
+ mentions: {
468
+ channels: this.mentions.channels,
469
+ everyone: this.mentions.everyone,
470
+ members: this.mentions.members.map(member => member.toJSON()),
471
+ roles: this.mentions.roles,
472
+ users: this.mentions.users.map(user => user.toJSON())
473
+ },
474
+ messageReference: this.messageReference,
475
+ messageSnapshots: this.messageSnapshots?.map(snap => ({
476
+ guildID: snap.guildID,
477
+ message: {
478
+ attachments: snap.message.attachments.map(attachment => attachment.toJSON()),
479
+ content: snap.message.content,
480
+ editedTimestamp: snap.message.editedTimestamp?.getTime() ?? null,
481
+ embeds: snap.message.embeds,
482
+ flags: snap.message.flags,
483
+ timestamp: snap.message.timestamp.getTime()
484
+ }
485
+ })),
486
+ nonce: this.nonce,
487
+ pinned: this.pinned,
488
+ position: this.position,
489
+ reactions: this.reactions,
490
+ referencedMessage: this.referencedMessage?.toJSON(),
491
+ stickerItems: this.stickerItems,
492
+ thread: this.thread?.toJSON(),
493
+ timestamp: this.timestamp.getTime(),
494
+ tts: this.tts,
495
+ type: this.type,
496
+ webhook: this.webhookID
497
+ };
498
+ }
499
+ /**
500
+ * Unpin this message.
501
+ * @param reason The reason for unpinning the message.
502
+ */
503
+ async unpin(reason) {
504
+ return this.client.rest.channels.unpinMessage(this.channelID, this.id, reason);
505
+ }
506
+ }
507
+ exports.default = Message;
508
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWVzc2FnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9zdHJ1Y3R1cmVzL01lc3NhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsc0JBQXNCO0FBQ3RCLDBEQUEwQjtBQUMxQixzRUFBc0M7QUFDdEMsMERBQTBCO0FBRzFCLHNGQUFzRDtBQU10RCwwRUFBMEM7QUFFMUMsMERBQTBCO0FBRTFCLHNGQUFzRDtBQUN0RCw0Q0FBMkQ7QUEyQjNELCtEQUF5QztBQUN6QywyQ0FBK0M7QUFFL0MsNEJBQTRCO0FBQzVCLE1BQXFCLE9BQWlGLFNBQVEsY0FBSTtJQUN0RyxjQUFjLENBQWdEO0lBQzlELFlBQVksQ0FBNEQ7SUFDaEYsb0pBQW9KO0lBQ3BKLFFBQVEsQ0FBbUI7SUFDM0I7Ozs7T0FJRztJQUNILFdBQVcsQ0FBMEM7SUFDckQ7Ozs7T0FJRztJQUNILGFBQWEsQ0FBZ0I7SUFDN0IsdUNBQXVDO0lBQ3ZDLFdBQVcsQ0FBNkM7SUFDeEQsa0NBQWtDO0lBQ2xDLE1BQU0sQ0FBTztJQUNiLHlEQUF5RDtJQUN6RCxTQUFTLENBQVM7SUFDbEIsc0NBQXNDO0lBQ3RDLFVBQVUsQ0FBMEI7SUFDcEMsbUNBQW1DO0lBQ25DLE9BQU8sQ0FBUztJQUNoQiwyREFBMkQ7SUFDM0QsZUFBZSxDQUFjO0lBQzdCLGtDQUFrQztJQUNsQyxNQUFNLENBQWU7SUFDckIsdUhBQXVIO0lBQ3ZILEtBQUssQ0FBUztJQUNkLDhDQUE4QztJQUM5QyxPQUFPLENBQTZEO0lBQ3BFOzs7T0FHRztJQUNILFdBQVcsQ0FBc0I7SUFDakMsOEVBQThFO0lBQzlFLG1CQUFtQixDQUE4QjtJQUNqRCwyRUFBMkU7SUFDM0UsTUFBTSxDQUFrRTtJQUN4RSwrTEFBK0w7SUFDL0wsZUFBZSxDQUF5QjtJQUN4QyxvQ0FBb0M7SUFDcEMsUUFBUSxDQVdOO0lBQ0Ysd0dBQXdHO0lBQ3hHLGdCQUFnQixDQUFvQjtJQUNwQywyQ0FBMkM7SUFDM0MsZ0JBQWdC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