seyfert 1.5.0 → 2.0.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 (427) hide show
  1. package/LICENSE +21 -190
  2. package/README.md +18 -10
  3. package/lib/api/Router.js +2 -2
  4. package/lib/api/Routes/applications.d.ts +23 -1
  5. package/lib/api/Routes/channels.d.ts +1 -1
  6. package/lib/api/Routes/gateway.d.ts +1 -1
  7. package/lib/api/Routes/guilds.d.ts +5 -2
  8. package/lib/api/Routes/interactions.d.ts +1 -1
  9. package/lib/api/Routes/invites.d.ts +1 -1
  10. package/lib/api/Routes/stage-instances.d.ts +1 -1
  11. package/lib/api/Routes/stickers.d.ts +2 -2
  12. package/lib/api/Routes/users.d.ts +1 -1
  13. package/lib/api/Routes/voice.d.ts +1 -1
  14. package/lib/api/Routes/webhooks.d.ts +2 -2
  15. package/lib/api/api.d.ts +2 -2
  16. package/lib/api/api.js +2 -14
  17. package/lib/api/bucket.d.ts +0 -1
  18. package/lib/api/shared.d.ts +0 -1
  19. package/lib/api/utils/constants.d.ts +2 -5
  20. package/lib/api/utils/constants.js +3 -7
  21. package/lib/api/utils/utils.d.ts +1 -2
  22. package/lib/api/utils/utils.js +2 -3
  23. package/lib/builders/ActionRow.d.ts +1 -1
  24. package/lib/builders/ActionRow.js +3 -3
  25. package/lib/builders/Attachment.d.ts +2 -3
  26. package/lib/builders/Attachment.js +12 -13
  27. package/lib/builders/Base.d.ts +2 -2
  28. package/lib/builders/Base.js +1 -1
  29. package/lib/builders/Button.d.ts +7 -7
  30. package/lib/builders/Button.js +11 -9
  31. package/lib/builders/Embed.d.ts +1 -1
  32. package/lib/builders/Modal.d.ts +1 -1
  33. package/lib/builders/Modal.js +2 -2
  34. package/lib/builders/Poll.d.ts +2 -2
  35. package/lib/builders/Poll.js +5 -6
  36. package/lib/builders/SelectMenu.d.ts +1 -1
  37. package/lib/builders/SelectMenu.js +17 -18
  38. package/lib/builders/index.d.ts +1 -1
  39. package/lib/builders/index.js +10 -11
  40. package/lib/cache/adapters/default.d.ts +16 -9
  41. package/lib/cache/adapters/default.js +42 -31
  42. package/lib/cache/adapters/index.d.ts +0 -1
  43. package/lib/cache/adapters/index.js +0 -1
  44. package/lib/cache/adapters/limited.d.ts +17 -12
  45. package/lib/cache/adapters/limited.js +80 -36
  46. package/lib/cache/adapters/types.d.ts +6 -7
  47. package/lib/cache/adapters/workeradapter.d.ts +6 -6
  48. package/lib/cache/adapters/workeradapter.js +13 -0
  49. package/lib/cache/index.d.ts +18 -9
  50. package/lib/cache/index.js +319 -21
  51. package/lib/cache/resources/bans.d.ts +9 -6
  52. package/lib/cache/resources/bans.js +13 -4
  53. package/lib/cache/resources/channels.d.ts +6 -4
  54. package/lib/cache/resources/channels.js +13 -7
  55. package/lib/cache/resources/default/base.d.ts +7 -7
  56. package/lib/cache/resources/default/base.js +2 -2
  57. package/lib/cache/resources/default/guild-based.d.ts +6 -6
  58. package/lib/cache/resources/default/guild-based.js +6 -6
  59. package/lib/cache/resources/default/guild-related.d.ts +7 -7
  60. package/lib/cache/resources/default/guild-related.js +10 -8
  61. package/lib/cache/resources/emojis.d.ts +15 -6
  62. package/lib/cache/resources/emojis.js +13 -4
  63. package/lib/cache/resources/guilds.d.ts +9 -6
  64. package/lib/cache/resources/guilds.js +27 -6
  65. package/lib/cache/resources/members.d.ts +9 -6
  66. package/lib/cache/resources/members.js +22 -6
  67. package/lib/cache/resources/messages.d.ts +11 -7
  68. package/lib/cache/resources/messages.js +19 -7
  69. package/lib/cache/resources/overwrites.d.ts +11 -2
  70. package/lib/cache/resources/overwrites.js +9 -0
  71. package/lib/cache/resources/presence.d.ts +3 -2
  72. package/lib/cache/resources/roles.d.ts +9 -6
  73. package/lib/cache/resources/roles.js +13 -4
  74. package/lib/cache/resources/stage-instances.d.ts +2 -2
  75. package/lib/cache/resources/stickers.d.ts +9 -6
  76. package/lib/cache/resources/stickers.js +13 -4
  77. package/lib/cache/resources/threads.d.ts +9 -6
  78. package/lib/cache/resources/threads.js +13 -4
  79. package/lib/cache/resources/users.d.ts +9 -6
  80. package/lib/cache/resources/users.js +13 -4
  81. package/lib/cache/resources/voice-states.d.ts +11 -8
  82. package/lib/cache/resources/voice-states.js +15 -4
  83. package/lib/client/base.d.ts +28 -20
  84. package/lib/client/base.js +58 -56
  85. package/lib/client/client.d.ts +7 -16
  86. package/lib/client/client.js +29 -31
  87. package/lib/client/collectors.d.ts +10 -10
  88. package/lib/client/collectors.js +26 -1
  89. package/lib/client/httpclient.d.ts +8 -13
  90. package/lib/client/httpclient.js +27 -218
  91. package/lib/client/index.d.ts +1 -0
  92. package/lib/client/index.js +1 -0
  93. package/lib/client/transformers.d.ts +68 -0
  94. package/lib/client/transformers.js +99 -0
  95. package/lib/client/types.d.ts +5 -0
  96. package/lib/client/types.js +2 -0
  97. package/lib/client/workerclient.d.ts +14 -14
  98. package/lib/client/workerclient.js +112 -66
  99. package/lib/commands/applications/chat.d.ts +35 -34
  100. package/lib/commands/applications/chat.js +5 -9
  101. package/lib/commands/applications/chatcontext.d.ts +17 -17
  102. package/lib/commands/applications/chatcontext.js +5 -5
  103. package/lib/commands/applications/menu.d.ts +2 -3
  104. package/lib/commands/applications/menu.js +2 -5
  105. package/lib/commands/applications/menucontext.d.ts +14 -13
  106. package/lib/commands/applications/menucontext.js +9 -9
  107. package/lib/commands/applications/options.d.ts +1 -1
  108. package/lib/commands/applications/options.js +20 -21
  109. package/lib/commands/applications/shared.d.ts +3 -1
  110. package/lib/commands/decorators.d.ts +38 -20
  111. package/lib/commands/decorators.js +17 -18
  112. package/lib/commands/handle.d.ts +64 -0
  113. package/lib/commands/handle.js +685 -0
  114. package/lib/commands/handler.d.ts +27 -18
  115. package/lib/commands/handler.js +290 -164
  116. package/lib/commands/optionresolver.d.ts +13 -13
  117. package/lib/commands/optionresolver.js +23 -28
  118. package/lib/common/bot/watcher.d.ts +4 -33
  119. package/lib/common/bot/watcher.js +0 -109
  120. package/lib/common/index.d.ts +1 -0
  121. package/lib/common/index.js +1 -0
  122. package/lib/common/it/colors.js +48 -49
  123. package/lib/common/it/formatter.d.ts +32 -0
  124. package/lib/common/it/formatter.js +42 -0
  125. package/lib/common/it/logger.d.ts +0 -1
  126. package/lib/common/it/logger.js +3 -3
  127. package/lib/common/it/utils.d.ts +15 -2
  128. package/lib/common/it/utils.js +78 -17
  129. package/lib/common/shorters/application.d.ts +56 -0
  130. package/lib/common/shorters/application.js +81 -0
  131. package/lib/common/shorters/bans.d.ts +4 -5
  132. package/lib/common/shorters/bans.js +3 -3
  133. package/lib/common/shorters/channels.d.ts +7 -6
  134. package/lib/common/shorters/channels.js +19 -15
  135. package/lib/common/shorters/emojis.d.ts +5 -6
  136. package/lib/common/shorters/emojis.js +5 -5
  137. package/lib/common/shorters/guilds.d.ts +18 -16
  138. package/lib/common/shorters/guilds.js +31 -26
  139. package/lib/common/shorters/interaction.d.ts +6 -6
  140. package/lib/common/shorters/interaction.js +3 -2
  141. package/lib/common/shorters/members.d.ts +29 -12
  142. package/lib/common/shorters/members.js +55 -16
  143. package/lib/common/shorters/messages.d.ts +7 -8
  144. package/lib/common/shorters/messages.js +8 -7
  145. package/lib/common/shorters/reactions.d.ts +3 -3
  146. package/lib/common/shorters/reactions.js +11 -11
  147. package/lib/common/shorters/roles.d.ts +9 -7
  148. package/lib/common/shorters/roles.js +26 -7
  149. package/lib/common/shorters/templates.d.ts +7 -8
  150. package/lib/common/shorters/templates.js +7 -7
  151. package/lib/common/shorters/threads.d.ts +6 -7
  152. package/lib/common/shorters/threads.js +6 -9
  153. package/lib/common/shorters/users.d.ts +4 -4
  154. package/lib/common/shorters/users.js +8 -4
  155. package/lib/common/shorters/webhook.d.ts +10 -10
  156. package/lib/common/shorters/webhook.js +10 -9
  157. package/lib/common/types/resolvables.d.ts +2 -2
  158. package/lib/common/types/util.d.ts +3 -1
  159. package/lib/common/types/write.d.ts +1 -1
  160. package/lib/components/ActionRow.d.ts +1 -1
  161. package/lib/components/BaseComponent.d.ts +1 -1
  162. package/lib/components/BaseComponent.js +1 -1
  163. package/lib/components/BaseSelectMenuComponent.d.ts +1 -1
  164. package/lib/components/ButtonComponent.d.ts +17 -7
  165. package/lib/components/ButtonComponent.js +19 -2
  166. package/lib/components/ChannelSelectMenuComponent.d.ts +3 -3
  167. package/lib/components/MentionableSelectMenuComponent.d.ts +2 -2
  168. package/lib/components/RoleSelectMenuComponent.d.ts +2 -2
  169. package/lib/components/StringSelectMenuComponent.d.ts +2 -2
  170. package/lib/components/TextInputComponent.d.ts +2 -2
  171. package/lib/components/UserSelectMenuComponent.d.ts +2 -2
  172. package/lib/components/componentcommand.js +2 -2
  173. package/lib/components/componentcontext.d.ts +10 -9
  174. package/lib/components/componentcontext.js +8 -8
  175. package/lib/components/handler.d.ts +15 -14
  176. package/lib/components/handler.js +89 -93
  177. package/lib/components/index.d.ts +3 -3
  178. package/lib/components/index.js +12 -10
  179. package/lib/components/modalcontext.d.ts +12 -11
  180. package/lib/components/modalcontext.js +2 -2
  181. package/lib/deps/mixer.d.ts +8 -0
  182. package/lib/deps/mixer.js +66 -0
  183. package/lib/events/handler.d.ts +35 -13
  184. package/lib/events/handler.js +58 -25
  185. package/lib/events/hooks/application_command.d.ts +2 -2
  186. package/lib/events/hooks/auto_moderation.d.ts +6 -7
  187. package/lib/events/hooks/auto_moderation.js +4 -4
  188. package/lib/events/hooks/channel.d.ts +2 -2
  189. package/lib/events/hooks/channel.js +4 -7
  190. package/lib/events/hooks/custom.d.ts +3 -3
  191. package/lib/events/hooks/dispatch.d.ts +3 -4
  192. package/lib/events/hooks/dispatch.js +2 -2
  193. package/lib/events/hooks/entitlement.d.ts +5 -37
  194. package/lib/events/hooks/entitlement.js +7 -7
  195. package/lib/events/hooks/guild.d.ts +125 -125
  196. package/lib/events/hooks/guild.js +13 -15
  197. package/lib/events/hooks/integration.d.ts +27 -28
  198. package/lib/events/hooks/integration.js +3 -3
  199. package/lib/events/hooks/interactions.d.ts +2 -2
  200. package/lib/events/hooks/invite.d.ts +18 -17
  201. package/lib/events/hooks/message.d.ts +69 -54
  202. package/lib/events/hooks/message.js +4 -8
  203. package/lib/events/hooks/presence.d.ts +17 -16
  204. package/lib/events/hooks/stage.d.ts +4 -4
  205. package/lib/events/hooks/thread.d.ts +132 -63
  206. package/lib/events/hooks/thread.js +4 -4
  207. package/lib/events/hooks/typing.d.ts +28 -6
  208. package/lib/events/hooks/typing.js +2 -2
  209. package/lib/events/hooks/user.d.ts +3 -3
  210. package/lib/events/hooks/user.js +2 -2
  211. package/lib/events/hooks/voice.d.ts +28 -3
  212. package/lib/events/hooks/voice.js +8 -4
  213. package/lib/events/hooks/webhook.d.ts +1 -1
  214. package/lib/index.d.ts +5 -14
  215. package/lib/index.js +7 -12
  216. package/lib/langs/handler.d.ts +14 -10
  217. package/lib/langs/handler.js +40 -9
  218. package/lib/structures/AutoModerationRule.d.ts +4 -4
  219. package/lib/structures/AutoModerationRule.js +1 -2
  220. package/lib/structures/ClientUser.d.ts +1 -1
  221. package/lib/structures/Entitlement.d.ts +10 -0
  222. package/lib/structures/Entitlement.js +16 -0
  223. package/lib/structures/Guild.d.ts +33 -34
  224. package/lib/structures/Guild.js +5 -2
  225. package/lib/structures/GuildBan.d.ts +6 -6
  226. package/lib/structures/GuildBan.js +2 -1
  227. package/lib/structures/GuildEmoji.d.ts +4 -4
  228. package/lib/structures/GuildEmoji.js +3 -2
  229. package/lib/structures/GuildMember.d.ts +20 -17
  230. package/lib/structures/GuildMember.js +18 -8
  231. package/lib/structures/GuildPreview.d.ts +1 -1
  232. package/lib/structures/GuildRole.d.ts +5 -3
  233. package/lib/structures/GuildRole.js +8 -1
  234. package/lib/structures/GuildTemplate.d.ts +2 -2
  235. package/lib/structures/GuildTemplate.js +1 -1
  236. package/lib/structures/Interaction.d.ts +53 -36
  237. package/lib/structures/Interaction.js +127 -91
  238. package/lib/structures/Message.d.ts +29 -30
  239. package/lib/structures/Message.js +8 -9
  240. package/lib/structures/Poll.d.ts +4 -3
  241. package/lib/structures/Poll.js +6 -2
  242. package/lib/structures/Sticker.d.ts +7 -7
  243. package/lib/structures/Sticker.js +7 -7
  244. package/lib/structures/User.d.ts +5 -4
  245. package/lib/structures/User.js +2 -1
  246. package/lib/structures/VoiceState.d.ts +15 -11
  247. package/lib/structures/VoiceState.js +35 -17
  248. package/lib/structures/Webhook.d.ts +6 -7
  249. package/lib/structures/Webhook.js +6 -7
  250. package/lib/structures/channels.d.ts +11 -10
  251. package/lib/structures/channels.js +70 -65
  252. package/lib/structures/extra/BaseGuild.d.ts +1 -1
  253. package/lib/structures/extra/BaseGuild.js +3 -3
  254. package/lib/structures/extra/BitField.d.ts +1 -1
  255. package/lib/structures/extra/BitField.js +3 -2
  256. package/lib/structures/extra/DiscordBase.js +2 -2
  257. package/lib/structures/extra/Permissions.d.ts +3 -1
  258. package/lib/structures/extra/Permissions.js +8 -3
  259. package/lib/types/gateway.d.ts +1537 -0
  260. package/lib/types/gateway.js +4 -0
  261. package/lib/types/index.d.ts +9 -1
  262. package/lib/types/index.js +28 -1
  263. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/attachment.d.ts +5 -0
  264. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/attachment.js +2 -0
  265. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/base.d.ts +22 -0
  266. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/base.js +2 -0
  267. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/boolean.d.ts +4 -0
  268. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/boolean.js +2 -0
  269. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/channel.d.ts +7 -0
  270. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/channel.js +2 -0
  271. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/integer.d.ts +17 -0
  272. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/integer.js +2 -0
  273. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/mentionable.d.ts +5 -0
  274. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/mentionable.js +2 -0
  275. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/number.d.ts +17 -0
  276. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/number.js +2 -0
  277. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/role.d.ts +5 -0
  278. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/role.js +2 -0
  279. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/shared.d.ts +25 -0
  280. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/shared.js +20 -0
  281. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/string.d.ts +17 -0
  282. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/string.js +2 -0
  283. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/subcommand.d.ts +11 -0
  284. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/subcommand.js +2 -0
  285. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/subcommandGroup.d.ts +11 -0
  286. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/subcommandGroup.js +2 -0
  287. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/user.d.ts +5 -0
  288. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/user.js +2 -0
  289. package/lib/types/payloads/_interactions/_applicationCommands/chatInput.d.ts +60 -0
  290. package/lib/types/payloads/_interactions/_applicationCommands/chatInput.js +29 -0
  291. package/lib/types/payloads/_interactions/_applicationCommands/contextMenu.d.ts +65 -0
  292. package/lib/types/payloads/_interactions/_applicationCommands/contextMenu.js +2 -0
  293. package/lib/types/payloads/_interactions/_applicationCommands/internals.d.ts +8 -0
  294. package/lib/types/payloads/_interactions/_applicationCommands/internals.js +2 -0
  295. package/lib/types/payloads/_interactions/_applicationCommands/permissions.d.ts +54 -0
  296. package/lib/types/payloads/_interactions/_applicationCommands/permissions.js +20 -0
  297. package/lib/types/payloads/_interactions/applicationCommands.d.ts +153 -0
  298. package/lib/types/payloads/_interactions/applicationCommands.js +61 -0
  299. package/lib/types/payloads/_interactions/autocomplete.d.ts +10 -0
  300. package/lib/types/payloads/_interactions/autocomplete.js +2 -0
  301. package/lib/types/payloads/_interactions/base.d.ts +197 -0
  302. package/lib/types/payloads/_interactions/base.js +2 -0
  303. package/lib/types/payloads/_interactions/messageComponents.d.ts +41 -0
  304. package/lib/types/payloads/_interactions/messageComponents.js +2 -0
  305. package/lib/types/payloads/_interactions/modalSubmit.d.ts +35 -0
  306. package/lib/types/payloads/_interactions/modalSubmit.js +2 -0
  307. package/lib/types/payloads/_interactions/ping.d.ts +3 -0
  308. package/lib/types/payloads/_interactions/ping.js +2 -0
  309. package/lib/types/payloads/_interactions/responses.d.ts +112 -0
  310. package/lib/types/payloads/_interactions/responses.js +54 -0
  311. package/lib/types/payloads/application.d.ts +292 -0
  312. package/lib/types/payloads/application.js +117 -0
  313. package/lib/types/payloads/auditLog.d.ts +644 -0
  314. package/lib/types/payloads/auditLog.js +80 -0
  315. package/lib/types/payloads/autoModeration.d.ts +219 -0
  316. package/lib/types/payloads/autoModeration.js +87 -0
  317. package/lib/types/payloads/channel.d.ts +1708 -0
  318. package/lib/types/payloads/channel.js +372 -0
  319. package/lib/types/payloads/emoji.d.ts +48 -0
  320. package/lib/types/payloads/emoji.js +5 -0
  321. package/lib/types/payloads/gateway.d.ts +373 -0
  322. package/lib/types/payloads/gateway.js +82 -0
  323. package/lib/types/payloads/guild.d.ts +1060 -0
  324. package/lib/types/payloads/guild.js +324 -0
  325. package/lib/types/payloads/guildScheduledEvent.d.ts +138 -0
  326. package/lib/types/payloads/guildScheduledEvent.js +32 -0
  327. package/lib/types/payloads/index.d.ts +64 -0
  328. package/lib/types/payloads/index.js +37 -0
  329. package/lib/types/payloads/interactions.d.ts +24 -0
  330. package/lib/types/payloads/interactions.js +23 -0
  331. package/lib/types/payloads/invite.d.ts +121 -0
  332. package/lib/types/payloads/invite.js +23 -0
  333. package/lib/types/payloads/monetization.d.ts +150 -0
  334. package/lib/types/payloads/monetization.js +79 -0
  335. package/lib/types/payloads/oauth2.d.ts +131 -0
  336. package/lib/types/payloads/oauth2.js +135 -0
  337. package/lib/types/payloads/permissions.d.ts +97 -0
  338. package/lib/types/payloads/permissions.js +16 -0
  339. package/lib/types/payloads/poll.d.ts +104 -0
  340. package/lib/types/payloads/poll.js +16 -0
  341. package/lib/types/payloads/stageInstance.d.ts +77 -0
  342. package/lib/types/payloads/stageInstance.js +19 -0
  343. package/lib/types/payloads/sticker.d.ts +123 -0
  344. package/lib/types/payloads/sticker.js +30 -0
  345. package/lib/types/payloads/teams.d.ts +78 -0
  346. package/lib/types/payloads/teams.js +23 -0
  347. package/lib/types/payloads/template.d.ts +62 -0
  348. package/lib/types/payloads/template.js +5 -0
  349. package/lib/types/payloads/user.d.ts +337 -0
  350. package/lib/types/payloads/user.js +167 -0
  351. package/lib/types/payloads/voice.d.ts +89 -0
  352. package/lib/types/payloads/voice.js +5 -0
  353. package/lib/types/payloads/webhook.d.ts +76 -0
  354. package/lib/types/payloads/webhook.js +21 -0
  355. package/lib/types/rest/application.d.ts +57 -0
  356. package/lib/types/rest/application.js +2 -0
  357. package/lib/types/rest/auditLog.d.ts +30 -0
  358. package/lib/types/rest/auditLog.js +2 -0
  359. package/lib/types/rest/autoModeration.d.ts +66 -0
  360. package/lib/types/rest/autoModeration.js +2 -0
  361. package/lib/types/rest/channel.d.ts +712 -0
  362. package/lib/types/rest/channel.js +11 -0
  363. package/lib/types/rest/emoji.d.ts +54 -0
  364. package/lib/types/rest/emoji.js +2 -0
  365. package/lib/types/rest/gateway.d.ts +9 -0
  366. package/lib/types/rest/gateway.js +2 -0
  367. package/lib/types/rest/guild.d.ts +865 -0
  368. package/lib/types/rest/guild.js +2 -0
  369. package/lib/types/rest/guildScheduledEvent.d.ts +126 -0
  370. package/lib/types/rest/guildScheduledEvent.js +2 -0
  371. package/lib/types/rest/index.d.ts +296 -0
  372. package/lib/types/rest/index.js +292 -0
  373. package/lib/types/rest/interactions.d.ts +194 -0
  374. package/lib/types/rest/interactions.js +2 -0
  375. package/lib/types/rest/invite.d.ts +24 -0
  376. package/lib/types/rest/invite.js +2 -0
  377. package/lib/types/rest/monetization.d.ts +82 -0
  378. package/lib/types/rest/monetization.js +11 -0
  379. package/lib/types/rest/oauth2.d.ts +172 -0
  380. package/lib/types/rest/oauth2.js +2 -0
  381. package/lib/types/rest/poll.d.ts +44 -0
  382. package/lib/types/rest/poll.js +2 -0
  383. package/lib/types/rest/stageInstance.d.ts +58 -0
  384. package/lib/types/rest/stageInstance.js +2 -0
  385. package/lib/types/rest/sticker.d.ts +77 -0
  386. package/lib/types/rest/sticker.js +2 -0
  387. package/lib/types/rest/template.d.ts +62 -0
  388. package/lib/types/rest/template.js +2 -0
  389. package/lib/types/rest/user.d.ts +120 -0
  390. package/lib/types/rest/user.js +2 -0
  391. package/lib/types/rest/voice.d.ts +17 -0
  392. package/lib/types/rest/voice.js +2 -0
  393. package/lib/types/rest/webhook.d.ts +250 -0
  394. package/lib/types/rest/webhook.js +2 -0
  395. package/lib/types/utils/index.d.ts +797 -0
  396. package/lib/types/utils/index.js +799 -0
  397. package/lib/websocket/SharedTypes.d.ts +4 -3
  398. package/lib/websocket/SharedTypes.js +1 -1
  399. package/lib/websocket/constants/index.d.ts +0 -1
  400. package/lib/websocket/discord/basesocket.d.ts +7 -7
  401. package/lib/websocket/discord/basesocket.js +34 -22
  402. package/lib/websocket/discord/events/memberUpdate.d.ts +1 -6
  403. package/lib/websocket/discord/events/memberUpdate.js +2 -1
  404. package/lib/websocket/discord/events/presenceUpdate.d.ts +5 -18
  405. package/lib/websocket/discord/events/presenceUpdate.js +5 -6
  406. package/lib/websocket/discord/shard.d.ts +8 -8
  407. package/lib/websocket/discord/shard.js +59 -47
  408. package/lib/websocket/discord/sharder.d.ts +6 -5
  409. package/lib/websocket/discord/sharder.js +11 -10
  410. package/lib/websocket/discord/shared.d.ts +13 -5
  411. package/lib/websocket/discord/socket/custom.d.ts +52 -0
  412. package/lib/websocket/discord/socket/custom.js +283 -0
  413. package/lib/websocket/discord/worker.d.ts +5 -10
  414. package/lib/websocket/discord/workermanager.d.ts +8 -15
  415. package/lib/websocket/discord/workermanager.js +35 -39
  416. package/lib/websocket/structures/index.d.ts +0 -1
  417. package/lib/websocket/structures/index.js +1 -1
  418. package/lib/websocket/structures/timeout.d.ts +0 -1
  419. package/package.json +65 -74
  420. package/lib/cache/adapters/redis.d.ts +0 -37
  421. package/lib/cache/adapters/redis.js +0 -218
  422. package/lib/client/oninteractioncreate.d.ts +0 -4
  423. package/lib/client/oninteractioncreate.js +0 -198
  424. package/lib/client/onmessagecreate.d.ts +0 -13
  425. package/lib/client/onmessagecreate.js +0 -410
  426. package/lib/structures/extra/functions.d.ts +0 -12
  427. package/lib/structures/extra/functions.js +0 -70
