@deffa5556/bail 1.0.6 → 1.0.7

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 (314) hide show
  1. package/cjs/WAProto/index.cjs +106053 -0
  2. package/cjs/deffa/config.cjs +14 -0
  3. package/cjs/deffa/plugins/ai/deepseekr1.cjs +35 -0
  4. package/cjs/deffa/plugins/ai/gita.cjs +26 -0
  5. package/cjs/deffa/plugins/ai/glm47flash.cjs +35 -0
  6. package/cjs/deffa/plugins/ai/gptoss120b.cjs +35 -0
  7. package/cjs/deffa/plugins/ai/qwq32b.cjs +35 -0
  8. package/cjs/deffa/plugins/berita/antara.cjs +25 -0
  9. package/cjs/deffa/plugins/berita/cnbcindonesia.cjs +25 -0
  10. package/cjs/deffa/plugins/berita/cnn.cjs +25 -0
  11. package/cjs/deffa/plugins/berita/kompas.cjs +25 -0
  12. package/cjs/deffa/plugins/berita/liputan6.cjs +25 -0
  13. package/cjs/deffa/plugins/berita/merdeka.cjs +25 -0
  14. package/cjs/deffa/plugins/berita/sindonews.cjs +25 -0
  15. package/cjs/deffa/plugins/berita/tribunnews.cjs +25 -0
  16. package/cjs/deffa/plugins/downloader/douyin.cjs +30 -0
  17. package/cjs/deffa/plugins/downloader/facebook.cjs +30 -0
  18. package/cjs/deffa/plugins/downloader/github.cjs +35 -0
  19. package/cjs/deffa/plugins/downloader/lahelu.cjs +30 -0
  20. package/cjs/deffa/plugins/downloader/snackvideo.cjs +30 -0
  21. package/cjs/deffa/plugins/downloader/soundcloud.cjs +30 -0
  22. package/cjs/deffa/plugins/downloader/tiktok.cjs +30 -0
  23. package/cjs/deffa/plugins/downloader/tiktokhd.cjs +30 -0
  24. package/cjs/deffa/plugins/downloader/twitter.cjs +30 -0
  25. package/cjs/deffa/plugins/downloader/ummy.cjs +36 -0
  26. package/cjs/deffa/plugins/index.cjs +213 -0
  27. package/cjs/deffa/plugins/info/bmkg.cjs +34 -0
  28. package/cjs/deffa/plugins/info/cuaca.cjs +31 -0
  29. package/cjs/deffa/plugins/info/jadwaltv.cjs +29 -0
  30. package/cjs/deffa/plugins/maker/brat.cjs +45 -0
  31. package/cjs/deffa/plugins/maker/bratvid.cjs +52 -0
  32. package/cjs/deffa/plugins/search/8font.cjs +28 -0
  33. package/cjs/deffa/plugins/search/applemusic.cjs +28 -0
  34. package/cjs/deffa/plugins/search/bimg.cjs +30 -0
  35. package/cjs/deffa/plugins/search/brave.cjs +34 -0
  36. package/cjs/deffa/plugins/search/duckduckgo.cjs +28 -0
  37. package/cjs/deffa/plugins/search/lahelu.cjs +28 -0
  38. package/cjs/deffa/plugins/search/mangatoon.cjs +28 -0
  39. package/cjs/deffa/plugins/search/mcpedl.cjs +28 -0
  40. package/cjs/deffa/plugins/search/myinstants.cjs +28 -0
  41. package/cjs/deffa/plugins/search/otakotaku.cjs +28 -0
  42. package/cjs/deffa/plugins/search/pinterest.cjs +30 -0
  43. package/cjs/deffa/plugins/search/resep.cjs +28 -0
  44. package/cjs/deffa/plugins/search/seegore.cjs +30 -0
  45. package/cjs/deffa/plugins/search/soundcloud.cjs +28 -0
  46. package/cjs/deffa/plugins/search/youtube.cjs +28 -0
  47. package/cjs/deffa/plugins/stalk/github.cjs +38 -0
  48. package/cjs/deffa/plugins/stalk/pinterest.cjs +37 -0
  49. package/cjs/deffa/plugins/stalk/threads.cjs +34 -0
  50. package/cjs/deffa/plugins/stalk/tiktok.cjs +37 -0
  51. package/cjs/deffa/plugins/stalk/twitter.cjs +37 -0
  52. package/cjs/deffa/plugins/stalk/youtube.cjs +37 -0
  53. package/cjs/lib/Defaults/index.cjs +158 -0
  54. package/cjs/lib/Discord/Client.cjs +263 -0
  55. package/cjs/lib/Discord/Constants.cjs +1842 -0
  56. package/cjs/lib/Discord/connect-dc.cjs +11 -0
  57. package/cjs/lib/Discord/esm-bridge.cjs +136 -0
  58. package/cjs/lib/Discord/gateway/Dispatcher.cjs +93 -0
  59. package/cjs/lib/Discord/gateway/Shard.cjs +695 -0
  60. package/cjs/lib/Discord/gateway/ShardManager.cjs +344 -0
  61. package/cjs/lib/Discord/gateway/compression/base.cjs +13 -0
  62. package/cjs/lib/Discord/gateway/compression/config.cjs +47 -0
  63. package/cjs/lib/Discord/gateway/compression/pako.cjs +44 -0
  64. package/cjs/lib/Discord/gateway/compression/zlib-native.cjs +47 -0
  65. package/cjs/lib/Discord/gateway/compression/zlib-sync.cjs +31 -0
  66. package/cjs/lib/Discord/gateway/compression/zstd-napi.cjs +80 -0
  67. package/cjs/lib/Discord/gateway/compression/zstd-native.cjs +46 -0
  68. package/cjs/lib/Discord/gateway/events.cjs +956 -0
  69. package/cjs/lib/Discord/index.cjs +238 -0
  70. package/cjs/lib/Discord/rest/Bucket.cjs +69 -0
  71. package/cjs/lib/Discord/rest/DiscordHTTPError.cjs +63 -0
  72. package/cjs/lib/Discord/rest/DiscordRESTError.cjs +84 -0
  73. package/cjs/lib/Discord/rest/OAuthHelper.cjs +226 -0
  74. package/cjs/lib/Discord/rest/RESTManager.cjs +116 -0
  75. package/cjs/lib/Discord/rest/RequestHandler.cjs +320 -0
  76. package/cjs/lib/Discord/rest/SequentialBucket.cjs +69 -0
  77. package/cjs/lib/Discord/routes/Applications.cjs +625 -0
  78. package/cjs/lib/Discord/routes/Channels.cjs +1199 -0
  79. package/cjs/lib/Discord/routes/Guilds.cjs +1792 -0
  80. package/cjs/lib/Discord/routes/Interactions.cjs +212 -0
  81. package/cjs/lib/Discord/routes/Lobbies.cjs +197 -0
  82. package/cjs/lib/Discord/routes/Miscellaneous.cjs +120 -0
  83. package/cjs/lib/Discord/routes/OAuth.cjs +350 -0
  84. package/cjs/lib/Discord/routes/Users.cjs +107 -0
  85. package/cjs/lib/Discord/routes/Webhooks.cjs +308 -0
  86. package/cjs/lib/Discord/structures/AnnouncementChannel.cjs +46 -0
  87. package/cjs/lib/Discord/structures/AnnouncementThreadChannel.cjs +28 -0
  88. package/cjs/lib/Discord/structures/Application.cjs +345 -0
  89. package/cjs/lib/Discord/structures/ApplicationCommand.cjs +109 -0
  90. package/cjs/lib/Discord/structures/Attachment.cjs +46 -0
  91. package/cjs/lib/Discord/structures/AuditLogEntry.cjs +41 -0
  92. package/cjs/lib/Discord/structures/AutoModerationRule.cjs +117 -0
  93. package/cjs/lib/Discord/structures/AutocompleteInteraction.cjs +90 -0
  94. package/cjs/lib/Discord/structures/Base.cjs +56 -0
  95. package/cjs/lib/Discord/structures/BaseEntitlement.cjs +40 -0
  96. package/cjs/lib/Discord/structures/CategoryChannel.cjs +102 -0
  97. package/cjs/lib/Discord/structures/Channel.cjs +89 -0
  98. package/cjs/lib/Discord/structures/ClientApplication.cjs +269 -0
  99. package/cjs/lib/Discord/structures/CommandInteraction.cjs +294 -0
  100. package/cjs/lib/Discord/structures/ComponentInteraction.cjs +306 -0
  101. package/cjs/lib/Discord/structures/Entitlement.cjs +24 -0
  102. package/cjs/lib/Discord/structures/ExtendedUser.cjs +48 -0
  103. package/cjs/lib/Discord/structures/ForumChannel.cjs +20 -0
  104. package/cjs/lib/Discord/structures/GroupChannel.cjs +160 -0
  105. package/cjs/lib/Discord/structures/Guild.cjs +1289 -0
  106. package/cjs/lib/Discord/structures/GuildChannel.cjs +82 -0
  107. package/cjs/lib/Discord/structures/GuildPreview.cjs +141 -0
  108. package/cjs/lib/Discord/structures/GuildScheduledEvent.cjs +166 -0
  109. package/cjs/lib/Discord/structures/GuildTemplate.cjs +96 -0
  110. package/cjs/lib/Discord/structures/Integration.cjs +123 -0
  111. package/cjs/lib/Discord/structures/Interaction.cjs +78 -0
  112. package/cjs/lib/Discord/structures/InteractionResolvedChannel.cjs +36 -0
  113. package/cjs/lib/Discord/structures/Invite.cjs +196 -0
  114. package/cjs/lib/Discord/structures/InviteGuild.cjs +117 -0
  115. package/cjs/lib/Discord/structures/InviteRole.cjs +88 -0
  116. package/cjs/lib/Discord/structures/Lobby.cjs +84 -0
  117. package/cjs/lib/Discord/structures/LobbyMember.cjs +30 -0
  118. package/cjs/lib/Discord/structures/MediaChannel.cjs +20 -0
  119. package/cjs/lib/Discord/structures/Member.cjs +300 -0
  120. package/cjs/lib/Discord/structures/Message.cjs +553 -0
  121. package/cjs/lib/Discord/structures/ModalSubmitInteraction.cjs +263 -0
  122. package/cjs/lib/Discord/structures/OAuthApplication.cjs +203 -0
  123. package/cjs/lib/Discord/structures/OAuthGuild.cjs +98 -0
  124. package/cjs/lib/Discord/structures/PartialApplication.cjs +97 -0
  125. package/cjs/lib/Discord/structures/Permission.cjs +61 -0
  126. package/cjs/lib/Discord/structures/PermissionOverwrite.cjs +46 -0
  127. package/cjs/lib/Discord/structures/PingInteraction.cjs +27 -0
  128. package/cjs/lib/Discord/structures/Poll.cjs +69 -0
  129. package/cjs/lib/Discord/structures/PrimaryGuild.cjs +93 -0
  130. package/cjs/lib/Discord/structures/PrivateChannel.cjs +131 -0
  131. package/cjs/lib/Discord/structures/PrivateThreadChannel.cjs +28 -0
  132. package/cjs/lib/Discord/structures/PublicThreadChannel.cjs +36 -0
  133. package/cjs/lib/Discord/structures/Role.cjs +126 -0
  134. package/cjs/lib/Discord/structures/SKU.cjs +58 -0
  135. package/cjs/lib/Discord/structures/Soundboard.cjs +58 -0
  136. package/cjs/lib/Discord/structures/StageChannel.cjs +45 -0
  137. package/cjs/lib/Discord/structures/StageInstance.cjs +80 -0
  138. package/cjs/lib/Discord/structures/Subscription.cjs +21 -0
  139. package/cjs/lib/Discord/structures/Team.cjs +70 -0
  140. package/cjs/lib/Discord/structures/TestEntitlement.cjs +22 -0
  141. package/cjs/lib/Discord/structures/TextChannel.cjs +48 -0
  142. package/cjs/lib/Discord/structures/TextableChannel.cjs +265 -0
  143. package/cjs/lib/Discord/structures/TextableVoiceChannel.cjs +70 -0
  144. package/cjs/lib/Discord/structures/ThreadChannel.cjs +276 -0
  145. package/cjs/lib/Discord/structures/ThreadOnlyChannel.cjs +205 -0
  146. package/cjs/lib/Discord/structures/ThreadableChannel.cjs +57 -0
  147. package/cjs/lib/Discord/structures/UnavailableGuild.cjs +21 -0
  148. package/cjs/lib/Discord/structures/User.cjs +223 -0
  149. package/cjs/lib/Discord/structures/VoiceChannel.cjs +34 -0
  150. package/cjs/lib/Discord/structures/VoiceState.cjs +113 -0
  151. package/cjs/lib/Discord/structures/Webhook.cjs +224 -0
  152. package/cjs/lib/Discord/util/Collection.cjs +77 -0
  153. package/cjs/lib/Discord/util/Errors.cjs +81 -0
  154. package/cjs/lib/Discord/util/QueryBuilder.cjs +20 -0
  155. package/cjs/lib/Discord/util/Routes.cjs +293 -0
  156. package/cjs/lib/Discord/util/SimpleCollection.cjs +78 -0
  157. package/cjs/lib/Discord/util/Time.cjs +92 -0
  158. package/cjs/lib/Discord/util/TypedCollection.cjs +78 -0
  159. package/cjs/lib/Discord/util/TypedEmitter.cjs +20 -0
  160. package/cjs/lib/Discord/util/Util.cjs +906 -0
  161. package/cjs/lib/Discord/util/interactions/InteractionOptionsWrapper.cjs +207 -0
  162. package/cjs/lib/Discord/util/interactions/MessageInteractionResponse.cjs +26 -0
  163. package/cjs/lib/Discord/util/interactions/ModalSubmitInteractionComponentsWrapper.cjs +98 -0
  164. package/cjs/lib/Discord/util/interactions/SelectMenuValuesWrapper.cjs +77 -0
  165. package/cjs/lib/Discord/util/interactions/shared.cjs +20 -0
  166. package/cjs/lib/Discord/util/warning.cjs +34 -0
  167. package/cjs/lib/Signal/Group/ciphertext-message.cjs +16 -0
  168. package/cjs/lib/Signal/Group/group-session-builder.cjs +67 -0
  169. package/cjs/lib/Signal/Group/group_cipher.cjs +86 -0
  170. package/cjs/lib/Signal/Group/index.cjs +58 -0
  171. package/cjs/lib/Signal/Group/keyhelper.cjs +56 -0
  172. package/cjs/lib/Signal/Group/sender-chain-key.cjs +30 -0
  173. package/cjs/lib/Signal/Group/sender-key-distribution-message.cjs +67 -0
  174. package/cjs/lib/Signal/Group/sender-key-message.cjs +70 -0
  175. package/cjs/lib/Signal/Group/sender-key-name.cjs +52 -0
  176. package/cjs/lib/Signal/Group/sender-key-record.cjs +45 -0
  177. package/cjs/lib/Signal/Group/sender-key-state.cjs +88 -0
  178. package/cjs/lib/Signal/Group/sender-message-key.cjs +30 -0
  179. package/cjs/lib/Signal/libsignal.cjs +467 -0
  180. package/cjs/lib/Signal/lid-mapping.cjs +281 -0
  181. package/cjs/lib/Socket/Client/index.cjs +19 -0
  182. package/cjs/lib/Socket/Client/types.cjs +15 -0
  183. package/cjs/lib/Socket/Client/websocket.cjs +61 -0
  184. package/cjs/lib/Socket/business.cjs +384 -0
  185. package/cjs/lib/Socket/chats.cjs +1221 -0
  186. package/cjs/lib/Socket/communities.cjs +440 -0
  187. package/cjs/lib/Socket/groups.cjs +353 -0
  188. package/cjs/lib/Socket/index.cjs +14 -0
  189. package/cjs/lib/Socket/messages-recv.cjs +1772 -0
  190. package/cjs/lib/Socket/messages-send.cjs +1376 -0
  191. package/cjs/lib/Socket/mex.cjs +46 -0
  192. package/cjs/lib/Socket/newsletter.cjs +230 -0
  193. package/cjs/lib/Socket/socket.cjs +976 -0
  194. package/cjs/lib/Store/index.cjs +20 -0
  195. package/cjs/lib/Store/make-in-memory-store.cjs +470 -0
  196. package/cjs/lib/Store/make-ordered-dictionary.cjs +82 -0
  197. package/cjs/lib/Store/object-repository.cjs +28 -0
  198. package/cjs/lib/Telegram/button.cjs +147 -0
  199. package/cjs/lib/Telegram/composer.cjs +582 -0
  200. package/cjs/lib/Telegram/context.cjs +853 -0
  201. package/cjs/lib/Telegram/core/helpers/args.cjs +57 -0
  202. package/cjs/lib/Telegram/core/helpers/check.cjs +55 -0
  203. package/cjs/lib/Telegram/core/helpers/compact.cjs +16 -0
  204. package/cjs/lib/Telegram/core/helpers/deunionize.cjs +12 -0
  205. package/cjs/lib/Telegram/core/helpers/formatting.cjs +91 -0
  206. package/cjs/lib/Telegram/core/helpers/util.cjs +50 -0
  207. package/cjs/lib/Telegram/core/network/client.cjs +338 -0
  208. package/cjs/lib/Telegram/core/network/error.cjs +21 -0
  209. package/cjs/lib/Telegram/core/network/multipart-stream.cjs +79 -0
  210. package/cjs/lib/Telegram/core/network/polling.cjs +87 -0
  211. package/cjs/lib/Telegram/core/network/webhook.cjs +54 -0
  212. package/cjs/lib/Telegram/core/types/typegram.cjs +31 -0
  213. package/cjs/lib/Telegram/deffa-telegraf.cjs +264 -0
  214. package/cjs/lib/Telegram/esm-bridge.cjs +20 -0
  215. package/cjs/lib/Telegram/filters.cjs +69 -0
  216. package/cjs/lib/Telegram/format.cjs +58 -0
  217. package/cjs/lib/Telegram/future.cjs +140 -0
  218. package/cjs/lib/Telegram/index.cjs +67 -0
  219. package/cjs/lib/Telegram/input.cjs +61 -0
  220. package/cjs/lib/Telegram/markup.cjs +129 -0
  221. package/cjs/lib/Telegram/middleware.cjs +2 -0
  222. package/cjs/lib/Telegram/reactions.cjs +84 -0
  223. package/cjs/lib/Telegram/router.cjs +46 -0
  224. package/cjs/lib/Telegram/scenes/base.cjs +39 -0
  225. package/cjs/lib/Telegram/scenes/context.cjs +104 -0
  226. package/cjs/lib/Telegram/scenes/index.cjs +21 -0
  227. package/cjs/lib/Telegram/scenes/stage.cjs +49 -0
  228. package/cjs/lib/Telegram/scenes/wizard/context.cjs +31 -0
  229. package/cjs/lib/Telegram/scenes/wizard/index.cjs +45 -0
  230. package/cjs/lib/Telegram/scenes.cjs +21 -0
  231. package/cjs/lib/Telegram/session.cjs +166 -0
  232. package/cjs/lib/Telegram/telegram-types.cjs +6 -0
  233. package/cjs/lib/Telegram/telegram.cjs +945 -0
  234. package/cjs/lib/Telegram/types.cjs +2 -0
  235. package/cjs/lib/Telegram/utils.cjs +5 -0
  236. package/cjs/lib/Types/Auth.cjs +3 -0
  237. package/cjs/lib/Types/Bussines.cjs +3 -0
  238. package/cjs/lib/Types/Call.cjs +3 -0
  239. package/cjs/lib/Types/Chat.cjs +11 -0
  240. package/cjs/lib/Types/Contact.cjs +3 -0
  241. package/cjs/lib/Types/Events.cjs +4 -0
  242. package/cjs/lib/Types/GroupMetadata.cjs +3 -0
  243. package/cjs/lib/Types/Label.cjs +26 -0
  244. package/cjs/lib/Types/LabelAssociation.cjs +8 -0
  245. package/cjs/lib/Types/Message.cjs +19 -0
  246. package/cjs/lib/Types/Mex.cjs +40 -0
  247. package/cjs/lib/Types/Product.cjs +3 -0
  248. package/cjs/lib/Types/RichType.cjs +24 -0
  249. package/cjs/lib/Types/Signal.cjs +4 -0
  250. package/cjs/lib/Types/Socket.cjs +4 -0
  251. package/cjs/lib/Types/State.cjs +54 -0
  252. package/cjs/lib/Types/USync.cjs +4 -0
  253. package/cjs/lib/Types/index.cjs +42 -0
  254. package/cjs/lib/Utils/auth-utils.cjs +312 -0
  255. package/cjs/lib/Utils/browser-utils.cjs +39 -0
  256. package/cjs/lib/Utils/business.cjs +241 -0
  257. package/cjs/lib/Utils/chat-utils.cjs +890 -0
  258. package/cjs/lib/Utils/companion-reg-client-utils.cjs +51 -0
  259. package/cjs/lib/Utils/crypto.cjs +170 -0
  260. package/cjs/lib/Utils/decode-wa-message.cjs +330 -0
  261. package/cjs/lib/Utils/event-buffer.cjs +629 -0
  262. package/cjs/lib/Utils/generics.cjs +427 -0
  263. package/cjs/lib/Utils/history.cjs +141 -0
  264. package/cjs/lib/Utils/identity-change-handler.cjs +56 -0
  265. package/cjs/lib/Utils/index.cjs +43 -0
  266. package/cjs/lib/Utils/link-preview.cjs +122 -0
  267. package/cjs/lib/Utils/logger.cjs +8 -0
  268. package/cjs/lib/Utils/lt-hash.cjs +11 -0
  269. package/cjs/lib/Utils/make-mutex.cjs +38 -0
  270. package/cjs/lib/Utils/message-retry-manager.cjs +267 -0
  271. package/cjs/lib/Utils/messages-media.cjs +906 -0
  272. package/cjs/lib/Utils/messages.cjs +1909 -0
  273. package/cjs/lib/Utils/noise-handler.cjs +205 -0
  274. package/cjs/lib/Utils/offline-node-processor.cjs +43 -0
  275. package/cjs/lib/Utils/pre-key-manager.cjs +113 -0
  276. package/cjs/lib/Utils/process-message.cjs +755 -0
  277. package/cjs/lib/Utils/reporting-utils.cjs +263 -0
  278. package/cjs/lib/Utils/rich-message-utils.cjs +434 -0
  279. package/cjs/lib/Utils/session-guard.cjs +163 -0
  280. package/cjs/lib/Utils/signal.cjs +214 -0
  281. package/cjs/lib/Utils/stanza-ack.cjs +41 -0
  282. package/cjs/lib/Utils/sync-action-utils.cjs +54 -0
  283. package/cjs/lib/Utils/tc-token-utils.cjs +174 -0
  284. package/cjs/lib/Utils/text-sticker.cjs +174 -0
  285. package/cjs/lib/Utils/use-multi-file-auth-state.cjs +125 -0
  286. package/cjs/lib/Utils/use-single-file-auth-state.cjs +113 -0
  287. package/cjs/lib/Utils/use-sqlite-auth-state.cjs +145 -0
  288. package/cjs/lib/Utils/validate-connection.cjs +210 -0
  289. package/cjs/lib/WABinary/constants.cjs +1470 -0
  290. package/cjs/lib/WABinary/decode.cjs +301 -0
  291. package/cjs/lib/WABinary/encode.cjs +257 -0
  292. package/cjs/lib/WABinary/generic-utils.cjs +240 -0
  293. package/cjs/lib/WABinary/index.cjs +22 -0
  294. package/cjs/lib/WABinary/jid-utils.cjs +114 -0
  295. package/cjs/lib/WABinary/types.cjs +37 -0
  296. package/cjs/lib/WAM/BinaryInfo.cjs +14 -0
  297. package/cjs/lib/WAM/constants.cjs +22856 -0
  298. package/cjs/lib/WAM/encode.cjs +154 -0
  299. package/cjs/lib/WAM/index.cjs +20 -0
  300. package/cjs/lib/WAUSync/Protocols/USyncContactProtocol.cjs +56 -0
  301. package/cjs/lib/WAUSync/Protocols/USyncDeviceProtocol.cjs +58 -0
  302. package/cjs/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.cjs +31 -0
  303. package/cjs/lib/WAUSync/Protocols/USyncStatusProtocol.cjs +42 -0
  304. package/cjs/lib/WAUSync/Protocols/USyncUsernameProtocol.cjs +29 -0
  305. package/cjs/lib/WAUSync/Protocols/UsyncBotProfileProtocol.cjs +55 -0
  306. package/cjs/lib/WAUSync/Protocols/UsyncLIDProtocol.cjs +33 -0
  307. package/cjs/lib/WAUSync/Protocols/index.cjs +22 -0
  308. package/cjs/lib/WAUSync/USyncQuery.cjs +102 -0
  309. package/cjs/lib/WAUSync/USyncUser.cjs +35 -0
  310. package/cjs/lib/WAUSync/index.cjs +20 -0
  311. package/cjs/lib/index.cjs +372 -0
  312. package/cjs/lib/plugins/loader.cjs +117 -0
  313. package/lib/Defaults/index.js +1 -1
  314. package/package.json +11 -6
