@buape/carbon 0.13.0 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (304) hide show
  1. package/LICENSE +1 -1
  2. package/dist/package.json +12 -8
  3. package/dist/src/abstracts/BaseCommand.d.ts +19 -3
  4. package/dist/src/abstracts/BaseCommand.d.ts.map +1 -1
  5. package/dist/src/abstracts/BaseCommand.js +55 -3
  6. package/dist/src/abstracts/BaseCommand.js.map +1 -1
  7. package/dist/src/abstracts/BaseComponent.d.ts +2 -2
  8. package/dist/src/abstracts/BaseComponent.d.ts.map +1 -1
  9. package/dist/src/abstracts/BaseInteraction.d.ts +52 -0
  10. package/dist/src/abstracts/BaseInteraction.d.ts.map +1 -1
  11. package/dist/src/abstracts/BaseInteraction.js +43 -5
  12. package/dist/src/abstracts/BaseInteraction.js.map +1 -1
  13. package/dist/src/abstracts/BaseListener.d.ts +7 -4
  14. package/dist/src/abstracts/BaseListener.d.ts.map +1 -1
  15. package/dist/src/abstracts/BaseListener.js.map +1 -1
  16. package/dist/src/abstracts/BaseModalComponent.d.ts +3 -10
  17. package/dist/src/abstracts/BaseModalComponent.d.ts.map +1 -1
  18. package/dist/src/abstracts/BaseModalComponent.js.map +1 -1
  19. package/dist/src/abstracts/Plugin.d.ts +6 -0
  20. package/dist/src/abstracts/Plugin.d.ts.map +1 -1
  21. package/dist/src/abstracts/Plugin.js.map +1 -1
  22. package/dist/src/adapters/bun/index.d.ts +2 -2
  23. package/dist/src/adapters/bun/index.d.ts.map +1 -1
  24. package/dist/src/adapters/bun/index.js +6 -0
  25. package/dist/src/adapters/bun/index.js.map +1 -1
  26. package/dist/src/adapters/fetch/index.d.ts.map +1 -1
  27. package/dist/src/adapters/fetch/index.js +6 -0
  28. package/dist/src/adapters/fetch/index.js.map +1 -1
  29. package/dist/src/classes/Client.d.ts +111 -9
  30. package/dist/src/classes/Client.d.ts.map +1 -1
  31. package/dist/src/classes/Client.js +237 -23
  32. package/dist/src/classes/Client.js.map +1 -1
  33. package/dist/src/classes/EntryPointCommand.d.ts +11 -0
  34. package/dist/src/classes/EntryPointCommand.d.ts.map +1 -0
  35. package/dist/src/classes/EntryPointCommand.js +13 -0
  36. package/dist/src/classes/EntryPointCommand.js.map +1 -0
  37. package/dist/src/classes/Listener.d.ts +85 -83
  38. package/dist/src/classes/Listener.d.ts.map +1 -1
  39. package/dist/src/classes/Listener.js +14 -0
  40. package/dist/src/classes/Listener.js.map +1 -1
  41. package/dist/src/classes/Modal.d.ts +2 -3
  42. package/dist/src/classes/Modal.d.ts.map +1 -1
  43. package/dist/src/classes/Modal.js.map +1 -1
  44. package/dist/src/classes/RequestClient.d.ts +99 -8
  45. package/dist/src/classes/RequestClient.d.ts.map +1 -1
  46. package/dist/src/classes/RequestClient.js +406 -137
  47. package/dist/src/classes/RequestClient.js.map +1 -1
  48. package/dist/src/classes/components/Checkbox.d.ts +12 -0
  49. package/dist/src/classes/components/Checkbox.d.ts.map +1 -0
  50. package/dist/src/classes/components/Checkbox.js +20 -0
  51. package/dist/src/classes/components/Checkbox.js.map +1 -0
  52. package/dist/src/classes/components/CheckboxGroup.d.ts +24 -0
  53. package/dist/src/classes/components/CheckboxGroup.d.ts.map +1 -0
  54. package/dist/src/classes/components/CheckboxGroup.js +37 -0
  55. package/dist/src/classes/components/CheckboxGroup.js.map +1 -0
  56. package/dist/src/classes/components/Container.d.ts +6 -2
  57. package/dist/src/classes/components/Container.d.ts.map +1 -1
  58. package/dist/src/classes/components/Container.js +11 -0
  59. package/dist/src/classes/components/Container.js.map +1 -1
  60. package/dist/src/classes/components/File.d.ts +2 -2
  61. package/dist/src/classes/components/File.d.ts.map +1 -1
  62. package/dist/src/classes/components/File.js +4 -1
  63. package/dist/src/classes/components/File.js.map +1 -1
  64. package/dist/src/classes/components/FileUpload.d.ts +3 -2
  65. package/dist/src/classes/components/FileUpload.d.ts.map +1 -1
  66. package/dist/src/classes/components/FileUpload.js +2 -2
  67. package/dist/src/classes/components/FileUpload.js.map +1 -1
  68. package/dist/src/classes/components/Label.d.ts +9 -5
  69. package/dist/src/classes/components/Label.d.ts.map +1 -1
  70. package/dist/src/classes/components/Label.js +1 -2
  71. package/dist/src/classes/components/Label.js.map +1 -1
  72. package/dist/src/classes/components/MediaGallery.d.ts +8 -13
  73. package/dist/src/classes/components/MediaGallery.d.ts.map +1 -1
  74. package/dist/src/classes/components/MediaGallery.js +5 -0
  75. package/dist/src/classes/components/MediaGallery.js.map +1 -1
  76. package/dist/src/classes/components/RadioGroup.d.ts +24 -0
  77. package/dist/src/classes/components/RadioGroup.d.ts.map +1 -0
  78. package/dist/src/classes/components/RadioGroup.js +33 -0
  79. package/dist/src/classes/components/RadioGroup.js.map +1 -0
  80. package/dist/src/classes/components/Row.d.ts.map +1 -1
  81. package/dist/src/classes/components/Row.js +2 -3
  82. package/dist/src/classes/components/Row.js.map +1 -1
  83. package/dist/src/classes/components/Section.d.ts +4 -3
  84. package/dist/src/classes/components/Section.d.ts.map +1 -1
  85. package/dist/src/classes/components/Section.js +22 -0
  86. package/dist/src/classes/components/Section.js.map +1 -1
  87. package/dist/src/classes/components/TextDisplay.d.ts +2 -2
  88. package/dist/src/classes/components/TextDisplay.d.ts.map +1 -1
  89. package/dist/src/classes/components/TextDisplay.js +3 -0
  90. package/dist/src/classes/components/TextDisplay.js.map +1 -1
  91. package/dist/src/classes/components/Thumbnail.d.ts +3 -2
  92. package/dist/src/classes/components/Thumbnail.d.ts.map +1 -1
  93. package/dist/src/classes/components/Thumbnail.js +11 -0
  94. package/dist/src/classes/components/Thumbnail.js.map +1 -1
  95. package/dist/src/errors/RatelimitError.d.ts +4 -1
  96. package/dist/src/errors/RatelimitError.d.ts.map +1 -1
  97. package/dist/src/errors/RatelimitError.js +7 -1
  98. package/dist/src/errors/RatelimitError.js.map +1 -1
  99. package/dist/src/index.d.ts +4 -0
  100. package/dist/src/index.d.ts.map +1 -1
  101. package/dist/src/index.js +4 -0
  102. package/dist/src/index.js.map +1 -1
  103. package/dist/src/internals/AutocompleteInteraction.d.ts +1 -1
  104. package/dist/src/internals/AutocompleteInteraction.d.ts.map +1 -1
  105. package/dist/src/internals/BoundedExecutor.d.ts +12 -0
  106. package/dist/src/internals/BoundedExecutor.d.ts.map +1 -0
  107. package/dist/src/internals/BoundedExecutor.js +60 -0
  108. package/dist/src/internals/BoundedExecutor.js.map +1 -0
  109. package/dist/src/internals/CommandHandler.d.ts.map +1 -1
  110. package/dist/src/internals/CommandHandler.js +53 -6
  111. package/dist/src/internals/CommandHandler.js.map +1 -1
  112. package/dist/src/internals/CommandInteraction.d.ts +4 -0
  113. package/dist/src/internals/CommandInteraction.d.ts.map +1 -1
  114. package/dist/src/internals/CommandInteraction.js +30 -0
  115. package/dist/src/internals/CommandInteraction.js.map +1 -1
  116. package/dist/src/internals/ComponentHandler.d.ts +5 -10
  117. package/dist/src/internals/ComponentHandler.d.ts.map +1 -1
  118. package/dist/src/internals/ComponentHandler.js +53 -38
  119. package/dist/src/internals/ComponentHandler.js.map +1 -1
  120. package/dist/src/internals/EmojiHandler.d.ts.map +1 -1
  121. package/dist/src/internals/EmojiHandler.js +0 -1
  122. package/dist/src/internals/EmojiHandler.js.map +1 -1
  123. package/dist/src/internals/EventHandler.d.ts +28 -2
  124. package/dist/src/internals/EventHandler.d.ts.map +1 -1
  125. package/dist/src/internals/EventHandler.js +14 -11
  126. package/dist/src/internals/EventHandler.js.map +1 -1
  127. package/dist/src/internals/EventQueue.d.ts +90 -0
  128. package/dist/src/internals/EventQueue.d.ts.map +1 -0
  129. package/dist/src/internals/EventQueue.js +363 -0
  130. package/dist/src/internals/EventQueue.js.map +1 -0
  131. package/dist/src/internals/FieldsHandler.d.ts.map +1 -1
  132. package/dist/src/internals/FieldsHandler.js +10 -1
  133. package/dist/src/internals/FieldsHandler.js.map +1 -1
  134. package/dist/src/internals/OptionsHandler.d.ts +9 -1
  135. package/dist/src/internals/OptionsHandler.d.ts.map +1 -1
  136. package/dist/src/internals/OptionsHandler.js +20 -1
  137. package/dist/src/internals/OptionsHandler.js.map +1 -1
  138. package/dist/src/internals/RequestBody.d.ts +6 -0
  139. package/dist/src/internals/RequestBody.d.ts.map +1 -0
  140. package/dist/src/internals/RequestBody.js +74 -0
  141. package/dist/src/internals/RequestBody.js.map +1 -0
  142. package/dist/src/internals/RequestScheduler.d.ts +131 -0
  143. package/dist/src/internals/RequestScheduler.d.ts.map +1 -0
  144. package/dist/src/internals/RequestScheduler.js +245 -0
  145. package/dist/src/internals/RequestScheduler.js.map +1 -0
  146. package/dist/src/internals/TemporaryListenerManager.d.ts +20 -0
  147. package/dist/src/internals/TemporaryListenerManager.d.ts.map +1 -0
  148. package/dist/src/internals/TemporaryListenerManager.js +59 -0
  149. package/dist/src/internals/TemporaryListenerManager.js.map +1 -0
  150. package/dist/src/permissions.d.ts +1 -0
  151. package/dist/src/permissions.d.ts.map +1 -1
  152. package/dist/src/plugins/client-manager/ClientManager.d.ts +30 -2
  153. package/dist/src/plugins/client-manager/ClientManager.d.ts.map +1 -1
  154. package/dist/src/plugins/client-manager/ClientManager.js +93 -16
  155. package/dist/src/plugins/client-manager/ClientManager.js.map +1 -1
  156. package/dist/src/plugins/cloudflare-gateway/CloudflareGatewayDurableObject.d.ts +43 -0
  157. package/dist/src/plugins/cloudflare-gateway/CloudflareGatewayDurableObject.d.ts.map +1 -0
  158. package/dist/src/plugins/cloudflare-gateway/CloudflareGatewayDurableObject.js +210 -0
  159. package/dist/src/plugins/cloudflare-gateway/CloudflareGatewayDurableObject.js.map +1 -0
  160. package/dist/src/plugins/cloudflare-gateway/CloudflareGatewayPlugin.d.ts +16 -0
  161. package/dist/src/plugins/cloudflare-gateway/CloudflareGatewayPlugin.d.ts.map +1 -0
  162. package/dist/src/plugins/cloudflare-gateway/CloudflareGatewayPlugin.js +129 -0
  163. package/dist/src/plugins/cloudflare-gateway/CloudflareGatewayPlugin.js.map +1 -0
  164. package/dist/src/plugins/cloudflare-gateway/index.d.ts +4 -0
  165. package/dist/src/plugins/cloudflare-gateway/index.d.ts.map +1 -0
  166. package/dist/src/plugins/cloudflare-gateway/index.js +4 -0
  167. package/dist/src/plugins/cloudflare-gateway/index.js.map +1 -0
  168. package/dist/src/plugins/cloudflare-gateway/types.d.ts +63 -0
  169. package/dist/src/plugins/cloudflare-gateway/types.d.ts.map +1 -0
  170. package/dist/src/plugins/cloudflare-gateway/types.js +2 -0
  171. package/dist/src/plugins/cloudflare-gateway/types.js.map +1 -0
  172. package/dist/src/plugins/gateway/BabyCache.d.ts +13 -4
  173. package/dist/src/plugins/gateway/BabyCache.d.ts.map +1 -1
  174. package/dist/src/plugins/gateway/BabyCache.js +47 -0
  175. package/dist/src/plugins/gateway/BabyCache.js.map +1 -1
  176. package/dist/src/plugins/gateway/GatewayPlugin.d.ts +111 -19
  177. package/dist/src/plugins/gateway/GatewayPlugin.d.ts.map +1 -1
  178. package/dist/src/plugins/gateway/GatewayPlugin.js +605 -234
  179. package/dist/src/plugins/gateway/GatewayPlugin.js.map +1 -1
  180. package/dist/src/plugins/gateway/types.d.ts +33 -1
  181. package/dist/src/plugins/gateway/types.d.ts.map +1 -1
  182. package/dist/src/plugins/gateway/types.js +21 -0
  183. package/dist/src/plugins/gateway/types.js.map +1 -1
  184. package/dist/src/plugins/gateway/utils/heartbeat.d.ts +1 -0
  185. package/dist/src/plugins/gateway/utils/heartbeat.d.ts.map +1 -1
  186. package/dist/src/plugins/gateway/utils/heartbeat.js +23 -12
  187. package/dist/src/plugins/gateway/utils/heartbeat.js.map +1 -1
  188. package/dist/src/plugins/gateway/utils/payload.d.ts.map +1 -1
  189. package/dist/src/plugins/gateway/utils/payload.js +0 -4
  190. package/dist/src/plugins/gateway/utils/payload.js.map +1 -1
  191. package/dist/src/plugins/gateway-forwarder/GatewayForwarderPlugin.d.ts +56 -3
  192. package/dist/src/plugins/gateway-forwarder/GatewayForwarderPlugin.d.ts.map +1 -1
  193. package/dist/src/plugins/gateway-forwarder/GatewayForwarderPlugin.js +224 -17
  194. package/dist/src/plugins/gateway-forwarder/GatewayForwarderPlugin.js.map +1 -1
  195. package/dist/src/plugins/paginator/index.d.ts +1 -1
  196. package/dist/src/plugins/paginator/index.d.ts.map +1 -1
  197. package/dist/src/plugins/paginator/index.js +1 -1
  198. package/dist/src/plugins/paginator/index.js.map +1 -1
  199. package/dist/src/plugins/voice/GuildDeleteListener.d.ts +7 -0
  200. package/dist/src/plugins/voice/GuildDeleteListener.d.ts.map +1 -0
  201. package/dist/src/plugins/voice/GuildDeleteListener.js +11 -0
  202. package/dist/src/plugins/voice/GuildDeleteListener.js.map +1 -0
  203. package/dist/src/plugins/voice/VoicePlugin.d.ts +15 -0
  204. package/dist/src/plugins/voice/VoicePlugin.d.ts.map +1 -0
  205. package/dist/src/plugins/voice/VoicePlugin.js +58 -0
  206. package/dist/src/plugins/voice/VoicePlugin.js.map +1 -0
  207. package/dist/src/plugins/voice/VoiceServerUpdateListener.d.ts +10 -0
  208. package/dist/src/plugins/voice/VoiceServerUpdateListener.d.ts.map +1 -0
  209. package/dist/src/plugins/voice/VoiceServerUpdateListener.js +16 -0
  210. package/dist/src/plugins/voice/VoiceServerUpdateListener.js.map +1 -0
  211. package/dist/src/plugins/voice/VoiceStateUpdateListener.d.ts +10 -0
  212. package/dist/src/plugins/voice/VoiceStateUpdateListener.d.ts.map +1 -0
  213. package/dist/src/plugins/voice/VoiceStateUpdateListener.js +21 -0
  214. package/dist/src/plugins/voice/VoiceStateUpdateListener.js.map +1 -0
  215. package/dist/src/plugins/voice/index.d.ts +2 -0
  216. package/dist/src/plugins/voice/index.d.ts.map +1 -0
  217. package/dist/src/plugins/voice/index.js +2 -0
  218. package/dist/src/plugins/voice/index.js.map +1 -0
  219. package/dist/src/structures/DmChannel.d.ts +4 -0
  220. package/dist/src/structures/DmChannel.d.ts.map +1 -1
  221. package/dist/src/structures/DmChannel.js +6 -0
  222. package/dist/src/structures/DmChannel.js.map +1 -1
  223. package/dist/src/structures/GroupDmChannel.d.ts +4 -0
  224. package/dist/src/structures/GroupDmChannel.d.ts.map +1 -1
  225. package/dist/src/structures/GroupDmChannel.js +6 -0
  226. package/dist/src/structures/GroupDmChannel.js.map +1 -1
  227. package/dist/src/structures/Guild.js +1 -1
  228. package/dist/src/structures/Guild.js.map +1 -1
  229. package/dist/src/structures/GuildMember.d.ts +10 -5
  230. package/dist/src/structures/GuildMember.d.ts.map +1 -1
  231. package/dist/src/structures/GuildMember.js.map +1 -1
  232. package/dist/src/structures/Poll.d.ts +1 -1
  233. package/dist/src/structures/Poll.d.ts.map +1 -1
  234. package/dist/src/structures/User.d.ts +1 -1
  235. package/dist/src/structures/User.d.ts.map +1 -1
  236. package/dist/src/structures/User.js +3 -3
  237. package/dist/src/structures/User.js.map +1 -1
  238. package/dist/src/structures/Webhook.d.ts +4 -2
  239. package/dist/src/structures/Webhook.d.ts.map +1 -1
  240. package/dist/src/structures/Webhook.js +42 -29
  241. package/dist/src/structures/Webhook.js.map +1 -1
  242. package/dist/src/types/commandMiddleware.d.ts +64 -0
  243. package/dist/src/types/commandMiddleware.d.ts.map +1 -0
  244. package/dist/src/types/commandMiddleware.js +2 -0
  245. package/dist/src/types/commandMiddleware.js.map +1 -0
  246. package/dist/src/types/index.d.ts +58 -1
  247. package/dist/src/types/index.d.ts.map +1 -1
  248. package/dist/src/types/index.js +1 -0
  249. package/dist/src/types/index.js.map +1 -1
  250. package/dist/src/types/listeners.d.ts +15 -4
  251. package/dist/src/types/listeners.d.ts.map +1 -1
  252. package/dist/src/types/listeners.js.map +1 -1
  253. package/dist/src/utils/LRUCache.d.ts +46 -0
  254. package/dist/src/utils/LRUCache.d.ts.map +1 -0
  255. package/dist/src/utils/LRUCache.js +78 -0
  256. package/dist/src/utils/LRUCache.js.map +1 -0
  257. package/dist/src/utils/customIdParser.d.ts.map +1 -1
  258. package/dist/src/utils/customIdParser.js +6 -2
  259. package/dist/src/utils/customIdParser.js.map +1 -1
  260. package/dist/src/utils/payload.d.ts.map +1 -1
  261. package/dist/src/utils/payload.js +18 -1
  262. package/dist/src/utils/payload.js.map +1 -1
  263. package/dist/tsconfig.tsbuildinfo +1 -1
  264. package/package.json +12 -8
  265. package/dist/src/classes/ApplicationManager.d.ts +0 -88
  266. package/dist/src/classes/ApplicationManager.d.ts.map +0 -1
  267. package/dist/src/classes/ApplicationManager.js +0 -179
  268. package/dist/src/classes/ApplicationManager.js.map +0 -1
  269. package/dist/src/classes/ClientWithCaching.d.ts +0 -51
  270. package/dist/src/classes/ClientWithCaching.d.ts.map +0 -1
  271. package/dist/src/classes/ClientWithCaching.js +0 -108
  272. package/dist/src/classes/ClientWithCaching.js.map +0 -1
  273. package/dist/src/classes/components/ModalChannelSelectMenu.d.ts +0 -62
  274. package/dist/src/classes/components/ModalChannelSelectMenu.d.ts.map +0 -1
  275. package/dist/src/classes/components/ModalChannelSelectMenu.js +0 -73
  276. package/dist/src/classes/components/ModalChannelSelectMenu.js.map +0 -1
  277. package/dist/src/classes/components/ModalMentionableSelectMenu.d.ts +0 -58
  278. package/dist/src/classes/components/ModalMentionableSelectMenu.d.ts.map +0 -1
  279. package/dist/src/classes/components/ModalMentionableSelectMenu.js +0 -68
  280. package/dist/src/classes/components/ModalMentionableSelectMenu.js.map +0 -1
  281. package/dist/src/classes/components/ModalRoleSelectMenu.d.ts +0 -58
  282. package/dist/src/classes/components/ModalRoleSelectMenu.d.ts.map +0 -1
  283. package/dist/src/classes/components/ModalRoleSelectMenu.js +0 -68
  284. package/dist/src/classes/components/ModalRoleSelectMenu.js.map +0 -1
  285. package/dist/src/classes/components/ModalStringSelectMenu.d.ts +0 -58
  286. package/dist/src/classes/components/ModalStringSelectMenu.d.ts.map +0 -1
  287. package/dist/src/classes/components/ModalStringSelectMenu.js +0 -64
  288. package/dist/src/classes/components/ModalStringSelectMenu.js.map +0 -1
  289. package/dist/src/classes/components/ModalUserSelectMenu.d.ts +0 -58
  290. package/dist/src/classes/components/ModalUserSelectMenu.d.ts.map +0 -1
  291. package/dist/src/classes/components/ModalUserSelectMenu.js +0 -68
  292. package/dist/src/classes/components/ModalUserSelectMenu.js.map +0 -1
  293. package/dist/src/internals/Cache.d.ts +0 -76
  294. package/dist/src/internals/Cache.d.ts.map +0 -1
  295. package/dist/src/internals/Cache.js +0 -122
  296. package/dist/src/internals/Cache.js.map +0 -1
  297. package/dist/src/plugins/multi-app/ApplicationManager.d.ts +0 -120
  298. package/dist/src/plugins/multi-app/ApplicationManager.d.ts.map +0 -1
  299. package/dist/src/plugins/multi-app/ApplicationManager.js +0 -207
  300. package/dist/src/plugins/multi-app/ApplicationManager.js.map +0 -1
  301. package/dist/src/plugins/multi-app/index.d.ts +0 -2
  302. package/dist/src/plugins/multi-app/index.d.ts.map +0 -1
  303. package/dist/src/plugins/multi-app/index.js +0 -2
  304. package/dist/src/plugins/multi-app/index.js.map +0 -1
