seyfert 1.5.0 → 2.0.0

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