@@ -1,6 +1,6 @@
1
- import { type APIAuditLogEntry, type APIAutoModerationRule, type APIChannel, type APIEntitlement, type APIGuild, type APIGuildMember, type APIGuildScheduledEvent, type APIStageInstance, type APIUser, type GatewayActivity, type GatewayAutoModerationActionExecutionDispatchData, type GatewayChannelPinsUpdateDispatchData, type GatewayChannelUpdateDispatchData, GatewayDispatchEvents, type GatewayGuildBanAddDispatchData, type GatewayGuildBanRemoveDispatchData, type GatewayGuildCreateDispatchData, type GatewayGuildDeleteDispatchData, type GatewayGuildEmojisUpdateDispatchData, type GatewayGuildIntegrationsUpdateDispatchData, type GatewayGuildMemberRemoveDispatchData, type GatewayGuildMemberUpdateDispatchData, type GatewayGuildMembersChunkDispatchData, type GatewayGuildRoleCreateDispatchData, type GatewayGuildRoleDeleteDispatchData, type GatewayGuildRoleUpdateDispatchData, type GatewayGuildScheduledEventUserRemoveDispatchData, type GatewayGuildStickersUpdateDispatchData, type GatewayIntegrationCreateDispatchData, type GatewayIntegrationDeleteDispatchData, type GatewayInteractionCreateDispatchData, type GatewayInviteCreateDispatchData, type GatewayInviteDeleteDispatchData, type GatewayMessageCreateDispatchData, type GatewayMessageDeleteBulkDispatchData, type GatewayMessageDeleteDispatchData, type GatewayMessageReactionAddDispatchData, type GatewayMessageReactionRemoveAllDispatchData, type GatewayMessageReactionRemoveDispatchData, type GatewayMessageReactionRemoveEmojiDispatchData, type GatewayMessageUpdateDispatchData, type GatewayPresenceUpdateData, type GatewayPresenceUpdateDispatchData, type GatewayReadyDispatchData, type GatewayRequestGuildMembersDataWithQuery, type GatewayRequestGuildMembersDataWithUserIds, type GatewayThreadCreateDispatchData, type GatewayThreadDeleteDispatchData, type GatewayThreadListSyncDispatchData, type GatewayThreadMemberUpdateDispatchData, type GatewayThreadMembersUpdateDispatchData, type GatewayTypingStartDispatchData, type GatewayUserUpdateDispatchData, type GatewayVoiceServerUpdateDispatchData, type GatewayVoiceStateUpdateData, type GatewayWebhooksUpdateDispatchData, type PresenceUpdateStatus, type GatewayMessagePollVoteDispatchData } from 'discord-api-types/v10';
2
1
  import type { RestToKeys } from '../common';