@@ -1,16 +1,73 @@
1
1
  import { createPrivateKey, sign } from "node:crypto";
2
2
  import { ApplicationWebhookType } from "discord-api-types/v10";
3
+ import { createBoundedExecutor } from "../../internals/BoundedExecutor.js";
3
4
  import { concatUint8Arrays, valueToUint8Array } from "../../utils/index.js";
4
5
  import { GatewayPlugin } from "../gateway/GatewayPlugin.js";
6
+ const deliveryDefaults = {
7
+ serverless: {
8
+ timeoutMs: 2500,
9
+ maxRetries: 2,
10
+ baseBackoffMs: 150,
11
+ maxBackoffMs: 1800,
12
+ jitterRatio: 0.2,
13
+ maxInFlight: 8,
14
+ maxQueueSize: 2000,
15
+ retryStatusCodes: [408, 409, 425, 429, 500, 502, 503, 504]
16
+ },
17
+ persistent: {
18
+ timeoutMs: 6000,
19
+ maxRetries: 3,
20
+ baseBackoffMs: 250,
21
+ maxBackoffMs: 4000,
22
+ jitterRatio: 0.2,
23
+ maxInFlight: 16,
24
+ maxQueueSize: 8000,
25
+ retryStatusCodes: [408, 409, 425, 429, 500, 502, 503, 504]
26
+ }
27
+ };
5
28
  export class GatewayForwarderPlugin extends GatewayPlugin {
6
29
  id = "gateway-forwarder";
7
30
  options;
8
31
  privateKey;
32
+ guildAvailabilityCache = new Map();
33
+ deliveryPolicy;
34
+ deliveryExecutor;
35
+ forwardFetch;
36
+ deliveryMetrics = {
37
+ accepted: 0,
38
+ sent: 0,
39
+ retried: 0,
40
+ failed: 0,
41
+ dropped: 0,
42
+ timeouts: 0,
43
+ lastFailureReason: null,
44
+ lastFailureEventType: null,
45
+ lastFailureAt: 0,
46
+ lastSuccessAt: 0,
47
+ oldestQueuedAgeMs: 0
48
+ };
49
+ failureReasons = new Map();
9
50
  constructor(options) {
10
51
  if (!options.privateKey) {
11
52
  throw new Error("privateKey is required for GatewayForwarderPlugin");
12
53
  }
13
54
  super(options);
55
+ const profile = options.runtimeProfile ?? "serverless";
56
+ const defaults = deliveryDefaults[profile];
57
+ this.deliveryPolicy = {
58
+ ...defaults,
59
+ ...options.delivery,
60
+ retryStatusCodes: options.delivery?.retryStatusCodes ?? defaults.retryStatusCodes
61
+ };
62
+ assertPositiveInteger("delivery.maxInFlight", this.deliveryPolicy.maxInFlight);
63
+ this.forwardFetch = options.fetch;
64
+ this.deliveryExecutor = createBoundedExecutor({
65
+ concurrency: this.deliveryPolicy.maxInFlight,
66
+ run: async (task) => {
67
+ await this.deliver(task);
68
+ },
69
+ getQueuedAt: (task) => task.enqueuedAt
70
+ });
14
71
  try {
15
72
  const keyString = options.privateKey.replace(/\\n/g, "\n");
16
73
  this.privateKey = createPrivateKey({
@@ -28,42 +85,71 @@ export class GatewayForwarderPlugin extends GatewayPlugin {
28
85
  super.setupWebSocket();
29
86
  if (!this.ws)
30
87
  return;
31
- this.ws.on("message", async (data) => {
88
+ this.onSocketEvent(this.ws, "message", async (incoming) => {
32
89
  try {
33
- const payload = JSON.parse(data.toString());
90
+ const payloadText = this.getMessageText(incoming);
91
+ if (!payloadText) {
92
+ return;
93
+ }
94
+ const payload = JSON.parse(payloadText);
34
95
  if (payload.t && payload.d) {
96
+ const gatewayType = payload.t;
97
+ let forwardedType = gatewayType;
98
+ if (gatewayType === "READY") {
99
+ const readyData = payload.d;
100
+ this.guildAvailabilityCache.clear();
101
+ readyData.guilds?.forEach((guild) => {
102
+ this.guildAvailabilityCache.set(guild.id, false);
103
+ });
104
+ }
105
+ if (gatewayType === "GUILD_CREATE") {
106
+ const guildCreateData = payload.d;
107
+ const cachedAvailability = this.guildAvailabilityCache.get(guildCreateData.id);
108
+ if (cachedAvailability === false) {
109
+ forwardedType = "GUILD_AVAILABLE";
110
+ }
111
+ this.guildAvailabilityCache.set(guildCreateData.id, true);
112
+ }
113
+ if (gatewayType === "GUILD_DELETE") {
114
+ const guildDeleteData = payload.d;
115
+ if (guildDeleteData.unavailable) {
116
+ forwardedType = "GUILD_UNAVAILABLE";
117
+ this.guildAvailabilityCache.set(guildDeleteData.id, false);
118
+ }
119
+ else {
120
+ this.guildAvailabilityCache.delete(guildDeleteData.id);
121
+ }
122
+ }
35
123
  if (this.options.eventFilter &&
36
- !this.options.eventFilter(payload.t))
124
+ !this.options.eventFilter(forwardedType)) {
37
125
  return;
38
- // In the below code, the events are not truly webhook events,
39
- // but we use the webhook event type so that the payloads are structured correctly to work as if they were webhook events
126
+ }
40
127
  const timestamp = Date.now();
128
+ const timestampString = timestamp.toString();
41
129
  const webhookEvent = {
42
130
  version: 1,
43
131
  application_id: this.client?.options.clientId || "unknown",
44
132
  type: ApplicationWebhookType.Event,
45
133
  event: {
46
- type: payload.t,
134
+ type: forwardedType,
47
135
  timestamp: new Date().toISOString(),
48
136
  data: payload.d
49
137
  }
50
138
  };
51
139
  const body = JSON.stringify(webhookEvent);
52
- const timestampData = valueToUint8Array(timestamp.toString());
140
+ const timestampData = valueToUint8Array(timestampString);
53
141
  const bodyData = valueToUint8Array(body);
54
142
  const message = concatUint8Arrays(timestampData, bodyData);
55
143
  const signature = sign(null, message, this.privateKey);
56
144
  const signatureHex = signature.toString("hex");
57
- const headers = new Headers(this.options.webhookHeaders);
58
- await fetch(this.options.webhookUrl, {
59
- method: "POST",
60
- headers: {
61
- ...headers,
62
- "Content-Type": "application/json",
63
- "X-Signature-Ed25519": signatureHex,
64
- "X-Signature-Timestamp": timestamp.toString()
65
- },
66
- body
145
+ this.enqueueDelivery({
146
+ eventType: forwardedType,
147
+ body,
148
+ signatureHex,
149
+ timestamp: timestampString,
150
+ eventId: `${forwardedType}:${timestampString}:${Math.random().toString(16).slice(2)}`,
151
+ attempt: 0,
152
+ enqueuedAt: Date.now()
67
153
  });
68
154
  }
69
155
  }
@@ -72,5 +158,126 @@ export class GatewayForwarderPlugin extends GatewayPlugin {
72
158
  }
73
159
  });
74
160
  }
161
+ getDeliveryMetrics() {
162
+ this.deliveryMetrics.oldestQueuedAgeMs =
163
+ this.deliveryExecutor.getOldestQueuedAgeMs();
164
+ return {
165
+ ...this.deliveryMetrics,
166
+ queueDepth: this.deliveryExecutor.getQueueDepth(),
167
+ inFlight: this.deliveryExecutor.getInFlight(),
168
+ policy: this.deliveryPolicy,
169
+ failureReasons: Object.fromEntries(this.failureReasons)
170
+ };
171
+ }
172
+ enqueueDelivery(task) {
173
+ if (this.deliveryExecutor.getQueueDepth() >= this.deliveryPolicy.maxQueueSize) {
174
+ this.deliveryMetrics.dropped += 1;
175
+ this.trackFailure("queue_full", task.eventType);
176
+ return;
177
+ }
178
+ this.deliveryMetrics.accepted += 1;
179
+ this.deliveryExecutor.schedule(task);
180
+ }
181
+ async deliver(task) {
182
+ for (let attempt = task.attempt; attempt <= this.deliveryPolicy.maxRetries; attempt += 1) {
183
+ const response = await this.sendWithTimeout(task, attempt);
184
+ if (response.ok) {
185
+ this.deliveryMetrics.sent += 1;
186
+ this.deliveryMetrics.lastSuccessAt = Date.now();
187
+ return;
188
+ }
189
+ const finalAttempt = attempt >= this.deliveryPolicy.maxRetries;
190
+ if (!response.retryable || finalAttempt) {
191
+ this.deliveryMetrics.failed += 1;
192
+ this.trackFailure(response.reason, task.eventType);
193
+ console.error(JSON.stringify({
194
+ scope: "gateway-forwarder",
195
+ level: "error",
196
+ type: "delivery-failed",
197
+ eventType: task.eventType,
198
+ reason: response.reason,
199
+ attempt: attempt + 1,
200
+ maxAttempts: this.deliveryPolicy.maxRetries + 1
201
+ }));
202
+ return;
203
+ }
204
+ this.deliveryMetrics.retried += 1;
205
+ await sleep(this.getRetryDelay(attempt));
206
+ }
207
+ }
208
+ async sendWithTimeout(task, attempt) {
209
+ const controller = new AbortController();
210
+ const timeout = setTimeout(() => {
211
+ controller.abort("forwarder-timeout");
212
+ }, this.deliveryPolicy.timeoutMs);
213
+ const headers = new Headers(this.options.webhookHeaders);
214
+ headers.set("Content-Type", "application/json");
215
+ headers.set("X-Signature-Ed25519", task.signatureHex);
216
+ headers.set("X-Signature-Timestamp", task.timestamp);
217
+ headers.set("X-Carbon-Forwarder-Event-Id", task.eventId);
218
+ headers.set("X-Carbon-Forwarder-Attempt", String(attempt + 1));
219
+ const forwardFetch = this.forwardFetch ?? fetch;
220
+ try {
221
+ const response = await forwardFetch(this.options.webhookUrl, {
222
+ method: "POST",
223
+ headers,
224
+ body: task.body,
225
+ signal: controller.signal
226
+ });
227
+ await response.text().catch(() => { });
228
+ if (response.ok) {
229
+ return {
230
+ ok: true,
231
+ retryable: false,
232
+ reason: "ok"
233
+ };
234
+ }
235
+ const reason = `http_${response.status}`;
236
+ return {
237
+ ok: false,
238
+ retryable: this.deliveryPolicy.retryStatusCodes.includes(response.status),
239
+ reason
240
+ };
241
+ }
242
+ catch (error) {
243
+ if (controller.signal.aborted) {
244
+ this.deliveryMetrics.timeouts += 1;
245
+ return {
246
+ ok: false,
247
+ retryable: true,
248
+ reason: "timeout"
249
+ };
250
+ }
251
+ return {
252
+ ok: false,
253
+ retryable: true,
254
+ reason: error instanceof Error
255
+ ? `network:${error.message}`
256
+ : "network:unknown"
257
+ };
258
+ }
259
+ finally {
260
+ clearTimeout(timeout);
261
+ }
262
+ }
263
+ getRetryDelay(attempt) {
264
+ const base = this.deliveryPolicy.baseBackoffMs * 2 ** attempt;
265
+ const bounded = Math.min(base, this.deliveryPolicy.maxBackoffMs);
266
+ const jitter = this.deliveryPolicy.jitterRatio;
267
+ const factor = 1 - jitter + Math.random() * jitter * 2;
268
+ return Math.max(0, Math.floor(bounded * factor));
269
+ }
270
+ trackFailure(reason, eventType) {
271
+ this.deliveryMetrics.lastFailureReason = reason;
272
+ this.deliveryMetrics.lastFailureEventType = eventType;
273
+ this.deliveryMetrics.lastFailureAt = Date.now();
274
+ this.failureReasons.set(reason, (this.failureReasons.get(reason) ?? 0) + 1);
275
+ }
276
+ }
277
+ function assertPositiveInteger(name, value) {
278
+ if (!Number.isInteger(value) || value < 1) {
279
+ throw new Error(`${name} must be an integer greater than or equal to 1`);
280
+ }
75
281
  }
282
+ const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, Math.max(0, ms)));
76
283
  //# sourceMappingURL=GatewayForwarderPlugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GatewayForwarderPlugin.js","sourceRoot":"","sources":["../../../../src/plugins/gateway-forwarder/GatewayForwarderPlugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GatewayForwarderPlugin.js","sourceRoot":"","sources":["../../../../src/plugins/gateway-forwarder/GatewayForwarderPlugin.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ declare module "../../classes/Client.js" {
5
5
  }
6
6
  import { GoToPageModal } from "./GoToPageModal.js";
7
7
  import { Paginator } from "./Paginator.js";
8
- export { Paginator, GoToPageModal };
9
8
  export * from "./GoToPageModal.js";
10
9
  export * from "./Paginator.js";
10
+ export { GoToPageModal, Paginator };
11
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/paginator/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,yBAAyB,CAAC;IACxC,UAAU,MAAM;QACf,UAAU,EAAE,SAAS,EAAE,CAAA;KACvB;CACD;AAGD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAO1C,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/paginator/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,yBAAyB,CAAC;IACxC,UAAU,MAAM;QACf,UAAU,EAAE,SAAS,EAAE,CAAA;KACvB;CACD;AAGD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAO1C,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA;AAC9B,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,CAAA"}
@@ -5,7 +5,7 @@ Object.assign(Client.prototype, {
5
5
  Paginator,
6
6
  paginators: []
7
7
  });
8
- export { Paginator, GoToPageModal };
9
8
  export * from "./GoToPageModal.js";
10
9
  export * from "./Paginator.js";
10
+ export { GoToPageModal, Paginator };
11
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/paginator/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE;IAC/B,SAAS;IACT,UAAU,EAAE,EAAiB;CAC7B,CAAC,CAAA;AAEF,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,CAAA;AACnC,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/paginator/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE;IAC/B,SAAS;IACT,UAAU,EAAE,EAAiB;CAC7B,CAAC,CAAA;AAEF,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA;AAC9B,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,CAAA"}
@@ -0,0 +1,7 @@
1
+ import type { Client } from "../../classes/Client.js";
2
+ import { GuildDeleteListener } from "../../classes/Listener.js";
3
+ import type { ListenerEventData } from "../../types/index.js";
4
+ export declare class GuildDelete extends GuildDeleteListener {
5
+ handle(data: ListenerEventData[this["type"]], client: Client): Promise<void>;
6
+ }
7
+ //# sourceMappingURL=GuildDeleteListener.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GuildDeleteListener.d.ts","sourceRoot":"","sources":["../../../../src/plugins/voice/GuildDeleteListener.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAG7D,qBAAa,WAAY,SAAQ,mBAAmB;IAC7C,MAAM,CAAC,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM;CAOlE"}
@@ -0,0 +1,11 @@
1
+ import { GuildDeleteListener } from "../../classes/Listener.js";
2
+ export class GuildDelete extends GuildDeleteListener {
3
+ async handle(data, client) {
4
+ const voice = client.getPlugin("voice");
5
+ if (voice) {
6
+ const guild_id = data.guild.id;
7
+ voice.adapters.get(guild_id)?.destroy();
8
+ }
9
+ }
10
+ }
11
+ //# sourceMappingURL=GuildDeleteListener.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GuildDeleteListener.js","sourceRoot":"","sources":["../../../../src/plugins/voice/GuildDeleteListener.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAI/D,MAAM,OAAO,WAAY,SAAQ,mBAAmB;IACnD,KAAK,CAAC,MAAM,CAAC,IAAqC,EAAE,MAAc;QACjE,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAc,OAAO,CAAC,CAAA;QACpD,IAAI,KAAK,EAAE,CAAC;YACX,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAA;YAC9B,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAA;QACxC,CAAC;IACF,CAAC;CACD"}
@@ -0,0 +1,15 @@
1
+ import type { DiscordGatewayAdapterCreator, DiscordGatewayAdapterLibraryMethods } from "@discordjs/voice";
2
+ import { Plugin } from "../../abstracts/Plugin.js";
3
+ import type { Client } from "../../classes/Client.js";
4
+ import type { GatewayPlugin } from "../gateway/index.js";
5
+ export declare class VoicePlugin extends Plugin {
6
+ readonly id = "voice";
7
+ protected client?: Client;
8
+ readonly adapters: Map<string, DiscordGatewayAdapterLibraryMethods>;
9
+ private shardingPlugin?;
10
+ private gatewayPlugin?;
11
+ registerClient(client: Client): Promise<void>;
12
+ getGateway(guild_id: string): GatewayPlugin | undefined;
13
+ getGatewayAdapterCreator(guild_id: string): DiscordGatewayAdapterCreator;
14
+ }
15
+ //# sourceMappingURL=VoicePlugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VoicePlugin.d.ts","sourceRoot":"","sources":["../../../../src/plugins/voice/VoicePlugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,4BAA4B,EAE5B,mCAAmC,EACnC,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAMxD,qBAAa,WAAY,SAAQ,MAAM;IACtC,QAAQ,CAAC,EAAE,WAAU;IACrB,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,mCAAmC,CAAC,CACzD;IACV,OAAO,CAAC,cAAc,CAAC,CAAgB;IACvC,OAAO,CAAC,aAAa,CAAC,CAAe;IAExB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB1D,UAAU,CAAC,QAAQ,EAAE,MAAM;IAO3B,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,4BAA4B;CA0BxE"}
@@ -0,0 +1,58 @@
1
+ import { Plugin } from "../../abstracts/Plugin.js";
2
+ import { GuildDelete } from "./GuildDeleteListener.js";
3
+ import { VoiceServerUpdate } from "./VoiceServerUpdateListener.js";
4
+ import { VoiceStateUpdate } from "./VoiceStateUpdateListener.js";
5
+ export class VoicePlugin extends Plugin {
6
+ id = "voice";
7
+ client;
8
+ adapters = new Map();
9
+ shardingPlugin;
10
+ gatewayPlugin;
11
+ async registerClient(client) {
12
+ this.client = client;
13
+ const sharding = this.client.getPlugin("sharding");
14
+ if (sharding) {
15
+ this.shardingPlugin = sharding;
16
+ }
17
+ const gateway = this.client.getPlugin("gateway");
18
+ if (gateway) {
19
+ this.gatewayPlugin = gateway;
20
+ }
21
+ if (!this.gatewayPlugin && !this.shardingPlugin) {
22
+ throw new Error("Voice cannot be used without a gateway connection.");
23
+ }
24
+ this.client.registerListener(new GuildDelete());
25
+ this.client.registerListener(new VoiceStateUpdate());
26
+ this.client.registerListener(new VoiceServerUpdate());
27
+ }
28
+ getGateway(guild_id) {
29
+ if (this.shardingPlugin) {
30
+ return this.shardingPlugin.getShardForGuild(guild_id);
31
+ }
32
+ return this.gatewayPlugin;
33
+ }
34
+ getGatewayAdapterCreator(guild_id) {
35
+ const gateway = this.getGateway(guild_id);
36
+ if (!gateway) {
37
+ throw new Error("Voice cannot be used without a gateway connection.");
38
+ }
39
+ return (methods) => {
40
+ this.adapters.set(guild_id, methods);
41
+ return {
42
+ sendPayload(payload) {
43
+ try {
44
+ gateway.send(payload, true);
45
+ return true;
46
+ }
47
+ catch {
48
+ return false;
49
+ }
50
+ },
51
+ destroy: () => {
52
+ this.adapters.delete(guild_id);
53
+ }
54
+ };
55
+ };
56
+ }
57
+ }
58
+ //# sourceMappingURL=VoicePlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VoicePlugin.js","sourceRoot":"","sources":["../../../../src/plugins/voice/VoicePlugin.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAIlD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAEhE,MAAM,OAAO,WAAY,SAAQ,MAAM;IAC7B,EAAE,GAAG,OAAO,CAAA;IACX,MAAM,CAAS;IAChB,QAAQ,GAChB,IAAI,GAAG,EAAE,CAAA;IACF,cAAc,CAAiB;IAC/B,aAAa,CAAgB;IAE9B,KAAK,CAAC,cAAc,CAAC,MAAc;QACzC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAiB,UAAU,CAAC,CAAA;QAClE,IAAI,QAAQ,EAAE,CAAC;YACd,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAA;QAC/B,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAgB,SAAS,CAAC,CAAA;QAC/D,IAAI,OAAO,EAAE,CAAC;YACb,IAAI,CAAC,aAAa,GAAG,OAAO,CAAA;QAC7B,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACjD,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAA;QACtE,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,WAAW,EAAE,CAAC,CAAA;QAC/C,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,gBAAgB,EAAE,CAAC,CAAA;QACpD,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,iBAAiB,EAAE,CAAC,CAAA;IACtD,CAAC;IAED,UAAU,CAAC,QAAgB;QAC1B,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAA;QACtD,CAAC;QACD,OAAO,IAAI,CAAC,aAAa,CAAA;IAC1B,CAAC;IAED,wBAAwB,CAAC,QAAgB;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;QAEzC,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAA;QACtE,CAAC;QAED,OAAO,CACN,OAA4C,EACF,EAAE;YAC5C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;YACpC,OAAO;gBACN,WAAW,CAAC,OAAuB;oBAClC,IAAI,CAAC;wBACJ,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;wBAC3B,OAAO,IAAI,CAAA;oBACZ,CAAC;oBAAC,MAAM,CAAC;wBACR,OAAO,KAAK,CAAA;oBACb,CAAC;gBACF,CAAC;gBACD,OAAO,EAAE,GAAS,EAAE;oBACnB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;gBAC/B,CAAC;aACD,CAAA;QACF,CAAC,CAAA;IACF,CAAC;CACD"}
@@ -0,0 +1,10 @@
1
+ import type { Client } from "../../classes/Client.js";
2
+ import { VoiceServerUpdateListener } from "../../classes/Listener.js";
3
+ import type { ListenerEventData } from "../../types/index.js";
4
+ /**
5
+ * Forwards VOICE_SERVER_UPDATE events to voice adapters.
6
+ */
7
+ export declare class VoiceServerUpdate extends VoiceServerUpdateListener {
8
+ handle(data: ListenerEventData[this["type"]], client: Client): Promise<void>;
9
+ }
10
+ //# sourceMappingURL=VoiceServerUpdateListener.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VoiceServerUpdateListener.d.ts","sourceRoot":"","sources":["../../../../src/plugins/voice/VoiceServerUpdateListener.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAA;AACrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAG7D;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,yBAAyB;IACzD,MAAM,CAAC,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM;CAQlE"}
@@ -0,0 +1,16 @@
1
+ import { VoiceServerUpdateListener } from "../../classes/Listener.js";
2
+ /**
3
+ * Forwards VOICE_SERVER_UPDATE events to voice adapters.
4
+ */
5
+ export class VoiceServerUpdate extends VoiceServerUpdateListener {
6
+ async handle(data, client) {
7
+ const voice = client.getPlugin("voice");
8
+ if (!voice)
9
+ return;
10
+ const guildId = data.guild_id;
11
+ if (guildId) {
12
+ voice.adapters.get(guildId)?.onVoiceServerUpdate(data);
13
+ }
14
+ }
15
+ }
16
+ //# sourceMappingURL=VoiceServerUpdateListener.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VoiceServerUpdateListener.js","sourceRoot":"","sources":["../../../../src/plugins/voice/VoiceServerUpdateListener.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAA;AAIrE;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,yBAAyB;IAC/D,KAAK,CAAC,MAAM,CAAC,IAAqC,EAAE,MAAc;QACjE,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAc,OAAO,CAAC,CAAA;QACpD,IAAI,CAAC,KAAK;YAAE,OAAM;QAClB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAA;QAC7B,IAAI,OAAO,EAAE,CAAC;YACb,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAA;QACvD,CAAC;IACF,CAAC;CACD"}
@@ -0,0 +1,10 @@
1
+ import type { Client } from "../../classes/Client.js";
2
+ import { VoiceStateUpdateListener } from "../../classes/Listener.js";
3
+ import type { ListenerEventData } from "../../types/index.js";
4
+ /**
5
+ * Forwards VOICE_STATE_UPDATE events to voice adapters.
6
+ */
7
+ export declare class VoiceStateUpdate extends VoiceStateUpdateListener {
8
+ handle(data: ListenerEventData[this["type"]], client: Client): Promise<void>;
9
+ }
10
+ //# sourceMappingURL=VoiceStateUpdateListener.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VoiceStateUpdateListener.d.ts","sourceRoot":"","sources":["../../../../src/plugins/voice/VoiceStateUpdateListener.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAA;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAG7D;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,wBAAwB;IACvD,MAAM,CAAC,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM;CAalE"}
@@ -0,0 +1,21 @@
1
+ import { VoiceStateUpdateListener } from "../../classes/Listener.js";
2
+ /**
3
+ * Forwards VOICE_STATE_UPDATE events to voice adapters.
4
+ */
5
+ export class VoiceStateUpdate extends VoiceStateUpdateListener {
6
+ async handle(data, client) {
7
+ const voice = client.getPlugin("voice");
8
+ if (!voice)
9
+ return;
10
+ const guildId = data.guild_id;
11
+ if (guildId) {
12
+ // Reconstruct raw payload for @discordjs/voice adapter
13
+ const raw = {
14
+ ...data,
15
+ member: data.rawMember
16
+ };
17
+ voice.adapters.get(guildId)?.onVoiceStateUpdate(raw);
18
+ }
19
+ }
20
+ }
21
+ //# sourceMappingURL=VoiceStateUpdateListener.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VoiceStateUpdateListener.js","sourceRoot":"","sources":["../../../../src/plugins/voice/VoiceStateUpdateListener.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAA;AAIpE;;GAEG;AACH,MAAM,OAAO,gBAAiB,SAAQ,wBAAwB;IAC7D,KAAK,CAAC,MAAM,CAAC,IAAqC,EAAE,MAAc;QACjE,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAc,OAAO,CAAC,CAAA;QACpD,IAAI,CAAC,KAAK;YAAE,OAAM;QAClB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAA;QAC7B,IAAI,OAAO,EAAE,CAAC;YACb,uDAAuD;YACvD,MAAM,GAAG,GAAwC;gBAChD,GAAG,IAAI;gBACP,MAAM,EAAE,IAAI,CAAC,SAAS;aACtB,CAAA;YACD,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAA;QACrD,CAAC;IACF,CAAC;CACD"}
@@ -0,0 +1,2 @@
1
+ export * from "./VoicePlugin.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/voice/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from "./VoicePlugin.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/voice/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA"}
@@ -14,5 +14,9 @@ export declare class DmChannel<IsPartial extends boolean = false> extends BaseCh
14
14
  * Send a message to the channel
15
15
  */
16
16
  send(message: MessagePayload): Promise<Message<false>>;
17
+ /**
18
+ * Trigger a typing indicator in the channel (this will expire after 10 seconds)
19
+ */
20
+ triggerTyping(): Promise<void>;
17
21
  }
18
22
  //# sourceMappingURL=DmChannel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DmChannel.d.ts","sourceRoot":"","sources":["../../../src/structures/DmChannel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,WAAW,EAAU,MAAM,uBAAuB,CAAA;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAElE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC;;GAEG;AACH,qBAAa,SAAS,CAAC,SAAS,SAAS,OAAO,GAAG,KAAK,CAAE,SAAQ,WAAW,CAC5E,WAAW,CAAC,EAAE,EACd,SAAS,CACT;IACA;;OAEG;IACH,IAAI,IAAI,IAAI,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,CAGrC;IAED;;OAEG;IACG,IAAI,CAAC,OAAO,EAAE,cAAc;CAMlC"}
1
+ {"version":3,"file":"DmChannel.d.ts","sourceRoot":"","sources":["../../../src/structures/DmChannel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,WAAW,EAAU,MAAM,uBAAuB,CAAA;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAElE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC;;GAEG;AACH,qBAAa,SAAS,CAAC,SAAS,SAAS,OAAO,GAAG,KAAK,CAAE,SAAQ,WAAW,CAC5E,WAAW,CAAC,EAAE,EACd,SAAS,CACT;IACA;;OAEG;IACH,IAAI,IAAI,IAAI,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,CAGrC;IAED;;OAEG;IACG,IAAI,CAAC,OAAO,EAAE,cAAc;IAOlC;;OAEG;IACG,aAAa;CAGnB"}
@@ -23,5 +23,11 @@ export class DmChannel extends BaseChannel {
23
23
  }));
24
24
  return new Message(this.client, data);
25
25
  }
26
+ /**
27
+ * Trigger a typing indicator in the channel (this will expire after 10 seconds)
28
+ */
29
+ async triggerTyping() {
30
+ await this.client.rest.post(Routes.channelTyping(this.id), {});
31
+ }
26
32
  }
