oceanic.js 1.10.3-dev.c6c9f52 → 1.10.3-dev.ca8b6e8

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 +1215 -0
  4. package/dist/lib/Constants.js +1513 -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 +1160 -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 +194 -0
  104. package/dist/lib/structures/Message.js +477 -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 +1244 -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 +742 -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,276 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ /** @module TextableChannel */
5
+ const GuildChannel_1 = tslib_1.__importDefault(require("./GuildChannel"));
6
+ const PermissionOverwrite_1 = tslib_1.__importDefault(require("./PermissionOverwrite"));
7
+ const Message_1 = tslib_1.__importDefault(require("./Message"));
8
+ const Permission_1 = tslib_1.__importDefault(require("./Permission"));
9
+ const Constants_1 = require("../Constants");
10
+ const TypedCollection_1 = tslib_1.__importDefault(require("../util/TypedCollection"));
11
+ const Errors_1 = require("../util/Errors");
12
+ /** Represents a guild textable channel. */
13
+ class TextableChannel extends GuildChannel_1.default {
14
+ /** The last message sent in this channel. This will only be present if a message has been sent within the current session. */
15
+ lastMessage;
16
+ /** The ID of last message sent in this channel. */
17
+ lastMessageID;
18
+ /** The cached messages in this channel. */
19
+ messages;
20
+ /** If this channel is age gated. */
21
+ nsfw;
22
+ /** The permission overwrites of this channel. */
23
+ permissionOverwrites;
24
+ /** The position of this channel on the sidebar. */
25
+ position;
26
+ /** The amount of seconds between non-moderators sending messages. */
27
+ rateLimitPerUser;
28
+ /** The topic of the channel. */
29
+ topic;
30
+ constructor(data, client) {
31
+ super(data, client);
32
+ this.lastMessageID = data.last_message_id;
33
+ this.messages = new TypedCollection_1.default((Message_1.default), client, this.client.util._getLimit("messages", this.id));
34
+ this.nsfw = data.nsfw;
35
+ this.permissionOverwrites = new TypedCollection_1.default(PermissionOverwrite_1.default, client);
36
+ this.position = data.position;
37
+ this.rateLimitPerUser = data.rate_limit_per_user;
38
+ this.topic = data.topic;
39
+ this.update(data);
40
+ }
41
+ update(data) {
42
+ super.update(data);
43
+ if (data.last_message_id !== undefined) {
44
+ this.lastMessage = data.last_message_id === null ? null : this.messages.get(data.last_message_id);
45
+ this.lastMessageID = data.last_message_id;
46
+ }
47
+ if (data.nsfw !== undefined) {
48
+ this.nsfw = data.nsfw;
49
+ }
50
+ if (data.position !== undefined) {
51
+ this.position = data.position;
52
+ }
53
+ if (data.rate_limit_per_user !== undefined) {
54
+ this.rateLimitPerUser = data.rate_limit_per_user;
55
+ }
56
+ if (data.topic !== undefined) {
57
+ this.topic = data.topic;
58
+ }
59
+ if (data.permission_overwrites !== undefined) {
60
+ for (const id of this.permissionOverwrites.keys()) {
61
+ if (!data.permission_overwrites.some(overwrite => overwrite.id === id)) {
62
+ this.permissionOverwrites.delete(id);
63
+ }
64
+ }
65
+ data.permission_overwrites.map(overwrite => this.permissionOverwrites.update(overwrite));
66
+ }
67
+ }
68
+ get parent() {
69
+ return super.parent;
70
+ }
71
+ /**
72
+ * Create an invite for this channel. If the guild is not a `COMMUNITY` server, invites can only be made to last 30 days.
73
+ * @param options The options for the invite.
74
+ */
75
+ async createInvite(options) {
76
+ return this.client.rest.channels.createInvite(this.id, options);
77
+ }
78
+ /**
79
+ * Create a message in this channel.
80
+ * @param options The options for the message.
81
+ */
82
+ async createMessage(options) {
83
+ return this.client.rest.channels.createMessage(this.id, options);
84
+ }
85
+ /**
86
+ * Add a reaction to a message in this channel.
87
+ * @param messageID The ID of the message to add a reaction to.
88
+ * @param emoji The reaction to add to the message. `name:id` for custom emojis, and the unicode codepoint for default emojis.
89
+ */
90
+ async createReaction(messageID, emoji) {
91
+ return this.client.rest.channels.createReaction(this.id, messageID, emoji);
92
+ }
93
+ /**
94
+ * Create a webhook in this channel.
95
+ * @param options The options to create the webhook with.
96
+ */
97
+ async createWebhook(options) {
98
+ return this.client.rest.webhooks.create(this.id, options);
99
+ }
100
+ /**
101
+ * Delete a message in this channel.
102
+ * @param messageID The ID of the message to delete.
103
+ * @param reason The reason for deleting the message.
104
+ */
105
+ async deleteMessage(messageID, reason) {
106
+ return this.client.rest.channels.deleteMessage(this.id, messageID, reason);
107
+ }
108
+ /**
109
+ * Bulk delete messages in this channel.
110
+ * @param messageIDs The IDs of the messages to delete. Any duplicates or messages older than two weeks will cause an error.
111
+ * @param reason The reason for deleting the messages.
112
+ */
113
+ async deleteMessages(messageIDs, reason) {
114
+ return this.client.rest.channels.deleteMessages(this.id, messageIDs, reason);
115
+ }
116
+ /**
117
+ * Delete a permission overwrite on this channel.
118
+ * @param overwriteID The ID of the permission overwrite to delete.
119
+ * @param reason The reason for deleting the permission overwrite.
120
+ */
121
+ async deletePermission(overwriteID, reason) {
122
+ return this.client.rest.channels.deletePermission(this.id, overwriteID, reason);
123
+ }
124
+ /**
125
+ * Remove a reaction from a message in this channel.
126
+ * @param messageID The ID of the message to remove a reaction from.
127
+ * @param emoji The reaction to remove from the message. `name:id` for custom emojis, and the unicode codepoint for default emojis.
128
+ * @param user The user to remove the reaction from, `@me` for the current user (default).
129
+ */
130
+ async deleteReaction(messageID, emoji, user = "@me") {
131
+ return this.client.rest.channels.deleteReaction(this.id, messageID, emoji, user);
132
+ }
133
+ /**
134
+ * Remove all, or a specific emoji's reactions from a message in this channel.
135
+ * @param messageID The ID of the message to remove reactions from.
136
+ * @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.
137
+ */
138
+ async deleteReactions(messageID, emoji) {
139
+ return this.client.rest.channels.deleteReactions(this.id, messageID, emoji);
140
+ }
141
+ /**
142
+ * Edit a message in this channel.
143
+ * @param messageID The ID of the message to edit.
144
+ * @param options The options for editing the message.
145
+ */
146
+ async editMessage(messageID, options) {
147
+ return this.client.rest.channels.editMessage(this.id, messageID, options);
148
+ }
149
+ /**
150
+ * Edit a permission overwrite on this channel.
151
+ * @param overwriteID The ID of the permission overwrite to edit.
152
+ * @param options The options for editing the permission overwrite.
153
+ */
154
+ async editPermission(overwriteID, options) {
155
+ return this.client.rest.channels.editPermission(this.id, overwriteID, options);
156
+ }
157
+ /**
158
+ * Get the invites of this channel.
159
+ */
160
+ async getInvites() {
161
+ return this.client.rest.channels.getInvites(this.id);
162
+ }
163
+ /**
164
+ * Get a message in this channel.
165
+ * @param messageID The ID of the message to get.
166
+ */
167
+ async getMessage(messageID) {
168
+ return this.client.rest.channels.getMessage(this.id, messageID);
169
+ }
170
+ /**
171
+ * Get messages in this channel.
172
+ * @param options The options for getting the messages. `before`, `after`, and `around `All are mutually exclusive.
173
+ */
174
+ async getMessages(options) {
175
+ return this.client.rest.channels.getMessages(this.id, options);
176
+ }
177
+ /**
178
+ * Get the pinned messages in this channel.
179
+ */
180
+ async getPinnedMessages() {
181
+ return this.client.rest.channels.getPinnedMessages(this.id);
182
+ }
183
+ /**
184
+ * Get the users who reacted with a specific emoji on a message in this channel.
185
+ * @param messageID The ID of the message to get reactions from.
186
+ * @param emoji The reaction to remove from the message. `name:id` for custom emojis, and the unicode codepoint for default emojis.
187
+ * @param options The options for getting the reactions.
188
+ */
189
+ async getReactions(messageID, emoji, options) {
190
+ return this.client.rest.channels.getReactions(this.id, messageID, emoji, options);
191
+ }
192
+ /**
193
+ * Get the webhooks in this channel.
194
+ */
195
+ async getWebhooks() {
196
+ return this.client.rest.webhooks.getForChannel(this.id);
197
+ }
198
+ /**
199
+ * Get the permissions of a member. If providing an id, the member must be cached.
200
+ * @param member The member to get the permissions of.
201
+ */
202
+ permissionsOf(member) {
203
+ if (typeof member === "string") {
204
+ member = this.guild.members.get(member);
205
+ }
206
+ if (!member) {
207
+ throw new Errors_1.UncachedError(`Cannot use ${this.constructor.name}#permissionsOf with an ID when the member is not cached.`);
208
+ }
209
+ let permission = this.guild.permissionsOf(member).allow;
210
+ if (permission & Constants_1.Permissions.ADMINISTRATOR) {
211
+ return new Permission_1.default(Constants_1.AllPermissions);
212
+ }
213
+ let overwrite = this.permissionOverwrites.get(this.guildID);
214
+ if (overwrite) {
215
+ permission = (permission & ~overwrite.deny) | overwrite.allow;
216
+ }
217
+ let deny = 0n;
218
+ let allow = 0n;
219
+ for (const id of member.roles) {
220
+ if ((overwrite = this.permissionOverwrites.get(id))) {
221
+ deny |= overwrite.deny;
222
+ allow |= overwrite.allow;
223
+ }
224
+ }
225
+ permission = (permission & ~deny) | allow;
226
+ overwrite = this.permissionOverwrites.get(member.id);
227
+ if (overwrite) {
228
+ permission = (permission & ~overwrite.deny) | overwrite.allow;
229
+ }
230
+ return new Permission_1.default(permission);
231
+ }
232
+ /**
233
+ * Pin a message in this channel.
234
+ * @param messageID The ID of the message to pin.
235
+ * @param reason The reason for pinning the message.
236
+ */
237
+ async pinMessage(messageID, reason) {
238
+ return this.client.rest.channels.pinMessage(this.id, messageID, reason);
239
+ }
240
+ /**
241
+ * Purge an amount of messages from this channel.
242
+ * @param options The options to purge. `before`, `after`, and `around `All are mutually exclusive.
243
+ */
244
+ async purge(options) {
245
+ return this.client.rest.channels.purgeMessages(this.id, options);
246
+ }
247
+ /**
248
+ * Show a typing indicator in this channel. How long users see this varies from client to client.
249
+ */
250
+ async sendTyping() {
251
+ return this.client.rest.channels.sendTyping(this.id);
252
+ }
253
+ toJSON() {
254
+ return {
255
+ ...super.toJSON(),
256
+ lastMessageID: this.lastMessageID,
257
+ messages: this.messages.map(message => message.id),
258
+ nsfw: this.nsfw,
259
+ permissionOverwrites: this.permissionOverwrites.map(overwrite => overwrite.toJSON()),
260
+ position: this.position,
261
+ rateLimitPerUser: this.rateLimitPerUser,
262
+ topic: this.topic,
263
+ type: this.type
264
+ };
265
+ }
266
+ /**
267
+ * Unpin a message in this channel.
268
+ * @param messageID The ID of the message to unpin.
269
+ * @param reason The reason for unpinning the message.
270
+ */
271
+ async unpinMessage(messageID, reason) {
272
+ return this.client.rest.channels.unpinMessage(this.id, messageID, reason);
273
+ }
274
+ }
275
+ exports.default = TextableChannel;
276
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGV4dGFibGVDaGFubmVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3N0cnVjdHVyZXMvVGV4dGFibGVDaGFubmVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDhCQUE4QjtBQUM5QiwwRUFBMEM7QUFDMUMsd0ZBQXdEO0FBQ3hELGdFQUFnQztBQUloQyxzRUFBc0M7QUFHdEMsNENBQTJEO0FBRTNELHNGQUFzRDtBQWdCdEQsMkNBQStDO0FBRS9DLDJDQUEyQztBQUMzQyxNQUFxQixlQUE2RSxTQUFRLHNCQUFZO0lBQ2xILDhIQUE4SDtJQUM5SCxXQUFXLENBQXFCO0lBQ2hDLG1EQUFtRDtJQUNuRCxhQUFhLENBQWdCO0lBQzdCLDJDQUEyQztJQUMzQyxRQUFRLENBQTBDO0lBQ2xELG9DQUFvQztJQUNwQyxJQUFJLENBQVU7SUFDZCxpREFBaUQ7SUFDakQsb0JBQW9CLENBQXFEO0lBQ3pFLG1EQUFtRDtJQUNuRCxRQUFRLENBQVM7SUFDakIscUVBQXFFO0lBQ3JFLGdCQUFnQixDQUFTO0lBQ3pCLGdDQUFnQztJQUNoQyxLQUFLLENBQWdCO0lBRXJCLFlBQVksSUFBaUYsRUFBRSxNQUFjO1FBQ3pHLEtBQUssQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBQzFDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSx5QkFBZSxDQUFDLENBQUEsaUJBQVUsQ0FBQSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3pHLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSx5QkFBZSxDQUFDLDZCQUFtQixFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzdFLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUM5QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1FBQ2pELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFa0IsTUFBTSxDQUFDLElBQTBGO1FBQ2hILEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkIsSUFBSSxJQUFJLENBQUMsZUFBZSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ2xHLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUMxQixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNsQyxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDekMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztRQUNyRCxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUM1QixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMscUJBQXFCLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDM0MsS0FBSyxNQUFNLEVBQUUsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztnQkFDaEQsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUM7b0JBQ3JFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3pDLENBQUM7WUFDTCxDQUFDO1lBRUQsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUM3RixDQUFDO0lBQ0wsQ0FBQztJQUVELElBQWEsTUFBTTtRQUNmLE9BQU8sS0FBSyxDQUFDLE1BQTRDLENBQUM7SUFDOUQsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBNEI7UUFDM0MsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFvQixJQUFJLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsYUFBYSxDQUFDLE9BQTZCO1FBQzdDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBSSxJQUFJLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLGNBQWMsQ0FBQyxTQUFpQixFQUFFLEtBQWE7UUFDakQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsYUFBYSxDQUFDLE9BQTZCO1FBQzdDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLGFBQWEsQ0FBQyxTQUFpQixFQUFFLE1BQWU7UUFDbEQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLGNBQWMsQ0FBQyxVQUF5QixFQUFFLE1BQWU7UUFDM0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFdBQW1CLEVBQUUsTUFBZTtRQUN2RCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsY0FBYyxDQUFDLFNBQWlCLEVBQUUsS0FBYSxFQUFFLElBQUksR0FBRyxLQUFLO1FBQy9ELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsZUFBZSxDQUFDLFNBQWlCLEVBQUUsS0FBYztRQUNuRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsV0FBVyxDQUFDLFNBQWlCLEVBQUUsT0FBMkI7UUFDNUQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFJLElBQUksQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLGNBQWMsQ0FBQyxXQUFtQixFQUFFLE9BQThCO1FBQ3BFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBSSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxVQUFVLENBQUMsU0FBaUI7UUFDOUIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFJLElBQUksQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBbUM7UUFDakQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFJLElBQUksQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLGlCQUFpQjtRQUNuQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBSSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLFlBQVksQ0FBQyxTQUFpQixFQUFFLEtBQWEsRUFBRSxPQUE2QjtRQUM5RSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsYUFBYSxDQUFDLE1BQXVCO1FBQ2pDLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDN0IsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUUsQ0FBQztRQUM3QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1YsTUFBTSxJQUFJLHNCQUFhLENBQUMsY0FBYyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksMERBQTBELENBQUMsQ0FBQztRQUMzSCxDQUFDO1FBQ0QsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3hELElBQUksVUFBVSxHQUFHLHVCQUFXLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDekMsT0FBTyxJQUFJLG9CQUFVLENBQUMsMEJBQWMsQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFDRCxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM1RCxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ1osVUFBVSxHQUFHLENBQUMsVUFBVSxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUM7UUFDbEUsQ0FBQztRQUNELElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNkLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNmLEtBQUssTUFBTSxFQUFFLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2xELElBQUksSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDO2dCQUN2QixLQUFLLElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQztZQUM3QixDQUFDO1FBQ0wsQ0FBQztRQUVELFVBQVUsR0FBRyxDQUFDLFVBQVUsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUMxQyxTQUFTLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDckQsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNaLFVBQVUsR0FBRyxDQUFDLFVBQVUsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDO1FBQ2xFLENBQUM7UUFDRCxPQUFPLElBQUksb0JBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxVQUFVLENBQUMsU0FBaUIsRUFBRSxNQUFlO1FBQy9DLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUF3QjtRQUNoQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVRLE1BQU07UUFDWCxPQUFPO1lBQ0gsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFO1lBQ2pCLGFBQWEsRUFBUyxJQUFJLENBQUMsYUFBYTtZQUN4QyxRQUFRLEVBQWMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzlELElBQUksRUFBa0IsSUFBSSxDQUFDLElBQUk7WUFDL0Isb0JBQW9CLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwRixRQUFRLEVBQWMsSUFBSSxDQUFDLFFBQVE7WUFDbkMsZ0JBQWdCLEVBQU0sSUFBSSxDQUFDLGdCQUFnQjtZQUMzQyxLQUFLLEVBQWlCLElBQUksQ0FBQyxLQUFLO1lBQ2hDLElBQUksRUFBa0IsSUFBSSxDQUFDLElBQUk7U0FDbEMsQ0FBQztJQUNOLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLFlBQVksQ0FBQyxTQUFpQixFQUFFLE1BQWU7UUFDakQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzlFLENBQUM7Q0FDSjtBQWpTRCxrQ0FpU0MifQ==
@@ -0,0 +1,39 @@
1
+ /** @module TextableVoiceChannel */
2
+ import Member from "./Member";
3
+ import type CategoryChannel from "./CategoryChannel";
4
+ import TextableChannel from "./TextableChannel";
5
+ import type VoiceState from "./VoiceState";
6
+ import type { VideoQualityModes } from "../Constants";
7
+ import type Client from "../Client";
8
+ import TypedCollection from "../util/TypedCollection";
9
+ import type { AnyVoiceChannel, RawStageChannel, RawVoiceChannel, VoiceChannels } from "../types/channels";
10
+ import type { JSONTextableVoiceChannel } from "../types/json";
11
+ import type { RawMember } from "../types/guilds";
12
+ import type { JoinVoiceChannelOptions } from "../types/voice";
13
+ import type { VoiceConnection } from "@discordjs/voice";
14
+ /** Represents a textable voice channel. */
15
+ export default class TextableVoiceChannel<T extends AnyVoiceChannel = AnyVoiceChannel> extends TextableChannel<T> {
16
+ /** The bitrate of the stage channel. */
17
+ bitrate: number;
18
+ /** The id of the voice region of the channel, `null` is automatic. */
19
+ rtcRegion: string | null;
20
+ type: VoiceChannels;
21
+ /** The maximum number of members in this voice channel, `0` is unlimited. */
22
+ userLimit: number;
23
+ /** The [video quality mode](https://discord.com/developers/docs/resources/channel#channel-object-video-quality-modes) of this channel. */
24
+ videoQualityMode: VideoQualityModes;
25
+ voiceMembers: TypedCollection<RawMember, Member, [guildID: string]>;
26
+ constructor(data: RawVoiceChannel | RawStageChannel, client: Client);
27
+ protected update(data: Partial<RawVoiceChannel | RawStageChannel>): void;
28
+ get parent(): CategoryChannel | null | undefined;
29
+ /** The voice states related to this channel. */
30
+ get voiceStates(): Array<VoiceState<T>>;
31
+ /**
32
+ * Join this stage channel.
33
+ * @param options The options to join the channel with.
34
+ */
35
+ join(options: Omit<JoinVoiceChannelOptions, "guildID" | "channelID" | "voiceAdapterCreator">): VoiceConnection;
36
+ /** Leave this stage channel. */
37
+ leave(): void;
38
+ toJSON(): JSONTextableVoiceChannel;
39
+ }
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ /** @module TextableVoiceChannel */
5
+ const Member_1 = tslib_1.__importDefault(require("./Member"));
6
+ const TextableChannel_1 = tslib_1.__importDefault(require("./TextableChannel"));
7
+ const TypedCollection_1 = tslib_1.__importDefault(require("../util/TypedCollection"));
8
+ /** Represents a textable voice channel. */
9
+ class TextableVoiceChannel extends TextableChannel_1.default {
10
+ /** The bitrate of the stage channel. */
11
+ bitrate;
12
+ /** The id of the voice region of the channel, `null` is automatic. */
13
+ rtcRegion;
14
+ /** The maximum number of members in this voice channel, `0` is unlimited. */
15
+ userLimit;
16
+ /** The [video quality mode](https://discord.com/developers/docs/resources/channel#channel-object-video-quality-modes) of this channel. */
17
+ videoQualityMode;
18
+ voiceMembers;
19
+ constructor(data, client) {
20
+ super(data, client);
21
+ this.bitrate = data.bitrate;
22
+ this.rtcRegion = data.rtc_region;
23
+ this.userLimit = data.user_limit;
24
+ this.videoQualityMode = data.video_quality_mode;
25
+ this.voiceMembers = new TypedCollection_1.default(Member_1.default, client, this.client.util._getLimit("voiceMembers", this.id));
26
+ this.update(data);
27
+ }
28
+ update(data) {
29
+ super.update(data);
30
+ if (data.bitrate !== undefined) {
31
+ this.bitrate = data.bitrate;
32
+ }
33
+ if (data.rtc_region !== undefined) {
34
+ this.rtcRegion = data.rtc_region;
35
+ }
36
+ if (data.user_limit !== undefined) {
37
+ this.userLimit = data.user_limit;
38
+ }
39
+ if (data.video_quality_mode !== undefined) {
40
+ this.videoQualityMode = data.video_quality_mode;
41
+ }
42
+ }
43
+ get parent() {
44
+ return super.parent;
45
+ }
46
+ /** The voice states related to this channel. */
47
+ get voiceStates() {
48
+ return this["_cachedGuild"]?.voiceStates.filter(state => state.channelID === this.id) ?? [];
49
+ }
50
+ /**
51
+ * Join this stage channel.
52
+ * @param options The options to join the channel with.
53
+ */
54
+ join(options) {
55
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return, @typescript-eslint/no-unsafe-argument
56
+ return this.client.joinVoiceChannel({
57
+ ...options,
58
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
59
+ voiceAdapterCreator: this.guild.voiceAdapterCreator,
60
+ guildID: this.guildID,
61
+ channelID: this.id
62
+ });
63
+ }
64
+ /** Leave this stage channel. */
65
+ leave() {
66
+ return this.client.leaveVoiceChannel(this.guildID);
67
+ }
68
+ toJSON() {
69
+ return {
70
+ ...super.toJSON(),
71
+ bitrate: this.bitrate,
72
+ rtcRegion: this.rtcRegion,
73
+ type: this.type,
74
+ userLimit: this.userLimit,
75
+ videoQualityMode: this.videoQualityMode,
76
+ voiceMembers: this.voiceMembers.map(member => member.id)
77
+ };
78
+ }
79
+ }
80
+ exports.default = TextableVoiceChannel;
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGV4dGFibGVWb2ljZUNoYW5uZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvc3RydWN0dXJlcy9UZXh0YWJsZVZvaWNlQ2hhbm5lbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBbUM7QUFDbkMsOERBQThCO0FBRTlCLGdGQUFnRDtBQUloRCxzRkFBc0Q7QUFTdEQsMkNBQTJDO0FBQzNDLE1BQXFCLG9CQUFrRSxTQUFRLHlCQUFrQjtJQUM3Ryx3Q0FBd0M7SUFDeEMsT0FBTyxDQUFTO0lBQ2hCLHNFQUFzRTtJQUN0RSxTQUFTLENBQWdCO0lBRXpCLDZFQUE2RTtJQUM3RSxTQUFTLENBQVM7SUFDbEIsMElBQTBJO0lBQzFJLGdCQUFnQixDQUFvQjtJQUNwQyxZQUFZLENBQXdEO0lBQ3BFLFlBQVksSUFBdUMsRUFBRSxNQUFjO1FBQy9ELEtBQUssQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDakMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztRQUNoRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUkseUJBQWUsQ0FBQyxnQkFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzdHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVrQixNQUFNLENBQUMsSUFBZ0Q7UUFDdEUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQixJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBQ2hDLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ3JDLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ3JDLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN4QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1FBQ3BELENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBYSxNQUFNO1FBQ2YsT0FBTyxLQUFLLENBQUMsTUFBNEMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsZ0RBQWdEO0lBQ2hELElBQUksV0FBVztRQUNYLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxFQUFFLENBQXlCLElBQUksRUFBRSxDQUFDO0lBQ3hILENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJLENBQUMsT0FBdUY7UUFDeEYsc0dBQXNHO1FBQ3RHLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztZQUNoQyxHQUFHLE9BQU87WUFDVixtRUFBbUU7WUFDbkUsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxtQkFBbUI7WUFDbkQsT0FBTyxFQUFjLElBQUksQ0FBQyxPQUFPO1lBQ2pDLFNBQVMsRUFBWSxJQUFJLENBQUMsRUFBRTtTQUMvQixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsZ0NBQWdDO0lBQ2hDLEtBQUs7UUFDRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFUSxNQUFNO1FBQ1gsT0FBTztZQUNILEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUNqQixPQUFPLEVBQVcsSUFBSSxDQUFDLE9BQU87WUFDOUIsU0FBUyxFQUFTLElBQUksQ0FBQyxTQUFTO1lBQ2hDLElBQUksRUFBYyxJQUFJLENBQUMsSUFBSTtZQUMzQixTQUFTLEVBQVMsSUFBSSxDQUFDLFNBQVM7WUFDaEMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtZQUN2QyxZQUFZLEVBQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1NBQy9ELENBQUM7SUFDTixDQUFDO0NBQ0o7QUE3RUQsdUNBNkVDIn0=
@@ -0,0 +1,159 @@
1
+ /** @module ThreadChannel */
2
+ import GuildChannel from "./GuildChannel";
3
+ import Message from "./Message";
4
+ import type User from "./User";
5
+ import type Member from "./Member";
6
+ import type Permission from "./Permission";
7
+ import type Client from "../Client";
8
+ import TypedCollection from "../util/TypedCollection";
9
+ import type { AnyThreadChannel, CreateMessageOptions, EditMessageOptions, GetChannelMessagesOptions, GetReactionsOptions, PrivateThreadMetadata, RawMessage, RawThreadChannel, ThreadMember, ThreadMetadata, PurgeOptions, ThreadParentChannel, ThreadChannels } from "../types/channels";
10
+ import type { JSONThreadChannel } from "../types/json";
11
+ /** Represents a guild thread channel. */
12
+ export default class ThreadChannel<T extends AnyThreadChannel = AnyThreadChannel> extends GuildChannel {
13
+ /** The [flags](https://discord.com/developers/docs/resources/channel#channel-object-channel-flags) for this thread channel. */
14
+ flags: number;
15
+ /** The last message sent in this channel. This will only be present if a message has been sent within the current session. */
16
+ lastMessage?: Message<T> | null;
17
+ /** The ID of last message sent in this channel. */
18
+ lastMessageID: string | null;
19
+ /** The approximate number of members in this thread. Stops counting after 50. */
20
+ memberCount: number;
21
+ /** The members of this thread. */
22
+ members: Array<ThreadMember>;
23
+ /** The number of messages (not including the initial message or deleted messages) in the thread. Stops counting after 50. */
24
+ messageCount: number;
25
+ /** The cached messages in this channel. */
26
+ messages: TypedCollection<RawMessage, Message<T>>;
27
+ /** The owner of this thread. */
28
+ owner?: User;
29
+ /** The ID of the owner of this thread. */
30
+ ownerID: string;
31
+ parentID: string;
32
+ /** The amount of seconds between non-moderators sending messages. */
33
+ rateLimitPerUser: number;
34
+ /** The [thread metadata](https://discord.com/developers/docs/resources/channel#thread-metadata-object-thread-metadata-structure) associated with this thread. */
35
+ threadMetadata: ThreadMetadata | PrivateThreadMetadata;
36
+ /** The total number of messages ever sent in the thread. Includes deleted messages. */
37
+ totalMessageSent: number;
38
+ type: ThreadChannels;
39
+ constructor(data: RawThreadChannel, client: Client);
40
+ protected update(data: Partial<RawThreadChannel>): void;
41
+ get parent(): ThreadParentChannel | undefined;
42
+ /**
43
+ * Add a member to this thread.
44
+ * @param userID The ID of the user to add to the thread.
45
+ */
46
+ addMember(userID: string): Promise<void>;
47
+ /**
48
+ * Create a message in this thread.
49
+ * @param options The options for creating the message.
50
+ */
51
+ createMessage(options: CreateMessageOptions): Promise<Message<T>>;
52
+ /**
53
+ * Add a reaction to a message in this thread.
54
+ * @param messageID The ID of the message to add a reaction to.
55
+ * @param emoji The reaction to add to the message. `name:id` for custom emojis, and the unicode codepoint for default emojis.
56
+ */
57
+ createReaction(messageID: string, emoji: string): Promise<void>;
58
+ /**
59
+ * Delete a message in this thread.
60
+ * @param messageID The ID of the message to delete.
61
+ * @param reason The reason for deleting the message.
62
+ */
63
+ deleteMessage(messageID: string, reason?: string): Promise<void>;
64
+ /**
65
+ * Bulk delete messages in this thread.
66
+ * @param messageIDs The IDs of the messages to delete. Any duplicates or messages older than two weeks will cause an error.
67
+ * @param reason The reason for deleting the messages.
68
+ */
69
+ deleteMessages(messageIDs: Array<string>, reason?: string): Promise<number>;
70
+ /**
71
+ * Remove a reaction from a message in this thread.
72
+ * @param messageID The ID of the message to remove a reaction from.
73
+ * @param emoji The reaction to remove from the message. `name:id` for custom emojis, and the unicode codepoint for default emojis.
74
+ * @param user The user to remove the reaction from, `@me` for the current user (default).
75
+ */
76
+ deleteReaction(messageID: string, emoji: string, user?: string): Promise<void>;
77
+ /**
78
+ * Remove all, or a specific emoji's reactions from a message.
79
+ * @param messageID The ID of the message to remove reactions from.
80
+ * @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.
81
+ */
82
+ deleteReactions(messageID: string, emoji?: string): Promise<void>;
83
+ /**
84
+ * Edit a message in this thread.
85
+ * @param messageID The ID of the message to edit.
86
+ * @param options The options for editing the message.
87
+ */
88
+ editMessage(messageID: string, options: EditMessageOptions): Promise<Message<T>>;
89
+ /**
90
+ * Get a thread member in this thread.
91
+ * @param userID The ID of the user to get the thread member of.
92
+ */
93
+ getMember(userID: string): Promise<ThreadMember>;
94
+ /**
95
+ * Get the members of this thread.
96
+ */
97
+ getMembers(): Promise<Array<ThreadMember>>;
98
+ /**
99
+ * Get a message in this thread.
100
+ * @param messageID The ID of the message to get.
101
+ */
102
+ getMessage(messageID: string): Promise<Message<T>>;
103
+ /**
104
+ * Get messages in this thread.
105
+ * @param options The options for getting the messages. `before`, `after`, and `around `All are mutually exclusive.
106
+ */
107
+ getMessages(options?: GetChannelMessagesOptions): Promise<Array<Message<T>>>;
108
+ /**
109
+ * Get the pinned messages in this thread.
110
+ */
111
+ getPinnedMessages(): Promise<Array<Message<T>>>;
112
+ /**
113
+ * Get the users who reacted with a specific emoji on a message.
114
+ * @param messageID The ID of the message to get reactions from.
115
+ * @param emoji The reaction to remove from the message. `name:id` for custom emojis, and the unicode codepoint for default emojis.
116
+ * @param options The options for getting the reactions.
117
+ */
118
+ getReactions(messageID: string, emoji: string, options?: GetReactionsOptions): Promise<Array<User>>;
119
+ /**
120
+ * Join this thread.
121
+ */
122
+ join(): Promise<void>;
123
+ /**
124
+ * Leave this thread.
125
+ */
126
+ leave(): Promise<void>;
127
+ /**
128
+ * Get the permissions of a member. If providing an id, the member must be cached. The parent channel must be cached as threads themselves do not have permissions.
129
+ * @param member The member to get the permissions of.
130
+ */
131
+ permissionsOf(member: string | Member): Permission;
132
+ /**
133
+ * Pin a message in this thread.
134
+ * @param messageID The ID of the message to pin.
135
+ * @param reason The reason for pinning the message.
136
+ */
137
+ pinMessage(messageID: string, reason?: string): Promise<void>;
138
+ /**
139
+ * Purge an amount of messages from this channel.
140
+ * @param options The options to purge. `before`, `after`, and `around `All are mutually exclusive.
141
+ */
142
+ purge(options: PurgeOptions<T>): Promise<number>;
143
+ /**
144
+ * Remove a member from this thread.
145
+ * @param userID The ID of the user to remove from the thread.
146
+ */
147
+ removeMember(userID: string): Promise<void>;
148
+ /**
149
+ * Show a typing indicator in this thread.
150
+ */
151
+ sendTyping(): Promise<void>;
152
+ toJSON(): JSONThreadChannel;
153
+ /**
154
+ * Unpin a message in this thread.
155
+ * @param messageID The ID of the message to unpin.
156
+ * @param reason The reason for unpinning the message.
157
+ */
158
+ unpinMessage(messageID: string, reason?: string): Promise<void>;
159
+ }