3
- import type { GatewayGuildMemberAddDispatchDataFixed } from '../structures';
2
+ import type { GatewayActivity, PresenceUpdateStatus, GatewayPresenceUpdateData, GatewayRequestGuildMembersDataWithQuery, GatewayRequestGuildMembersDataWithUserIds, APIGuildMember, APIUser, GatewayReadyDispatchData, GatewayChannelUpdateDispatchData, GatewayAutoModerationActionExecutionDispatchData, GatewayThreadCreateDispatchData, GatewayThreadDeleteDispatchData, GatewayThreadListSyncDispatchData, GatewayThreadMemberUpdateDispatchData, GatewayThreadMembersUpdateDispatchData, GatewayChannelPinsUpdateDispatchData, GatewayGuildCreateDispatchData, APIGuild, GatewayGuildDeleteDispatchData, APIAuditLogEntry, GatewayGuildBanAddDispatchData, GatewayGuildBanRemoveDispatchData, GatewayGuildEmojisUpdateDispatchData, GatewayGuildStickersUpdateDispatchData, GatewayGuildIntegrationsUpdateDispatchData, GatewayGuildMemberAddDispatchData, GatewayGuildMemberRemoveDispatchData, GatewayGuildMemberUpdateDispatchData, GatewayGuildMembersChunkDispatchData, GatewayGuildRoleCreateDispatchData, GatewayGuildRoleUpdateDispatchData, GatewayGuildRoleDeleteDispatchData, GatewayIntegrationDeleteDispatchData, GatewayInviteCreateDispatchData, GatewayInviteDeleteDispatchData, GatewayMessageCreateDispatchData, GatewayMessageUpdateDispatchData, GatewayMessageDeleteDispatchData, GatewayMessageDeleteBulkDispatchData, GatewayMessageReactionAddDispatchData, GatewayMessageReactionRemoveDispatchData, GatewayMessageReactionRemoveAllDispatchData, GatewayMessageReactionRemoveEmojiDispatchData, GatewayPresenceUpdateDispatchData, GatewayTypingStartDispatchData, GatewayUserUpdateDispatchData, GatewayVoiceStateUpdateData, GatewayVoiceServerUpdateDispatchData, GatewayWebhooksUpdateDispatchData, GatewayInteractionCreateDispatchData, APIStageInstance, GatewayMessagePollVoteDispatchData, GatewayIntegrationCreateDispatchData, GatewayGuildScheduledEventUserRemoveDispatchData, APIGuildScheduledEvent, APIChannel, APIAutoModerationRule, APIEntitlement, GatewayVoiceChannelEffectSendDispachData } from '../types';
3
+ import { GatewayDispatchEvents } from '../types';
4
4
  /** https://discord.com/developers/docs/topics/gateway-events#update-presence */