27
33
  //# sourceMappingURL=DmChannel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DmChannel.js","sourceRoot":"","sources":["../../../src/structures/DmChannel.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAEzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC;;GAEG;AACH,MAAM,OAAO,SAA6C,SAAQ,WAGjE;IACA;;OAEG;IACH,IAAI,IAAI;QACP,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,SAAkB,CAAA;QAC5C,OAAO,IAAI,CAAA;IACZ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,OAAuB;QACjC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;YAC1E,IAAI,EAAE,gBAAgB,CAAC,OAAO,CAAC;SAC/B,CAAC,CAAe,CAAA;QACjB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACtC,CAAC;CACD"}
1
+ {"version":3,"file":"DmChannel.js","sourceRoot":"","sources":["../../../src/structures/DmChannel.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AAEzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC;;GAEG;AACH,MAAM,OAAO,SAA6C,SAAQ,WAGjE;IACA;;OAEG;IACH,IAAI,IAAI;QACP,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,SAAkB,CAAA;QAC5C,OAAO,IAAI,CAAA;IACZ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,OAAuB;QACjC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;YAC1E,IAAI,EAAE,gBAAgB,CAAC,OAAO,CAAC;SAC/B,CAAC,CAAe,CAAA;QACjB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACtC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa;QAClB,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;IAC/D,CAAC;CACD"}
@@ -67,5 +67,9 @@ export declare class GroupDmChannel<IsPartial extends boolean = false> extends B
67
67
  * @param name The new name of the channel
68
68
  */
69
69
  setName(name: string): Promise<void>;
70
+ /**
71
+ * Trigger a typing indicator in the channel (this will expire after 10 seconds)
72
+ */
73
+ triggerTyping(): Promise<void>;
70
74
  }
