@nanazx/baileys 0.0.0-stage → 1.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 (428) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1547 -2
  3. package/WAProto/GenerateStatics.sh +3 -0
  4. package/WAProto/WAProto.proto +8571 -0
  5. package/WAProto/fix-imports.js +85 -0
  6. package/WAProto/index.d.ts +100898 -0
  7. package/WAProto/index.js +305880 -0
  8. package/engine-requirements.js +10 -0
  9. package/lib/Defaults/index.d.ts +75 -0
  10. package/lib/Defaults/index.d.ts.map +1 -0
  11. package/lib/Defaults/index.js +129 -0
  12. package/lib/Defaults/index.js.map +1 -0
  13. package/lib/Signal/Group/ciphertext-message.d.ts +10 -0
  14. package/lib/Signal/Group/ciphertext-message.d.ts.map +1 -0
  15. package/lib/Signal/Group/ciphertext-message.js +12 -0
  16. package/lib/Signal/Group/ciphertext-message.js.map +1 -0
  17. package/lib/Signal/Group/group-session-builder.d.ts +15 -0
  18. package/lib/Signal/Group/group-session-builder.d.ts.map +1 -0
  19. package/lib/Signal/Group/group-session-builder.js +30 -0
  20. package/lib/Signal/Group/group-session-builder.js.map +1 -0
  21. package/lib/Signal/Group/group_cipher.d.ts +17 -0
  22. package/lib/Signal/Group/group_cipher.d.ts.map +1 -0
  23. package/lib/Signal/Group/group_cipher.js +82 -0
  24. package/lib/Signal/Group/group_cipher.js.map +1 -0
  25. package/lib/Signal/Group/index.d.ts +12 -0
  26. package/lib/Signal/Group/index.d.ts.map +1 -0
  27. package/lib/Signal/Group/index.js +12 -0
  28. package/lib/Signal/Group/index.js.map +1 -0
  29. package/lib/Signal/Group/keyhelper.d.ts +11 -0
  30. package/lib/Signal/Group/keyhelper.d.ts.map +1 -0
  31. package/lib/Signal/Group/keyhelper.js +18 -0
  32. package/lib/Signal/Group/keyhelper.js.map +1 -0
  33. package/lib/Signal/Group/sender-chain-key.d.ts +14 -0
  34. package/lib/Signal/Group/sender-chain-key.d.ts.map +1 -0
  35. package/lib/Signal/Group/sender-chain-key.js +26 -0
  36. package/lib/Signal/Group/sender-chain-key.js.map +1 -0
  37. package/lib/Signal/Group/sender-key-distribution-message.d.ts +17 -0
  38. package/lib/Signal/Group/sender-key-distribution-message.d.ts.map +1 -0
  39. package/lib/Signal/Group/sender-key-distribution-message.js +63 -0
  40. package/lib/Signal/Group/sender-key-distribution-message.js.map +1 -0
  41. package/lib/Signal/Group/sender-key-message.d.ts +19 -0
  42. package/lib/Signal/Group/sender-key-message.d.ts.map +1 -0
  43. package/lib/Signal/Group/sender-key-message.js +66 -0
  44. package/lib/Signal/Group/sender-key-message.js.map +1 -0
  45. package/lib/Signal/Group/sender-key-name.d.ts +18 -0
  46. package/lib/Signal/Group/sender-key-name.d.ts.map +1 -0
  47. package/lib/Signal/Group/sender-key-name.js +48 -0
  48. package/lib/Signal/Group/sender-key-name.js.map +1 -0
  49. package/lib/Signal/Group/sender-key-record.d.ts +31 -0
  50. package/lib/Signal/Group/sender-key-record.d.ts.map +1 -0
  51. package/lib/Signal/Group/sender-key-record.js +41 -0
  52. package/lib/Signal/Group/sender-key-record.js.map +1 -0
  53. package/lib/Signal/Group/sender-key-state.d.ts +39 -0
  54. package/lib/Signal/Group/sender-key-state.d.ts.map +1 -0
  55. package/lib/Signal/Group/sender-key-state.js +84 -0
  56. package/lib/Signal/Group/sender-key-state.js.map +1 -0
  57. package/lib/Signal/Group/sender-message-key.d.ts +12 -0
  58. package/lib/Signal/Group/sender-message-key.d.ts.map +1 -0
  59. package/lib/Signal/Group/sender-message-key.js +26 -0
  60. package/lib/Signal/Group/sender-message-key.js.map +1 -0
  61. package/lib/Signal/libsignal.d.ts +5 -0
  62. package/lib/Signal/libsignal.d.ts.map +1 -0
  63. package/lib/Signal/libsignal.js +431 -0
  64. package/lib/Signal/libsignal.js.map +1 -0
  65. package/lib/Signal/lid-mapping.d.ts +23 -0
  66. package/lib/Signal/lid-mapping.d.ts.map +1 -0
  67. package/lib/Signal/lid-mapping.js +277 -0
  68. package/lib/Signal/lid-mapping.js.map +1 -0
  69. package/lib/Socket/Client/index.d.ts +3 -0
  70. package/lib/Socket/Client/index.d.ts.map +1 -0
  71. package/lib/Socket/Client/index.js +3 -0
  72. package/lib/Socket/Client/index.js.map +1 -0
  73. package/lib/Socket/Client/types.d.ts +16 -0
  74. package/lib/Socket/Client/types.d.ts.map +1 -0
  75. package/lib/Socket/Client/types.js +11 -0
  76. package/lib/Socket/Client/types.js.map +1 -0
  77. package/lib/Socket/Client/websocket.d.ts +13 -0
  78. package/lib/Socket/Client/websocket.d.ts.map +1 -0
  79. package/lib/Socket/Client/websocket.js +54 -0
  80. package/lib/Socket/Client/websocket.js.map +1 -0
  81. package/lib/Socket/aigroups.js +236 -0
  82. package/lib/Socket/business.d.ts +217 -0
  83. package/lib/Socket/business.d.ts.map +1 -0
  84. package/lib/Socket/business.js +379 -0
  85. package/lib/Socket/business.js.map +1 -0
  86. package/lib/Socket/chats.d.ts +125 -0
  87. package/lib/Socket/chats.d.ts.map +1 -0
  88. package/lib/Socket/chats.js +1198 -0
  89. package/lib/Socket/chats.js.map +1 -0
  90. package/lib/Socket/communities.d.ts +273 -0
  91. package/lib/Socket/communities.d.ts.map +1 -0
  92. package/lib/Socket/communities.js +431 -0
  93. package/lib/Socket/communities.js.map +1 -0
  94. package/lib/Socket/graphql.js +907 -0
  95. package/lib/Socket/groups.d.ts +161 -0
  96. package/lib/Socket/groups.d.ts.map +1 -0
  97. package/lib/Socket/groups.js +347 -0
  98. package/lib/Socket/groups.js.map +1 -0
  99. package/lib/Socket/index.d.ts +260 -0
  100. package/lib/Socket/index.d.ts.map +1 -0
  101. package/lib/Socket/index.js +32 -0
  102. package/lib/Socket/index.js.map +1 -0
  103. package/lib/Socket/interactive-handler.js +577 -0
  104. package/lib/Socket/interop.js +562 -0
  105. package/lib/Socket/managed-account.js +210 -0
  106. package/lib/Socket/messages-recv.d.ts +203 -0
  107. package/lib/Socket/messages-recv.d.ts.map +1 -0
  108. package/lib/Socket/messages-recv.js +1772 -0
  109. package/lib/Socket/messages-recv.js.map +1 -0
  110. package/lib/Socket/messages-send.d.ts +199 -0
  111. package/lib/Socket/messages-send.d.ts.map +1 -0
  112. package/lib/Socket/messages-send.js +1145 -0
  113. package/lib/Socket/messages-send.js.map +1 -0
  114. package/lib/Socket/mex.d.ts +3 -0
  115. package/lib/Socket/mex.d.ts.map +1 -0
  116. package/lib/Socket/mex.js +42 -0
  117. package/lib/Socket/mex.js.map +1 -0
  118. package/lib/Socket/newsletter.d.ts +170 -0
  119. package/lib/Socket/newsletter.d.ts.map +1 -0
  120. package/lib/Socket/newsletter.js +181 -0
  121. package/lib/Socket/newsletter.js.map +1 -0
  122. package/lib/Socket/privacy.js +448 -0
  123. package/lib/Socket/registration.js +430 -0
  124. package/lib/Socket/socket.d.ts +59 -0
  125. package/lib/Socket/socket.d.ts.map +1 -0
  126. package/lib/Socket/socket.js +970 -0
  127. package/lib/Socket/socket.js.map +1 -0
  128. package/lib/Socket/username.js +227 -0
  129. package/lib/Store/index.js +4 -0
  130. package/lib/Store/make-cache-manager-store.js +87 -0
  131. package/lib/Store/make-in-memory-store.js +201 -0
  132. package/lib/Store/make-ordered-dictionary.js +47 -0
  133. package/lib/Store/object-repository.js +12 -0
  134. package/lib/Types/Auth.d.ts +117 -0
  135. package/lib/Types/Auth.d.ts.map +1 -0
  136. package/lib/Types/Auth.js +2 -0
  137. package/lib/Types/Auth.js.map +1 -0
  138. package/lib/Types/Bussines.d.ts +25 -0
  139. package/lib/Types/Bussines.d.ts.map +1 -0
  140. package/lib/Types/Bussines.js +2 -0
  141. package/lib/Types/Bussines.js.map +1 -0
  142. package/lib/Types/Call.d.ts +15 -0
  143. package/lib/Types/Call.d.ts.map +1 -0
  144. package/lib/Types/Call.js +2 -0
  145. package/lib/Types/Call.js.map +1 -0
  146. package/lib/Types/Chat.d.ts +124 -0
  147. package/lib/Types/Chat.d.ts.map +1 -0
  148. package/lib/Types/Chat.js +8 -0
  149. package/lib/Types/Chat.js.map +1 -0
  150. package/lib/Types/Contact.d.ts +26 -0
  151. package/lib/Types/Contact.d.ts.map +1 -0
  152. package/lib/Types/Contact.js +2 -0
  153. package/lib/Types/Contact.js.map +1 -0
  154. package/lib/Types/Events.d.ts +256 -0
  155. package/lib/Types/Events.d.ts.map +1 -0
  156. package/lib/Types/Events.js +2 -0
  157. package/lib/Types/Events.js.map +1 -0
  158. package/lib/Types/GroupMetadata.d.ts +71 -0
  159. package/lib/Types/GroupMetadata.d.ts.map +1 -0
  160. package/lib/Types/GroupMetadata.js +2 -0
  161. package/lib/Types/GroupMetadata.js.map +1 -0
  162. package/lib/Types/Label.d.ts +47 -0
  163. package/lib/Types/Label.d.ts.map +1 -0
  164. package/lib/Types/Label.js +25 -0
  165. package/lib/Types/Label.js.map +1 -0
  166. package/lib/Types/LabelAssociation.d.ts +30 -0
  167. package/lib/Types/LabelAssociation.d.ts.map +1 -0
  168. package/lib/Types/LabelAssociation.js +7 -0
  169. package/lib/Types/LabelAssociation.js.map +1 -0
  170. package/lib/Types/Message.d.ts +320 -0
  171. package/lib/Types/Message.d.ts.map +1 -0
  172. package/lib/Types/Message.js +11 -0
  173. package/lib/Types/Message.js.map +1 -0
  174. package/lib/Types/Mex.d.ts +141 -0
  175. package/lib/Types/Mex.d.ts.map +1 -0
  176. package/lib/Types/Mex.js +37 -0
  177. package/lib/Types/Mex.js.map +1 -0
  178. package/lib/Types/Newsletter.js +165 -0
  179. package/lib/Types/Product.d.ts +79 -0
  180. package/lib/Types/Product.d.ts.map +1 -0
  181. package/lib/Types/Product.js +2 -0
  182. package/lib/Types/Product.js.map +1 -0
  183. package/lib/Types/Signal.d.ts +87 -0
  184. package/lib/Types/Signal.d.ts.map +1 -0
  185. package/lib/Types/Signal.js +2 -0
  186. package/lib/Types/Signal.js.map +1 -0
  187. package/lib/Types/Socket.d.ts +136 -0
  188. package/lib/Types/Socket.d.ts.map +1 -0
  189. package/lib/Types/Socket.js +3 -0
  190. package/lib/Types/Socket.js.map +1 -0
  191. package/lib/Types/State.d.ts +97 -0
  192. package/lib/Types/State.d.ts.map +1 -0
  193. package/lib/Types/State.js +56 -0
  194. package/lib/Types/State.js.map +1 -0
  195. package/lib/Types/USync.d.ts +26 -0
  196. package/lib/Types/USync.d.ts.map +1 -0
  197. package/lib/Types/USync.js +2 -0
  198. package/lib/Types/USync.js.map +1 -0
  199. package/lib/Types/index.d.ts +66 -0
  200. package/lib/Types/index.d.ts.map +1 -0
  201. package/lib/Types/index.js +28 -0
  202. package/lib/Types/index.js.map +1 -0
  203. package/lib/Utils/auth-utils.d.ts +24 -0
  204. package/lib/Utils/auth-utils.d.ts.map +1 -0
  205. package/lib/Utils/auth-utils.js +302 -0
  206. package/lib/Utils/auth-utils.js.map +1 -0
  207. package/lib/Utils/browser-utils.d.ts +4 -0
  208. package/lib/Utils/browser-utils.d.ts.map +1 -0
  209. package/lib/Utils/browser-utils.js +29 -0
  210. package/lib/Utils/browser-utils.js.map +1 -0
  211. package/lib/Utils/business.d.ts +23 -0
  212. package/lib/Utils/business.d.ts.map +1 -0
  213. package/lib/Utils/business.js +231 -0
  214. package/lib/Utils/business.js.map +1 -0
  215. package/lib/Utils/chat-utils.d.ts +100 -0
  216. package/lib/Utils/chat-utils.d.ts.map +1 -0
  217. package/lib/Utils/chat-utils.js +872 -0
  218. package/lib/Utils/chat-utils.js.map +1 -0
  219. package/lib/Utils/companion-reg-client-utils.d.ts +17 -0
  220. package/lib/Utils/companion-reg-client-utils.d.ts.map +1 -0
  221. package/lib/Utils/companion-reg-client-utils.js +35 -0
  222. package/lib/Utils/companion-reg-client-utils.js.map +1 -0
  223. package/lib/Utils/consumer-application.js +108 -0
  224. package/lib/Utils/crypto.d.ts +37 -0
  225. package/lib/Utils/crypto.d.ts.map +1 -0
  226. package/lib/Utils/crypto.js +118 -0
  227. package/lib/Utils/crypto.js.map +1 -0
  228. package/lib/Utils/decode-wa-message.d.ts +66 -0
  229. package/lib/Utils/decode-wa-message.d.ts.map +1 -0
  230. package/lib/Utils/decode-wa-message.js +317 -0
  231. package/lib/Utils/decode-wa-message.js.map +1 -0
  232. package/lib/Utils/event-buffer.d.ts +36 -0
  233. package/lib/Utils/event-buffer.d.ts.map +1 -0
  234. package/lib/Utils/event-buffer.js +622 -0
  235. package/lib/Utils/event-buffer.js.map +1 -0
  236. package/lib/Utils/generics.d.ts +92 -0
  237. package/lib/Utils/generics.d.ts.map +1 -0
  238. package/lib/Utils/generics.js +393 -0
  239. package/lib/Utils/generics.js.map +1 -0
  240. package/lib/Utils/group-history.js +55 -0
  241. package/lib/Utils/history.d.ts +24 -0
  242. package/lib/Utils/history.d.ts.map +1 -0
  243. package/lib/Utils/history.js +134 -0
  244. package/lib/Utils/history.js.map +1 -0
  245. package/lib/Utils/identity-change-handler.d.ts +44 -0
  246. package/lib/Utils/identity-change-handler.d.ts.map +1 -0
  247. package/lib/Utils/identity-change-handler.js +50 -0
  248. package/lib/Utils/identity-change-handler.js.map +1 -0
  249. package/lib/Utils/index.d.ts +22 -0
  250. package/lib/Utils/index.d.ts.map +1 -0
  251. package/lib/Utils/index.js +29 -0
  252. package/lib/Utils/index.js.map +1 -0
  253. package/lib/Utils/jid-display-normalization.js +171 -0
  254. package/lib/Utils/link-preview.d.ts +21 -0
  255. package/lib/Utils/link-preview.d.ts.map +1 -0
  256. package/lib/Utils/link-preview.js +85 -0
  257. package/lib/Utils/link-preview.js.map +1 -0
  258. package/lib/Utils/logger.d.ts +12 -0
  259. package/lib/Utils/logger.d.ts.map +1 -0
  260. package/lib/Utils/logger.js +3 -0
  261. package/lib/Utils/logger.js.map +1 -0
  262. package/lib/Utils/lt-hash.d.ts +8 -0
  263. package/lib/Utils/lt-hash.d.ts.map +1 -0
  264. package/lib/Utils/lt-hash.js +8 -0
  265. package/lib/Utils/lt-hash.js.map +1 -0
  266. package/lib/Utils/make-mutex.d.ts +9 -0
  267. package/lib/Utils/make-mutex.d.ts.map +1 -0
  268. package/lib/Utils/make-mutex.js +33 -0
  269. package/lib/Utils/make-mutex.js.map +1 -0
  270. package/lib/Utils/message-composer.js +241 -0
  271. package/lib/Utils/message-inspect.js +180 -0
  272. package/lib/Utils/message-retry-manager.d.ts +115 -0
  273. package/lib/Utils/message-retry-manager.d.ts.map +1 -0
  274. package/lib/Utils/message-retry-manager.js +265 -0
  275. package/lib/Utils/message-retry-manager.js.map +1 -0
  276. package/lib/Utils/messages-media.d.ts +133 -0
  277. package/lib/Utils/messages-media.d.ts.map +1 -0
  278. package/lib/Utils/messages-media.js +788 -0
  279. package/lib/Utils/messages-media.js.map +1 -0
  280. package/lib/Utils/messages.d.ts +91 -0
  281. package/lib/Utils/messages.d.ts.map +1 -0
  282. package/lib/Utils/messages.js +893 -0
  283. package/lib/Utils/messages.js.map +1 -0
  284. package/lib/Utils/meta-ai-msmsg.js +225 -0
  285. package/lib/Utils/noise-handler.d.ts +20 -0
  286. package/lib/Utils/noise-handler.d.ts.map +1 -0
  287. package/lib/Utils/noise-handler.js +201 -0
  288. package/lib/Utils/noise-handler.js.map +1 -0
  289. package/lib/Utils/offline-node-processor.d.ts +17 -0
  290. package/lib/Utils/offline-node-processor.d.ts.map +1 -0
  291. package/lib/Utils/offline-node-processor.js +40 -0
  292. package/lib/Utils/offline-node-processor.js.map +1 -0
  293. package/lib/Utils/pre-key-manager.d.ts +28 -0
  294. package/lib/Utils/pre-key-manager.d.ts.map +1 -0
  295. package/lib/Utils/pre-key-manager.js +106 -0
  296. package/lib/Utils/pre-key-manager.js.map +1 -0
  297. package/lib/Utils/process-message.d.ts +60 -0
  298. package/lib/Utils/process-message.d.ts.map +1 -0
  299. package/lib/Utils/process-message.js +630 -0
  300. package/lib/Utils/process-message.js.map +1 -0
  301. package/lib/Utils/reporting-utils.d.ts +11 -0
  302. package/lib/Utils/reporting-utils.d.ts.map +1 -0
  303. package/lib/Utils/reporting-utils.js +258 -0
  304. package/lib/Utils/reporting-utils.js.map +1 -0
  305. package/lib/Utils/signal.d.ts +47 -0
  306. package/lib/Utils/signal.d.ts.map +1 -0
  307. package/lib/Utils/signal.js +201 -0
  308. package/lib/Utils/signal.js.map +1 -0
  309. package/lib/Utils/stanza-ack.d.ts +11 -0
  310. package/lib/Utils/stanza-ack.d.ts.map +1 -0
  311. package/lib/Utils/stanza-ack.js +38 -0
  312. package/lib/Utils/stanza-ack.js.map +1 -0
  313. package/lib/Utils/sync-action-utils.d.ts +19 -0
  314. package/lib/Utils/sync-action-utils.d.ts.map +1 -0
  315. package/lib/Utils/sync-action-utils.js +49 -0
  316. package/lib/Utils/sync-action-utils.js.map +1 -0
  317. package/lib/Utils/tc-token-utils.d.ts +37 -0
  318. package/lib/Utils/tc-token-utils.d.ts.map +1 -0
  319. package/lib/Utils/tc-token-utils.js +164 -0
  320. package/lib/Utils/tc-token-utils.js.map +1 -0
  321. package/lib/Utils/use-multi-file-auth-state.d.ts +13 -0
  322. package/lib/Utils/use-multi-file-auth-state.d.ts.map +1 -0
  323. package/lib/Utils/use-multi-file-auth-state.js +121 -0
  324. package/lib/Utils/use-multi-file-auth-state.js.map +1 -0
  325. package/lib/Utils/validate-connection.d.ts +11 -0
  326. package/lib/Utils/validate-connection.d.ts.map +1 -0
  327. package/lib/Utils/validate-connection.js +210 -0
  328. package/lib/Utils/validate-connection.js.map +1 -0
  329. package/lib/Utils/voip-rekey.js +24 -0
  330. package/lib/WABinary/constants.d.ts +28 -0
  331. package/lib/WABinary/constants.d.ts.map +1 -0
  332. package/lib/WABinary/constants.js +1301 -0
  333. package/lib/WABinary/constants.js.map +1 -0
  334. package/lib/WABinary/decode.d.ts +7 -0
  335. package/lib/WABinary/decode.d.ts.map +1 -0
  336. package/lib/WABinary/decode.js +262 -0
  337. package/lib/WABinary/decode.js.map +1 -0
  338. package/lib/WABinary/encode.d.ts +3 -0
  339. package/lib/WABinary/encode.d.ts.map +1 -0
  340. package/lib/WABinary/encode.js +220 -0
  341. package/lib/WABinary/encode.js.map +1 -0
  342. package/lib/WABinary/generic-utils.d.ts +15 -0
  343. package/lib/WABinary/generic-utils.d.ts.map +1 -0
  344. package/lib/WABinary/generic-utils.js +113 -0
  345. package/lib/WABinary/generic-utils.js.map +1 -0
  346. package/lib/WABinary/index.d.ts +6 -0
  347. package/lib/WABinary/index.d.ts.map +1 -0
  348. package/lib/WABinary/index.js +6 -0
  349. package/lib/WABinary/index.js.map +1 -0
  350. package/lib/WABinary/jid-utils.d.ts +48 -0
  351. package/lib/WABinary/jid-utils.d.ts.map +1 -0
  352. package/lib/WABinary/jid-utils.js +96 -0
  353. package/lib/WABinary/jid-utils.js.map +1 -0
  354. package/lib/WABinary/types.d.ts +19 -0
  355. package/lib/WABinary/types.d.ts.map +1 -0
  356. package/lib/WABinary/types.js +2 -0
  357. package/lib/WABinary/types.js.map +1 -0
  358. package/lib/WAM/BinaryInfo.d.ts +9 -0
  359. package/lib/WAM/BinaryInfo.d.ts.map +1 -0
  360. package/lib/WAM/BinaryInfo.js +10 -0
  361. package/lib/WAM/BinaryInfo.js.map +1 -0
  362. package/lib/WAM/constants.d.ts +40 -0
  363. package/lib/WAM/constants.d.ts.map +1 -0
  364. package/lib/WAM/constants.js +22853 -0
  365. package/lib/WAM/constants.js.map +1 -0
  366. package/lib/WAM/encode.d.ts +3 -0
  367. package/lib/WAM/encode.d.ts.map +1 -0
  368. package/lib/WAM/encode.js +150 -0
  369. package/lib/WAM/encode.js.map +1 -0
  370. package/lib/WAM/index.d.ts +4 -0
  371. package/lib/WAM/index.d.ts.map +1 -0
  372. package/lib/WAM/index.js +4 -0
  373. package/lib/WAM/index.js.map +1 -0
  374. package/lib/WAUSync/Protocols/USyncBusinessProtocol.js +90 -0
  375. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +10 -0
  376. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts.map +1 -0
  377. package/lib/WAUSync/Protocols/USyncContactProtocol.js +52 -0
  378. package/lib/WAUSync/Protocols/USyncContactProtocol.js.map +1 -0
  379. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +23 -0
  380. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts.map +1 -0
  381. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +54 -0
  382. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js.map +1 -0
  383. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +13 -0
  384. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts.map +1 -0
  385. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +27 -0
  386. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js.map +1 -0
  387. package/lib/WAUSync/Protocols/USyncFeatureProtocol.js +53 -0
  388. package/lib/WAUSync/Protocols/USyncPictureProtocol.js +29 -0
  389. package/lib/WAUSync/Protocols/USyncSidelistProtocol.js +26 -0
  390. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +13 -0
  391. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts.map +1 -0
  392. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +38 -0
  393. package/lib/WAUSync/Protocols/USyncStatusProtocol.js.map +1 -0
  394. package/lib/WAUSync/Protocols/USyncTextStatusProtocol.js +29 -0
  395. package/lib/WAUSync/Protocols/USyncUsernameProtocol.d.ts +10 -0
  396. package/lib/WAUSync/Protocols/USyncUsernameProtocol.d.ts.map +1 -0
  397. package/lib/WAUSync/Protocols/USyncUsernameProtocol.js +25 -0
  398. package/lib/WAUSync/Protocols/USyncUsernameProtocol.js.map +1 -0
  399. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +26 -0
  400. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts.map +1 -0
  401. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +51 -0
  402. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js.map +1 -0
  403. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +10 -0
  404. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts.map +1 -0
  405. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +29 -0
  406. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js.map +1 -0
  407. package/lib/WAUSync/Protocols/index.d.ts +6 -0
  408. package/lib/WAUSync/Protocols/index.d.ts.map +1 -0
  409. package/lib/WAUSync/Protocols/index.js +11 -0
  410. package/lib/WAUSync/Protocols/index.js.map +1 -0
  411. package/lib/WAUSync/USyncBackoff.js +35 -0
  412. package/lib/WAUSync/USyncQuery.d.ts +30 -0
  413. package/lib/WAUSync/USyncQuery.d.ts.map +1 -0
  414. package/lib/WAUSync/USyncQuery.js +98 -0
  415. package/lib/WAUSync/USyncQuery.js.map +1 -0
  416. package/lib/WAUSync/USyncUser.d.ts +17 -0
  417. package/lib/WAUSync/USyncUser.d.ts.map +1 -0
  418. package/lib/WAUSync/USyncUser.js +31 -0
  419. package/lib/WAUSync/USyncUser.js.map +1 -0
  420. package/lib/WAUSync/index.d.ts +4 -0
  421. package/lib/WAUSync/index.d.ts.map +1 -0
  422. package/lib/WAUSync/index.js +5 -0
  423. package/lib/WAUSync/index.js.map +1 -0
  424. package/lib/index.d.ts +12 -0
  425. package/lib/index.d.ts.map +1 -0
  426. package/lib/index.js +12 -0
  427. package/lib/index.js.map +1 -0
  428. package/package.json +134 -4
