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
@@ -0,0 +1,727 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HandleCommand = void 0;
4
+ const types_1 = require("../types");
5
+ const _1 = require(".");
6
+ const structures_1 = require("../structures");
7
+ const components_1 = require("../components");
8
+ const transformers_1 = require("../client/transformers");
9
+ class HandleCommand {
10
+ client;
11
+ constructor(client) {
12
+ this.client = client;
13
+ }
14
+ async autocomplete(interaction, optionsResolver, command) {
15
+ // idc, is a YOU problem
16
+ if (!command?.autocomplete) {
17
+ return this.client.logger.warn(`${optionsResolver.fullCommandName} ${command?.name} command does not have 'autocomplete' callback`);
18
+ }
19
+ try {
20
+ try {
21
+ try {
22
+ await command.autocomplete(interaction);
23
+ }
24
+ catch (error) {
25
+ if (!command.onAutocompleteError)
26
+ return this.client.logger.error(`${optionsResolver.fullCommandName} ${command.name} just threw an error, ${error ? (typeof error === 'object' && 'message' in error ? error.message : error) : 'Unknown'}`);
27
+ await command.onAutocompleteError(interaction, error);
28
+ }
29
+ }
30
+ catch (error) {
31
+ await optionsResolver.getCommand()?.onInternalError?.(this.client, optionsResolver.getCommand(), error);
32
+ }
33
+ }
34
+ catch (error) {
35
+ // pass
36
+ }
37
+ }
38
+ async contextMenuMessage(command, interaction, context) {
39
+ // @ts-expect-error
40
+ return this.contextMenuUser(command, interaction, context);
41
+ }
42
+ async contextMenuUser(command, interaction, context) {
43
+ if (command.botPermissions && interaction.appPermissions) {
44
+ const permissions = this.checkPermissions(interaction.appPermissions, command.botPermissions);
45
+ if (permissions)
46
+ return command.onBotPermissionsFail(context, permissions);
47
+ }
48
+ const resultGlobal = await this.runGlobalMiddlewares(command, context);
49
+ if (typeof resultGlobal === 'boolean')
50
+ return;
51
+ const resultMiddle = await this.runMiddlewares(command, context);
52
+ if (typeof resultMiddle === 'boolean')
53
+ return;
54
+ try {
55
+ try {
56
+ await command.run(context);
57
+ await command.onAfterRun?.(context, undefined);
58
+ }
59
+ catch (error) {
60
+ await command.onRunError(context, error);
61
+ await command.onAfterRun?.(context, error);
62
+ }
63
+ }
64
+ catch (error) {
65
+ try {
66
+ await command.onInternalError(this.client, command, error);
67
+ }
68
+ catch {
69
+ // pass
70
+ }
71
+ }
72
+ }
73
+ async entryPoint(command, interaction, context) {
74
+ if (command.botPermissions && interaction.appPermissions) {
75
+ const permissions = this.checkPermissions(interaction.appPermissions, command.botPermissions);
76
+ if (permissions)
77
+ return command.onBotPermissionsFail?.(context, permissions);
78
+ }
79
+ const resultGlobal = await this.runGlobalMiddlewares(command, context);
80
+ if (typeof resultGlobal === 'boolean')
81
+ return;
82
+ const resultMiddle = await this.runMiddlewares(command, context);
83
+ if (typeof resultMiddle === 'boolean')
84
+ return;
85
+ try {
86
+ try {
87
+ await command.run(context);
88
+ await command.onAfterRun?.(context, undefined);
89
+ }
90
+ catch (error) {
91
+ await command.onRunError(context, error);
92
+ await command.onAfterRun?.(context, error);
93
+ }
94
+ }
95
+ catch (error) {
96
+ try {
97
+ await command.onInternalError(this.client, command, error);
98
+ }
99
+ catch {
100
+ // pass
101
+ }
102
+ }
103
+ }
104
+ async chatInput(command, interaction, resolver, context) {
105
+ if (command.botPermissions && interaction.appPermissions) {
106
+ const permissions = this.checkPermissions(interaction.appPermissions, command.botPermissions);
107
+ if (permissions)
108
+ return command.onBotPermissionsFail?.(context, permissions);
109
+ }
110
+ if (!(await this.runOptions(command, context, resolver)))
111
+ return;
112
+ const resultGlobal = await this.runGlobalMiddlewares(command, context);
113
+ if (typeof resultGlobal === 'boolean')
114
+ return;
115
+ const resultMiddle = await this.runMiddlewares(command, context);
116
+ if (typeof resultMiddle === 'boolean')
117
+ return;
118
+ try {
119
+ try {
120
+ await command.run(context);
121
+ await command.onAfterRun?.(context, undefined);
122
+ }
123
+ catch (error) {
124
+ await command.onRunError?.(context, error);
125
+ await command.onAfterRun?.(context, error);
126
+ }
127
+ }
128
+ catch (error) {
129
+ try {
130
+ await command.onInternalError?.(this.client, command, error);
131
+ }
132
+ catch {
133
+ // pass
134
+ }
135
+ }
136
+ }
137
+ async modal(interaction) {
138
+ const context = new components_1.ModalContext(this.client, interaction);
139
+ const extended = this.client.options?.context?.(interaction) ?? {};
140
+ Object.assign(context, extended);
141
+ await this.client.components?.executeModal(context);
142
+ }
143
+ async messageComponent(interaction) {
144
+ //@ts-expect-error
145
+ const context = new components_1.ComponentContext(this.client, interaction);
146
+ const extended = this.client.options?.context?.(interaction) ?? {};
147
+ Object.assign(context, extended);
148
+ await this.client.components?.executeComponent(context);
149
+ }
150
+ async interaction(body, shardId, __reply) {
151
+ this.client.debugger?.debug(`[${types_1.InteractionType[body.type] ?? body.type}] Interaction received.`);
152
+ switch (body.type) {
153
+ case types_1.InteractionType.ApplicationCommandAutocomplete:
154
+ {
155
+ const optionsResolver = this.makeResolver(this.client, body.data.options ?? [], this.getCommand(body.data), body.guild_id, body.data.resolved);
156
+ const interaction = new structures_1.AutocompleteInteraction(this.client, body, optionsResolver, __reply);
157
+ const command = optionsResolver.getAutocomplete();
158
+ await this.autocomplete(interaction, optionsResolver, command);
159
+ }
160
+ break;
161
+ case types_1.InteractionType.ApplicationCommand: {
162
+ switch (body.data.type) {
163
+ case types_1.ApplicationCommandType.Message: {
164
+ const data = this.makeMenuCommand(body, shardId, __reply);
165
+ if (!data)
166
+ return;
167
+ // @ts-expect-error
168
+ this.contextMenuMessage(data.command, data.interaction, data.context);
169
+ break;
170
+ }
171
+ case types_1.ApplicationCommandType.User: {
172
+ const data = this.makeMenuCommand(body, shardId, __reply);
173
+ if (!data)
174
+ return;
175
+ // @ts-expect-error
176
+ this.contextMenuUser(data.command, data.interaction, data.context);
177
+ break;
178
+ }
179
+ case types_1.ApplicationCommandType.PrimaryEntryPoint: {
180
+ const command = this.client.commands?.entryPoint;
181
+ if (!command?.run)
182
+ return;
183
+ const interaction = structures_1.BaseInteraction.from(this.client, body, __reply);
184
+ const context = new _1.EntryPointContext(this.client, interaction, shardId, command);
185
+ const extendContext = this.client.options?.context?.(interaction) ?? {};
186
+ Object.assign(context, extendContext);
187
+ await this.entryPoint(command, interaction, context);
188
+ break;
189
+ }
190
+ case types_1.ApplicationCommandType.ChatInput: {
191
+ const parentCommand = this.getCommand(body.data);
192
+ const optionsResolver = this.makeResolver(this.client, body.data.options ?? [], parentCommand, body.guild_id, body.data.resolved);
193
+ const interaction = structures_1.BaseInteraction.from(this.client, body, __reply);
194
+ const command = optionsResolver.getCommand();
195
+ if (!command?.run)
196
+ return this.client.logger.warn(`${optionsResolver.fullCommandName} command does not have 'run' callback`);
197
+ const context = new _1.CommandContext(this.client, interaction, optionsResolver, shardId, command);
198
+ const extendContext = this.client.options?.context?.(interaction) ?? {};
199
+ Object.assign(context, extendContext);
200
+ await this.chatInput(command, interaction, optionsResolver, context);
201
+ break;
202
+ }
203
+ }
204
+ break;
205
+ }
206
+ case types_1.InteractionType.ModalSubmit:
207
+ {
208
+ const interaction = structures_1.BaseInteraction.from(this.client, body, __reply);
209
+ if (this.client.components?.hasModal(interaction)) {
210
+ await this.client.components.onModalSubmit(interaction);
211
+ }
212
+ else
213
+ await this.modal(interaction);
214
+ }
215
+ break;
216
+ case types_1.InteractionType.MessageComponent:
217
+ {
218
+ const interaction = structures_1.BaseInteraction.from(this.client, body, __reply);
219
+ if (this.client.components?.hasComponent(body.message.id, interaction.customId)) {
220
+ await this.client.components.onComponent(body.message.id, interaction);
221
+ }
222
+ else
223
+ await this.messageComponent(interaction);
224
+ }
225
+ break;
226
+ }
227
+ }
228
+ async message(rawMessage, shardId) {
229
+ const self = this.client;
230
+ if (!self.options.commands?.prefix)
231
+ return;
232
+ const message = transformers_1.Transformers.Message(this.client, rawMessage);
233
+ const prefixes = (await self.options.commands.prefix(message)).sort((a, b) => b.length - a.length);
234
+ const prefix = prefixes.find(x => rawMessage.content.startsWith(x));
235
+ if (!(prefix !== undefined && rawMessage.content.startsWith(prefix)))
236
+ return;
237
+ const content = rawMessage.content.slice(prefix.length).trimStart();
238
+ const { fullCommandName, command, parent, argsContent } = this.resolveCommandFromContent(content, prefix, rawMessage);
239
+ if (!command || argsContent === undefined)
240
+ return;
241
+ if (!command.run)
242
+ return self.logger.warn(`${fullCommandName} command does not have 'run' callback`);
243
+ if (!(command.contexts.includes(types_1.InteractionContextType.BotDM) || rawMessage.guild_id))
244
+ return;
245
+ if (!command.contexts.includes(types_1.InteractionContextType.Guild) && rawMessage.guild_id)
246
+ return;
247
+ if (command.guildId && !command.guildId?.includes(rawMessage.guild_id))
248
+ return;
249
+ const resolved = {
250
+ channels: {},
251
+ roles: {},
252
+ users: {},
253
+ members: {},
254
+ attachments: {},
255
+ };
256
+ const args = this.argsParser(argsContent, command, message);
257
+ const { options, errors } = await this.argsOptionsParser(command, rawMessage, args, resolved);
258
+ const optionsResolver = this.makeResolver(self, options, parent, rawMessage.guild_id, resolved);
259
+ const context = new _1.CommandContext(self, message, optionsResolver, shardId, command);
260
+ //@ts-expect-error
261
+ const extendContext = self.options?.context?.(message) ?? {};
262
+ Object.assign(context, extendContext);
263
+ try {
264
+ if (errors.length) {
265
+ return command.onOptionsError?.(context, Object.fromEntries(errors.map(x => {
266
+ return [
267
+ x.name,
268
+ {
269
+ failed: true,
270
+ value: x.error,
271
+ parseError: x.fullError,
272
+ },
273
+ ];
274
+ })));
275
+ }
276
+ if (rawMessage.guild_id) {
277
+ if (command.defaultMemberPermissions) {
278
+ const memberPermissions = await self.members.permissions(rawMessage.guild_id, rawMessage.author.id);
279
+ const permissions = this.checkPermissions(memberPermissions, command.defaultMemberPermissions);
280
+ const guild = await this.client.guilds.raw(rawMessage.guild_id);
281
+ if (permissions && guild.owner_id !== rawMessage.author.id) {
282
+ return command.onPermissionsFail?.(context, memberPermissions.keys(permissions));
283
+ }
284
+ }
285
+ if (command.botPermissions) {
286
+ const appPermissions = await self.members.permissions(rawMessage.guild_id, self.botId);
287
+ const permissions = this.checkPermissions(appPermissions, command.botPermissions);
288
+ if (!appPermissions.has('Administrator') && permissions) {
289
+ return command.onBotPermissionsFail?.(context, permissions);
290
+ }
291
+ }
292
+ }
293
+ if (!(await this.runOptions(command, context, optionsResolver)))
294
+ return;
295
+ const resultGlobal = await this.runGlobalMiddlewares(command, context);
296
+ if (typeof resultGlobal === 'boolean')
297
+ return;
298
+ const resultMiddle = await this.runMiddlewares(command, context);
299
+ if (typeof resultMiddle === 'boolean')
300
+ return;
301
+ try {
302
+ await command.run(context);
303
+ await command.onAfterRun?.(context, undefined);
304
+ }
305
+ catch (error) {
306
+ await command.onRunError?.(context, error);
307
+ await command.onAfterRun?.(context, error);
308
+ }
309
+ }
310
+ catch (error) {
311
+ try {
312
+ await command.onInternalError?.(this.client, command, error);
313
+ }
314
+ catch { }
315
+ }
316
+ }
317
+ argsParser(content, _command, _message) {
318
+ const args = {};
319
+ for (const i of content.match(/-(.*?)(?=\s-|$)/gs) ?? []) {
320
+ args[i.slice(1).split(' ')[0]] = i.split(' ').slice(1).join(' ');
321
+ }
322
+ return args;
323
+ }
324
+ resolveCommandFromContent(content, _prefix, _message) {
325
+ const result = this.getCommandFromContent(content
326
+ .split(' ')
327
+ .filter(x => x)
328
+ .slice(0, 3));
329
+ if (!result.command)
330
+ return result;
331
+ let newContent = content;
332
+ for (const i of result.fullCommandName.split(' ')) {
333
+ newContent = newContent.slice(newContent.indexOf(i) + i.length);
334
+ }
335
+ return {
336
+ ...result,
337
+ argsContent: newContent.slice(1),
338
+ };
339
+ }
340
+ getCommandFromContent(commandRaw) {
341
+ const rawParentName = commandRaw[0];
342
+ const rawGroupName = commandRaw.length === 3 ? commandRaw[1] : undefined;
343
+ const rawSubcommandName = rawGroupName ? commandRaw[2] : commandRaw[1];
344
+ const parent = this.getParentMessageCommand(rawParentName);
345
+ const fullCommandName = `${rawParentName}${rawGroupName ? ` ${rawGroupName} ${rawSubcommandName}` : `${rawSubcommandName ? ` ${rawSubcommandName}` : ''}`}`;
346
+ if (!(parent instanceof _1.Command))
347
+ return { fullCommandName };
348
+ if (rawGroupName && !parent.groups?.[rawGroupName] && !parent.groupsAliases?.[rawGroupName])
349
+ return this.getCommandFromContent([rawParentName, rawGroupName]);
350
+ if (rawSubcommandName &&
351
+ !parent.options?.some(x => x instanceof _1.SubCommand && (x.name === rawSubcommandName || x.aliases?.includes(rawSubcommandName))))
352
+ return this.getCommandFromContent([rawParentName]);
353
+ const groupName = rawGroupName ? parent.groupsAliases?.[rawGroupName] || rawGroupName : undefined;
354
+ const command = groupName || rawSubcommandName
355
+ ? parent.options?.find(opt => {
356
+ if (opt instanceof _1.SubCommand) {
357
+ if (groupName) {
358
+ if (opt.group !== groupName)
359
+ return false;
360
+ }
361
+ if (opt.group && !groupName)
362
+ return false;
363
+ return rawSubcommandName === opt.name || opt.aliases?.includes(rawSubcommandName);
364
+ }
365
+ return false;
366
+ })
367
+ : parent;
368
+ return {
369
+ command,
370
+ fullCommandName,
371
+ parent,
372
+ };
373
+ }
374
+ makeResolver(...args) {
375
+ return transformers_1.Transformers.OptionResolver(...args);
376
+ }
377
+ getParentMessageCommand(rawParentName) {
378
+ return this.client.commands.values.find(x => (!('ignore' in x) || x.ignore !== _1.IgnoreCommand.Message) &&
379
+ (x.name === rawParentName || ('aliases' in x ? x.aliases?.includes(rawParentName) : false)));
380
+ }
381
+ getCommand(data) {
382
+ return this.client.commands.values.find(command => {
383
+ if (data.guild_id) {
384
+ return command.guildId?.includes(data.guild_id) && command.name === data.name;
385
+ }
386
+ return command.name === data.name;
387
+ });
388
+ }
389
+ checkPermissions(app, bot) {
390
+ const permissions = app.missings(...app.values([bot]));
391
+ if (!app.has('Administrator') && permissions.length) {
392
+ return app.keys(permissions);
393
+ }
394
+ return;
395
+ }
396
+ async fetchChannel(_option, query) {
397
+ const id = query.match(/[0-9]{17,19}/g)?.[0];
398
+ if (id)
399
+ return this.client.channels.raw(id);
400
+ return null;
401
+ }
402
+ async fetchUser(_option, query) {
403
+ const id = query.match(/[0-9]{17,19}/g)?.[0];
404
+ if (id)
405
+ return this.client.users.raw(id);
406
+ return null;
407
+ }
408
+ async fetchMember(_option, query, guildId) {
409
+ const id = query.match(/[0-9]{17,19}/g)?.[0];
410
+ if (id)
411
+ return this.client.members.raw(guildId, id);
412
+ return null;
413
+ }
414
+ async fetchRole(_option, query, guildId) {
415
+ const id = query.match(/[0-9]{17,19}/g)?.[0];
416
+ if (id && guildId)
417
+ return (await this.client.roles.listRaw(guildId)).find(x => x.id === id);
418
+ return null;
419
+ }
420
+ async runGlobalMiddlewares(command, context) {
421
+ try {
422
+ const resultRunGlobalMiddlewares = await _1.BaseCommand.__runMiddlewares(context, (this.client.options?.globalMiddlewares ?? []), true);
423
+ if (resultRunGlobalMiddlewares.pass) {
424
+ return false;
425
+ }
426
+ if ('error' in resultRunGlobalMiddlewares) {
427
+ await command.onMiddlewaresError?.(context, resultRunGlobalMiddlewares.error ?? 'Unknown error');
428
+ return false;
429
+ }
430
+ return resultRunGlobalMiddlewares;
431
+ }
432
+ catch (e) {
433
+ try {
434
+ await command.onInternalError?.(this.client, command, e);
435
+ }
436
+ catch { }
437
+ }
438
+ return false;
439
+ }
440
+ async runMiddlewares(command, context) {
441
+ try {
442
+ const resultRunMiddlewares = await _1.BaseCommand.__runMiddlewares(context, command.middlewares, false);
443
+ if (resultRunMiddlewares.pass) {
444
+ return false;
445
+ }
446
+ if ('error' in resultRunMiddlewares) {
447
+ await command.onMiddlewaresError?.(context, resultRunMiddlewares.error ?? 'Unknown error');
448
+ return false;
449
+ }
450
+ return resultRunMiddlewares;
451
+ }
452
+ catch (e) {
453
+ try {
454
+ await command.onInternalError?.(this.client, command, e);
455
+ }
456
+ catch { }
457
+ }
458
+ return false;
459
+ }
460
+ makeMenuCommand(body, shardId, __reply) {
461
+ const command = this.getCommand(body.data);
462
+ const interaction = structures_1.BaseInteraction.from(this.client, body, __reply);
463
+ // idc, is a YOU problem
464
+ if (!command?.run)
465
+ return this.client.logger.warn(`${command?.name ?? 'Unknown'} command does not have 'run' callback`);
466
+ const context = new _1.MenuCommandContext(this.client, interaction, shardId, command);
467
+ const extendContext = this.client.options?.context?.(interaction) ?? {};
468
+ Object.assign(context, extendContext);
469
+ return { command, interaction, context };
470
+ }
471
+ async runOptions(command, context, resolver) {
472
+ const [erroredOptions, result] = await command.__runOptions(context, resolver);
473
+ if (erroredOptions) {
474
+ try {
475
+ await command.onOptionsError?.(context, result);
476
+ }
477
+ catch (e) {
478
+ try {
479
+ await command.onInternalError?.(this.client, command, e);
480
+ }
481
+ catch { }
482
+ }
483
+ return false;
484
+ }
485
+ return true;
486
+ }
487
+ async argsOptionsParser(command, message, args, resolved) {
488
+ const options = [];
489
+ const errors = [];
490
+ let indexAttachment = -1;
491
+ for (const i of (command.options ?? [])) {
492
+ try {
493
+ let value;
494
+ switch (i.type) {
495
+ case types_1.ApplicationCommandOptionType.Attachment:
496
+ if (message.attachments[++indexAttachment]) {
497
+ value = message.attachments[indexAttachment].id;
498
+ resolved.attachments[value] = message.attachments[indexAttachment];
499
+ }
500
+ break;
501
+ case types_1.ApplicationCommandOptionType.Boolean:
502
+ if (args[i.name]) {
503
+ value = ['yes', 'y', 'true', 'treu'].includes(args[i.name].toLowerCase());
504
+ }
505
+ break;
506
+ case types_1.ApplicationCommandOptionType.Channel:
507
+ {
508
+ const rawQuery = message.content.match(/(?<=<#)[0-9]{17,19}(?=>)/g)?.find(x => args[i.name]?.includes(x)) ||
509
+ args[i.name];
510
+ if (!rawQuery)
511
+ continue;
512
+ const channel = (await this.client.cache.channels?.raw(rawQuery)) ?? (await this.fetchChannel(i, rawQuery));
513
+ if (channel) {
514
+ if ('channel_types' in i) {
515
+ if (!i.channel_types.includes(channel.type)) {
516
+ errors.push({
517
+ name: i.name,
518
+ error: `The entered channel type is not one of ${i
519
+ .channel_types.map(t => types_1.ChannelType[t])
520
+ .join(', ')}`,
521
+ fullError: ['CHANNEL_TYPES', i.channel_types],
522
+ });
523
+ break;
524
+ }
525
+ }
526
+ value = channel.id;
527
+ //discord funny memoentnt!!!!!!!!
528
+ resolved.channels[channel.id] = channel;
529
+ }
530
+ }
531
+ break;
532
+ case types_1.ApplicationCommandOptionType.Mentionable:
533
+ {
534
+ const matches = args[i.name]?.match(/<@[0-9]{17,19}(?=>)|<@&[0-9]{17,19}(?=>)/g) ?? [];
535
+ for (const match of matches) {
536
+ if (match.includes('&')) {
537
+ const rawId = match.slice(3);
538
+ if (rawId) {
539
+ const role = (await this.client.cache.roles?.raw(rawId)) ?? (await this.fetchRole(i, rawId, message.guild_id));
540
+ if (role) {
541
+ value = rawId;
542
+ resolved.roles[rawId] = role;
543
+ break;
544
+ }
545
+ }
546
+ }
547
+ else {
548
+ const rawId = match.slice(2);
549
+ const raw = message.mentions.find(x => rawId === x.id);
550
+ if (raw) {
551
+ const { member, ...user } = raw;
552
+ value = raw.id;
553
+ resolved.users[raw.id] = user;
554
+ if (member)
555
+ resolved.members[raw.id] = member;
556
+ break;
557
+ }
558
+ }
559
+ }
560
+ }
561
+ break;
562
+ case types_1.ApplicationCommandOptionType.Role:
563
+ {
564
+ const rawQuery = message.mention_roles.find(x => args[i.name]?.includes(x)) || args[i.name];
565
+ if (!rawQuery)
566
+ continue;
567
+ const role = (await this.client.cache.roles?.raw(rawQuery)) ?? (await this.fetchRole(i, rawQuery, message.guild_id));
568
+ if (role) {
569
+ value = role.id;
570
+ resolved.roles[role.id] = role;
571
+ }
572
+ }
573
+ break;
574
+ case types_1.ApplicationCommandOptionType.User:
575
+ {
576
+ const rawQuery = message.mentions.find(x => args[i.name]?.includes(x.id))?.id || args[i.name];
577
+ if (!rawQuery)
578
+ continue;
579
+ const raw = message.mentions.find(x => args[i.name]?.includes(x.id)) ??
580
+ (await this.client.cache.users?.raw(rawQuery)) ??
581
+ (await this.fetchUser(i, rawQuery));
582
+ if (raw) {
583
+ value = raw.id;
584
+ resolved.users[raw.id] = raw;
585
+ if (message.guild_id) {
586
+ const member = message.mentions.find(x => args[i.name]?.includes(x.id))?.member ??
587
+ (await this.client.cache.members?.raw(value, message.guild_id)) ??
588
+ (await this.fetchMember(i, value, message.guild_id));
589
+ if (member)
590
+ resolved.members[value] = member;
591
+ }
592
+ }
593
+ }
594
+ break;
595
+ case types_1.ApplicationCommandOptionType.String:
596
+ {
597
+ value = args[i.name];
598
+ const option = i;
599
+ if (!value)
600
+ break;
601
+ if (option.min_length) {
602
+ if (value.length < option.min_length) {
603
+ value = undefined;
604
+ errors.push({
605
+ name: i.name,
606
+ error: `The entered string has less than ${option.min_length} characters. The minimum required is ${option.min_length} characters.`,
607
+ fullError: ['STRING_MIN_LENGTH', option.min_length],
608
+ });
609
+ break;
610
+ }
611
+ }
612
+ if (option.max_length) {
613
+ if (value.length > option.max_length) {
614
+ value = undefined;
615
+ errors.push({
616
+ name: i.name,
617
+ error: `The entered string has more than ${option.max_length} characters. The maximum required is ${option.max_length} characters.`,
618
+ fullError: ['STRING_MAX_LENGTH', option.max_length],
619
+ });
620
+ break;
621
+ }
622
+ }
623
+ if (option.choices?.length) {
624
+ const choice = option.choices.find(x => x.name === value);
625
+ if (!choice) {
626
+ value = undefined;
627
+ errors.push({
628
+ name: i.name,
629
+ error: `The entered choice is invalid. Please choose one of the following options: ${option.choices
630
+ .map(x => x.name)
631
+ .join(', ')}.`,
632
+ fullError: ['STRING_INVALID_CHOICE', option.choices],
633
+ });
634
+ break;
635
+ }
636
+ value = choice.value;
637
+ }
638
+ }
639
+ break;
640
+ case types_1.ApplicationCommandOptionType.Number:
641
+ case types_1.ApplicationCommandOptionType.Integer:
642
+ {
643
+ const option = i;
644
+ if (!option.choices?.length) {
645
+ value = Number(args[i.name]);
646
+ if (args[i.name] === undefined) {
647
+ value = undefined;
648
+ break;
649
+ }
650
+ if (Number.isNaN(value)) {
651
+ value = undefined;
652
+ errors.push({
653
+ name: i.name,
654
+ error: 'The entered choice is an invalid number.',
655
+ fullError: ['NUMBER_NAN', args[i.name]],
656
+ });
657
+ break;
658
+ }
659
+ if (option.min_value) {
660
+ if (value < option.min_value) {
661
+ value = undefined;
662
+ errors.push({
663
+ name: i.name,
664
+ error: `The entered number is less than ${option.min_value}. The minimum allowed is ${option.min_value}`,
665
+ fullError: ['NUMBER_MIN_VALUE', option.min_value],
666
+ });
667
+ break;
668
+ }
669
+ }
670
+ if (option.max_value) {
671
+ if (value > option.max_value) {
672
+ value = undefined;
673
+ errors.push({
674
+ name: i.name,
675
+ error: `The entered number is greater than ${option.max_value}. The maximum allowed is ${option.max_value}`,
676
+ fullError: ['NUMBER_MAX_VALUE', option.max_value],
677
+ });
678
+ break;
679
+ }
680
+ }
681
+ break;
682
+ }
683
+ const choice = option.choices.find(x => x.name === args[i.name]);
684
+ if (!choice) {
685
+ value = undefined;
686
+ errors.push({
687
+ name: i.name,
688
+ error: `The entered choice is invalid. Please choose one of the following options: ${option.choices
689
+ .map(x => x.name)
690
+ .join(', ')}.`,
691
+ fullError: ['NUMBER_INVALID_CHOICE', option.choices],
692
+ });
693
+ break;
694
+ }
695
+ value = choice.value;
696
+ }
697
+ break;
698
+ default:
699
+ break;
700
+ }
701
+ if (value !== undefined) {
702
+ options.push({
703
+ name: i.name,
704
+ type: i.type,
705
+ value,
706
+ });
707
+ }
708
+ else if (i.required)
709
+ if (!errors.some(x => x.name === i.name))
710
+ errors.push({
711
+ error: 'Option is required but returned undefined',
712
+ name: i.name,
713
+ fullError: ['OPTION_REQUIRED'],
714
+ });
715
+ }
716
+ catch (e) {
717
+ errors.push({
718
+ error: e && typeof e === 'object' && 'message' in e ? e.message : `${e}`,
719
+ name: i.name,
720
+ fullError: ['UNKNOWN', e],
721
+ });
722
+ }
723
+ }
724
+ return { errors, options };
725
+ }
726
+ }
727
+ exports.HandleCommand = HandleCommand;