5
5
  export interface StatusUpdate {
6
6
  /** The user's activities */
@@ -55,7 +55,7 @@ export interface Events {
55
55
  [GatewayDispatchEvents.GuildEmojisUpdate]: GatewayGuildEmojisUpdateDispatchData;
56
56
  [GatewayDispatchEvents.GuildStickersUpdate]: GatewayGuildStickersUpdateDispatchData;
57
57
  [GatewayDispatchEvents.GuildIntegrationsUpdate]: GatewayGuildIntegrationsUpdateDispatchData;
58
- [GatewayDispatchEvents.GuildMemberAdd]: GatewayGuildMemberAddDispatchDataFixed<boolean>;
58
+ [GatewayDispatchEvents.GuildMemberAdd]: GatewayGuildMemberAddDispatchData;
59
59
  [GatewayDispatchEvents.GuildMemberRemove]: GatewayGuildMemberRemoveDispatchData;
60
60
  [GatewayDispatchEvents.GuildMemberUpdate]: GatewayGuildMemberUpdateDispatchData;
61
61
  [GatewayDispatchEvents.GuildMembersChunk]: GatewayGuildMembersChunkDispatchData;
@@ -76,6 +76,7 @@ export interface Events {
76
76
  [GatewayDispatchEvents.PresenceUpdate]: GatewayPresenceUpdateDispatchData;
77
77
  [GatewayDispatchEvents.TypingStart]: GatewayTypingStartDispatchData;
78
78
  [GatewayDispatchEvents.UserUpdate]: GatewayUserUpdateDispatchData;
79
+ [GatewayDispatchEvents.VoiceChannelEffectSend]: GatewayVoiceChannelEffectSendDispachData;
79
80
  [GatewayDispatchEvents.VoiceStateUpdate]: GatewayVoiceStateUpdateData;
80
81
  [GatewayDispatchEvents.VoiceServerUpdate]: GatewayVoiceServerUpdateDispatchData;
81
82
  [GatewayDispatchEvents.WebhooksUpdate]: GatewayWebhooksUpdateDispatchData;
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const v10_1 = require("discord-api-types/v10");
3
+ const types_1 = require("../types");
@@ -1,4 +1,3 @@
1
- /// <reference types="node" />
2
1
  import type { ShardManagerOptions, WorkerManagerOptions } from '../discord';
3
2
  declare const COMPRESS = false;
4
3
  declare const properties: {
@@ -1,13 +1,13 @@
1
- import NodeWebSocket from 'ws';
1
+ import { SeyfertWebSocket } from './socket/custom';
2
2
  export declare class BaseSocket {
3
3
  private internal;
4
+ ping?: () => Promise<number>;
4
5
  constructor(kind: 'ws' | 'bun', url: string);
5
- set onopen(callback: NodeWebSocket['onopen']);
6
- set onmessage(callback: NodeWebSocket['onmessage']);
7
- set onclose(callback: NodeWebSocket['onclose']);
8
- set onerror(callback: NodeWebSocket['onerror']);
6
+ set onopen(callback: SeyfertWebSocket['onopen']);
7
+ set onmessage(callback: SeyfertWebSocket['onmessage']);
8
+ set onclose(callback: SeyfertWebSocket['onclose']);
9
+ set onerror(callback: SeyfertWebSocket['onerror']);
9
10
  send(data: string): void;
10
- close(...args: Parameters<NodeWebSocket['close']>): void;
11
- ping(): Promise<number>;
11
+ close(...args: Parameters<SeyfertWebSocket['close']>): void;
12
12
  get readyState(): number;
13
13
  }
@@ -1,15 +1,44 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.BaseSocket = void 0;
7
4
  const node_crypto_1 = require("node:crypto");
8
- const ws_1 = __importDefault(require("ws"));
5
+ const custom_1 = require("./socket/custom");
9
6
  class BaseSocket {
10
7
  internal;
8
+ ping;
11
9
  constructor(kind, url) {
12
- this.internal = kind === 'ws' ? new ws_1.default(url) : new WebSocket(url);
10
+ this.internal = kind === 'ws' ? new custom_1.SeyfertWebSocket(url) : new WebSocket(url);
11
+ if (kind === 'ws') {
12
+ const ws = this.internal;
13
+ this.ping = ws.waitPing.bind(ws);
14
+ ws.onpong = data => {
15
+ const promise = ws.__promises.get(data);
16
+ if (promise) {
17
+ ws.__promises.delete(data);
18
+ promise?.resolve();
19
+ }
20
+ };
21
+ }
22
+ else {
23
+ const ws = this.internal;
24
+ this.ping = () => {
25
+ return new Promise(res => {
26
+ const nonce = (0, node_crypto_1.randomUUID)();
27
+ const start = performance.now();
28
+ const listener = (data) => {
29
+ if (data.toString() !== nonce)
30
+ return;
31
+ //@ts-expect-error
32
+ ws.removeListener('pong', listener);
33
+ res(performance.now() - start);
34
+ };
35
+ //@ts-expect-error
36
+ ws.on('pong', listener);
37
+ //@ts-expect-error
38
+ ws.ping(nonce);
39
+ });
40
+ };
41
+ }
13
42
  }
14
43
  set onopen(callback) {
15
44
  this.internal.onopen = callback;
@@ -27,25 +56,8 @@ class BaseSocket {
27
56
  return this.internal.send(data);
28
57
  }
29
58
  close(...args) {
30
- // @ts-expect-error
31
59
  return this.internal.close(...args);
32
60
  }
33
- async ping() {
34
- if (!('ping' in this.internal))
35
- throw new Error('Unexpected: Method ping not implemented');
36
- return new Promise(res => {
37
- const nonce = (0, node_crypto_1.randomUUID)();
38
- const start = performance.now();
39
- const listener = (data) => {
40
- if (data.toString() !== nonce)
41
- return;
42
- this.internal.removeListener('pong', listener);
43
- res(performance.now() - start);
44
- };
45
- this.internal.on('pong', listener);
46
- this.internal.ping(nonce);
47
- });
48
- }
49
61
  get readyState() {
50
62
  return this.internal.readyState;
51
63
  }
@@ -1,9 +1,4 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
- /// <reference types="node" />
4
- /// <reference types="node" />
5
- /// <reference types="node" />
6
- import type { APIUser, GatewayGuildMemberUpdateDispatchData } from 'discord-api-types/v10';
1
+ import type { APIUser, GatewayGuildMemberUpdateDispatchData } from '../../../types';
7
2
  export declare class MemberUpdateHandler {
8
3
  guildMemberUpdate: Map<string, {
9
4
  timeout: NodeJS.Timeout;
@@ -25,7 +25,8 @@ class MemberUpdateHandler {
25
25
  });
26
26
  }
27
27
  membersEquals(old, member) {
28
- return (old.joined_at === member.joined_at &&
28
+ return (old.guild_id === member.guild_id &&
29
+ old.joined_at === member.joined_at &&
29
30
  old.nick === member.nick &&
30
31
  old.avatar === member.avatar &&
31
32
  old.pending === member.pending &&
@@ -1,24 +1,11 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
- /// <reference types="node" />
4
- /// <reference types="node" />
5
- /// <reference types="node" />
6
- import type { APIUser, GatewayActivity, GatewayPresenceUpdateDispatchData } from 'discord-api-types/v10';
7
- type FixedGatewayPresenceUpdateDispatchData = (Omit<GatewayPresenceUpdateDispatchData, 'user'> & {
8
- user_id: string;
9
- user: undefined;
10
- }) | (Omit<GatewayPresenceUpdateDispatchData, 'user'> & {
11
- user: Partial<APIUser> & Pick<APIUser, 'id'>;
12
- user_id: undefined;
13
- });
1
+ import type { GatewayActivity, GatewayPresenceUpdateDispatchData } from '../../../types';
14
2
  export declare class PresenceUpdateHandler {
15
3
  presenceUpdate: Map<string, {
16
4
  timeout: NodeJS.Timeout;
17
- presence: FixedGatewayPresenceUpdateDispatchData;
5
+ presence: GatewayPresenceUpdateDispatchData;
18
6
  }>;
19
- check(presence: FixedGatewayPresenceUpdateDispatchData): boolean;
20
- setPresence(presence: FixedGatewayPresenceUpdateDispatchData): void;
21
- presenceEquals(oldPresence: FixedGatewayPresenceUpdateDispatchData, newPresence: FixedGatewayPresenceUpdateDispatchData): boolean | undefined;
7
+ check(presence: GatewayPresenceUpdateDispatchData): boolean;
8
+ setPresence(presence: GatewayPresenceUpdateDispatchData): void;
9
+ presenceEquals(oldPresence: GatewayPresenceUpdateDispatchData, newPresence: GatewayPresenceUpdateDispatchData): boolean | undefined;
22
10
  activityEquals(oldActivity: GatewayActivity, newActivity: GatewayActivity): boolean;
23
11
  }
24
- export {};
@@ -4,11 +4,11 @@ exports.PresenceUpdateHandler = void 0;
4
4
  class PresenceUpdateHandler {
5
5
  presenceUpdate = new Map();
6
6
  check(presence) {
7
- if (!this.presenceUpdate.has(presence.user?.id ?? presence.user_id)) {
7
+ if (!this.presenceUpdate.has(presence.user.id)) {
8
8
  this.setPresence(presence);
9
9
  return true;
10
10
  }
11
- const data = this.presenceUpdate.get(presence.user?.id ?? presence.user_id);
11
+ const data = this.presenceUpdate.get(presence.user.id);
12
12
  if (this.presenceEquals(data.presence, presence)) {
13
13
  return false;
14
14
  }
@@ -17,16 +17,15 @@ class PresenceUpdateHandler {
17
17
  return true;
18
18
  }
19
19
  setPresence(presence) {
20
- this.presenceUpdate.set(presence.user?.id ?? presence.user_id, {
20
+ this.presenceUpdate.set(presence.user.id, {
21
21
  presence,
22
22
  timeout: setTimeout(() => {
23
- this.presenceUpdate.delete(presence.user?.id ?? presence.user_id);
23
+ this.presenceUpdate.delete(presence.user.id);
24
24
  }, 1.5e3),
25
25
  });
26
26
  }
27
27
  presenceEquals(oldPresence, newPresence) {
28
- return (newPresence &&
29
- oldPresence.status === newPresence.status &&
28
+ return (oldPresence.status === newPresence.status &&
30
29
  oldPresence.activities?.length === newPresence.activities?.length &&
31
30
  oldPresence.activities?.every((activity, index) => this.activityEquals(activity, newPresence.activities?.[index])) &&
32
31
  oldPresence.client_status?.web === newPresence.client_status?.web &&
@@ -1,12 +1,9 @@
1
- /// <reference types="node" />
2
- import type { GatewayReceivePayload, GatewaySendPayload } from 'discord-api-types/v10';
3
- import type WS from 'ws';
4
- import { type CloseEvent } from 'ws';
5
- import type { Logger } from '../../common';
1
+ import { type MakeRequired, type Logger } from '../../common';
6
2
  import { DynamicBucket } from '../structures';
7
3
  import { ConnectTimeout } from '../structures/timeout';
8
4
  import { BaseSocket } from './basesocket';
9
5
  import type { ShardData, ShardOptions } from './shared';
6
+ import { type GatewaySendPayload, type GatewayReceivePayload } from '../../types';
10
7
  export interface ShardHeart {
11
8
  interval: number;
12
9
  nodeInterval?: NodeJS.Timeout;
@@ -16,7 +13,6 @@ export interface ShardHeart {
16
13
  }
17
14
  export declare class Shard {
18
15
  id: number;
19
- options: ShardOptions;
20
16
  debugger?: Logger;
21
17
  data: Partial<ShardData> | ShardData;
22
18
  websocket: BaseSocket | null;
@@ -24,6 +20,7 @@ export declare class Shard {
24
20
  heart: ShardHeart;
25
21
  bucket: DynamicBucket;
26
22
  offlineSendQueue: ((_?: unknown) => void)[];
23
+ options: MakeRequired<ShardOptions, 'properties' | 'ratelimitOptions'>;
27
24
  constructor(id: number, options: ShardOptions);
28
25
  get latency(): number;
29
26
  get isOpen(): boolean;
@@ -40,9 +37,12 @@ export declare class Shard {
40
37
  disconnect(): Promise<void>;
41
38
  reconnect(): Promise<void>;
42
39
  onpacket(packet: GatewayReceivePayload): Promise<void>;
43
- protected handleClosed(close: CloseEvent): Promise<void>;
40
+ protected handleClosed(close: {
41
+ code: number;
42
+ reason: string;
43
+ }): Promise<void>;
44
44
  close(code: number, reason: string): Promise<void>;
45
- protected handleMessage({ data }: WS.MessageEvent): Promise<void>;
45
+ protected handleMessage(data: string | Buffer): Promise<void>;
46
46
  checkOffline(force: boolean): Promise<unknown>;
47
47
  calculateSafeRequests(): number;
48
48
  }
@@ -1,20 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Shard = void 0;
4
- const v10_1 = require("discord-api-types/v10");
5
4
  const node_zlib_1 = require("node:zlib");
6
- const ws_1 = require("ws");
5
+ const common_1 = require("../../common");
7
6
  const constants_1 = require("../constants");
8
7
  const structures_1 = require("../structures");
9
8
  const timeout_1 = require("../structures/timeout");
10
9
  const basesocket_1 = require("./basesocket");
11
10
  const shared_1 = require("./shared");
11
+ const types_1 = require("../../types");
12
12
  class Shard {
13
13
  id;
14
- options;
15
14
  debugger;
16
15
  data = {
17
- resumeSeq: null,
16
+ resume_seq: null,
18
17
  };
19
18
  websocket = null;
20
19
  connectTimeout = new timeout_1.ConnectTimeout();
@@ -24,13 +23,16 @@ class Shard {
24
23
  };
25
24
  bucket;
26
25
  offlineSendQueue = [];
26
+ options;
27
27
  constructor(id, options) {
28
28
  this.id = id;
29
- this.options = options;
30
- this.options.ratelimitOptions ??= {
31
- rateLimitResetInterval: 60_000,
32
- maxRequestsPerRateLimitTick: 120,
33
- };
29
+ this.options = (0, common_1.MergeOptions)(options, {
30
+ properties: constants_1.properties,
31
+ ratelimitOptions: {
32
+ rateLimitResetInterval: 60_000,
33
+ maxRequestsPerRateLimitTick: 120,
34
+ },
35
+ });
34
36
  if (options.debugger)
35
37
  this.debugger = options.debugger;
36
38
  const safe = this.calculateSafeRequests();
@@ -42,7 +44,7 @@ class Shard {
42
44
  : Number.POSITIVE_INFINITY;
43
45
  }
44
46
  get isOpen() {
45
- return this.websocket?.readyState === ws_1.WebSocket.OPEN;
47
+ return this.websocket?.readyState === 1 /*WebSocket.open*/;
46
48
  }
47
49
  get gatewayURL() {
48
50
  return this.options.info.url;
@@ -58,6 +60,7 @@ class Shard {
58
60
  ping() {
59
61
  if (!this.websocket)
60
62
  return Promise.resolve(Number.POSITIVE_INFINITY);
63
+ //@ts-expect-error
61
64
  return this.websocket.ping();
62
65
  }
63
66
  async connect() {
@@ -66,11 +69,14 @@ class Shard {
66
69
  this.debugger?.debug(`[Shard #${this.id}] attempted to connect while open`);
67
70
  return;
68
71
  }
72
+ clearTimeout(this.heart.nodeInterval);
69
73
  this.debugger?.debug(`[Shard #${this.id}] Connecting to ${this.currentGatewayURL}`);
70
74
  // @ts-expect-error @types/bun cause erros in compile
71
75
  // biome-ignore lint/correctness/noUndeclaredVariables: /\ bun lol
72
76
  this.websocket = new basesocket_1.BaseSocket(typeof Bun === 'undefined' ? 'ws' : 'bun', this.currentGatewayURL);
73
- this.websocket.onmessage = (event) => this.handleMessage(event);
77
+ this.websocket.onmessage = ({ data }) => {
78
+ this.handleMessage(data);
79
+ };
74
80
  this.websocket.onclose = (event) => this.handleClosed(event);
75
81
  this.websocket.onerror = (event) => this.debugger?.error(event);
76
82
  this.websocket.onopen = () => {
@@ -78,7 +84,7 @@ class Shard {
78
84
  };
79
85
  }
80
86
  async send(force, message) {
81
- this.debugger?.info(`[Shard #${this.id}] Sending: ${v10_1.GatewayOpcodes[message.op]} ${JSON.stringify(message.d, (_, value) => {
87
+ this.debugger?.info(`[Shard #${this.id}] Sending: ${types_1.GatewayOpcodes[message.op]} ${JSON.stringify(message.d, (_, value) => {
82
88
  if (typeof value === 'string')
83
89
  return value.replaceAll(this.options.token, v => {
84
90
  const split = v.split('.');
@@ -93,11 +99,11 @@ class Shard {
93
99
  }
94
100
  async identify() {
95
101
  await this.send(true, {
96
- op: v10_1.GatewayOpcodes.Identify,
102
+ op: types_1.GatewayOpcodes.Identify,
97
103
  d: {
98
104
  token: `Bot ${this.options.token}`,
99
105
  compress: this.options.compress,
100
- properties: this.options.properties ?? constants_1.properties,
106
+ properties: this.options.properties,
101
107
  shard: [this.id, this.options.info.shards],
102
108
  intents: this.options.intents,
103
109
  presence: this.options.presence,
@@ -105,13 +111,13 @@ class Shard {
105
111
  });
106
112
  }
107
113
  get resumable() {
108
- return !!(this.data.resume_gateway_url && this.data.session_id && this.data.resumeSeq !== null);
114
+ return !!(this.data.resume_gateway_url && this.data.session_id && this.data.resume_seq !== null);
109
115
  }
110
116
  async resume() {
111
117
  await this.send(true, {
112
- op: v10_1.GatewayOpcodes.Resume,
118
+ op: types_1.GatewayOpcodes.Resume,
113
119
  d: {
114
- seq: this.data.resumeSeq,
120
+ seq: this.data.resume_seq,
115
121
  session_id: this.data.session_id,
116
122
  token: `Bot ${this.options.token}`,
117
123
  },
@@ -128,8 +134,8 @@ class Shard {
128
134
  }
129
135
  this.heart.lastBeat = Date.now();
130
136
  this.websocket.send(JSON.stringify({
131
- op: v10_1.GatewayOpcodes.Heartbeat,
132
- d: this.data.resumeSeq ?? null,
137
+ op: types_1.GatewayOpcodes.Heartbeat,
138
+ d: this.data.resume_seq ?? null,
133
139
  }));
134
140
  }
135
141
  async disconnect() {
@@ -143,11 +149,11 @@ class Shard {
143
149
  }
144
150
  async onpacket(packet) {
145
151
  if (packet.s !== null) {
146
- this.data.resumeSeq = packet.s;
152
+ this.data.resume_seq = packet.s;
147
153
  }
148
- this.debugger?.debug(`[Shard #${this.id}]`, packet.t ? packet.t : v10_1.GatewayOpcodes[packet.op], this.data.resumeSeq);
154
+ this.debugger?.debug(`[Shard #${this.id}]`, packet.t ? packet.t : types_1.GatewayOpcodes[packet.op], this.data.resume_seq);
149
155
  switch (packet.op) {
150
- case v10_1.GatewayOpcodes.Hello:
156
+ case types_1.GatewayOpcodes.Hello:
151
157
  {
152
158
  clearInterval(this.heart.nodeInterval);
153
159
  this.heart.interval = packet.d.heartbeat_interval;
@@ -159,17 +165,17 @@ class Shard {
159
165
  await this.identify();
160
166
  }
161
167
  break;
162
- case v10_1.GatewayOpcodes.HeartbeatAck:
168
+ case types_1.GatewayOpcodes.HeartbeatAck:
163
169
  this.heart.ack = true;
164
170
  this.heart.lastAck = Date.now();
165
171
  break;
166
- case v10_1.GatewayOpcodes.Heartbeat:
172
+ case types_1.GatewayOpcodes.Heartbeat:
167
173
  this.heartbeat(true);
168
174
  break;
169
- case v10_1.GatewayOpcodes.Reconnect:
175
+ case types_1.GatewayOpcodes.Reconnect:
170
176
  await this.reconnect();
171
177
  break;
172
- case v10_1.GatewayOpcodes.InvalidSession:
178
+ case types_1.GatewayOpcodes.InvalidSession:
173
179
  if (packet.d) {
174
180
  if (!this.resumable) {
175
181
  return this.debugger?.fatal(`[Shard #${this.id}] This is a completely unexpected error message.`);
@@ -177,19 +183,19 @@ class Shard {
177
183
  await this.resume();
178
184
  }
179
185
  else {
180
- this.data.resumeSeq = 0;
186
+ this.data.resume_seq = 0;
181
187
  this.data.session_id = undefined;
182
188
  await this.identify();
183
189
  }
184
190
  break;
185
- case v10_1.GatewayOpcodes.Dispatch:
191
+ case types_1.GatewayOpcodes.Dispatch:
186
192
  {
187
193
  switch (packet.t) {
188
- case v10_1.GatewayDispatchEvents.Resumed:
194
+ case types_1.GatewayDispatchEvents.Resumed:
189
195
  this.offlineSendQueue.map((resolve) => resolve());
190
196
  this.options.handlePayload(this.id, packet);
191
197
  break;
192
- case v10_1.GatewayDispatchEvents.Ready: {
198
+ case types_1.GatewayDispatchEvents.Ready: {
193
199
  this.data.resume_gateway_url = packet.d.resume_gateway_url;
194
200
  this.data.session_id = packet.d.session_id;
195
201
  this.offlineSendQueue.map((resolve) => resolve());
@@ -206,31 +212,37 @@ class Shard {
206
212
  }
207
213
  async handleClosed(close) {
208
214
  clearInterval(this.heart.nodeInterval);
209
- this.debugger?.warn(`[Shard #${this.id}] ${shared_1.ShardSocketCloseCodes[close.code] ?? v10_1.GatewayCloseCodes[close.code] ?? close.code} (${close.code})`);
215
+ this.debugger?.warn(`[Shard #${this.id}] ${shared_1.ShardSocketCloseCodes[close.code] ?? types_1.GatewayCloseCodes[close.code] ?? close.code} (${close.code})`, close.reason);
210
216
  switch (close.code) {
211
217
  case shared_1.ShardSocketCloseCodes.Shutdown:
218
+ //Force disconnect, ignore
212
219
  break;
213
220
  case 1000:
221
+ case types_1.GatewayCloseCodes.UnknownOpcode:
222
+ case types_1.GatewayCloseCodes.InvalidSeq:
223
+ case types_1.GatewayCloseCodes.SessionTimedOut:
224
+ this.data.resume_seq = 0;
225
+ this.data.session_id = undefined;
226
+ this.data.resume_gateway_url = undefined;
227
+ await this.reconnect();
228
+ break;
214
229
  case 1001:
215
230
  case 1006:
216
231
  case shared_1.ShardSocketCloseCodes.ZombiedConnection:
217
- case v10_1.GatewayCloseCodes.UnknownError:
218
- case v10_1.GatewayCloseCodes.UnknownOpcode:
219
- case v10_1.GatewayCloseCodes.DecodeError:
220
- case v10_1.GatewayCloseCodes.NotAuthenticated:
221
- case v10_1.GatewayCloseCodes.AlreadyAuthenticated:
222
- case v10_1.GatewayCloseCodes.InvalidSeq:
223
- case v10_1.GatewayCloseCodes.RateLimited:
224
- case v10_1.GatewayCloseCodes.SessionTimedOut:
232
+ case types_1.GatewayCloseCodes.UnknownError:
233
+ case types_1.GatewayCloseCodes.DecodeError:
234
+ case types_1.GatewayCloseCodes.NotAuthenticated:
235
+ case types_1.GatewayCloseCodes.AlreadyAuthenticated:
236
+ case types_1.GatewayCloseCodes.RateLimited:
225
237
  this.debugger?.info(`[Shard #${this.id}] Trying to reconnect`);
226
238
  await this.reconnect();
227
239
  break;
228
- case v10_1.GatewayCloseCodes.AuthenticationFailed:
229
- case v10_1.GatewayCloseCodes.DisallowedIntents:
230
- case v10_1.GatewayCloseCodes.InvalidAPIVersion:
231
- case v10_1.GatewayCloseCodes.InvalidIntents:
232
- case v10_1.GatewayCloseCodes.InvalidShard:
233
- case v10_1.GatewayCloseCodes.ShardingRequired:
240
+ case types_1.GatewayCloseCodes.AuthenticationFailed:
241
+ case types_1.GatewayCloseCodes.DisallowedIntents:
242
+ case types_1.GatewayCloseCodes.InvalidAPIVersion:
243
+ case types_1.GatewayCloseCodes.InvalidIntents:
244
+ case types_1.GatewayCloseCodes.InvalidShard:
245
+ case types_1.GatewayCloseCodes.ShardingRequired:
234
246
  this.debugger?.fatal(`[Shard #${this.id}] cannot reconnect`);
235
247
  break;
236
248
  default:
@@ -240,13 +252,13 @@ class Shard {
240
252
  }
241
253
  }
242
254
  async close(code, reason) {
243
- if (this.websocket?.readyState !== ws_1.WebSocket.OPEN) {
255
+ if (!this.isOpen) {
244
256
  return this.debugger?.warn(`[Shard #${this.id}] Is not open`);
245
257
  }
246
258
  this.debugger?.warn(`[Shard #${this.id}] Called close`);
247
259
  this.websocket?.close(code, reason);
248
260
  }
249
- handleMessage({ data }) {
261
+ handleMessage(data) {
250
262
  if (data instanceof Buffer) {
251
263
  data = (0, node_zlib_1.inflateSync)(data);
252
264
  }
@@ -1,11 +1,12 @@
1
- import { type GatewaySendPayload, type GatewayUpdatePresence, type GatewayVoiceStateUpdate } from 'discord-api-types/v10';
2
- import { Logger, type ObjectToLower } from '../../common';
1
+ import { Logger, type MakeRequired } from '../../common';
2
+ import { type GatewayUpdatePresence, type GatewayVoiceStateUpdate, type GatewaySendPayload } from '../../types';
3
+ import { ShardManagerDefaults } from '../constants';
3
4
  import { ConnectQueue } from '../structures/timeout';
4
- import { Shard } from './shard.js';
5
+ import { Shard } from './shard';
5
6
  import type { ShardManagerOptions } from './shared';
6
7
  export declare class ShardManager extends Map<number, Shard> {
7
8
  connectQueue: ConnectQueue;
8
- options: ShardManagerOptions;
9
+ options: MakeRequired<ShardManagerOptions, keyof typeof ShardManagerDefaults>;
9
10
  debugger?: Logger;
10
11
  constructor(options: ShardManagerOptions);
11
12
  get totalShards(): number;
@@ -23,7 +24,7 @@ export declare class ShardManager extends Map<number, Shard> {
23
24
  disconnectAll(): Promise<unknown>;
24
25
  setShardPresence(shardId: number, payload: GatewayUpdatePresence['d']): void;
25
26
  setPresence(payload: GatewayUpdatePresence['d']): Promise<void>;
26
- joinVoice(guild_id: string, channel_id: string, options: ObjectToLower<Pick<GatewayVoiceStateUpdate['d'], 'self_deaf' | 'self_mute'>>): void;
27
+ joinVoice(guild_id: string, channel_id: string, options: Pick<GatewayVoiceStateUpdate['d'], 'self_deaf' | 'self_mute'>): void;
27
28
  leaveVoice(guild_id: string): void;
28
29
  send<T extends GatewaySendPayload>(shardId: number, payload: T): void;
29
30
  }
@@ -1,12 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ShardManager = void 0;
4
- const v10_1 = require("discord-api-types/v10");
5
4
  const common_1 = require("../../common");
5
+ const types_1 = require("../../types");
6
6
  const constants_1 = require("../constants");
7
7
  const structures_1 = require("../structures");
8
8
  const timeout_1 = require("../structures/timeout");
9
- const shard_js_1 = require("./shard.js");
9
+ const shard_1 = require("./shard");
10
10
  let parentPort;
11
11
  let workerData;
12
12
  class ShardManager extends Map {
@@ -15,8 +15,9 @@ class ShardManager extends Map {
15
15
  debugger;
16
16
  constructor(options) {
17
17
  super();
18
- options.totalShards ??= options.info.shards;
19
- this.options = (0, common_1.MergeOptions)(constants_1.ShardManagerDefaults, options);
18
+ this.options = (0, common_1.MergeOptions)(constants_1.ShardManagerDefaults, {
19
+ totalShards: options.info.shards,
20
+ }, options);
20
21
  this.connectQueue = new timeout_1.ConnectQueue(5.5e3, this.concurrency);
21
22
  if (this.options.debug) {
22
23
  this.debugger = new common_1.Logger({
@@ -57,14 +58,14 @@ class ShardManager extends Map {
57
58
  spawn(shardId) {
58
59
  this.debugger?.info(`Spawn shard ${shardId}`);
59
60
  let shard = this.get(shardId);
60
- shard ??= new shard_js_1.Shard(shardId, {
61
+ shard ??= new shard_1.Shard(shardId, {
61
62
  token: this.options.token,
62
63
  intents: this.options.intents,
63
64
  info: { ...this.options.info, shards: this.totalShards },
64
65
  handlePayload: this.options.handlePayload,
65
66
  properties: this.options.properties,
66
67
  debugger: this.debugger,
67
- compress: false,
68
+ compress: this.options.compress ?? false,
68
69
  presence: this.options.presence?.(shardId, -1),
69
70
  });
70
71
  this.set(shardId, shard);
@@ -117,7 +118,7 @@ class ShardManager extends Map {
117
118
  setShardPresence(shardId, payload) {
118
119
  this.debugger?.info(`Shard #${shardId} update presence`);
119
120
  return this.send(shardId, {
120
- op: v10_1.GatewayOpcodes.PresenceUpdate,
121
+ op: types_1.GatewayOpcodes.PresenceUpdate,
121
122
  d: payload,
122
123
  });
123
124
  }
@@ -133,11 +134,11 @@ class ShardManager extends Map {
133
134
  const shardId = this.calculateShardId(guild_id);
134
135
  this.debugger?.info(`Shard #${shardId} join voice ${channel_id} in ${guild_id}`);
135
136
  return this.send(shardId, {
136
- op: v10_1.GatewayOpcodes.VoiceStateUpdate,
137
+ op: types_1.GatewayOpcodes.VoiceStateUpdate,
137
138
  d: {
138
139
  guild_id,
139
140
  channel_id,
140
- ...(0, common_1.toSnakeCase)(options),
141
+ ...options,
141
142
  },
142
143
  });
143
144
  }
@@ -145,7 +146,7 @@ class ShardManager extends Map {
145
146
  const shardId = this.calculateShardId(guild_id);
146
147
  this.debugger?.info(`Shard #${shardId} leave voice in ${guild_id}`);
147
148
  return this.send(shardId, {
148
- op: v10_1.GatewayOpcodes.VoiceStateUpdate,
149
+ op: types_1.GatewayOpcodes.VoiceStateUpdate,
149
150
  d: {
150
151
  guild_id,
151
152
  channel_id: null,