71
75
  //# sourceMappingURL=GroupDmChannel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"GroupDmChannel.d.ts","sourceRoot":"","sources":["../../../src/structures/GroupDmChannel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAU,MAAM,uBAAuB,CAAA;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC;;GAEG;AACH,qBAAa,cAAc,CAC1B,SAAS,SAAS,OAAO,GAAG,KAAK,CAChC,SAAQ,WAAW,CAAC,WAAW,CAAC,OAAO,EAAE,SAAS,CAAC;IACpD;;OAEG;IACH,IAAI,IAAI,IAAI,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC,CAG9C;IAED;;OAEG;IACH,IAAI,UAAU,IAAI,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAItD;IAED;;OAEG;IACH,IAAI,aAAa,IAAI,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC,CAGvD;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC,CAG9C;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC,CAMjD;IAED;;;;OAIG;IACH,UAAU,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IASxE;;OAEG;IACH,IAAI,OAAO,IAAI,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC,CAGjD;IAED;;;;;OAKG;IACH,IAAI,aAAa,IAAI,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC,CAGvD;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAG3C;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,CAGtB;IAED;;;;;;;OAOG;IACH,IAAI,WAAW,yBAMd;IAED;;;OAGG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM;CA4B1B"}
1
+ {"version":3,"file":"GroupDmChannel.d.ts","sourceRoot":"","sources":["../../../src/structures/GroupDmChannel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAU,MAAM,uBAAuB,CAAA;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC;;GAEG;AACH,qBAAa,cAAc,CAC1B,SAAS,SAAS,OAAO,GAAG,KAAK,CAChC,SAAQ,WAAW,CAAC,WAAW,CAAC,OAAO,EAAE,SAAS,CAAC;IACpD;;OAEG;IACH,IAAI,IAAI,IAAI,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC,CAG9C;IAED;;OAEG;IACH,IAAI,UAAU,IAAI,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAItD;IAED;;OAEG;IACH,IAAI,aAAa,IAAI,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC,CAGvD;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC,CAG9C;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC,CAMjD;IAED;;;;OAIG;IACH,UAAU,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IASxE;;OAEG;IACH,IAAI,OAAO,IAAI,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC,CAGjD;IAED;;;;;OAKG;IACH,IAAI,aAAa,IAAI,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC,CAGvD;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAG3C;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,CAGtB;IAED;;;;;;;OAOG;IACH,IAAI,WAAW,yBAMd;IAED;;;OAGG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM;IAS1B;;OAEG;IACG,aAAa;CAuBnB"}
@@ -121,5 +121,11 @@ export class GroupDmChannel extends BaseChannel {
121
121
  });
122
122
  this.setField("name", name);
123
123
  }
124
+ /**
125
+ * Trigger a typing indicator in the channel (this will expire after 10 seconds)
126
+ */
127
+ async triggerTyping() {
128
+ await this.client.rest.post(Routes.channelTyping(this.id), {});
129
+ }
124
130
  }
125
131
  //# sourceMappingURL=GroupDmChannel.js.map