seyfert 1.5.0 → 2.1.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 (439) 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 +8 -2
  9. package/lib/api/Routes/invites.d.ts +1 -1
  10. package/lib/api/Routes/skus.d.ts +11 -0
  11. package/lib/api/Routes/skus.js +2 -0
  12. package/lib/api/Routes/stage-instances.d.ts +1 -1
  13. package/lib/api/Routes/stickers.d.ts +2 -2
  14. package/lib/api/Routes/users.d.ts +1 -1
  15. package/lib/api/Routes/voice.d.ts +1 -1
  16. package/lib/api/Routes/webhooks.d.ts +2 -2
  17. package/lib/api/api.d.ts +3 -3
  18. package/lib/api/api.js +15 -25
  19. package/lib/api/bucket.d.ts +0 -1
  20. package/lib/api/shared.d.ts +1 -2
  21. package/lib/api/utils/constants.d.ts +2 -5
  22. package/lib/api/utils/constants.js +3 -7
  23. package/lib/api/utils/utils.d.ts +1 -2
  24. package/lib/api/utils/utils.js +2 -3
  25. package/lib/builders/ActionRow.d.ts +1 -1
  26. package/lib/builders/ActionRow.js +3 -3
  27. package/lib/builders/Attachment.d.ts +3 -4
  28. package/lib/builders/Attachment.js +24 -25
  29. package/lib/builders/Base.d.ts +2 -2
  30. package/lib/builders/Base.js +1 -1
  31. package/lib/builders/Button.d.ts +7 -7
  32. package/lib/builders/Button.js +11 -9
  33. package/lib/builders/Embed.d.ts +1 -1
  34. package/lib/builders/Modal.d.ts +1 -1
  35. package/lib/builders/Modal.js +2 -2
  36. package/lib/builders/Poll.d.ts +2 -2
  37. package/lib/builders/Poll.js +5 -6
  38. package/lib/builders/SelectMenu.d.ts +1 -1
  39. package/lib/builders/SelectMenu.js +17 -18
  40. package/lib/builders/index.d.ts +1 -1
  41. package/lib/builders/index.js +10 -11
  42. package/lib/cache/adapters/default.d.ts +16 -9
  43. package/lib/cache/adapters/default.js +42 -31
  44. package/lib/cache/adapters/index.d.ts +0 -1
  45. package/lib/cache/adapters/index.js +0 -1
  46. package/lib/cache/adapters/limited.d.ts +17 -12
  47. package/lib/cache/adapters/limited.js +80 -36
  48. package/lib/cache/adapters/types.d.ts +6 -7
  49. package/lib/cache/adapters/workeradapter.d.ts +6 -6
  50. package/lib/cache/adapters/workeradapter.js +13 -0
  51. package/lib/cache/index.d.ts +20 -8
  52. package/lib/cache/index.js +328 -22
  53. package/lib/cache/resources/bans.d.ts +9 -6
  54. package/lib/cache/resources/bans.js +13 -4
  55. package/lib/cache/resources/channels.d.ts +6 -4
  56. package/lib/cache/resources/channels.js +13 -7
  57. package/lib/cache/resources/default/base.d.ts +7 -7
  58. package/lib/cache/resources/default/base.js +2 -2
  59. package/lib/cache/resources/default/guild-based.d.ts +6 -6
  60. package/lib/cache/resources/default/guild-based.js +6 -6
  61. package/lib/cache/resources/default/guild-related.d.ts +7 -7
  62. package/lib/cache/resources/default/guild-related.js +10 -8
  63. package/lib/cache/resources/emojis.d.ts +15 -6
  64. package/lib/cache/resources/emojis.js +13 -4
  65. package/lib/cache/resources/guilds.d.ts +9 -6
  66. package/lib/cache/resources/guilds.js +27 -6
  67. package/lib/cache/resources/members.d.ts +9 -6
  68. package/lib/cache/resources/members.js +22 -6
  69. package/lib/cache/resources/messages.d.ts +11 -7
  70. package/lib/cache/resources/messages.js +19 -7
  71. package/lib/cache/resources/overwrites.d.ts +11 -2
  72. package/lib/cache/resources/overwrites.js +9 -0
  73. package/lib/cache/resources/presence.d.ts +3 -2
  74. package/lib/cache/resources/roles.d.ts +9 -6
  75. package/lib/cache/resources/roles.js +13 -4
  76. package/lib/cache/resources/stage-instances.d.ts +2 -2
  77. package/lib/cache/resources/stickers.d.ts +9 -6
  78. package/lib/cache/resources/stickers.js +13 -4
  79. package/lib/cache/resources/threads.d.ts +9 -6
  80. package/lib/cache/resources/threads.js +13 -4
  81. package/lib/cache/resources/users.d.ts +9 -6
  82. package/lib/cache/resources/users.js +13 -4
  83. package/lib/cache/resources/voice-states.d.ts +11 -8
  84. package/lib/cache/resources/voice-states.js +15 -4
  85. package/lib/client/base.d.ts +29 -21
  86. package/lib/client/base.js +64 -57
  87. package/lib/client/client.d.ts +11 -16
  88. package/lib/client/client.js +51 -37
  89. package/lib/client/collectors.d.ts +10 -10
  90. package/lib/client/collectors.js +26 -1
  91. package/lib/client/httpclient.d.ts +8 -13
  92. package/lib/client/httpclient.js +27 -218
  93. package/lib/client/index.d.ts +1 -0
  94. package/lib/client/index.js +1 -0
  95. package/lib/client/transformers.d.ts +68 -0
  96. package/lib/client/transformers.js +99 -0
  97. package/lib/client/types.d.ts +5 -0
  98. package/lib/client/types.js +2 -0
  99. package/lib/client/workerclient.d.ts +16 -15
  100. package/lib/client/workerclient.js +130 -72
  101. package/lib/commands/applications/chat.d.ts +35 -34
  102. package/lib/commands/applications/chat.js +5 -9
  103. package/lib/commands/applications/chatcontext.d.ts +17 -17
  104. package/lib/commands/applications/chatcontext.js +5 -5
  105. package/lib/commands/applications/entryPoint.d.ts +46 -0
  106. package/lib/commands/applications/entryPoint.js +56 -0
  107. package/lib/commands/applications/entrycontext.d.ts +40 -0
  108. package/lib/commands/applications/entrycontext.js +85 -0
  109. package/lib/commands/applications/menu.d.ts +2 -3
  110. package/lib/commands/applications/menu.js +2 -5
  111. package/lib/commands/applications/menucontext.d.ts +14 -13
  112. package/lib/commands/applications/menucontext.js +9 -9
  113. package/lib/commands/applications/options.d.ts +4 -3
  114. package/lib/commands/applications/options.js +20 -21
  115. package/lib/commands/applications/shared.d.ts +3 -1
  116. package/lib/commands/decorators.d.ts +47 -35
  117. package/lib/commands/decorators.js +20 -18
  118. package/lib/commands/handle.d.ts +65 -0
  119. package/lib/commands/handle.js +727 -0
  120. package/lib/commands/handler.d.ts +29 -18
  121. package/lib/commands/handler.js +295 -164
  122. package/lib/commands/index.d.ts +2 -0
  123. package/lib/commands/index.js +2 -0
  124. package/lib/commands/optionresolver.d.ts +13 -13
  125. package/lib/commands/optionresolver.js +24 -29
  126. package/lib/common/bot/watcher.d.ts +4 -33
  127. package/lib/common/bot/watcher.js +0 -109
  128. package/lib/common/index.d.ts +1 -0
  129. package/lib/common/index.js +1 -0
  130. package/lib/common/it/colors.js +48 -49
  131. package/lib/common/it/formatter.d.ts +32 -0
  132. package/lib/common/it/formatter.js +42 -0
  133. package/lib/common/it/logger.d.ts +0 -1
  134. package/lib/common/it/logger.js +3 -3
  135. package/lib/common/it/utils.d.ts +24 -4
  136. package/lib/common/it/utils.js +88 -17
  137. package/lib/common/shorters/application.d.ts +56 -0
  138. package/lib/common/shorters/application.js +81 -0
  139. package/lib/common/shorters/bans.d.ts +4 -5
  140. package/lib/common/shorters/bans.js +3 -3
  141. package/lib/common/shorters/channels.d.ts +7 -6
  142. package/lib/common/shorters/channels.js +19 -15
  143. package/lib/common/shorters/emojis.d.ts +5 -6
  144. package/lib/common/shorters/emojis.js +5 -5
  145. package/lib/common/shorters/guilds.d.ts +18 -16
  146. package/lib/common/shorters/guilds.js +31 -26
  147. package/lib/common/shorters/interaction.d.ts +7 -7
  148. package/lib/common/shorters/interaction.js +3 -2
  149. package/lib/common/shorters/members.d.ts +29 -12
  150. package/lib/common/shorters/members.js +55 -16
  151. package/lib/common/shorters/messages.d.ts +7 -8
  152. package/lib/common/shorters/messages.js +8 -7
  153. package/lib/common/shorters/reactions.d.ts +3 -3
  154. package/lib/common/shorters/reactions.js +11 -11
  155. package/lib/common/shorters/roles.d.ts +9 -7
  156. package/lib/common/shorters/roles.js +26 -7
  157. package/lib/common/shorters/templates.d.ts +7 -8
  158. package/lib/common/shorters/templates.js +7 -7
  159. package/lib/common/shorters/threads.d.ts +6 -7
  160. package/lib/common/shorters/threads.js +6 -9
  161. package/lib/common/shorters/users.d.ts +4 -4
  162. package/lib/common/shorters/users.js +8 -4
  163. package/lib/common/shorters/webhook.d.ts +10 -10
  164. package/lib/common/shorters/webhook.js +10 -9
  165. package/lib/common/types/resolvables.d.ts +2 -2
  166. package/lib/common/types/util.d.ts +4 -2
  167. package/lib/common/types/write.d.ts +3 -3
  168. package/lib/components/ActionRow.d.ts +1 -1
  169. package/lib/components/BaseComponent.d.ts +1 -1
  170. package/lib/components/BaseComponent.js +1 -1
  171. package/lib/components/BaseSelectMenuComponent.d.ts +1 -1
  172. package/lib/components/ButtonComponent.d.ts +17 -7
  173. package/lib/components/ButtonComponent.js +19 -2
  174. package/lib/components/ChannelSelectMenuComponent.d.ts +3 -3
  175. package/lib/components/MentionableSelectMenuComponent.d.ts +2 -2
  176. package/lib/components/RoleSelectMenuComponent.d.ts +2 -2
  177. package/lib/components/StringSelectMenuComponent.d.ts +2 -2
  178. package/lib/components/TextInputComponent.d.ts +2 -2
  179. package/lib/components/UserSelectMenuComponent.d.ts +2 -2
  180. package/lib/components/componentcommand.js +2 -2
  181. package/lib/components/componentcontext.d.ts +10 -9
  182. package/lib/components/componentcontext.js +8 -8
  183. package/lib/components/handler.d.ts +15 -14
  184. package/lib/components/handler.js +89 -93
  185. package/lib/components/index.d.ts +3 -3
  186. package/lib/components/index.js +12 -10
  187. package/lib/components/modalcontext.d.ts +12 -11
  188. package/lib/components/modalcontext.js +2 -2
  189. package/lib/deps/mixer.d.ts +8 -0
  190. package/lib/deps/mixer.js +71 -0
  191. package/lib/events/handler.d.ts +35 -13
  192. package/lib/events/handler.js +57 -24
  193. package/lib/events/hooks/application_command.d.ts +2 -2
  194. package/lib/events/hooks/auto_moderation.d.ts +6 -7
  195. package/lib/events/hooks/auto_moderation.js +4 -4
  196. package/lib/events/hooks/channel.d.ts +2 -2
  197. package/lib/events/hooks/channel.js +4 -7
  198. package/lib/events/hooks/custom.d.ts +4 -3
  199. package/lib/events/hooks/custom.js +5 -1
  200. package/lib/events/hooks/dispatch.d.ts +3 -4
  201. package/lib/events/hooks/dispatch.js +2 -2
  202. package/lib/events/hooks/entitlement.d.ts +5 -37
  203. package/lib/events/hooks/entitlement.js +7 -7
  204. package/lib/events/hooks/guild.d.ts +125 -125
  205. package/lib/events/hooks/guild.js +13 -15
  206. package/lib/events/hooks/integration.d.ts +27 -28
  207. package/lib/events/hooks/integration.js +3 -3
  208. package/lib/events/hooks/interactions.d.ts +2 -2
  209. package/lib/events/hooks/invite.d.ts +18 -17
  210. package/lib/events/hooks/message.d.ts +69 -54
  211. package/lib/events/hooks/message.js +4 -8
  212. package/lib/events/hooks/presence.d.ts +17 -16
  213. package/lib/events/hooks/stage.d.ts +4 -4
  214. package/lib/events/hooks/subscriptions.d.ts +35 -0
  215. package/lib/events/hooks/subscriptions.js +16 -0
  216. package/lib/events/hooks/thread.d.ts +132 -63
  217. package/lib/events/hooks/thread.js +4 -4
  218. package/lib/events/hooks/typing.d.ts +28 -6
  219. package/lib/events/hooks/typing.js +2 -2
  220. package/lib/events/hooks/user.d.ts +3 -3
  221. package/lib/events/hooks/user.js +2 -2
  222. package/lib/events/hooks/voice.d.ts +28 -3
  223. package/lib/events/hooks/voice.js +8 -4
  224. package/lib/events/hooks/webhook.d.ts +1 -1
  225. package/lib/index.d.ts +5 -14
  226. package/lib/index.js +7 -12
  227. package/lib/langs/handler.d.ts +14 -10
  228. package/lib/langs/handler.js +40 -9
  229. package/lib/structures/AutoModerationRule.d.ts +4 -4
  230. package/lib/structures/AutoModerationRule.js +1 -2
  231. package/lib/structures/ClientUser.d.ts +1 -1
  232. package/lib/structures/Entitlement.d.ts +10 -0
  233. package/lib/structures/Entitlement.js +16 -0
  234. package/lib/structures/Guild.d.ts +33 -34
  235. package/lib/structures/Guild.js +5 -2
  236. package/lib/structures/GuildBan.d.ts +6 -6
  237. package/lib/structures/GuildBan.js +2 -1
  238. package/lib/structures/GuildEmoji.d.ts +4 -4
  239. package/lib/structures/GuildEmoji.js +3 -2
  240. package/lib/structures/GuildMember.d.ts +20 -17
  241. package/lib/structures/GuildMember.js +18 -8
  242. package/lib/structures/GuildPreview.d.ts +1 -1
  243. package/lib/structures/GuildRole.d.ts +5 -3
  244. package/lib/structures/GuildRole.js +8 -1
  245. package/lib/structures/GuildTemplate.d.ts +2 -2
  246. package/lib/structures/GuildTemplate.js +1 -1
  247. package/lib/structures/Interaction.d.ts +76 -39
  248. package/lib/structures/Interaction.js +179 -94
  249. package/lib/structures/Message.d.ts +29 -33
  250. package/lib/structures/Message.js +8 -12
  251. package/lib/structures/Poll.d.ts +4 -3
  252. package/lib/structures/Poll.js +6 -2
  253. package/lib/structures/Sticker.d.ts +7 -7
  254. package/lib/structures/Sticker.js +7 -7
  255. package/lib/structures/User.d.ts +5 -4
  256. package/lib/structures/User.js +2 -1
  257. package/lib/structures/VoiceState.d.ts +15 -11
  258. package/lib/structures/VoiceState.js +35 -17
  259. package/lib/structures/Webhook.d.ts +6 -7
  260. package/lib/structures/Webhook.js +6 -7
  261. package/lib/structures/channels.d.ts +11 -10
  262. package/lib/structures/channels.js +70 -65
  263. package/lib/structures/extra/BaseGuild.d.ts +12 -2
  264. package/lib/structures/extra/BaseGuild.js +30 -3
  265. package/lib/structures/extra/BitField.d.ts +1 -1
  266. package/lib/structures/extra/BitField.js +3 -2
  267. package/lib/structures/extra/DiscordBase.js +2 -2
  268. package/lib/structures/extra/Permissions.d.ts +3 -1
  269. package/lib/structures/extra/Permissions.js +8 -3
  270. package/lib/types/gateway.d.ts +1554 -0
  271. package/lib/types/gateway.js +4 -0
  272. package/lib/types/index.d.ts +9 -1
  273. package/lib/types/index.js +28 -1
  274. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/attachment.d.ts +5 -0
  275. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/attachment.js +2 -0
  276. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/base.d.ts +22 -0
  277. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/base.js +2 -0
  278. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/boolean.d.ts +4 -0
  279. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/boolean.js +2 -0
  280. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/channel.d.ts +7 -0
  281. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/channel.js +2 -0
  282. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/integer.d.ts +17 -0
  283. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/integer.js +2 -0
  284. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/mentionable.d.ts +5 -0
  285. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/mentionable.js +2 -0
  286. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/number.d.ts +17 -0
  287. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/number.js +2 -0
  288. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/role.d.ts +5 -0
  289. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/role.js +2 -0
  290. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/shared.d.ts +25 -0
  291. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/shared.js +20 -0
  292. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/string.d.ts +17 -0
  293. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/string.js +2 -0
  294. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/subcommand.d.ts +11 -0
  295. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/subcommand.js +2 -0
  296. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/subcommandGroup.d.ts +11 -0
  297. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/subcommandGroup.js +2 -0
  298. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/user.d.ts +5 -0
  299. package/lib/types/payloads/_interactions/_applicationCommands/_chatInput/user.js +2 -0
  300. package/lib/types/payloads/_interactions/_applicationCommands/chatInput.d.ts +65 -0
  301. package/lib/types/payloads/_interactions/_applicationCommands/chatInput.js +29 -0
  302. package/lib/types/payloads/_interactions/_applicationCommands/contextMenu.d.ts +65 -0
  303. package/lib/types/payloads/_interactions/_applicationCommands/contextMenu.js +2 -0
  304. package/lib/types/payloads/_interactions/_applicationCommands/internals.d.ts +8 -0
  305. package/lib/types/payloads/_interactions/_applicationCommands/internals.js +2 -0
  306. package/lib/types/payloads/_interactions/_applicationCommands/permissions.d.ts +54 -0
  307. package/lib/types/payloads/_interactions/_applicationCommands/permissions.js +20 -0
  308. package/lib/types/payloads/_interactions/applicationCommands.d.ts +188 -0
  309. package/lib/types/payloads/_interactions/applicationCommands.js +88 -0
  310. package/lib/types/payloads/_interactions/autocomplete.d.ts +10 -0
  311. package/lib/types/payloads/_interactions/autocomplete.js +2 -0
  312. package/lib/types/payloads/_interactions/base.d.ts +197 -0
  313. package/lib/types/payloads/_interactions/base.js +2 -0
  314. package/lib/types/payloads/_interactions/messageComponents.d.ts +41 -0
  315. package/lib/types/payloads/_interactions/messageComponents.js +2 -0
  316. package/lib/types/payloads/_interactions/modalSubmit.d.ts +35 -0
  317. package/lib/types/payloads/_interactions/modalSubmit.js +2 -0
  318. package/lib/types/payloads/_interactions/ping.d.ts +3 -0
  319. package/lib/types/payloads/_interactions/ping.js +2 -0
  320. package/lib/types/payloads/_interactions/responses.d.ts +184 -0
  321. package/lib/types/payloads/_interactions/responses.js +58 -0
  322. package/lib/types/payloads/application.d.ts +292 -0
  323. package/lib/types/payloads/application.js +117 -0
  324. package/lib/types/payloads/auditLog.d.ts +644 -0
  325. package/lib/types/payloads/auditLog.js +80 -0
  326. package/lib/types/payloads/autoModeration.d.ts +219 -0
  327. package/lib/types/payloads/autoModeration.js +87 -0
  328. package/lib/types/payloads/channel.d.ts +1748 -0
  329. package/lib/types/payloads/channel.js +376 -0
  330. package/lib/types/payloads/emoji.d.ts +48 -0
  331. package/lib/types/payloads/emoji.js +5 -0
  332. package/lib/types/payloads/gateway.d.ts +373 -0
  333. package/lib/types/payloads/gateway.js +82 -0
  334. package/lib/types/payloads/guild.d.ts +1060 -0
  335. package/lib/types/payloads/guild.js +324 -0
  336. package/lib/types/payloads/guildScheduledEvent.d.ts +138 -0
  337. package/lib/types/payloads/guildScheduledEvent.js +32 -0
  338. package/lib/types/payloads/index.d.ts +64 -0
  339. package/lib/types/payloads/index.js +37 -0
  340. package/lib/types/payloads/interactions.d.ts +24 -0
  341. package/lib/types/payloads/interactions.js +23 -0
  342. package/lib/types/payloads/invite.d.ts +121 -0
  343. package/lib/types/payloads/invite.js +23 -0
  344. package/lib/types/payloads/monetization.d.ts +178 -0
  345. package/lib/types/payloads/monetization.js +88 -0
  346. package/lib/types/payloads/oauth2.d.ts +131 -0
  347. package/lib/types/payloads/oauth2.js +135 -0
  348. package/lib/types/payloads/permissions.d.ts +97 -0
  349. package/lib/types/payloads/permissions.js +16 -0
  350. package/lib/types/payloads/poll.d.ts +104 -0
  351. package/lib/types/payloads/poll.js +16 -0
  352. package/lib/types/payloads/stageInstance.d.ts +77 -0
  353. package/lib/types/payloads/stageInstance.js +19 -0
  354. package/lib/types/payloads/sticker.d.ts +123 -0
  355. package/lib/types/payloads/sticker.js +30 -0
  356. package/lib/types/payloads/teams.d.ts +78 -0
  357. package/lib/types/payloads/teams.js +23 -0
  358. package/lib/types/payloads/template.d.ts +62 -0
  359. package/lib/types/payloads/template.js +5 -0
  360. package/lib/types/payloads/user.d.ts +337 -0
  361. package/lib/types/payloads/user.js +167 -0
  362. package/lib/types/payloads/voice.d.ts +89 -0
  363. package/lib/types/payloads/voice.js +5 -0
  364. package/lib/types/payloads/webhook.d.ts +76 -0
  365. package/lib/types/payloads/webhook.js +21 -0
  366. package/lib/types/rest/application.d.ts +57 -0
  367. package/lib/types/rest/application.js +2 -0
  368. package/lib/types/rest/auditLog.d.ts +30 -0
  369. package/lib/types/rest/auditLog.js +2 -0
  370. package/lib/types/rest/autoModeration.d.ts +66 -0
  371. package/lib/types/rest/autoModeration.js +2 -0
  372. package/lib/types/rest/channel.d.ts +699 -0
  373. package/lib/types/rest/channel.js +11 -0
  374. package/lib/types/rest/emoji.d.ts +54 -0
  375. package/lib/types/rest/emoji.js +2 -0
  376. package/lib/types/rest/gateway.d.ts +9 -0
  377. package/lib/types/rest/gateway.js +2 -0
  378. package/lib/types/rest/guild.d.ts +865 -0
  379. package/lib/types/rest/guild.js +2 -0
  380. package/lib/types/rest/guildScheduledEvent.d.ts +126 -0
  381. package/lib/types/rest/guildScheduledEvent.js +2 -0
  382. package/lib/types/rest/index.d.ts +296 -0
  383. package/lib/types/rest/index.js +292 -0
  384. package/lib/types/rest/interactions.d.ts +216 -0
  385. package/lib/types/rest/interactions.js +2 -0
  386. package/lib/types/rest/invite.d.ts +24 -0
  387. package/lib/types/rest/invite.js +2 -0
  388. package/lib/types/rest/monetization.d.ts +103 -0
  389. package/lib/types/rest/monetization.js +11 -0
  390. package/lib/types/rest/oauth2.d.ts +172 -0
  391. package/lib/types/rest/oauth2.js +2 -0
  392. package/lib/types/rest/poll.d.ts +44 -0
  393. package/lib/types/rest/poll.js +2 -0
  394. package/lib/types/rest/stageInstance.d.ts +58 -0
  395. package/lib/types/rest/stageInstance.js +2 -0
  396. package/lib/types/rest/sticker.d.ts +77 -0
  397. package/lib/types/rest/sticker.js +2 -0
  398. package/lib/types/rest/template.d.ts +62 -0
  399. package/lib/types/rest/template.js +2 -0
  400. package/lib/types/rest/user.d.ts +120 -0
  401. package/lib/types/rest/user.js +2 -0
  402. package/lib/types/rest/voice.d.ts +17 -0
  403. package/lib/types/rest/voice.js +2 -0
  404. package/lib/types/rest/webhook.d.ts +250 -0
  405. package/lib/types/rest/webhook.js +2 -0
  406. package/lib/types/utils/index.d.ts +808 -0
  407. package/lib/types/utils/index.js +810 -0
  408. package/lib/websocket/SharedTypes.d.ts +12 -5
  409. package/lib/websocket/SharedTypes.js +1 -1
  410. package/lib/websocket/constants/index.d.ts +3 -3
  411. package/lib/websocket/constants/index.js +11 -1
  412. package/lib/websocket/discord/basesocket.d.ts +7 -7
  413. package/lib/websocket/discord/basesocket.js +34 -22
  414. package/lib/websocket/discord/events/memberUpdate.d.ts +1 -6
  415. package/lib/websocket/discord/events/memberUpdate.js +2 -1
  416. package/lib/websocket/discord/events/presenceUpdate.d.ts +5 -18
  417. package/lib/websocket/discord/events/presenceUpdate.js +5 -6
  418. package/lib/websocket/discord/shard.d.ts +9 -8
  419. package/lib/websocket/discord/shard.js +83 -57
  420. package/lib/websocket/discord/sharder.d.ts +6 -5
  421. package/lib/websocket/discord/sharder.js +70 -11
  422. package/lib/websocket/discord/shared.d.ts +34 -6
  423. package/lib/websocket/discord/socket/custom.d.ts +52 -0
  424. package/lib/websocket/discord/socket/custom.js +300 -0
  425. package/lib/websocket/discord/worker.d.ts +6 -10
  426. package/lib/websocket/discord/workermanager.d.ts +10 -16
  427. package/lib/websocket/discord/workermanager.js +63 -50
  428. package/lib/websocket/structures/index.d.ts +0 -1
  429. package/lib/websocket/structures/index.js +1 -1
  430. package/lib/websocket/structures/timeout.d.ts +0 -1
  431. package/package.json +70 -74
  432. package/lib/cache/adapters/redis.d.ts +0 -37
  433. package/lib/cache/adapters/redis.js +0 -218
  434. package/lib/client/oninteractioncreate.d.ts +0 -4
  435. package/lib/client/oninteractioncreate.js +0 -198
  436. package/lib/client/onmessagecreate.d.ts +0 -13
  437. package/lib/client/onmessagecreate.js +0 -410
  438. package/lib/structures/extra/functions.d.ts +0 -12
  439. package/lib/structures/extra/functions.js +0 -70