@@ -0,0 +1,577 @@
1
+ import crypto from 'crypto'
2
+ import { proto } from '../../WAProto/index.js'
3
+ import {
4
+ delay,
5
+ generateMessageID,
6
+ generateWAMessage,
7
+ generateWAMessageContent,
8
+ generateWAMessageFromContent,
9
+ getUrlFromDirectPath,
10
+ normalizeMessageContent,
11
+ prepareWAMessageMedia
12
+ } from '../Utils/index.js'
13
+ import { isJidGroup, isPnUser, jidNormalizedUser, STORIES_JID } from '../WABinary/index.js'
14
+
15
+ class Baron {
16
+ constructor(waUploadToServer, relayMessageFn, config, sock) {
17
+ this.relayMessage = relayMessageFn
18
+ this.waUploadToServer = waUploadToServer
19
+ this.config = config
20
+ this.sock = sock
21
+ }
22
+ detectType(content) {
23
+ if (content.requestPaymentMessage) return 'PAYMENT'
24
+ if (content.productMessage) return 'PRODUCT'
25
+ if (content.interactiveButtons) return 'INTERACTIVE_BUTTONS'
26
+ if (content.interactiveMessage) return 'INTERACTIVE'
27
+ if (content.albumMessage || content.album) return 'ALBUM'
28
+ if (content.eventMessage) return 'EVENT'
29
+ if (content.pollResultMessage) return 'POLL_RESULT'
30
+ if (content.groupStatusMessage) return 'GROUP_STORY'
31
+ return null
32
+ }
33
+ async handlePayment(content, quoted) {
34
+ const data = content.requestPaymentMessage
35
+ let notes = {}
36
+ if (data.sticker?.stickerMessage) {
37
+ notes = {
38
+ stickerMessage: {
39
+ ...data.sticker.stickerMessage,
40
+ contextInfo: {
41
+ stanzaId: quoted?.key?.id,
42
+ participant: quoted?.key?.participant || content.sender,
43
+ quotedMessage: quoted?.message
44
+ }
45
+ }
46
+ }
47
+ } else if (data.note) {
48
+ notes = {
49
+ extendedTextMessage: {
50
+ text: data.note,
51
+ contextInfo: {
52
+ stanzaId: quoted?.key?.id,
53
+ participant: quoted?.key?.participant || content.sender,
54
+ quotedMessage: quoted?.message
55
+ }
56
+ }
57
+ }
58
+ }
59
+ return {
60
+ requestPaymentMessage: proto.Message.RequestPaymentMessage.fromObject({
61
+ expiryTimestamp: data.expiry || 0,
62
+ amount1000: data.amount || 0,
63
+ currencyCodeIso4217: data.currency || 'IDR',
64
+ requestFrom: data.from || '0@s.whatsapp.net',
65
+ noteMessage: notes,
66
+ background: data.background ?? {
67
+ id: 'DEFAULT',
68
+ placeholderArgb: 0xfff0f0f0
69
+ }
70
+ })
71
+ }
72
+ }
73
+ async handleProduct(content, _jid, _quoted) {
74
+ const {
75
+ title,
76
+ description,
77
+ thumbnail,
78
+ productId,
79
+ retailerId,
80
+ url,
81
+ body = '',
82
+ footer = '',
83
+ buttons = [],
84
+ priceAmount1000 = null,
85
+ currencyCode = 'IDR'
86
+ } = content.productMessage
87
+ let productImage
88
+ if (Buffer.isBuffer(thumbnail)) {
89
+ const { imageMessage } = await generateWAMessageContent({ image: thumbnail }, { upload: this.waUploadToServer })
90
+ productImage = imageMessage
91
+ } else if (typeof thumbnail === 'object' && thumbnail.url) {
92
+ const { imageMessage } = await generateWAMessageContent(
93
+ { image: { url: thumbnail.url } },
94
+ { upload: this.waUploadToServer }
95
+ )
96
+ productImage = imageMessage
97
+ }
98
+ return {
99
+ viewOnceMessage: {
100
+ message: {
101
+ interactiveMessage: {
102
+ body: { text: body },
103
+ footer: { text: footer },
104
+ header: {
105
+ title,
106
+ hasMediaAttachment: true,
107
+ productMessage: {
108
+ product: {
109
+ productImage,
110
+ productId,
111
+ title,
112
+ description,
113
+ currencyCode,
114
+ priceAmount1000,
115
+ retailerId,
116
+ url,
117
+ productImageCount: 1
118
+ },
119
+ businessOwnerJid: '0@s.whatsapp.net'
120
+ }
121
+ },
122
+ nativeFlowMessage: { buttons }
123
+ }
124
+ }
125
+ }
126
+ }
127
+ }
128
+ async handleInteractive(content, _jid, _quoted) {
129
+ const {
130
+ title,
131
+ footer,
132
+ thumbnail,
133
+ image,
134
+ video,
135
+ document,
136
+ mimetype,
137
+ fileName,
138
+ jpegThumbnail,
139
+ contextInfo,
140
+ externalAdReply,
141
+ buttons = [],
142
+ nativeFlowMessage,
143
+ header
144
+ } = content.interactiveMessage
145
+ let media = null
146
+ let _mediaType = null
147
+ if (thumbnail) {
148
+ media = await prepareWAMessageMedia({ image: { url: thumbnail } }, { upload: this.waUploadToServer })
149
+ _mediaType = 'image'
150
+ } else if (image) {
151
+ const src = typeof image === 'object' && image.url ? { image: { url: image.url } } : { image }
152
+ media = await prepareWAMessageMedia(src, { upload: this.waUploadToServer })
153
+ _mediaType = 'image'
154
+ } else if (video) {
155
+ const src = typeof video === 'object' && video.url ? { video: { url: video.url } } : { video }
156
+ media = await prepareWAMessageMedia(src, { upload: this.waUploadToServer })
157
+ _mediaType = 'video'
158
+ } else if (document) {
159
+ const docPayload = { document }
160
+ if (jpegThumbnail) {
161
+ docPayload.jpegThumbnail =
162
+ typeof jpegThumbnail === 'object' && jpegThumbnail.url ? { url: jpegThumbnail.url } : jpegThumbnail
163
+ }
164
+ media = await prepareWAMessageMedia(docPayload, { upload: this.waUploadToServer })
165
+ if (fileName) media.documentMessage.fileName = fileName
166
+ if (mimetype) media.documentMessage.mimetype = mimetype
167
+ _mediaType = 'document'
168
+ }
169
+ const interactiveMessage = {
170
+ body: { text: title || '' },
171
+ footer: { text: footer || '' }
172
+ }
173
+ if (buttons && buttons.length > 0) {
174
+ interactiveMessage.nativeFlowMessage = { buttons }
175
+ if (nativeFlowMessage) {
176
+ interactiveMessage.nativeFlowMessage = {
177
+ ...interactiveMessage.nativeFlowMessage,
178
+ ...nativeFlowMessage
179
+ }
180
+ }
181
+ } else if (nativeFlowMessage) {
182
+ interactiveMessage.nativeFlowMessage = nativeFlowMessage
183
+ }
184
+ if (media) {
185
+ interactiveMessage.header = {
186
+ title: header || '',
187
+ hasMediaAttachment: true,
188
+ ...media
189
+ }
190
+ } else {
191
+ interactiveMessage.header = {
192
+ title: header || '',
193
+ hasMediaAttachment: false
194
+ }
195
+ }
196
+ const finalContextInfo = {}
197
+ if (contextInfo) {
198
+ Object.assign(finalContextInfo, {
199
+ mentionedJid: contextInfo.mentionedJid || [],
200
+ forwardingScore: contextInfo.forwardingScore || 0,
201
+ isForwarded: contextInfo.isForwarded || false,
202
+ ...contextInfo
203
+ })
204
+ }
205
+ if (externalAdReply) {
206
+ finalContextInfo.externalAdReply = {
207
+ title: externalAdReply.title || '',
208
+ body: externalAdReply.body || '',
209
+ mediaType: externalAdReply.mediaType || 1,
210
+ thumbnailUrl: externalAdReply.thumbnailUrl || '',
211
+ mediaUrl: externalAdReply.mediaUrl || '',
212
+ sourceUrl: externalAdReply.sourceUrl || '',
213
+ showAdAttribution: externalAdReply.showAdAttribution || false,
214
+ renderLargerThumbnail: externalAdReply.renderLargerThumbnail || false,
215
+ ...externalAdReply
216
+ }
217
+ }
218
+ if (Object.keys(finalContextInfo).length > 0) {
219
+ interactiveMessage.contextInfo = finalContextInfo
220
+ }
221
+ return { interactiveMessage }
222
+ }
223
+ async handleInteractiveButtons(content, _jid, _quoted) {
224
+ const {
225
+ text,
226
+ caption,
227
+ title,
228
+ subtitle,
229
+ footer,
230
+ interactiveButtons,
231
+ hasMediaAttachment,
232
+ image,
233
+ video,
234
+ document,
235
+ mimetype,
236
+ jpegThumbnail,
237
+ location,
238
+ product,
239
+ businessOwnerJid
240
+ } = content
241
+ const bodyText = text || caption || ''
242
+ const buttons = interactiveButtons.map(btn => ({
243
+ name: btn.name,
244
+ buttonParamsJson:
245
+ typeof btn.buttonParamsJson === 'string' ? btn.buttonParamsJson : JSON.stringify(btn.buttonParamsJson)
246
+ }))
247
+ let headerContent = {}
248
+ let mediaAttached = typeof hasMediaAttachment === 'boolean' ? hasMediaAttachment : false
249
+ if (image) {
250
+ const src = typeof image === 'object' && image.url ? { image: { url: image.url } } : { image }
251
+ const uploaded = await prepareWAMessageMedia(src, { upload: this.waUploadToServer })
252
+ headerContent = { ...uploaded }
253
+ mediaAttached = typeof hasMediaAttachment === 'boolean' ? hasMediaAttachment : true
254
+ } else if (video) {
255
+ const src = typeof video === 'object' && video.url ? { video: { url: video.url } } : { video }
256
+ const uploaded = await prepareWAMessageMedia(src, { upload: this.waUploadToServer })
257
+ headerContent = { ...uploaded }
258
+ mediaAttached = typeof hasMediaAttachment === 'boolean' ? hasMediaAttachment : true
259
+ } else if (document) {
260
+ const docPayload =
261
+ typeof document === 'object' && document.url ? { document: { url: document.url } } : { document }
262
+ if (mimetype) docPayload.mimetype = mimetype
263
+ const uploaded = await prepareWAMessageMedia(docPayload, { upload: this.waUploadToServer })
264
+ if (jpegThumbnail) {
265
+ uploaded.documentMessage.jpegThumbnail =
266
+ typeof jpegThumbnail === 'string' ? Buffer.from(jpegThumbnail, 'base64') : jpegThumbnail
267
+ }
268
+ headerContent = { ...uploaded }
269
+ mediaAttached = typeof hasMediaAttachment === 'boolean' ? hasMediaAttachment : true
270
+ } else if (location) {
271
+ headerContent = {
272
+ locationMessage: {
273
+ degreesLatitude: location.degressLatitude || location.degreesLatitude || 0,
274
+ degreesLongitude: location.degressLongitude || location.degreesLongitude || 0,
275
+ name: location.name || ''
276
+ }
277
+ }
278
+ mediaAttached = typeof hasMediaAttachment === 'boolean' ? hasMediaAttachment : true
279
+ } else if (product) {
280
+ let productImage
281
+ if (product.productImage) {
282
+ const imgSrc =
283
+ typeof product.productImage === 'object' && product.productImage.url
284
+ ? { image: { url: product.productImage.url } }
285
+ : { image: product.productImage }
286
+ const uploaded = await prepareWAMessageMedia(imgSrc, { upload: this.waUploadToServer })
287
+ productImage = uploaded.imageMessage
288
+ }
289
+ headerContent = {
290
+ productMessage: {
291
+ product: {
292
+ productImage,
293
+ productId: product.productId,
294
+ title: product.title,
295
+ description: product.description,
296
+ currencyCode: product.currencyCode || 'IDR',
297
+ priceAmount1000: product.priceAmount1000,
298
+ retailerId: product.retailerId,
299
+ url: product.url,
300
+ productImageCount: product.productImageCount || 1
301
+ },
302
+ businessOwnerJid: businessOwnerJid || '0@s.whatsapp.net'
303
+ }
304
+ }
305
+ mediaAttached = typeof hasMediaAttachment === 'boolean' ? hasMediaAttachment : true
306
+ }
307
+ const interactiveMessage = {
308
+ body: { text: bodyText },
309
+ footer: { text: footer || '' },
310
+ header: {
311
+ title: title || '',
312
+ subtitle: subtitle || '',
313
+ hasMediaAttachment: mediaAttached,
314
+ ...headerContent
315
+ },
316
+ nativeFlowMessage: { buttons }
317
+ }
318
+ return {
319
+ viewOnceMessage: {
320
+ message: {
321
+ messageContextInfo: {
322
+ deviceListMetadata: {},
323
+ deviceListMetadataVersion: 2,
324
+ messageSecret: crypto.randomBytes(32)
325
+ },
326
+ interactiveMessage
327
+ }
328
+ }
329
+ }
330
+ }
331
+ async handleAlbum(content, jid, quoted) {
332
+ const array = content.albumMessage || content.album
333
+ const ctxInfo = content.contextInfo || {}
334
+ const album = await generateWAMessageFromContent(
335
+ jid,
336
+ {
337
+ messageContextInfo: {
338
+ messageSecret: crypto.randomBytes(32)
339
+ },
340
+ albumMessage: {
341
+ expectedImageCount: array.filter(a => 'image' in a).length,
342
+ expectedVideoCount: array.filter(a => 'video' in a).length
343
+ }
344
+ },
345
+ { userJid: jidNormalizedUser(this.sock.authState?.creds?.me?.id || '') }
346
+ )
347
+ await this.relayMessage(jid, album.message, {
348
+ messageId: album.key.id
349
+ })
350
+ for (let item of array) {
351
+ if (ctxInfo && Object.keys(ctxInfo).length > 0 && !item.contextInfo) {
352
+ item = { ...item, contextInfo: ctxInfo }
353
+ }
354
+ const img = await generateWAMessage(jid, item, {
355
+ upload: this.waUploadToServer,
356
+ userJid: jidNormalizedUser(this.sock.authState?.creds?.me?.id || '')
357
+ })
358
+ img.message.messageContextInfo = {
359
+ messageSecret: crypto.randomBytes(32),
360
+ messageAssociation: {
361
+ associationType: 1,
362
+ parentMessageKey: album.key
363
+ }
364
+ }
365
+ await this.relayMessage(jid, img.message, {
366
+ messageId: img.key.id
367
+ })
368
+ }
369
+ return album
370
+ }
371
+ async handleEvent(content, jid, quoted) {
372
+ const eventData = content.eventMessage
373
+ const msg = await generateWAMessageFromContent(
374
+ jid,
375
+ {
376
+ viewOnceMessage: {
377
+ message: {
378
+ messageContextInfo: {
379
+ deviceListMetadata: {},
380
+ deviceListMetadataVersion: 2,
381
+ messageSecret: crypto.randomBytes(32)
382
+ },
383
+ eventMessage: {
384
+ isCanceled: eventData.isCanceled || false,
385
+ name: eventData.name,
386
+ description: eventData.description,
387
+ location: eventData.location || {
388
+ degreesLatitude: 0,
389
+ degreesLongitude: 0,
390
+ name: 'Location'
391
+ },
392
+ joinLink: eventData.joinLink || '',
393
+ startTime:
394
+ typeof eventData.startTime === 'string'
395
+ ? parseInt(eventData.startTime, 10)
396
+ : eventData.startTime || Date.now(),
397
+ endTime:
398
+ typeof eventData.endTime === 'string'
399
+ ? parseInt(eventData.endTime, 10)
400
+ : eventData.endTime || Date.now() + 3600000,
401
+ extraGuestsAllowed: eventData.extraGuestsAllowed !== false
402
+ }
403
+ }
404
+ }
405
+ },
406
+ { quoted, userJid: jidNormalizedUser(this.sock.authState?.creds?.me?.id || '') }
407
+ )
408
+ await this.relayMessage(jid, msg.message, {
409
+ messageId: msg.key.id
410
+ })
411
+ return msg
412
+ }
413
+ async handlePollResult(content, jid, quoted) {
414
+ const pollData = content.pollResultMessage
415
+ const msg = await generateWAMessageFromContent(
416
+ jid,
417
+ {
418
+ pollResultSnapshotMessage: {
419
+ name: pollData.name,
420
+ pollVotes: pollData.pollVotes.map(vote => ({
421
+ optionName: vote.optionName,
422
+ optionVoteCount:
423
+ typeof vote.optionVoteCount === 'number' ? vote.optionVoteCount.toString() : vote.optionVoteCount
424
+ }))
425
+ }
426
+ },
427
+ { quoted, userJid: jidNormalizedUser(this.sock.authState?.creds?.me?.id || '') }
428
+ )
429
+ await this.relayMessage(jid, msg.message, {
430
+ messageId: msg.key.id
431
+ })
432
+ return msg
433
+ }
434
+ async handleGroupStory(content, jid, _quoted) {
435
+ const storyData = content.groupStatusMessage
436
+ let waMsgContent
437
+ if (storyData.message) {
438
+ waMsgContent = storyData
439
+ } else {
440
+ waMsgContent = await generateWAMessageContent(storyData, {
441
+ upload: this.waUploadToServer
442
+ })
443
+ }
444
+ const msg = {
445
+ message: {
446
+ groupStatusMessageV2: {
447
+ message: waMsgContent.message || waMsgContent
448
+ }
449
+ }
450
+ }
451
+ return await this.relayMessage(jid, msg.message, {
452
+ messageId: generateMessageID()
453
+ })
454
+ }
455
+ async sendStatusWhatsApp(content, jids = []) {
456
+ const userJid = jidNormalizedUser(this.sock.authState.creds.me.id)
457
+ const allUsers = new Set()
458
+ allUsers.add(userJid)
459
+ for (const id of jids) {
460
+ if (isJidGroup(id)) {
461
+ try {
462
+ const metadata = await this.sock.groupMetadata(id)
463
+ metadata.participants.forEach(p => allUsers.add(jidNormalizedUser(p.id)))
464
+ } catch (error) {
465
+ this.config.logger.error(`Error getting metadata for group ${id}: ${error}`)
466
+ }
467
+ } else if (isPnUser(id)) {
468
+ allUsers.add(jidNormalizedUser(id))
469
+ }
470
+ }
471
+ const uniqueUsers = Array.from(allUsers)
472
+ const getRandomHexColor = () =>
473
+ '#' +
474
+ Math.floor(Math.random() * 16777215)
475
+ .toString(16)
476
+ .padStart(6, '0')
477
+ const isMedia = content.image || content.video || content.audio
478
+ const isAudio = !!content.audio
479
+ const messageContent = { ...content }
480
+ if (isMedia && !isAudio) {
481
+ if (messageContent.text) {
482
+ messageContent.caption = messageContent.text
483
+ delete messageContent.text
484
+ }
485
+ delete messageContent.ptt
486
+ delete messageContent.font
487
+ delete messageContent.backgroundColor
488
+ delete messageContent.textColor
489
+ }
490
+ if (isAudio) {
491
+ delete messageContent.text
492
+ delete messageContent.caption
493
+ delete messageContent.font
494
+ delete messageContent.textColor
495
+ }
496
+ const font = !isMedia ? content.font || Math.floor(Math.random() * 9) : undefined
497
+ const textColor = !isMedia ? content.textColor || getRandomHexColor() : undefined
498
+ const backgroundColor = !isMedia || isAudio ? content.backgroundColor || getRandomHexColor() : undefined
499
+ const ptt = isAudio ? (typeof content.ptt === 'boolean' ? content.ptt : true) : undefined
500
+ import { getUrlInfo } from '../Utils/link-preview.js'
501
+ const msg = await generateWAMessage(STORIES_JID, messageContent, {
502
+ logger: this.config.logger,
503
+ userJid,
504
+ getUrlInfo: text =>
505
+ getUrlInfo(text, {
506
+ thumbnailWidth: this.config.linkPreviewImageThumbnailWidth,
507
+ fetchOpts: { timeout: 3000, ...(this.config.options || {}) },
508
+ logger: this.config.logger,
509
+ uploadImage: this.config.generateHighQualityLinkPreview ? this.waUploadToServer : undefined
510
+ }),
511
+ upload: this.waUploadToServer,
512
+ mediaCache: this.config.mediaCache,
513
+ options: this.config.options,
514
+ font,
515
+ textColor,
516
+ backgroundColor,
517
+ ptt
518
+ })
519
+ await this.relayMessage(STORIES_JID, msg.message, {
520
+ messageId: msg.key.id,
521
+ statusJidList: uniqueUsers,
522
+ additionalNodes: [
523
+ {
524
+ tag: 'meta',
525
+ attrs: {},
526
+ content: [
527
+ {
528
+ tag: 'mentioned_users',
529
+ attrs: {},
530
+ content: jids.map(jid => ({
531
+ tag: 'to',
532
+ attrs: { jid: jidNormalizedUser(jid) }
533
+ }))
534
+ }
535
+ ]
536
+ }
537
+ ]
538
+ })
539
+ for (const id of jids) {
540
+ try {
541
+ const normalizedId = jidNormalizedUser(id)
542
+ const isPrivate = isPnUser(normalizedId)
543
+ const type = isPrivate ? 'statusMentionMessage' : 'groupStatusMentionMessage'
544
+ const protocolMessage = {
545
+ [type]: {
546
+ message: {
547
+ protocolMessage: {
548
+ key: msg.key,
549
+ type: 25
550
+ }
551
+ }
552
+ },
553
+ messageContextInfo: {
554
+ messageSecret: crypto.randomBytes(32)
555
+ }
556
+ }
557
+ const statusMsg = await generateWAMessageFromContent(normalizedId, protocolMessage, {
558
+ userJid: jidNormalizedUser(this.sock.authState?.creds?.me?.id || '')
559
+ })
560
+ await this.relayMessage(normalizedId, statusMsg.message, {
561
+ additionalNodes: [
562
+ {
563
+ tag: 'meta',
564
+ attrs: isPrivate ? { is_status_mention: 'true' } : { is_group_status_mention: 'true' }
565
+ }
566
+ ]
567
+ })
568
+ await delay(2000)
569
+ } catch (error) {
570
+ this.config.logger.error(`Error sending to ${id}: ${error}`)
571
+ }
572
+ }
573
+ return msg
574
+ }
575
+ }
576
+
577
+ export { Baron };