@@ -0,0 +1,956 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.APPLICATION_COMMAND_PERMISSIONS_UPDATE = APPLICATION_COMMAND_PERMISSIONS_UPDATE;
7
+ exports.AUTO_MODERATION_ACTION_EXECUTION = AUTO_MODERATION_ACTION_EXECUTION;
8
+ exports.AUTO_MODERATION_RULE_CREATE = AUTO_MODERATION_RULE_CREATE;
9
+ exports.AUTO_MODERATION_RULE_DELETE = AUTO_MODERATION_RULE_DELETE;
10
+ exports.AUTO_MODERATION_RULE_UPDATE = AUTO_MODERATION_RULE_UPDATE;
11
+ exports.CHANNEL_CREATE = CHANNEL_CREATE;
12
+ exports.CHANNEL_DELETE = CHANNEL_DELETE;
13
+ exports.CHANNEL_PINS_UPDATE = CHANNEL_PINS_UPDATE;
14
+ exports.CHANNEL_UPDATE = CHANNEL_UPDATE;
15
+ exports.ENTITLEMENT_CREATE = ENTITLEMENT_CREATE;
16
+ exports.ENTITLEMENT_DELETE = ENTITLEMENT_DELETE;
17
+ exports.ENTITLEMENT_UPDATE = ENTITLEMENT_UPDATE;
18
+ exports.GUILD_AUDIT_LOG_ENTRY_CREATE = GUILD_AUDIT_LOG_ENTRY_CREATE;
19
+ exports.GUILD_BAN_ADD = GUILD_BAN_ADD;
20
+ exports.GUILD_BAN_REMOVE = GUILD_BAN_REMOVE;
21
+ exports.GUILD_CREATE = GUILD_CREATE;
22
+ exports.GUILD_DELETE = GUILD_DELETE;
23
+ exports.GUILD_EMOJIS_UPDATE = GUILD_EMOJIS_UPDATE;
24
+ exports.GUILD_INTEGRATIONS_UPDATE = GUILD_INTEGRATIONS_UPDATE;
25
+ exports.GUILD_MEMBER_ADD = GUILD_MEMBER_ADD;
26
+ exports.GUILD_MEMBERS_CHUNK = GUILD_MEMBERS_CHUNK;
27
+ exports.GUILD_MEMBER_REMOVE = GUILD_MEMBER_REMOVE;
28
+ exports.GUILD_MEMBER_UPDATE = GUILD_MEMBER_UPDATE;
29
+ exports.GUILD_ROLE_CREATE = GUILD_ROLE_CREATE;
30
+ exports.GUILD_ROLE_DELETE = GUILD_ROLE_DELETE;
31
+ exports.GUILD_ROLE_UPDATE = GUILD_ROLE_UPDATE;
32
+ exports.GUILD_SCHEDULED_EVENT_CREATE = GUILD_SCHEDULED_EVENT_CREATE;
33
+ exports.GUILD_SCHEDULED_EVENT_DELETE = GUILD_SCHEDULED_EVENT_DELETE;
34
+ exports.GUILD_SCHEDULED_EVENT_UPDATE = GUILD_SCHEDULED_EVENT_UPDATE;
35
+ exports.GUILD_SCHEDULED_EVENT_USER_ADD = GUILD_SCHEDULED_EVENT_USER_ADD;
36
+ exports.GUILD_SCHEDULED_EVENT_USER_REMOVE = GUILD_SCHEDULED_EVENT_USER_REMOVE;
37
+ exports.GUILD_SOUNDBOARD_SOUND_CREATE = GUILD_SOUNDBOARD_SOUND_CREATE;
38
+ exports.GUILD_SOUNDBOARD_SOUND_DELETE = GUILD_SOUNDBOARD_SOUND_DELETE;
39
+ exports.GUILD_SOUNDBOARD_SOUND_UPDATE = GUILD_SOUNDBOARD_SOUND_UPDATE;
40
+ exports.GUILD_SOUNDBOARD_SOUNDS_UPDATE = GUILD_SOUNDBOARD_SOUNDS_UPDATE;
41
+ exports.GUILD_STICKERS_UPDATE = GUILD_STICKERS_UPDATE;
42
+ exports.GUILD_UPDATE = GUILD_UPDATE;
43
+ exports.INTEGRATION_CREATE = INTEGRATION_CREATE;
44
+ exports.INTEGRATION_DELETE = INTEGRATION_DELETE;
45
+ exports.INTEGRATION_UPDATE = INTEGRATION_UPDATE;
46
+ exports.INTERACTION_CREATE = INTERACTION_CREATE;
47
+ exports.INVITE_CREATE = INVITE_CREATE;
48
+ exports.INVITE_DELETE = INVITE_DELETE;
49
+ exports.MESSAGE_CREATE = MESSAGE_CREATE;
50
+ exports.MESSAGE_DELETE = MESSAGE_DELETE;
51
+ exports.MESSAGE_DELETE_BULK = MESSAGE_DELETE_BULK;
52
+ exports.MESSAGE_POLL_VOTE_ADD = MESSAGE_POLL_VOTE_ADD;
53
+ exports.MESSAGE_POLL_VOTE_REMOVE = MESSAGE_POLL_VOTE_REMOVE;
54
+ exports.MESSAGE_REACTION_ADD = MESSAGE_REACTION_ADD;
55
+ exports.MESSAGE_REACTION_REMOVE = MESSAGE_REACTION_REMOVE;
56
+ exports.MESSAGE_REACTION_REMOVE_ALL = MESSAGE_REACTION_REMOVE_ALL;
57
+ exports.MESSAGE_REACTION_REMOVE_EMOJI = MESSAGE_REACTION_REMOVE_EMOJI;
58
+ exports.MESSAGE_UPDATE = MESSAGE_UPDATE;
59
+ exports.PRESENCE_UPDATE = PRESENCE_UPDATE;
60
+ exports.READY = READY;
61
+ exports.RESUMED = RESUMED;
62
+ exports.SOUNDBOARD_SOUNDS = SOUNDBOARD_SOUNDS;
63
+ exports.STAGE_INSTANCE_CREATE = STAGE_INSTANCE_CREATE;
64
+ exports.STAGE_INSTANCE_DELETE = STAGE_INSTANCE_DELETE;
65
+ exports.STAGE_INSTANCE_UPDATE = STAGE_INSTANCE_UPDATE;
66
+ exports.THREAD_CREATE = THREAD_CREATE;
67
+ exports.THREAD_DELETE = THREAD_DELETE;
68
+ exports.THREAD_LIST_SYNC = THREAD_LIST_SYNC;
69
+ exports.THREAD_MEMBER_UPDATE = THREAD_MEMBER_UPDATE;
70
+ exports.THREAD_MEMBERS_UPDATE = THREAD_MEMBERS_UPDATE;
71
+ exports.THREAD_UPDATE = THREAD_UPDATE;
72
+ exports.TYPING_START = TYPING_START;
73
+ exports.USER_UPDATE = USER_UPDATE;
74
+ exports.VOICE_CHANNEL_EFFECT_SEND = VOICE_CHANNEL_EFFECT_SEND;
75
+ exports.VOICE_STATE_UPDATE = VOICE_STATE_UPDATE;
76
+ exports.VOICE_CHANNEL_STATUS_UPDATE = VOICE_CHANNEL_STATUS_UPDATE;
77
+ exports.VOICE_SERVER_UPDATE = VOICE_SERVER_UPDATE;
78
+ exports.WEBHOOKS_UPDATE = WEBHOOKS_UPDATE;
79
+ const Constants_1 = require("../Constants");
80
+ const Member_1 = __importDefault(require("../structures/Member"));
81
+ const AutoModerationRule_1 = __importDefault(require("../structures/AutoModerationRule"));
82
+ const Channel_1 = __importDefault(require("../structures/Channel"));
83
+ const VoiceChannel_1 = __importDefault(require("../structures/VoiceChannel"));
84
+ const StageChannel_1 = __importDefault(require("../structures/StageChannel"));
85
+ const GuildScheduledEvent_1 = __importDefault(require("../structures/GuildScheduledEvent"));
86
+ const Invite_1 = __importDefault(require("../structures/Invite"));
87
+ const Message_1 = __importDefault(require("../structures/Message"));
88
+ const StageInstance_1 = __importDefault(require("../structures/StageInstance"));
89
+ const Interaction_1 = __importDefault(require("../structures/Interaction"));
90
+ const Guild_1 = __importDefault(require("../structures/Guild"));
91
+ const Role_1 = __importDefault(require("../structures/Role"));
92
+ const Integration_1 = __importDefault(require("../structures/Integration"));
93
+ const VoiceState_1 = __importDefault(require("../structures/VoiceState"));
94
+ const AuditLogEntry_1 = __importDefault(require("../structures/AuditLogEntry"));
95
+ const Soundboard_1 = __importDefault(require("../structures/Soundboard"));
96
+ const node_util_1 = require("node:util");
97
+ async function APPLICATION_COMMAND_PERMISSIONS_UPDATE(data, shard) {
98
+ shard.client.emit("applicationCommandPermissionsUpdate", shard.client.guilds.get(data.guild_id) ?? { id: data.guild_id }, {
99
+ application: data.application_id === shard.client.application.id ? shard.client.application : undefined,
100
+ applicationID: data.application_id,
101
+ id: data.id,
102
+ permissions: data.permissions
103
+ });
104
+ }
105
+ async function AUTO_MODERATION_ACTION_EXECUTION(data, shard) {
106
+ const guild = shard.client.guilds.get(data.guild_id);
107
+ const channel = shard.client.getChannel(data.channel_id ?? "");
108
+ shard.client.emit("autoModerationActionExecution", guild ?? { id: data.guild_id }, data.channel_id === undefined ? null : channel ?? { id: data.channel_id }, shard.client.users.get(data.user_id) ?? { id: data.user_id }, {
109
+ action: {
110
+ metadata: {
111
+ channelID: data.action.metadata.channel_id,
112
+ customMessage: data.action.metadata.custom_message,
113
+ durationSeconds: data.action.metadata.duration_seconds
114
+ },
115
+ type: data.action.type
116
+ },
117
+ alertSystemMessageID: data.alert_system_message_id,
118
+ content: data.content,
119
+ matchedContent: data.matched_content,
120
+ matchedKeyword: data.matched_keyword,
121
+ messageID: data.message_id,
122
+ rule: guild?.autoModerationRules.get(data.rule_id),
123
+ ruleID: data.rule_id,
124
+ ruleTriggerType: data.rule_trigger_type
125
+ });
126
+ }
127
+ async function AUTO_MODERATION_RULE_CREATE(data, shard) {
128
+ const guild = shard.client.guilds.get(data.guild_id);
129
+ const rule = guild?.autoModerationRules.update(data) ?? new AutoModerationRule_1.default(data, shard.client);
130
+ shard.client.emit("autoModerationRuleCreate", rule);
131
+ }
132
+ async function AUTO_MODERATION_RULE_DELETE(data, shard) {
133
+ const guild = shard.client.guilds.get(data.guild_id);
134
+ const rule = guild?.autoModerationRules.update(data) ?? new AutoModerationRule_1.default(data, shard.client);
135
+ guild?.autoModerationRules.delete(data.id);
136
+ shard.client.emit("autoModerationRuleDelete", rule);
137
+ }
138
+ async function AUTO_MODERATION_RULE_UPDATE(data, shard) {
139
+ const guild = shard.client.guilds.get(data.guild_id);
140
+ const oldRule = guild?.autoModerationRules.get(data.id)?.toJSON() ?? null;
141
+ const rule = guild?.autoModerationRules.update(data) ?? new AutoModerationRule_1.default(data, shard.client);
142
+ shard.client.emit("autoModerationRuleUpdate", rule, oldRule);
143
+ }
144
+ async function CHANNEL_CREATE(data, shard) {
145
+ const channel = shard.client.util.updateChannel(data);
146
+ shard.client.emit("channelCreate", channel);
147
+ }
148
+ async function CHANNEL_DELETE(data, shard) {
149
+ if (data.type === Constants_1.ChannelTypes.DM) {
150
+ const channel = shard.client.privateChannels.get(data.id);
151
+ shard.client.privateChannels.delete(data.id);
152
+ shard.client.emit("channelDelete", channel ?? {
153
+ id: data.id,
154
+ flags: data.flags,
155
+ lastMessageID: data.last_message_id,
156
+ type: data.type
157
+ });
158
+ return;
159
+ }
160
+ const guild = shard.client.guilds.get(data.guild_id);
161
+ const channel = shard.client.util.updateChannel(data);
162
+ if (channel instanceof VoiceChannel_1.default || channel instanceof StageChannel_1.default) {
163
+ for (const [, member] of channel.voiceMembers) {
164
+ channel.voiceMembers.delete(member.id);
165
+ shard.client.emit("voiceChannelLeave", member, channel);
166
+ }
167
+ }
168
+ guild?.channels.delete(data.id);
169
+ shard.client.emit("channelDelete", channel);
170
+ }
171
+ async function CHANNEL_PINS_UPDATE(data, shard) {
172
+ const channel = shard.client.getChannel(data.channel_id);
173
+ shard.client.emit("channelPinsUpdate", channel ?? { id: data.channel_id }, data.last_pin_timestamp === undefined || data.last_pin_timestamp === null ? null : new Date(data.last_pin_timestamp));
174
+ }
175
+ async function CHANNEL_UPDATE(data, shard) {
176
+ const oldChannel = shard.client.getChannel(data.id)?.toJSON() ?? null;
177
+ let channel;
178
+ if (oldChannel && oldChannel.type !== data.type) {
179
+ const guildID = shard.client.channelGuildMap.get(data.id);
180
+ if (guildID)
181
+ shard.client.guilds.get(guildID)?.channels.delete(data.id);
182
+ channel = shard.client.util.updateChannel(data);
183
+ }
184
+ else {
185
+ channel = shard.client.util.updateChannel(data);
186
+ }
187
+ shard.client.emit("channelUpdate", channel, oldChannel);
188
+ }
189
+ async function ENTITLEMENT_CREATE(data, shard) {
190
+ const entitlement = shard.client.util.updateEntitlement(data);
191
+ shard.client.emit("entitlementCreate", entitlement);
192
+ }
193
+ async function ENTITLEMENT_DELETE(data, shard) {
194
+ const entitlement = shard.client.util.updateEntitlement(data);
195
+ shard.client["_application"]?.entitlements.delete(data.id);
196
+ shard.client.emit("entitlementDelete", entitlement);
197
+ }
198
+ async function ENTITLEMENT_UPDATE(data, shard) {
199
+ const oldEntitlement = shard.client["_application"]?.entitlements.get(data.id)?.toJSON() ?? null;
200
+ const entitlement = shard.client.util.updateEntitlement(data);
201
+ shard.client.emit("entitlementUpdate", entitlement, oldEntitlement);
202
+ }
203
+ async function GUILD_AUDIT_LOG_ENTRY_CREATE(data, shard) {
204
+ const guild = shard.client.guilds.get(data.guild_id);
205
+ shard.client.emit("guildAuditLogEntryCreate", guild ?? { id: data.guild_id }, guild?.auditLogEntries.update(data) ?? new AuditLogEntry_1.default(data, shard.client));
206
+ }
207
+ async function GUILD_BAN_ADD(data, shard) {
208
+ shard.client.emit("guildBanAdd", shard.client.guilds.get(data.guild_id) ?? { id: data.guild_id }, shard.client.users.update(data.user));
209
+ }
210
+ async function GUILD_BAN_REMOVE(data, shard) {
211
+ shard.client.emit("guildBanRemove", shard.client.guilds.get(data.guild_id) ?? { id: data.guild_id }, shard.client.users.update(data.user));
212
+ }
213
+ async function GUILD_CREATE(data, shard) {
214
+ if (data.unavailable) {
215
+ shard.client.guilds.delete(data.id);
216
+ shard.client.emit("unavailableGuildCreate", shard.client.unavailableGuilds.update(data));
217
+ }
218
+ else {
219
+ const guild = shard["createGuild"](data);
220
+ if (shard.ready) {
221
+ if (shard.client.unavailableGuilds.delete(guild.id)) {
222
+ shard.client.emit("guildAvailable", guild);
223
+ }
224
+ else {
225
+ shard.client.emit("guildCreate", guild);
226
+ }
227
+ }
228
+ else {
229
+ if (shard.client.unavailableGuilds.delete(guild.id)) {
230
+ void shard["restartGuildCreateTimeout"]();
231
+ }
232
+ else {
233
+ shard.client.emit("guildCreate", guild);
234
+ }
235
+ }
236
+ }
237
+ }
238
+ async function GUILD_DELETE(data, shard) {
239
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call
240
+ shard.client.voiceAdapters.get(data.id)?.destroy();
241
+ shard.client.guildShardMap.delete(data.id);
242
+ const guild = shard.client.guilds.get(data.id);
243
+ guild?.channels.clear();
244
+ guild?.threads.clear();
245
+ shard.client.guilds.delete(data.id);
246
+ if (data.unavailable) {
247
+ shard.client.emit("guildUnavailable", shard.client.unavailableGuilds.update(data));
248
+ }
249
+ else {
250
+ shard.client.emit("guildDelete", guild ?? { id: data.id });
251
+ }
252
+ }
253
+ async function GUILD_EMOJIS_UPDATE(data, shard) {
254
+ const guild = shard.client.guilds.get(data.guild_id);
255
+ const oldEmojis = guild?.emojis ? guild.emojis.toArray() : null;
256
+ // eslint-disable-next-line @typescript-eslint/dot-notation
257
+ guild?.["update"]({ emojis: data.emojis });
258
+ shard.client.emit("guildEmojisUpdate", guild ?? { id: data.guild_id }, guild?.emojis?.toArray() ?? data.emojis.map(emoji => shard.client.util.convertGuildEmoji(emoji)), oldEmojis);
259
+ }
260
+ async function GUILD_INTEGRATIONS_UPDATE(data, shard) {
261
+ shard.client.emit("guildIntegrationsUpdate", shard.client.guilds.get(data.guild_id) ?? { id: data.guild_id });
262
+ }
263
+ async function GUILD_MEMBER_ADD(data, shard) {
264
+ const guild = shard.client.guilds.get(data.guild_id);
265
+ if (guild) {
266
+ guild.memberCount++;
267
+ }
268
+ const member = shard.client.util.updateMember(data.guild_id, data.user.id, data);
269
+ shard.client.emit("guildMemberAdd", member);
270
+ }
271
+ async function GUILD_MEMBERS_CHUNK(data, shard) {
272
+ const guild = shard.client.guilds.get(data.guild_id);
273
+ // eslint-disable-next-line @typescript-eslint/dot-notation
274
+ guild?.["updateMemberLimit"](data.members.length);
275
+ const members = data.members.map(member => shard.client.util.updateMember(data.guild_id, member.user.id, member));
276
+ if (data.presences)
277
+ for (const presence of data.presences) {
278
+ const member = members.find(m => m.id === presence.user.id);
279
+ member.presence = {
280
+ clientStatus: presence.client_status,
281
+ guildID: presence.guild_id,
282
+ status: presence.status,
283
+ activities: presence.activities?.map(activity => ({
284
+ createdAt: activity.created_at,
285
+ name: activity.name,
286
+ type: activity.type,
287
+ applicationID: activity.application_id,
288
+ assets: activity.assets ? {
289
+ largeImage: activity.assets.large_image,
290
+ largeText: activity.assets.large_text,
291
+ smallImage: activity.assets.small_image,
292
+ smallText: activity.assets.small_text
293
+ } : undefined,
294
+ buttons: activity.buttons,
295
+ details: activity.details,
296
+ emoji: activity.emoji,
297
+ flags: activity.flags,
298
+ instance: activity.instance,
299
+ party: activity.party,
300
+ secrets: activity.secrets,
301
+ state: activity.state,
302
+ timestamps: activity.timestamps,
303
+ url: activity.url
304
+ }))
305
+ };
306
+ }
307
+ if (!data.nonce) {
308
+ shard.client.emit("warn", "Received GUILD_MEMBERS_CHUNK without a nonce.");
309
+ return;
310
+ }
311
+ if (shard["_requestMembersPromise"][data.nonce]) {
312
+ shard["_requestMembersPromise"][data.nonce].members.push(...members);
313
+ }
314
+ if (data.chunk_index >= data.chunk_count - 1) {
315
+ if (shard["_requestMembersPromise"][data.nonce]) {
316
+ clearTimeout(shard["_requestMembersPromise"][data.nonce].timeout);
317
+ shard["_requestMembersPromise"][data.nonce].resolve(shard["_requestMembersPromise"][data.nonce].members);
318
+ delete shard["_requestMembersPromise"][data.nonce];
319
+ }
320
+ if (shard["_getAllUsersCount"][data.guild_id]) {
321
+ delete shard["_getAllUsersCount"][data.guild_id];
322
+ void shard["checkReady"]();
323
+ }
324
+ }
325
+ shard.client.emit("guildMemberChunk", members);
326
+ shard.lastHeartbeatAck = true;
327
+ }
328
+ async function GUILD_MEMBER_REMOVE(data, shard) {
329
+ if (data.user.id === shard.client.user.id) {
330
+ return;
331
+ }
332
+ const guild = shard.client.guilds.get(data.guild_id);
333
+ // eslint-disable-next-line @typescript-eslint/dot-notation
334
+ let user = guild?.members.get(data.user.id);
335
+ if (user instanceof Member_1.default) {
336
+ user["update"]({ user: data.user });
337
+ }
338
+ else {
339
+ user = shard.client.users.update(data.user);
340
+ }
341
+ if (guild) {
342
+ guild.memberCount--;
343
+ guild.members.delete(data.user.id);
344
+ }
345
+ shard.client.emit("guildMemberRemove", user, guild ?? { id: data.guild_id });
346
+ }
347
+ async function GUILD_MEMBER_UPDATE(data, shard) {
348
+ const guild = shard.client.guilds.get(data.guild_id);
349
+ const oldMember = guild?.members.get(data.user.id)?.toJSON() ?? null;
350
+ const member = shard.client.util.updateMember(data.guild_id, data.user.id, { deaf: oldMember?.deaf ?? false, mute: oldMember?.mute ?? false, ...data });
351
+ shard.client.emit("guildMemberUpdate", member, oldMember);
352
+ }
353
+ async function GUILD_ROLE_CREATE(data, shard) {
354
+ const guild = shard.client.guilds.get(data.guild_id);
355
+ const role = guild?.roles.update(data.role, data.guild_id) ?? new Role_1.default(data.role, shard.client, data.guild_id);
356
+ shard.client.emit("guildRoleCreate", role);
357
+ }
358
+ async function GUILD_ROLE_DELETE(data, shard) {
359
+ const guild = shard.client.guilds.get(data.guild_id);
360
+ const role = guild?.roles.get(data.role_id);
361
+ guild?.roles.delete(data.role_id);
362
+ shard.client.emit("guildRoleDelete", role ?? { id: data.role_id }, guild ?? { id: data.guild_id });
363
+ }
364
+ async function GUILD_ROLE_UPDATE(data, shard) {
365
+ const guild = shard.client.guilds.get(data.guild_id);
366
+ const oldRole = guild?.roles.get(data.role.id)?.toJSON() ?? null;
367
+ const role = guild?.roles.update(data.role, data.guild_id) ?? new Role_1.default(data.role, shard.client, data.guild_id);
368
+ shard.client.emit("guildRoleUpdate", role, oldRole);
369
+ }
370
+ async function GUILD_SCHEDULED_EVENT_CREATE(data, shard) {
371
+ const guild = shard.client.guilds.get(data.guild_id);
372
+ const event = guild?.scheduledEvents.update(data) ?? new GuildScheduledEvent_1.default(data, shard.client);
373
+ shard.client.emit("guildScheduledEventCreate", event);
374
+ }
375
+ async function GUILD_SCHEDULED_EVENT_DELETE(data, shard) {
376
+ const guild = shard.client.guilds.get(data.guild_id);
377
+ const event = guild?.scheduledEvents.update(data) ?? new GuildScheduledEvent_1.default(data, shard.client);
378
+ guild?.scheduledEvents.delete(data.id);
379
+ shard.client.emit("guildScheduledEventDelete", event);
380
+ }
381
+ async function GUILD_SCHEDULED_EVENT_UPDATE(data, shard) {
382
+ const guild = shard.client.guilds.get(data.guild_id);
383
+ const oldEvent = guild?.scheduledEvents.get(data.id)?.toJSON() ?? null;
384
+ const event = guild?.scheduledEvents.update(data) ?? new GuildScheduledEvent_1.default(data, shard.client);
385
+ shard.client.emit("guildScheduledEventUpdate", event, oldEvent);
386
+ }
387
+ async function GUILD_SCHEDULED_EVENT_USER_ADD(data, shard) {
388
+ const guild = shard.client.guilds.get(data.guild_id);
389
+ const event = guild?.scheduledEvents.get(data.guild_scheduled_event_id);
390
+ if (event?.userCount) {
391
+ event.userCount++;
392
+ }
393
+ const user = shard.client.users.get(data.user_id) ?? { id: data.user_id };
394
+ shard.client.emit("guildScheduledEventUserAdd", event ?? { id: data.guild_scheduled_event_id }, user ?? { id: data.user_id });
395
+ }
396
+ async function GUILD_SCHEDULED_EVENT_USER_REMOVE(data, shard) {
397
+ const guild = shard.client.guilds.get(data.guild_id);
398
+ const event = guild?.scheduledEvents.get(data.guild_scheduled_event_id);
399
+ if (event?.userCount) {
400
+ event.userCount--;
401
+ }
402
+ const user = shard.client.users.get(data.user_id) ?? { id: data.user_id };
403
+ shard.client.emit("guildScheduledEventUserRemove", event ?? { id: data.guild_scheduled_event_id }, user ?? { id: data.user_id });
404
+ }
405
+ async function GUILD_SOUNDBOARD_SOUND_CREATE(data, shard) {
406
+ const guild = shard.client.guilds.get(data.guild_id);
407
+ const soundboardSound = guild?.soundboardSounds.update(data) ?? new Soundboard_1.default(data, shard.client);
408
+ shard.client.emit("guildSoundboardSoundCreate", soundboardSound);
409
+ }
410
+ async function GUILD_SOUNDBOARD_SOUND_DELETE(data, shard) {
411
+ const guild = shard.client.guilds.get(data.guild_id);
412
+ const soundboardSound = guild?.soundboardSounds.get(data.sound_id);
413
+ guild?.soundboardSounds.delete(data.sound_id);
414
+ shard.client.emit("guildSoundboardSoundDelete", soundboardSound ?? { id: data.sound_id });
415
+ }
416
+ async function GUILD_SOUNDBOARD_SOUND_UPDATE(data, shard) {
417
+ const guild = shard.client.guilds.get(data.guild_id);
418
+ const oldSoundboardSound = guild?.soundboardSounds.get(data.sound_id)?.toJSON() ?? null;
419
+ const soundboardSound = guild?.soundboardSounds.update(data) ?? new Soundboard_1.default(data, shard.client);
420
+ shard.client.emit("guildSoundboardSoundUpdate", soundboardSound, oldSoundboardSound);
421
+ }
422
+ async function GUILD_SOUNDBOARD_SOUNDS_UPDATE(data, shard) {
423
+ const guild = shard.client.guilds.get(data.guild_id);
424
+ const oldSoundboardSounds = data.soundboard_sounds.map(rawSound => guild?.soundboardSounds.get(rawSound.sound_id)?.toJSON() ?? null);
425
+ const newSoundboardSounds = data.soundboard_sounds.map(sound => guild?.soundboardSounds.update(sound) ?? new Soundboard_1.default(sound, shard.client));
426
+ shard.client.emit("guildSoundboardSoundsUpdate", newSoundboardSounds, oldSoundboardSounds, data.guild_id);
427
+ }
428
+ async function GUILD_STICKERS_UPDATE(data, shard) {
429
+ const guild = shard.client.guilds.get(data.guild_id);
430
+ const oldStickers = guild?.stickers ? guild.stickers.toArray() : null;
431
+ // eslint-disable-next-line @typescript-eslint/dot-notation
432
+ guild?.["update"]({ stickers: data.stickers });
433
+ shard.client.emit("guildStickersUpdate", guild ?? { id: data.guild_id }, guild?.stickers?.toArray() ?? data.stickers.map(sticker => shard.client.util.convertSticker(sticker)), oldStickers);
434
+ }
435
+ async function GUILD_UPDATE(data, shard) {
436
+ const guild = shard.client.guilds.get(data.id);
437
+ const oldGuild = guild?.toJSON() ?? null;
438
+ shard.client.emit("guildUpdate", shard.client.guilds.update(data), oldGuild);
439
+ }
440
+ async function INTEGRATION_CREATE(data, shard) {
441
+ const guild = shard.client.guilds.get(data.guild_id);
442
+ const integration = guild?.integrations.update(data, data.guild_id) ?? new Integration_1.default(data, shard.client, data.guild_id);
443
+ shard.client.emit("integrationCreate", guild ?? { id: data.guild_id }, integration);
444
+ }
445
+ async function INTEGRATION_DELETE(data, shard) {
446
+ const guild = shard.client.guilds.get(data.guild_id);
447
+ const integration = guild?.integrations.get(data.id);
448
+ guild?.integrations.delete(data.id);
449
+ shard.client.emit("integrationDelete", guild ?? { id: data.guild_id }, integration ?? { applicationID: data.application_id, id: data.id });
450
+ }
451
+ async function INTEGRATION_UPDATE(data, shard) {
452
+ const guild = shard.client.guilds.get(data.guild_id);
453
+ const oldIntegration = guild?.integrations.get(data.id)?.toJSON() ?? null;
454
+ const integration = guild?.integrations.update(data, data.guild_id) ?? new Integration_1.default(data, shard.client, data.guild_id);
455
+ shard.client.emit("integrationUpdate", guild ?? { id: data.guild_id }, integration, oldIntegration);
456
+ }
457
+ async function INTERACTION_CREATE(data, shard) {
458
+ shard.client.emit("interactionCreate", Interaction_1.default.from(data, shard.client));
459
+ }
460
+ async function INVITE_CREATE(data, shard) {
461
+ let invite;
462
+ if (data.guild_id) {
463
+ const guild = shard.client.guilds.get(data.guild_id);
464
+ invite = guild?.invites.update(data);
465
+ }
466
+ shard.client.emit("inviteCreate", invite ?? new Invite_1.default(data, shard.client));
467
+ }
468
+ async function INVITE_DELETE(data, shard) {
469
+ const channel = shard.client.getChannel(data.channel_id) ?? { id: data.channel_id };
470
+ const guild = data.guild_id ? shard.client.guilds.get(data.guild_id) ?? { id: data.guild_id } : undefined;
471
+ let invite = {
472
+ code: data.code,
473
+ channel,
474
+ guild
475
+ };
476
+ if (guild instanceof Guild_1.default && guild.invites.has(data.code)) {
477
+ invite = guild.invites.get(data.code);
478
+ guild.invites.delete(data.code);
479
+ }
480
+ shard.client.emit("inviteDelete", invite);
481
+ }
482
+ async function MESSAGE_CREATE(data, shard) {
483
+ const channel = shard.client.getChannel(data.channel_id);
484
+ const message = channel?.messages?.update(data) ?? new Message_1.default(data, shard.client);
485
+ if (channel) {
486
+ channel.lastMessage = message;
487
+ channel.lastMessageID = message.id;
488
+ }
489
+ shard.client.emit("messageCreate", message);
490
+ }
491
+ async function MESSAGE_DELETE(data, shard) {
492
+ const channel = shard.client.getChannel(data.channel_id);
493
+ const message = channel?.messages?.get(data.id);
494
+ if (channel) {
495
+ channel.messages?.delete(data.id);
496
+ if (channel.lastMessageID === data.id) {
497
+ channel.lastMessageID = null;
498
+ channel.lastMessage = null;
499
+ }
500
+ }
501
+ shard.client.emit("messageDelete", message ?? {
502
+ channel: channel ?? { id: data.channel_id },
503
+ channelID: data.channel_id,
504
+ guild: data.guild_id ? shard.client.guilds.get(data.guild_id) : undefined,
505
+ guildID: data.guild_id, id: data.id
506
+ });
507
+ }
508
+ async function MESSAGE_DELETE_BULK(data, shard) {
509
+ const channel = shard.client.getChannel(data.channel_id);
510
+ const guild = data.guild_id ? shard.client.guilds.get(data.guild_id) : undefined;
511
+ shard.client.emit("messageDeleteBulk", data.ids.map(id => {
512
+ const message = channel?.messages?.get(id);
513
+ channel?.messages?.delete(id);
514
+ return message ?? {
515
+ channel: channel ?? { id: data.channel_id },
516
+ channelID: data.channel_id,
517
+ guild,
518
+ guildID: data.guild_id,
519
+ id
520
+ };
521
+ }));
522
+ }
523
+ async function MESSAGE_POLL_VOTE_ADD(data, shard) {
524
+ const user = shard.client.users.get(data.user_id) ?? { id: data.user_id };
525
+ const channel = shard.client.getChannel(data.channel_id) ?? { id: data.channel_id };
526
+ const guild = data.guild_id ? shard.client.guilds.get(data.guild_id) : undefined;
527
+ const message = (channel instanceof Channel_1.default ? channel.messages.get(data.message_id) : undefined) ?? { channel, channelID: channel.id, guild, guildID: guild?.id, id: data.message_id };
528
+ let answer = { answerID: data.answer_id };
529
+ if (message instanceof Message_1.default && message.poll !== undefined) {
530
+ const pollAnswer = message.poll.answers.find(a => a.answerID === data.answer_id);
531
+ if (pollAnswer) {
532
+ answer = pollAnswer;
533
+ }
534
+ shard.client.util.updatePollAnswer(message.poll, data.answer_id, 1, data.user_id);
535
+ }
536
+ shard.client.emit("messagePollVoteAdd", message, user, answer);
537
+ }
538
+ async function MESSAGE_POLL_VOTE_REMOVE(data, shard) {
539
+ const user = shard.client.users.get(data.user_id) ?? { id: data.user_id };
540
+ const channel = shard.client.getChannel(data.channel_id) ?? { id: data.channel_id };
541
+ const guild = data.guild_id ? shard.client.guilds.get(data.guild_id) : undefined;
542
+ const message = (channel instanceof Channel_1.default ? channel.messages.get(data.message_id) : undefined) ?? { channel, channelID: channel.id, guild, guildID: guild?.id, id: data.message_id };
543
+ let answer = { answerID: data.answer_id };
544
+ if (message instanceof Message_1.default && message.poll !== undefined) {
545
+ const pollAnswer = message.poll.answers.find(a => a.answerID === data.answer_id);
546
+ if (pollAnswer) {
547
+ answer = pollAnswer;
548
+ }
549
+ shard.client.util.updatePollAnswer(message.poll, data.answer_id, -1, data.user_id);
550
+ }
551
+ shard.client.emit("messagePollVoteRemove", message, user, answer);
552
+ }
553
+ async function MESSAGE_REACTION_ADD(data, shard) {
554
+ const channel = shard.client.getChannel(data.channel_id);
555
+ const guild = data.guild_id ? shard.client.guilds.get(data.guild_id) : undefined;
556
+ const message = channel?.messages?.get(data.message_id);
557
+ const reactor = data.member
558
+ ? (data.guild_id ? shard.client.util.updateMember(data.guild_id, data.user_id, data.member) : shard.client.users.get(data.user_id) ?? { id: data.user_id })
559
+ : shard.client.users.get(data.user_id) ?? { id: data.user_id };
560
+ if (message) {
561
+ const index = message.reactions.findIndex(r => r.emoji.id === data.emoji.id && r.emoji.name === data.emoji.name);
562
+ if (index === -1) {
563
+ message.reactions.push({
564
+ burstColors: data.burst_colors,
565
+ count: 1,
566
+ countDetails: {
567
+ burst: data.burst ? 1 : 0,
568
+ normal: data.burst ? 0 : 1
569
+ },
570
+ emoji: data.emoji,
571
+ me: data.user_id === shard.client.user.id,
572
+ meBurst: data.user_id === shard.client.user.id && data.burst
573
+ });
574
+ }
575
+ else {
576
+ if (data.burst) {
577
+ message.reactions[index].countDetails.burst++;
578
+ }
579
+ else {
580
+ message.reactions[index].countDetails.normal++;
581
+ }
582
+ message.reactions[index].count++;
583
+ if (data.user_id === shard.client.user.id) {
584
+ message.reactions[index].me = true;
585
+ }
586
+ }
587
+ }
588
+ shard.client.emit("messageReactionAdd", message ?? {
589
+ channel: channel ?? { id: data.channel_id },
590
+ channelID: data.channel_id,
591
+ guild,
592
+ guildID: data.guild_id,
593
+ id: data.message_id,
594
+ author: data.message_author_id === undefined ? undefined : shard.client.users.get(data.message_author_id) ?? { id: data.message_author_id },
595
+ member: data.message_author_id === undefined ? undefined : guild?.members.get(data.message_author_id) ?? { id: data.message_author_id }
596
+ }, reactor, {
597
+ burst: data.burst,
598
+ burstColors: data.burst_colors,
599
+ emoji: data.emoji,
600
+ type: data.type
601
+ });
602
+ }
603
+ async function MESSAGE_REACTION_REMOVE(data, shard) {
604
+ const channel = shard.client.getChannel(data.channel_id);
605
+ const message = channel?.messages?.get(data.message_id);
606
+ const reactor = shard.client.users.get(data.user_id) ?? { id: data.user_id };
607
+ if (message) {
608
+ const index = message.reactions.findIndex(r => r.emoji.id === data.emoji.id && r.emoji.name === data.emoji.name);
609
+ if (index !== -1) {
610
+ if (data.burst) {
611
+ message.reactions[index].countDetails.burst--;
612
+ }
613
+ else {
614
+ message.reactions[index].countDetails.normal--;
615
+ }
616
+ message.reactions[index].count--;
617
+ if (data.user_id === shard.client.user.id) {
618
+ if (data.burst) {
619
+ message.reactions[index].meBurst = false;
620
+ }
621
+ else {
622
+ message.reactions[index].me = false;
623
+ }
624
+ }
625
+ if (message.reactions[index].count === 0) {
626
+ message.reactions.splice(index, 1);
627
+ }
628
+ }
629
+ }
630
+ shard.client.emit("messageReactionRemove", message ?? {
631
+ channel: channel ?? { id: data.channel_id },
632
+ channelID: data.channel_id,
633
+ guild: data.guild_id ? shard.client.guilds.get(data.guild_id) : undefined,
634
+ guildID: data.guild_id,
635
+ id: data.message_id
636
+ }, reactor, {
637
+ burst: data.burst,
638
+ burstColors: data.burst_colors,
639
+ emoji: data.emoji,
640
+ type: data.type
641
+ });
642
+ }
643
+ async function MESSAGE_REACTION_REMOVE_ALL(data, shard) {
644
+ const channel = shard.client.getChannel(data.channel_id);
645
+ const message = channel?.messages?.get(data.message_id);
646
+ if (message) {
647
+ message.reactions = [];
648
+ }
649
+ shard.client.emit("messageReactionRemoveAll", message ?? {
650
+ channel: channel ?? { id: data.channel_id },
651
+ channelID: data.channel_id,
652
+ guild: data.guild_id ? shard.client.guilds.get(data.guild_id) : undefined,
653
+ guildID: data.guild_id,
654
+ id: data.message_id
655
+ });
656
+ }
657
+ async function MESSAGE_REACTION_REMOVE_EMOJI(data, shard) {
658
+ const channel = shard.client.getChannel(data.channel_id);
659
+ const message = channel?.messages?.get(data.message_id);
660
+ if (message) {
661
+ const index = message.reactions.findIndex(r => r.emoji.id === data.emoji.id && r.emoji.name === data.emoji.name);
662
+ if (index !== -1) {
663
+ message.reactions.splice(index, 1);
664
+ }
665
+ }
666
+ shard.client.emit("messageReactionRemoveEmoji", message ?? {
667
+ channel: channel ?? { id: data.channel_id },
668
+ channelID: data.channel_id,
669
+ guild: data.guild_id ? shard.client.guilds.get(data.guild_id) : undefined,
670
+ guildID: data.guild_id,
671
+ id: data.message_id
672
+ }, data.emoji);
673
+ }
674
+ async function MESSAGE_UPDATE(data, shard) {
675
+ const channel = shard.client.getChannel(data.channel_id);
676
+ const oldMessage = channel?.messages?.get(data.id)?.toJSON() ?? null;
677
+ if (!oldMessage && !data.author) {
678
+ shard.client.emit("debug", `Got partial MESSAGE_UPDATE for uncached message ${data.id} for channel ${data.channel_id}, discarding..`);
679
+ return;
680
+ }
681
+ const message = channel?.messages?.update(data) ?? new Message_1.default(data, shard.client);
682
+ shard.client.emit("messageUpdate", message, oldMessage);
683
+ }
684
+ async function PRESENCE_UPDATE(data, shard) {
685
+ const user = shard.client.users.get(data.user.id);
686
+ if (user) {
687
+ const oldUser = user.toJSON();
688
+ user["update"](data.user);
689
+ if (!(0, node_util_1.isDeepStrictEqual)(oldUser, user.toJSON())) {
690
+ shard.client.emit("userUpdate", user, oldUser);
691
+ }
692
+ }
693
+ const guild = shard.client.guilds.get(data.guild_id);
694
+ const member = guild?.members.get(data.user.id);
695
+ const oldPresence = member?.presence ?? null;
696
+ const presence = {
697
+ clientStatus: data.client_status,
698
+ guildID: data.guild_id,
699
+ status: data.status,
700
+ activities: data.activities?.map(activity => ({
701
+ createdAt: activity.created_at,
702
+ name: activity.name,
703
+ type: activity.type,
704
+ applicationID: activity.application_id,
705
+ assets: activity.assets ? {
706
+ largeImage: activity.assets.large_image,
707
+ largeText: activity.assets.large_text,
708
+ smallImage: activity.assets.small_image,
709
+ smallText: activity.assets.small_text
710
+ } : undefined,
711
+ buttons: activity.buttons,
712
+ details: activity.details,
713
+ emoji: activity.emoji,
714
+ flags: activity.flags,
715
+ instance: activity.instance,
716
+ party: activity.party,
717
+ secrets: activity.secrets,
718
+ state: activity.state,
719
+ timestamps: activity.timestamps,
720
+ url: activity.url
721
+ }))
722
+ };
723
+ const userID = data.user.id;
724
+ delete data.user;
725
+ if (member) {
726
+ member.presence = presence;
727
+ }
728
+ shard.client.emit("presenceUpdate", guild ?? { id: data.guild_id }, member ?? { id: userID }, presence, oldPresence);
729
+ }
730
+ async function READY(data, shard) {
731
+ shard["_ready"](data);
732
+ }
733
+ async function RESUMED(data, shard) {
734
+ shard["_resume"]();
735
+ }
736
+ async function SOUNDBOARD_SOUNDS(data, shard) {
737
+ const guild = shard.client.guilds.get(data.guild_id);
738
+ const soundboardSounds = data.soundboard_sounds.map(soundboardSound => guild?.soundboardSounds.update(soundboardSound) ?? new Soundboard_1.default(soundboardSound, shard.client));
739
+ for (const nonce in shard["_requestSoundboardSoundsPromise"]) {
740
+ if (data.guild_id === shard["_requestSoundboardSoundsPromise"][nonce].guildID) {
741
+ shard["_requestSoundboardSoundsPromise"][nonce].soundboardSounds.push(...soundboardSounds);
742
+ clearTimeout(shard["_requestSoundboardSoundsPromise"][nonce].timeout);
743
+ shard["_requestSoundboardSoundsPromise"][nonce].resolve(shard["_requestSoundboardSoundsPromise"][nonce].soundboardSounds);
744
+ delete shard["_requestSoundboardSoundsPromise"][nonce];
745
+ }
746
+ }
747
+ shard.client.emit("soundboardSounds", data.guild_id, soundboardSounds);
748
+ shard.lastHeartbeatAck = true;
749
+ }
750
+ async function STAGE_INSTANCE_CREATE(data, shard) {
751
+ const guild = shard.client.guilds.get(data.guild_id);
752
+ const stateInstance = guild?.stageInstances.update(data) ?? new StageInstance_1.default(data, shard.client);
753
+ shard.client.emit("stageInstanceCreate", stateInstance);
754
+ }
755
+ async function STAGE_INSTANCE_DELETE(data, shard) {
756
+ const guild = shard.client.guilds.get(data.guild_id);
757
+ const stateInstance = guild?.stageInstances.update(data) ?? new StageInstance_1.default(data, shard.client);
758
+ guild?.stageInstances.delete(data.id);
759
+ shard.client.emit("stageInstanceDelete", stateInstance);
760
+ }
761
+ async function STAGE_INSTANCE_UPDATE(data, shard) {
762
+ const guild = shard.client.guilds.get(data.guild_id);
763
+ const oldStageInstance = guild?.stageInstances.get(data.id)?.toJSON() ?? null;
764
+ const stateInstance = guild?.stageInstances.update(data) ?? new StageInstance_1.default(data, shard.client);
765
+ shard.client.emit("stageInstanceUpdate", stateInstance, oldStageInstance);
766
+ }
767
+ async function THREAD_CREATE(data, shard) {
768
+ const thread = shard.client.util.updateThread(data);
769
+ const channel = shard.client.getChannel(data.parent_id);
770
+ if (channel && channel.type === Constants_1.ChannelTypes.GUILD_FORUM) {
771
+ channel.lastThreadID = thread.id;
772
+ }
773
+ shard.client.emit("threadCreate", thread);
774
+ }
775
+ async function THREAD_DELETE(data, shard) {
776
+ const channel = shard.client.getChannel(data.parent_id);
777
+ const thread = shard.client.getChannel(data.id) ?? {
778
+ id: data.id,
779
+ guild: shard.client.guilds.get(data.guild_id),
780
+ guildID: data.guild_id,
781
+ parent: channel || { id: data.parent_id },
782
+ parentID: data.parent_id,
783
+ type: data.type
784
+ };
785
+ if (channel && channel.type === Constants_1.ChannelTypes.GUILD_FORUM && channel.lastThreadID === data.id) {
786
+ channel.lastThreadID = null;
787
+ }
788
+ shard.client.guilds.get(data.guild_id)?.threads.delete(data.id);
789
+ shard.client.emit("threadDelete", thread);
790
+ }
791
+ async function THREAD_LIST_SYNC(data, shard) {
792
+ const guild = shard.client.guilds.get(data.guild_id);
793
+ if (!guild) {
794
+ shard.client.emit("debug", `Missing guild in THREAD_LIST_SYNC: ${data.guild_id}`);
795
+ return;
796
+ }
797
+ for (const threadData of data.threads) {
798
+ shard.client.util.updateThread(threadData);
799
+ }
800
+ for (const member of data.members) {
801
+ const thread = shard.client.getChannel(member.id);
802
+ if (thread) {
803
+ const threadMember = {
804
+ id: member.id,
805
+ flags: member.flags,
806
+ joinTimestamp: new Date(member.join_timestamp),
807
+ userID: member.user_id
808
+ };
809
+ const index = thread.members.findIndex(m => m.userID === member.user_id);
810
+ if (index === -1) {
811
+ thread.members.push(threadMember);
812
+ }
813
+ else {
814
+ thread.members[index] = threadMember;
815
+ }
816
+ }
817
+ }
818
+ }
819
+ async function THREAD_MEMBER_UPDATE(data, shard) {
820
+ const thread = shard.client.getChannel(data.id);
821
+ const guild = shard.client.guilds.get(data.guild_id);
822
+ const threadMember = {
823
+ id: data.id,
824
+ flags: data.flags,
825
+ joinTimestamp: new Date(data.join_timestamp),
826
+ userID: data.user_id
827
+ };
828
+ let oldThreadMember = null;
829
+ if (thread) {
830
+ const index = thread.members.findIndex(m => m.userID === data.user_id);
831
+ if (index === -1) {
832
+ thread.members.push(threadMember);
833
+ }
834
+ else {
835
+ oldThreadMember = { ...thread.members[index] };
836
+ thread.members[index] = threadMember;
837
+ }
838
+ }
839
+ shard.client.emit("threadMemberUpdate", thread ?? {
840
+ id: data.id,
841
+ guild,
842
+ guildID: data.guild_id
843
+ }, threadMember, oldThreadMember);
844
+ }
845
+ async function THREAD_MEMBERS_UPDATE(data, shard) {
846
+ const thread = shard.client.getChannel(data.id);
847
+ const guild = shard.client.guilds.get(data.guild_id);
848
+ const addedMembers = (data.added_members ?? []).map(rawMember => ({
849
+ flags: rawMember.flags,
850
+ id: rawMember.id,
851
+ joinTimestamp: new Date(rawMember.join_timestamp),
852
+ userID: rawMember.user_id
853
+ }));
854
+ const removedMembers = (data.removed_member_ids ?? []).map(id => ({ userID: id, id: data.id }));
855
+ if (thread) {
856
+ thread.memberCount = data.member_count;
857
+ for (const rawMember of addedMembers) {
858
+ const index = thread.members.findIndex(m => m.userID === rawMember.id);
859
+ if (index === -1) {
860
+ thread.members.push(rawMember);
861
+ }
862
+ else {
863
+ thread.members[index] = rawMember;
864
+ }
865
+ }
866
+ for (const [index, { userID }] of removedMembers.entries()) {
867
+ const memberIndex = thread.members.findIndex(m => m.userID === userID);
868
+ if (memberIndex !== -1) {
869
+ removedMembers[index] = thread.members[memberIndex];
870
+ thread.members.splice(memberIndex, 1);
871
+ }
872
+ }
873
+ }
874
+ shard.client.emit("threadMembersUpdate", thread ?? {
875
+ id: data.id,
876
+ guild,
877
+ guildID: data.guild_id
878
+ }, addedMembers, removedMembers);
879
+ }
880
+ async function THREAD_UPDATE(data, shard) {
881
+ const oldThread = shard.client.getChannel(data.id)?.toJSON() ?? null;
882
+ const thread = shard.client.util.updateThread(data);
883
+ shard.client.emit("threadUpdate", thread, oldThread);
884
+ }
885
+ async function TYPING_START(data, shard) {
886
+ const channel = shard.client.getChannel(data.channel_id) ?? { id: data.channel_id };
887
+ const startTimestamp = new Date(data.timestamp);
888
+ if (data.member) {
889
+ const member = shard.client.util.updateMember(data.guild_id, data.user_id, data.member);
890
+ shard.client.emit("typingStart", channel, member, startTimestamp);
891
+ return;
892
+ }
893
+ const user = shard.client.users.get(data.user_id);
894
+ shard.client.emit("typingStart", channel, user ?? { id: data.user_id }, startTimestamp);
895
+ }
896
+ async function USER_UPDATE(data, shard) {
897
+ const oldUser = shard.client.users.get(data.id)?.toJSON() ?? null;
898
+ shard.client.emit("userUpdate", shard.client.users.update(data), oldUser);
899
+ }
900
+ async function VOICE_CHANNEL_EFFECT_SEND(data, shard) {
901
+ const channel = shard.client.getChannel(data.channel_id);
902
+ const guild = shard.client.guilds.get(data.guild_id);
903
+ const user = guild?.members.get(data.user_id) ?? shard.client.users.get(data.user_id);
904
+ shard.client.emit("voiceChannelEffectSend", channel ?? { id: data.channel_id, guild: guild ?? { id: data.guild_id } }, user ?? { id: data.user_id }, {
905
+ animationID: data.animation_id,
906
+ animationType: data.animation_type
907
+ });
908
+ }
909
+ async function VOICE_STATE_UPDATE(data, shard) {
910
+ if (data.guild_id && data.session_id && data.user_id === shard.client.user.id) {
911
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call
912
+ shard.client.voiceAdapters.get(data.guild_id)?.onVoiceStateUpdate(data);
913
+ }
914
+ // @TODO voice states without guilds?
915
+ if (!data.guild_id || !data.member) {
916
+ return;
917
+ }
918
+ data.self_stream = !!data.self_stream;
919
+ const guild = shard.client.guilds.get(data.guild_id);
920
+ const member = shard.client.util.updateMember(data.guild_id, data.user_id, data.member);
921
+ const oldState = guild?.voiceStates.get(member.id)?.toJSON() ?? null;
922
+ const state = guild?.voiceStates.update({ ...data, id: member.id }) ?? new VoiceState_1.default(data, shard.client);
923
+ member["update"]({ deaf: state.deaf, mute: state.mute });
924
+ if (oldState?.channelID !== state.channelID) {
925
+ const oldChannel = oldState?.channelID ? shard.client.getChannel(oldState.channelID) ?? { id: oldState.channelID } : null;
926
+ const newChannel = state.channel === null ? null : state.channel ?? { id: state.channelID };
927
+ if (newChannel instanceof Channel_1.default) {
928
+ newChannel.voiceMembers.add(member);
929
+ }
930
+ if (oldChannel instanceof Channel_1.default) {
931
+ oldChannel.voiceMembers.delete(member.id);
932
+ }
933
+ if (oldChannel && newChannel) {
934
+ shard.client.emit("voiceChannelSwitch", member, newChannel, oldChannel);
935
+ }
936
+ else if (newChannel) {
937
+ shard.client.emit("voiceChannelJoin", member, newChannel);
938
+ }
939
+ else if (state.channelID === null) {
940
+ shard.client.emit("voiceChannelLeave", member, oldChannel);
941
+ }
942
+ }
943
+ if (!(0, node_util_1.isDeepStrictEqual)(oldState, state.toJSON())) {
944
+ shard.client.emit("voiceStateUpdate", member, oldState);
945
+ }
946
+ }
947
+ async function VOICE_CHANNEL_STATUS_UPDATE(data, shard) {
948
+ shard.client.emit("voiceChannelStatusUpdate", shard.client.getChannel(data.id) ?? { id: data.id }, data.status);
949
+ }
950
+ async function VOICE_SERVER_UPDATE(data, shard) {
951
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call
952
+ shard.client.voiceAdapters.get(data.guild_id)?.onVoiceServerUpdate(data);
953
+ }
954
+ async function WEBHOOKS_UPDATE(data, shard) {
955
+ shard.client.emit("webhooksUpdate", shard.client.guilds.get(data.guild_id) ?? { id: data.guild_id }, shard.client.getChannel(data.channel_id) ?? { id: data.channel_id });
956
+ }