@@ -1,20 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Client = void 0;
4
- const v10_1 = require("discord-api-types/v10");
4
+ const types_1 = require("../types");
5
5
  const common_1 = require("../common");
6
6
  const events_1 = require("../events");
7
- const structures_1 = require("../structures");
8
7
  const websocket_1 = require("../websocket");
9
8
  const memberUpdate_1 = require("../websocket/discord/events/memberUpdate");
10
9
  const presenceUpdate_1 = require("../websocket/discord/events/presenceUpdate");
11
10
  const base_1 = require("./base");
12
- const oninteractioncreate_1 = require("./oninteractioncreate");
13
- const onmessagecreate_1 = require("./onmessagecreate");
14
11
  const collectors_1 = require("./collectors");
12
+ const transformers_1 = require("./transformers");
15
13
  let parentPort;
16
14
  class Client extends base_1.BaseClient {
17
- __handleGuilds = new Set();
15
+ __handleGuilds;
18
16
  gateway;
19
17
  me;
20
18
  memberUpdateHandler = new memberUpdate_1.MemberUpdateHandler();
@@ -23,13 +21,6 @@ class Client extends base_1.BaseClient {
23
21
  events = new events_1.EventHandler(this);
24
22
  constructor(options) {
25
23
  super(options);
26
- this.options = (0, common_1.MergeOptions)({
27
- commands: {
28
- argsParser: options?.commands?.argsParser ?? onmessagecreate_1.defaultArgsParser,
29
- optionsParser: options?.commands?.optionsParser ??
30
- onmessagecreate_1.defaultOptionsParser,
31
- },
32
- }, this.options);
33
24
  }
34
25
  setServices({ gateway, ...rest }) {
35
26
  super.setServices(rest);
@@ -48,9 +39,6 @@ class Client extends base_1.BaseClient {
48
39
  }
49
40
  else if (typeof rest.handlers.events === 'function') {
50
41
  this.events = new events_1.EventHandler(this);
51
- this.events.setHandlers({
52
- callback: rest.handlers.events,
53
- });
54
42
  }
55
43
  else {
56
44
  this.events = rest.handlers.events;
@@ -58,7 +46,7 @@ class Client extends base_1.BaseClient {
58
46
  }
59
47
  }
60
48
  async loadEvents(dir) {
61
- dir ??= await this.getRC().then((x) => x.events);
49
+ dir ??= await this.getRC().then(x => x.events);
62
50
  if (dir && this.events) {
63
51
  await this.events.load(dir);
64
52
  this.logger.info('EventHandler loaded');
@@ -89,7 +77,7 @@ class Client extends base_1.BaseClient {
89
77
  async start(options = {}, execute = true) {
90
78
  await super.start(options);
91
79
  await this.loadEvents(options.eventsDir);
92
- const { token: tokenRC, intents: intentsRC, debug: debugRC, } = await this.getRC();
80
+ const { token: tokenRC, intents: intentsRC, debug: debugRC } = await this.getRC();
93
81
  const token = options?.token ?? tokenRC;
94
82
  const intents = options?.connection?.intents ?? intentsRC;
95
83
  if (!this.gateway) {
@@ -112,6 +100,24 @@ class Client extends base_1.BaseClient {
112
100
  ...this.options?.gateway?.properties,
113
101
  },
114
102
  compress: this.options?.gateway?.compress,
103
+ resharding: {
104
+ getInfo: () => this.proxy.gateway.bot.get(),
105
+ interval: this.options?.resharding?.interval ?? 0,
106
+ percentage: this.options?.resharding?.percentage ?? 0,
107
+ reloadGuilds: ids => {
108
+ this.__handleGuilds = this.__handleGuilds?.concat(ids) ?? ids;
109
+ },
110
+ onGuild: id => {
111
+ if (this.__handleGuilds) {
112
+ const index = this.__handleGuilds.indexOf(id);
113
+ if (index === -1)
114
+ return false;
115
+ this.__handleGuilds.splice(index, 1);
116
+ return true;
117
+ }
118
+ return false;
119
+ },
120
+ },
115
121
  });
116
122
  }
117
123
  this.cache.intents = this.gateway.options.intents;
@@ -123,7 +129,10 @@ class Client extends base_1.BaseClient {
123
129
  }
124
130
  }
125
131
  async onPacket(shardId, packet) {
126
- await this.events?.runEvent('RAW', this, packet, shardId);
132
+ Promise.allSettled([
133
+ this.events?.runEvent('RAW', this, packet, shardId, false),
134
+ this.collectors.run('RAW', packet, this),
135
+ ]); //ignore promise
127
136
  switch (packet.t) {
128
137
  //// Cases where we must obtain the old data before updating
129
138
  case 'GUILD_MEMBER_UPDATE':
@@ -138,14 +147,16 @@ class Client extends base_1.BaseClient {
138
147
  }
139
148
  await this.events?.execute(packet.t, packet, this, shardId);
140
149
  break;
150
+ case 'GUILD_DELETE':
141
151
  case 'GUILD_CREATE': {
142
- if (this.__handleGuilds?.has(packet.d.id)) {
143
- this.__handleGuilds.delete(packet.d.id);
144
- if (!this.__handleGuilds.size &&
145
- [...this.gateway.values()].every((shard) => shard.data.session_id)) {
146
- await this.events?.runEvent('BOT_READY', this, this.me, -1);
152
+ if (this.__handleGuilds?.includes(packet.d.id)) {
153
+ this.__handleGuilds?.splice(this.__handleGuilds.indexOf(packet.d.id), 1);
154
+ if (!this.__handleGuilds?.length && [...this.gateway.values()].every(shard => shard.data.session_id)) {
155
+ delete this.__handleGuilds;
156
+ await this.cache.onPacket(packet);
157
+ return this.events?.runEvent('BOT_READY', this, this.me, -1);
147
158
  }
148
- if (!this.__handleGuilds.size)
159
+ if (!this.__handleGuilds?.length)
149
160
  delete this.__handleGuilds;
150
161
  return this.cache.onPacket(packet);
151
162
  }
@@ -154,31 +165,34 @@ class Client extends base_1.BaseClient {
154
165
  }
155
166
  //rest of the events
156
167
  default: {
157
- await this.events?.execute(packet.t, packet, this, shardId);
158
168
  switch (packet.t) {
159
169
  case 'INTERACTION_CREATE':
160
- await (0, oninteractioncreate_1.onInteractionCreate)(this, packet.d, shardId);
170
+ await this.events?.execute(packet.t, packet, this, shardId);
171
+ await this.handleCommand.interaction(packet.d, shardId);
161
172
  break;
162
173
  case 'MESSAGE_CREATE':
163
- await (0, onmessagecreate_1.onMessageCreate)(this, packet.d, shardId);
174
+ await this.events?.execute(packet.t, packet, this, shardId);
175
+ await this.handleCommand.message(packet.d, shardId);
164
176
  break;
165
- case 'READY':
166
- for (const g of packet.d.guilds) {
167
- this.__handleGuilds?.add(g.id);
168
- }
177
+ case 'READY': {
178
+ const ids = packet.d.guilds.map(x => x.id);
179
+ this.__handleGuilds = this.__handleGuilds?.concat(ids) ?? ids;
169
180
  this.botId = packet.d.user.id;
170
181
  this.applicationId = packet.d.application.id;
171
- this.me = new structures_1.ClientUser(this, packet.d.user, packet.d.application);
172
- if (!(this.__handleGuilds?.size &&
173
- (this.gateway.options.intents &
174
- v10_1.GatewayIntentBits.Guilds) ===
175
- v10_1.GatewayIntentBits.Guilds)) {
176
- if ([...this.gateway.values()].every((shard) => shard.data.session_id)) {
182
+ this.me = transformers_1.Transformers.ClientUser(this, packet.d.user, packet.d.application);
183
+ if (!(this.__handleGuilds?.length &&
184
+ (this.gateway.options.intents & types_1.GatewayIntentBits.Guilds) === types_1.GatewayIntentBits.Guilds)) {
185
+ if ([...this.gateway.values()].every(shard => shard.data.session_id)) {
177
186
  await this.events?.runEvent('BOT_READY', this, this.me, -1);
178
187
  }
179
188
  delete this.__handleGuilds;
180
189
  }
181
190
  this.debugger?.debug(`#${shardId}[${packet.d.user.username}](${this.botId}) is online...`);
191
+ await this.events?.execute(packet.t, packet, this, shardId);
192
+ break;
193
+ }
194
+ default:
195
+ await this.events?.execute(packet.t, packet, this, shardId);
182
196
  break;
183
197
  }
184
198
  break;
@@ -1,8 +1,8 @@
1
- /// <reference types="node" />
2
1
  import type { Awaitable, CamelCase } from '../common';
3
2
  import type { CallbackEventHandler, CustomEventsKeys, GatewayEvents } from '../events';
4
3
  export type AllClientEvents = CustomEventsKeys | GatewayEvents;
5
4
  export type ParseClientEventName<T extends AllClientEvents> = T extends CustomEventsKeys ? T : CamelCase<T>;
5
+ export type CollectorRunPameters<T extends AllClientEvents> = Awaited<Parameters<CallbackEventHandler[ParseClientEventName<T>]>[0]>;
6
6
  type RunData<T extends AllClientEvents> = {
7
7
  options: {
8
8
  event: T;
@@ -10,9 +10,9 @@ type RunData<T extends AllClientEvents> = {
10
10
  timeout?: number;
11
11
  onStop?: (reason: string) => unknown;
12
12
  onStopError?: (reason: string, error: unknown) => unknown;
13
- filter: (arg: Awaited<Parameters<CallbackEventHandler[ParseClientEventName<T>]>[0]>) => Awaitable<boolean>;
14
- run: (arg: Awaited<Parameters<CallbackEventHandler[ParseClientEventName<T>]>[0]>, stop: (reason?: string) => void) => unknown;
15
- onRunError?: (arg: Awaited<Parameters<CallbackEventHandler[ParseClientEventName<T>]>[0]>, error: unknown, stop: (reason?: string) => void) => unknown;
13
+ filter: (arg: CollectorRunPameters<T>) => Awaitable<boolean>;
14
+ run: (arg: CollectorRunPameters<T>, stop: (reason?: string) => void) => unknown;
15
+ onRunError?: (arg: CollectorRunPameters<T>, error: unknown, stop: (reason?: string) => void) => unknown;
16
16
  };
17
17
  idle?: NodeJS.Timeout;
18
18
  timeout?: NodeJS.Timeout;
@@ -23,13 +23,13 @@ export declare class Collectors {
23
23
  private generateRandomUUID;
24
24
  create<T extends AllClientEvents>(options: RunData<T>['options']): {
25
25
  event: T;
26
- idle?: number | undefined;
27
- timeout?: number | undefined;
28
- onStop?: ((reason: string) => unknown) | undefined;
29
- onStopError?: ((reason: string, error: unknown) => unknown) | undefined;
26
+ idle?: number;
27
+ timeout?: number;
28
+ onStop?: (reason: string) => unknown;
29
+ onStopError?: (reason: string, error: unknown) => unknown;
30
30
  filter: (arg: Awaited<Parameters<CallbackEventHandler[ParseClientEventName<T>]>[0]>) => Awaitable<boolean>;
31
- run: (arg: Awaited<Parameters<CallbackEventHandler[ParseClientEventName<T>]>[0]>, stop: (reason?: string | undefined) => void) => unknown;
32
- onRunError?: ((arg: Awaited<Parameters<CallbackEventHandler[ParseClientEventName<T>]>[0]>, error: unknown, stop: (reason?: string | undefined) => void) => unknown) | undefined;
31
+ run: (arg: Awaited<Parameters<CallbackEventHandler[ParseClientEventName<T>]>[0]>, stop: (reason?: string) => void) => unknown;
32
+ onRunError?: ((arg: Awaited<Parameters<CallbackEventHandler[ParseClientEventName<T>]>[0]>, error: unknown, stop: (reason?: string) => void) => unknown) | undefined;
33
33
  };
34
34
  private delete;
35
35
  }
@@ -1,8 +1,32 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  Object.defineProperty(exports, "__esModule", { value: true });
3
26
  exports.Collectors = void 0;
4
27
  const node_crypto_1 = require("node:crypto");
5
28
  const node_console_1 = require("node:console");
29
+ const RawEvents = __importStar(require("../events/hooks"));
6
30
  class Collectors {
7
31
  values = new Map();
8
32
  generateRandomUUID(name) {
@@ -61,10 +85,11 @@ class Collectors {
61
85
  }
62
86
  }
63
87
  /**@internal */
64
- async run(name, data) {
88
+ async run(name, raw, client) {
65
89
  const collectors = this.values.get(name);
66
90
  if (!collectors)
67
91
  return;
92
+ const data = (await RawEvents[name]?.(client, raw)) ?? raw;
68
93
  for (const i of collectors) {
69
94
  if (await i.options.filter(data)) {
70
95
  i.idle?.refresh();
@@ -1,19 +1,14 @@
1
- /// <reference types="node" />
2
- import { type APIInteraction } from 'discord-api-types/v10';
3
- import type { HttpRequest, HttpResponse } from 'uWebSockets.js';
4
- import { type DeepPartial } from '../common';
1
+ import type { APIInteractionResponse, APIInteraction } from '../types';
2
+ import type { DeepPartial } from '../common';
5
3
  import type { BaseClientOptions, StartOptions } from './base';
6
4
  import { BaseClient } from './base';
7
5
  export declare class HttpClient extends BaseClient {
8
- app?: ReturnType<typeof import('uWebSockets.js').App>;
9
- publicKey: string;
10
- publicKeyHex: Buffer;
11
6
  constructor(options?: BaseClientOptions);
12
- protected static readJson<T extends Record<string, any>>(res: HttpResponse): Promise<T>;
13
- protected execute(options: DeepPartial<StartOptions['httpConnection']>): Promise<void>;
14
7
  start(options?: DeepPartial<Omit<StartOptions, 'connection' | 'eventsDir'>>): Promise<void>;
15
- protected verifySignatureGenericRequest(req: Request): Promise<APIInteraction | undefined>;
16
- protected verifySignature(res: HttpResponse, req: HttpRequest): Promise<APIInteraction | undefined>;
17
- fetch(req: Request): Promise<Response>;
18
- protected onPacket(res: HttpResponse, req: HttpRequest): Promise<void>;
8
+ onPacket(rawBody: APIInteraction): Promise<{
9
+ headers: {
10
+ 'Content-Type'?: string;
11
+ };
12
+ response: APIInteractionResponse | FormData;
13
+ }>;
19
14
  }
@@ -1,237 +1,46 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.HttpClient = void 0;
4
- const v10_1 = require("discord-api-types/v10");
5
- const magic_bytes_js_1 = require("magic-bytes.js");
6
- const api_1 = require("../api");
7
4
  const utils_1 = require("../api/utils/utils");
8
- const common_1 = require("../common");
9
5
  const base_1 = require("./base");
10
- const oninteractioncreate_1 = require("./oninteractioncreate");
11
- let UWS;
12
- let nacl;
13
- try {
14
- UWS = require('uWebSockets.js');
15
- }
16
- catch {
17
- // easter egg #1
18
- }
19
- try {
20
- nacl = require('tweetnacl');
21
- }
22
- catch {
23
- // I always cum
24
- }
25
6
  class HttpClient extends base_1.BaseClient {
26
- app;
27
- publicKey;
28
- publicKeyHex;
29
7
  constructor(options) {
30
8
  super(options);
31
- // if (!UWS) {
32
- // throw new Error('No uws installed.');
33
- // }
34
- if (!nacl) {
35
- throw new Error('No tweetnacl installed.');
36
- }
37
9
  }
38
- static readJson(res) {
39
- return new Promise((cb, err) => {
40
- let buffer;
41
- res.onData((ab, isLast) => {
42
- const chunk = Buffer.from(ab);
43
- if (isLast) {
44
- let json;
45
- try {
46
- json = JSON.parse(buffer ? Buffer.concat([buffer, chunk]).toString() : chunk.toString());
10
+ async start(options = {}) {
11
+ await super.start(options);
12
+ return this.execute(options.httpConnection ?? {});
13
+ }
14
+ async onPacket(rawBody) {
15
+ return new Promise(async (r) => {
16
+ await this.handleCommand.interaction(rawBody, -1, async ({ body, files }) => {
17
+ let response;
18
+ const headers = {};
19
+ if (files) {
20
+ response = new FormData();
21
+ for (const [index, file] of files.entries()) {
22
+ const fileKey = file.key ?? `files[${index}]`;
23
+ if ((0, utils_1.isBufferLike)(file.data)) {
24
+ response.append(fileKey, new Blob([file.data], { type: file.contentType }), file.filename);
25
+ }
26
+ else {
27
+ response.append(fileKey, new Blob([`${file.data}`], { type: file.contentType }), file.filename);
28
+ }
47
29
  }
48
- catch (e) {
49
- res.close();
50
- return;
30
+ if (body) {
31
+ response.append('payload_json', JSON.stringify(body));
51
32
  }
52
- cb(json);
53
33
  }
54
34
  else {
55
- buffer = Buffer.concat(buffer ? [buffer, chunk] : [chunk]);
35
+ response = body ?? {};
36
+ headers['Content-Type'] = 'application/json';
56
37
  }
38
+ return r({
39
+ headers,
40
+ response,
41
+ });
57
42
  });
58
- res.onAborted(err);
59
43
  });
60
44
  }
61
- async execute(options) {
62
- await super.execute();
63
- const { publicKey: publicKeyRC, port: portRC, applicationId: applicationIdRC, } = await this.getRC();
64
- const publicKey = options.publicKey ?? publicKeyRC;
65
- const port = options.port ?? portRC;
66
- if (!publicKey) {
67
- throw new Error('Expected a publicKey, check your config file');
68
- }
69
- if (!port) {
70
- throw new Error('Expected a port, check your config file');
71
- }
72
- if (applicationIdRC) {
73
- this.applicationId = applicationIdRC;
74
- }
75
- this.publicKey = publicKey;
76
- this.publicKeyHex = Buffer.from(this.publicKey, 'hex');
77
- if (UWS && options.useUWS) {
78
- this.app = UWS.App();
79
- this.app.post('/interactions', (res, req) => {
80
- return this.onPacket(res, req);
81
- });
82
- this.app.listen(port, () => {
83
- this.logger.info(`Listening to <url>:${port}/interactions`);
84
- });
85
- }
86
- else {
87
- if (options.useUWS)
88
- return this.logger.warn('No uWebSockets installed.');
89
- this.logger.info('Use your preferred http server and invoke <HttpClient>.fetch(<Request>) to get started');
90
- }
91
- }
92
- async start(options = {}) {
93
- await super.start(options);
94
- return this.execute((0, common_1.MergeOptions)({ useUWS: true }, options.httpConnection));
95
- }
96
- async verifySignatureGenericRequest(req) {
97
- const timestamp = req.headers.get('x-signature-timestamp');
98
- const ed25519 = req.headers.get('x-signature-ed25519') ?? '';
99
- const body = (await req.json());
100
- if (nacl.sign.detached.verify(Buffer.from(timestamp + JSON.stringify(body)), Buffer.from(ed25519, 'hex'), this.publicKeyHex)) {
101
- return body;
102
- }
103
- return;
104
- }
105
- // https://discord.com/developers/docs/interactions/receiving-and-responding#security-and-authorization
106
- async verifySignature(res, req) {
107
- const timestamp = req.getHeader('x-signature-timestamp');
108
- const ed25519 = req.getHeader('x-signature-ed25519');
109
- const body = await HttpClient.readJson(res);
110
- if (nacl.sign.detached.verify(Buffer.from(timestamp + JSON.stringify(body)), Buffer.from(ed25519, 'hex'), this.publicKeyHex)) {
111
- return body;
112
- }
113
- return;
114
- }
115
- async fetch(req) {
116
- const rawBody = await this.verifySignatureGenericRequest(req);
117
- if (!rawBody) {
118
- this.debugger?.debug('Invalid request/No info, returning 418 status.');
119
- // I'm a teapot
120
- return new Response('', { status: 418 });
121
- }
122
- switch (rawBody.type) {
123
- case v10_1.InteractionType.Ping:
124
- this.debugger?.debug('Ping interaction received, responding.');
125
- return Response.json({ type: v10_1.InteractionResponseType.Pong }, {
126
- headers: {
127
- 'Content-Type': 'application/json',
128
- },
129
- });
130
- default:
131
- return new Promise(r => {
132
- if ((0, common_1.isCloudfareWorker)())
133
- return (0, oninteractioncreate_1.onInteractionCreate)(this, rawBody, -1)
134
- .then(() => r(new Response()))
135
- .catch(() => r(new Response()));
136
- return (0, oninteractioncreate_1.onInteractionCreate)(this, rawBody, -1, async ({ body, files }) => {
137
- let response;
138
- const headers = {};
139
- if (files) {
140
- response = new FormData();
141
- for (const [index, file] of files.entries()) {
142
- const fileKey = file.key ?? `files[${index}]`;
143
- if ((0, utils_1.isBufferLike)(file.data)) {
144
- let contentType = file.contentType;
145
- if (!contentType) {
146
- const [parsedType] = (0, magic_bytes_js_1.filetypeinfo)(file.data);
147
- if (parsedType) {
148
- contentType =
149
- api_1.OverwrittenMimeTypes[parsedType.mime] ??
150
- parsedType.mime ??
151
- 'application/octet-stream';
152
- }
153
- }
154
- response.append(fileKey, new Blob([file.data], { type: contentType }), file.name);
155
- }
156
- else {
157
- response.append(fileKey, new Blob([`${file.data}`], { type: file.contentType }), file.name);
158
- }
159
- }
160
- if (body) {
161
- response.append('payload_json', JSON.stringify(body));
162
- }
163
- }
164
- else {
165
- response = body ?? {};
166
- headers['Content-Type'] = 'application/json';
167
- }
168
- r(response instanceof FormData
169
- ? new Response(response, { headers })
170
- : Response.json(response, {
171
- headers,
172
- }));
173
- });
174
- });
175
- }
176
- }
177
- async onPacket(res, req) {
178
- const rawBody = await this.verifySignature(res, req);
179
- if (rawBody) {
180
- switch (rawBody.type) {
181
- case v10_1.InteractionType.Ping:
182
- this.debugger?.debug('Ping interaction received, responding.');
183
- res
184
- .writeHeader('Content-Type', 'application/json')
185
- .end(JSON.stringify({ type: v10_1.InteractionResponseType.Pong }));
186
- break;
187
- default:
188
- await (0, oninteractioncreate_1.onInteractionCreate)(this, rawBody, -1, async ({ body, files }) => {
189
- res.cork(() => {
190
- let response;
191
- const headers = {};
192
- if (files) {
193
- response = new FormData();
194
- for (const [index, file] of files.entries()) {
195
- const fileKey = file.key ?? `files[${index}]`;
196
- if ((0, utils_1.isBufferLike)(file.data)) {
197
- let contentType = file.contentType;
198
- if (!contentType) {
199
- const [parsedType] = (0, magic_bytes_js_1.filetypeinfo)(file.data);
200
- if (parsedType) {
201
- contentType =
202
- api_1.OverwrittenMimeTypes[parsedType.mime] ??
203
- parsedType.mime ??
204
- 'application/octet-stream';
205
- }
206
- }
207
- response.append(fileKey, new Blob([file.data], { type: contentType }), file.name);
208
- }
209
- else {
210
- response.append(fileKey, new Blob([`${file.data}`], { type: file.contentType }), file.name);
211
- }
212
- }
213
- if (body) {
214
- response.append('payload_json', JSON.stringify(body));
215
- }
216
- }
217
- else {
218
- response = body ?? {};
219
- headers['Content-Type'] = 'application/json';
220
- }
221
- for (const i in headers) {
222
- res.writeHeader(i, headers[i]);
223
- }
224
- return res.end(JSON.stringify(response));
225
- });
226
- });
227
- break;
228
- }
229
- }
230
- else {
231
- this.debugger?.debug('Invalid request/No info, returning 418 status.');
232
- // I'm a teapot
233
- res.writeStatus('418').end();
234
- }
235
- }
236
45
  }
237
46
  exports.HttpClient = HttpClient;
@@ -2,3 +2,4 @@ export type { RuntimeConfig, RuntimeConfigHTTP } from './base';
2
2
  export * from './client';
3
3
  export * from './httpclient';
4
4
  export * from './workerclient';
5
+ export * from './transformers';
@@ -17,3 +17,4 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./client"), exports);
18
18
  __exportStar(require("./httpclient"), exports);
19
19
  __exportStar(require("./workerclient"), exports);
20
+ __exportStar(require("./transformers"), exports);
@@ -0,0 +1,68 @@
1
+ import type { ChannelType } from '../types';
2
+ import { type CustomStructures, OptionResolver } from '../commands';
3
+ import { AnonymousGuild, AutoModerationRule, BaseChannel, BaseGuildChannel, CategoryChannel, ClientUser, DMChannel, DirectoryChannel, ForumChannel, Guild, GuildEmoji, GuildMember, GuildRole, GuildTemplate, InteractionGuildMember, MediaChannel, Message, NewsChannel, Poll, StageChannel, Sticker, TextGuildChannel, ThreadChannel, User, VoiceChannel, VoiceState, Webhook, WebhookMessage } from '../structures';
4
+ import type { StructStates } from '../common/';
5
+ import { GuildBan } from '../structures/GuildBan';
6
+ export type PollStructure = InferCustomStructure<Poll, 'Poll'>;
7
+ export type ClientUserStructure = InferCustomStructure<ClientUser, 'ClientUser'>;
8
+ export type AnonymousGuildStructure = InferCustomStructure<AnonymousGuild, 'AnonymousGuild'>;
9
+ export type AutoModerationRuleStructure = InferCustomStructure<AutoModerationRule, 'AutoModerationRule'>;
10
+ export type BaseChannelStructure = InferCustomStructure<BaseChannel<ChannelType>, 'BaseChannel'>;
11
+ export type BaseGuildChannelStructure = InferCustomStructure<BaseGuildChannel, 'BaseGuildChannel'>;
12
+ export type TextGuildChannelStructure = InferCustomStructure<TextGuildChannel, 'TextGuildChannel'>;
13
+ export type DMChannelStructure = InferCustomStructure<DMChannel, 'DMChannel'>;
14
+ export type VoiceChannelStructure = InferCustomStructure<VoiceChannel, 'VoiceChannel'>;
15
+ export type StageChannelStructure = InferCustomStructure<StageChannel, 'StageChannel'>;
16
+ export type MediaChannelStructure = InferCustomStructure<MediaChannel, 'MediaChannel'>;
17
+ export type ForumChannelStructure = InferCustomStructure<ForumChannel, 'ForumChannel'>;
18
+ export type ThreadChannelStructure = InferCustomStructure<ThreadChannel, 'ThreadChannel'>;
19
+ export type CategoryChannelStructure = InferCustomStructure<CategoryChannel, 'CategoryChannel'>;
20
+ export type NewsChannelStructure = InferCustomStructure<NewsChannel, 'NewsChannel'>;
21
+ export type DirectoryChannelStructure = InferCustomStructure<DirectoryChannel, 'DirectoryChannel'>;
22
+ export type GuildStructure<State extends StructStates = 'api'> = InferCustomStructure<Guild<State>, 'Guild'>;
23
+ export type GuildBanStructure = InferCustomStructure<GuildBan, 'GuildBan'>;
24
+ export type GuildEmojiStructure = InferCustomStructure<GuildEmoji, 'GuildEmoji'>;
25
+ export type GuildMemberStructure = InferCustomStructure<GuildMember, 'GuildMember'>;
26
+ export type InteractionGuildMemberStructure = InferCustomStructure<InteractionGuildMember, 'InteractionGuildMember'>;
27
+ export type GuildRoleStructure = InferCustomStructure<GuildRole, 'GuildRole'>;
28
+ export type GuildTemplateStructure = InferCustomStructure<GuildTemplate, 'GuildTemplate'>;
29
+ export type MessageStructure = InferCustomStructure<Message, 'Message'>;
30
+ export type WebhookMessageStructure = InferCustomStructure<WebhookMessage, 'WebhookMessage'>;
31
+ export type StickerStructure = InferCustomStructure<Sticker, 'Sticker'>;
32
+ export type UserStructure = InferCustomStructure<User, 'User'>;
33
+ export type VoiceStateStructure = InferCustomStructure<VoiceState, 'VoiceState'>;
34
+ export type WebhookStructure = InferCustomStructure<Webhook, 'Webhook'>;
35
+ export type OptionResolverStructure = InferCustomStructure<OptionResolver, 'OptionResolver'>;
36
+ export declare class Transformers {
37
+ static AnonymousGuild(...args: ConstructorParameters<typeof AnonymousGuild>): AnonymousGuildStructure;
38
+ static AutoModerationRule(...args: ConstructorParameters<typeof AutoModerationRule>): AutoModerationRuleStructure;
39
+ static BaseChannel(...args: ConstructorParameters<typeof BaseChannel>): BaseChannelStructure;
40
+ static BaseGuildChannel(...args: ConstructorParameters<typeof BaseGuildChannel>): BaseGuildChannelStructure;
41
+ static TextGuildChannel(...args: ConstructorParameters<typeof TextGuildChannel>): TextGuildChannelStructure;
42
+ static DMChannel(...args: ConstructorParameters<typeof DMChannel>): DMChannelStructure;
43
+ static VoiceChannel(...args: ConstructorParameters<typeof VoiceChannel>): VoiceChannelStructure;
44
+ static StageChannel(...args: ConstructorParameters<typeof StageChannel>): StageChannelStructure;
45
+ static MediaChannel(...args: ConstructorParameters<typeof MediaChannel>): MediaChannelStructure;
46
+ static ForumChannel(...args: ConstructorParameters<typeof ForumChannel>): ForumChannelStructure;
47
+ static ThreadChannel(...args: ConstructorParameters<typeof ThreadChannel>): ThreadChannelStructure;
48
+ static CategoryChannel(...args: ConstructorParameters<typeof CategoryChannel>): CategoryChannelStructure;
49
+ static NewsChannel(...args: ConstructorParameters<typeof NewsChannel>): NewsChannelStructure;
50
+ static DirectoryChannel(...args: ConstructorParameters<typeof DirectoryChannel>): DirectoryChannelStructure;
51
+ static ClientUser(...args: ConstructorParameters<typeof ClientUser>): ClientUserStructure;
52
+ static Guild<State extends StructStates = 'api'>(...args: ConstructorParameters<typeof Guild>): GuildStructure<State>;
53
+ static GuildBan(...args: ConstructorParameters<typeof GuildBan>): GuildBanStructure;
54
+ static GuildEmoji(...args: ConstructorParameters<typeof GuildEmoji>): GuildEmojiStructure;
55
+ static GuildMember(...args: ConstructorParameters<typeof GuildMember>): GuildMemberStructure;
56
+ static InteractionGuildMember(...args: ConstructorParameters<typeof InteractionGuildMember>): InteractionGuildMemberStructure;
57
+ static GuildRole(...args: ConstructorParameters<typeof GuildRole>): GuildRoleStructure;
58
+ static GuildTemplate(...args: ConstructorParameters<typeof GuildTemplate>): GuildTemplateStructure;
59
+ static Message(...args: ConstructorParameters<typeof Message>): MessageStructure;
60
+ static WebhookMessage(...args: ConstructorParameters<typeof WebhookMessage>): WebhookMessageStructure;
61
+ static Poll(...args: ConstructorParameters<typeof Poll>): PollStructure;
62
+ static Sticker(...args: ConstructorParameters<typeof Sticker>): StickerStructure;
63
+ static User(...args: ConstructorParameters<typeof User>): UserStructure;
64
+ static VoiceState(...args: ConstructorParameters<typeof VoiceState>): VoiceStateStructure;
65
+ static Webhook(...args: ConstructorParameters<typeof Webhook>): WebhookStructure;
66
+ static OptionResolver(...args: ConstructorParameters<typeof OptionResolver>): OptionResolverStructure;
67
+ }
68
+ export type InferCustomStructure<T, N extends string> = CustomStructures extends Record<N, infer P> ? P : T;