@shandow/baileys 0.0.0-stage → 17.1.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 (400) hide show
  1. package/LICENSE +21 -0
  2. package/WAProto/GenerateStatics.sh +3 -0
  3. package/WAProto/WAProto.proto +6035 -0
  4. package/WAProto/fix-imports.js +81 -0
  5. package/WAProto/index.d.ts +2 -0
  6. package/WAProto/index.js +132326 -0
  7. package/lib/Defaults/index.d.ts +74 -0
  8. package/lib/Defaults/index.d.ts.map +1 -0
  9. package/lib/Defaults/index.js +137 -0
  10. package/lib/Defaults/index.js.map +1 -0
  11. package/lib/Signal/Group/ciphertext-message.d.ts +10 -0
  12. package/lib/Signal/Group/ciphertext-message.d.ts.map +1 -0
  13. package/lib/Signal/Group/ciphertext-message.js +12 -0
  14. package/lib/Signal/Group/ciphertext-message.js.map +1 -0
  15. package/lib/Signal/Group/group-session-builder.d.ts +15 -0
  16. package/lib/Signal/Group/group-session-builder.d.ts.map +1 -0
  17. package/lib/Signal/Group/group-session-builder.js +30 -0
  18. package/lib/Signal/Group/group-session-builder.js.map +1 -0
  19. package/lib/Signal/Group/group_cipher.d.ts +17 -0
  20. package/lib/Signal/Group/group_cipher.d.ts.map +1 -0
  21. package/lib/Signal/Group/group_cipher.js +82 -0
  22. package/lib/Signal/Group/group_cipher.js.map +1 -0
  23. package/lib/Signal/Group/index.d.ts +12 -0
  24. package/lib/Signal/Group/index.d.ts.map +1 -0
  25. package/lib/Signal/Group/index.js +12 -0
  26. package/lib/Signal/Group/index.js.map +1 -0
  27. package/lib/Signal/Group/keyhelper.d.ts +11 -0
  28. package/lib/Signal/Group/keyhelper.d.ts.map +1 -0
  29. package/lib/Signal/Group/keyhelper.js +18 -0
  30. package/lib/Signal/Group/keyhelper.js.map +1 -0
  31. package/lib/Signal/Group/sender-chain-key.d.ts +14 -0
  32. package/lib/Signal/Group/sender-chain-key.d.ts.map +1 -0
  33. package/lib/Signal/Group/sender-chain-key.js +26 -0
  34. package/lib/Signal/Group/sender-chain-key.js.map +1 -0
  35. package/lib/Signal/Group/sender-key-distribution-message.d.ts +17 -0
  36. package/lib/Signal/Group/sender-key-distribution-message.d.ts.map +1 -0
  37. package/lib/Signal/Group/sender-key-distribution-message.js +63 -0
  38. package/lib/Signal/Group/sender-key-distribution-message.js.map +1 -0
  39. package/lib/Signal/Group/sender-key-message.d.ts +19 -0
  40. package/lib/Signal/Group/sender-key-message.d.ts.map +1 -0
  41. package/lib/Signal/Group/sender-key-message.js +66 -0
  42. package/lib/Signal/Group/sender-key-message.js.map +1 -0
  43. package/lib/Signal/Group/sender-key-name.d.ts +18 -0
  44. package/lib/Signal/Group/sender-key-name.d.ts.map +1 -0
  45. package/lib/Signal/Group/sender-key-name.js +48 -0
  46. package/lib/Signal/Group/sender-key-name.js.map +1 -0
  47. package/lib/Signal/Group/sender-key-record.d.ts +31 -0
  48. package/lib/Signal/Group/sender-key-record.d.ts.map +1 -0
  49. package/lib/Signal/Group/sender-key-record.js +41 -0
  50. package/lib/Signal/Group/sender-key-record.js.map +1 -0
  51. package/lib/Signal/Group/sender-key-state.d.ts +39 -0
  52. package/lib/Signal/Group/sender-key-state.d.ts.map +1 -0
  53. package/lib/Signal/Group/sender-key-state.js +84 -0
  54. package/lib/Signal/Group/sender-key-state.js.map +1 -0
  55. package/lib/Signal/Group/sender-message-key.d.ts +12 -0
  56. package/lib/Signal/Group/sender-message-key.d.ts.map +1 -0
  57. package/lib/Signal/Group/sender-message-key.js +26 -0
  58. package/lib/Signal/Group/sender-message-key.js.map +1 -0
  59. package/lib/Signal/libsignal.d.ts +5 -0
  60. package/lib/Signal/libsignal.d.ts.map +1 -0
  61. package/lib/Signal/libsignal.js +403 -0
  62. package/lib/Signal/libsignal.js.map +1 -0
  63. package/lib/Signal/lid-mapping.d.ts +19 -0
  64. package/lib/Signal/lid-mapping.d.ts.map +1 -0
  65. package/lib/Signal/lid-mapping.js +271 -0
  66. package/lib/Signal/lid-mapping.js.map +1 -0
  67. package/lib/Socket/Client/index.d.ts +3 -0
  68. package/lib/Socket/Client/index.d.ts.map +1 -0
  69. package/lib/Socket/Client/index.js +3 -0
  70. package/lib/Socket/Client/index.js.map +1 -0
  71. package/lib/Socket/Client/types.d.ts +16 -0
  72. package/lib/Socket/Client/types.d.ts.map +1 -0
  73. package/lib/Socket/Client/types.js +11 -0
  74. package/lib/Socket/Client/types.js.map +1 -0
  75. package/lib/Socket/Client/websocket.d.ts +13 -0
  76. package/lib/Socket/Client/websocket.d.ts.map +1 -0
  77. package/lib/Socket/Client/websocket.js +54 -0
  78. package/lib/Socket/Client/websocket.js.map +1 -0
  79. package/lib/Socket/business.d.ts +536 -0
  80. package/lib/Socket/business.d.ts.map +1 -0
  81. package/lib/Socket/business.js +422 -0
  82. package/lib/Socket/business.js.map +1 -0
  83. package/lib/Socket/chats.d.ts +111 -0
  84. package/lib/Socket/chats.d.ts.map +1 -0
  85. package/lib/Socket/chats.js +991 -0
  86. package/lib/Socket/chats.js.map +1 -0
  87. package/lib/Socket/communities.d.ts +645 -0
  88. package/lib/Socket/communities.d.ts.map +1 -0
  89. package/lib/Socket/communities.js +431 -0
  90. package/lib/Socket/communities.js.map +1 -0
  91. package/lib/Socket/dugong.d.ts +130 -0
  92. package/lib/Socket/dugong.d.ts.map +1 -0
  93. package/lib/Socket/dugong.js +781 -0
  94. package/lib/Socket/dugong.js.map +1 -0
  95. package/lib/Socket/groups.d.ts +150 -0
  96. package/lib/Socket/groups.d.ts.map +1 -0
  97. package/lib/Socket/groups.js +327 -0
  98. package/lib/Socket/groups.js.map +1 -0
  99. package/lib/Socket/index.d.ts +636 -0
  100. package/lib/Socket/index.d.ts.map +1 -0
  101. package/lib/Socket/index.js +13 -0
  102. package/lib/Socket/index.js.map +1 -0
  103. package/lib/Socket/messages-recv.d.ts +238 -0
  104. package/lib/Socket/messages-recv.d.ts.map +1 -0
  105. package/lib/Socket/messages-recv.js +1308 -0
  106. package/lib/Socket/messages-recv.js.map +1 -0
  107. package/lib/Socket/messages-send.d.ts +579 -0
  108. package/lib/Socket/messages-send.d.ts.map +1 -0
  109. package/lib/Socket/messages-send.js +1617 -0
  110. package/lib/Socket/mex.d.ts +3 -0
  111. package/lib/Socket/mex.d.ts.map +1 -0
  112. package/lib/Socket/mex.js +48 -0
  113. package/lib/Socket/mex.js.map +1 -0
  114. package/lib/Socket/newsletter.d.ts +176 -0
  115. package/lib/Socket/newsletter.d.ts.map +1 -0
  116. package/lib/Socket/newsletter.js +314 -0
  117. package/lib/Socket/newsletter.js.map +1 -0
  118. package/lib/Socket/socket.d.ts +55 -0
  119. package/lib/Socket/socket.d.ts.map +1 -0
  120. package/lib/Socket/socket.js +936 -0
  121. package/lib/Socket/socket.js.map +1 -0
  122. package/lib/Types/Auth.d.ts +116 -0
  123. package/lib/Types/Auth.d.ts.map +1 -0
  124. package/lib/Types/Auth.js +2 -0
  125. package/lib/Types/Auth.js.map +1 -0
  126. package/lib/Types/Bussines.d.ts +37 -0
  127. package/lib/Types/Bussines.d.ts.map +1 -0
  128. package/lib/Types/Bussines.js +2 -0
  129. package/lib/Types/Bussines.js.map +1 -0
  130. package/lib/Types/Call.d.ts +15 -0
  131. package/lib/Types/Call.d.ts.map +1 -0
  132. package/lib/Types/Call.js +2 -0
  133. package/lib/Types/Call.js.map +1 -0
  134. package/lib/Types/Chat.d.ts +123 -0
  135. package/lib/Types/Chat.d.ts.map +1 -0
  136. package/lib/Types/Chat.js +8 -0
  137. package/lib/Types/Chat.js.map +1 -0
  138. package/lib/Types/Contact.d.ts +24 -0
  139. package/lib/Types/Contact.d.ts.map +1 -0
  140. package/lib/Types/Contact.js +2 -0
  141. package/lib/Types/Contact.js.map +1 -0
  142. package/lib/Types/Events.d.ts +237 -0
  143. package/lib/Types/Events.d.ts.map +1 -0
  144. package/lib/Types/Events.js +2 -0
  145. package/lib/Types/Events.js.map +1 -0
  146. package/lib/Types/GroupMetadata.d.ts +68 -0
  147. package/lib/Types/GroupMetadata.d.ts.map +1 -0
  148. package/lib/Types/GroupMetadata.js +2 -0
  149. package/lib/Types/GroupMetadata.js.map +1 -0
  150. package/lib/Types/Label.d.ts +47 -0
  151. package/lib/Types/Label.d.ts.map +1 -0
  152. package/lib/Types/Label.js +25 -0
  153. package/lib/Types/Label.js.map +1 -0
  154. package/lib/Types/LabelAssociation.d.ts +30 -0
  155. package/lib/Types/LabelAssociation.d.ts.map +1 -0
  156. package/lib/Types/LabelAssociation.js +7 -0
  157. package/lib/Types/LabelAssociation.js.map +1 -0
  158. package/lib/Types/Message.d.ts +422 -0
  159. package/lib/Types/Message.d.ts.map +1 -0
  160. package/lib/Types/Message.js +11 -0
  161. package/lib/Types/Message.js.map +1 -0
  162. package/lib/Types/Newsletter.d.ts +135 -0
  163. package/lib/Types/Newsletter.d.ts.map +1 -0
  164. package/lib/Types/Newsletter.js +31 -0
  165. package/lib/Types/Newsletter.js.map +1 -0
  166. package/lib/Types/Product.d.ts +79 -0
  167. package/lib/Types/Product.d.ts.map +1 -0
  168. package/lib/Types/Product.js +2 -0
  169. package/lib/Types/Product.js.map +1 -0
  170. package/lib/Types/Signal.d.ts +76 -0
  171. package/lib/Types/Signal.d.ts.map +1 -0
  172. package/lib/Types/Signal.js +2 -0
  173. package/lib/Types/Signal.js.map +1 -0
  174. package/lib/Types/Socket.d.ts +152 -0
  175. package/lib/Types/Socket.d.ts.map +1 -0
  176. package/lib/Types/Socket.js +3 -0
  177. package/lib/Types/Socket.js.map +1 -0
  178. package/lib/Types/State.d.ts +39 -0
  179. package/lib/Types/State.d.ts.map +1 -0
  180. package/lib/Types/State.js +13 -0
  181. package/lib/Types/State.js.map +1 -0
  182. package/lib/Types/USync.d.ts +26 -0
  183. package/lib/Types/USync.d.ts.map +1 -0
  184. package/lib/Types/USync.js +2 -0
  185. package/lib/Types/USync.js.map +1 -0
  186. package/lib/Types/index.d.ts +66 -0
  187. package/lib/Types/index.d.ts.map +1 -0
  188. package/lib/Types/index.js +33 -0
  189. package/lib/Types/index.js.map +1 -0
  190. package/lib/Utils/auth-utils.d.ts +19 -0
  191. package/lib/Utils/auth-utils.d.ts.map +1 -0
  192. package/lib/Utils/auth-utils.js +290 -0
  193. package/lib/Utils/auth-utils.js.map +1 -0
  194. package/lib/Utils/browser-utils.d.ts +4 -0
  195. package/lib/Utils/browser-utils.d.ts.map +1 -0
  196. package/lib/Utils/browser-utils.js +28 -0
  197. package/lib/Utils/browser-utils.js.map +1 -0
  198. package/lib/Utils/business.d.ts +23 -0
  199. package/lib/Utils/business.d.ts.map +1 -0
  200. package/lib/Utils/business.js +231 -0
  201. package/lib/Utils/business.js.map +1 -0
  202. package/lib/Utils/chat-utils.d.ts +70 -0
  203. package/lib/Utils/chat-utils.d.ts.map +1 -0
  204. package/lib/Utils/chat-utils.js +812 -0
  205. package/lib/Utils/chat-utils.js.map +1 -0
  206. package/lib/Utils/crypto.d.ts +37 -0
  207. package/lib/Utils/crypto.d.ts.map +1 -0
  208. package/lib/Utils/crypto.js +118 -0
  209. package/lib/Utils/crypto.js.map +1 -0
  210. package/lib/Utils/decode-wa-message.d.ts +48 -0
  211. package/lib/Utils/decode-wa-message.d.ts.map +1 -0
  212. package/lib/Utils/decode-wa-message.js +283 -0
  213. package/lib/Utils/decode-wa-message.js.map +1 -0
  214. package/lib/Utils/event-buffer.d.ts +34 -0
  215. package/lib/Utils/event-buffer.d.ts.map +1 -0
  216. package/lib/Utils/event-buffer.js +574 -0
  217. package/lib/Utils/event-buffer.js.map +1 -0
  218. package/lib/Utils/generics.d.ts +91 -0
  219. package/lib/Utils/generics.d.ts.map +1 -0
  220. package/lib/Utils/generics.js +384 -0
  221. package/lib/Utils/generics.js.map +1 -0
  222. package/lib/Utils/history.d.ts +22 -0
  223. package/lib/Utils/history.d.ts.map +1 -0
  224. package/lib/Utils/history.js +131 -0
  225. package/lib/Utils/history.js.map +1 -0
  226. package/lib/Utils/identity-change-handler.d.ts +37 -0
  227. package/lib/Utils/identity-change-handler.d.ts.map +1 -0
  228. package/lib/Utils/identity-change-handler.js +49 -0
  229. package/lib/Utils/identity-change-handler.js.map +1 -0
  230. package/lib/Utils/index.d.ts +23 -0
  231. package/lib/Utils/index.d.ts.map +1 -0
  232. package/lib/Utils/index.js +23 -0
  233. package/lib/Utils/index.js.map +1 -0
  234. package/lib/Utils/link-preview.d.ts +21 -0
  235. package/lib/Utils/link-preview.d.ts.map +1 -0
  236. package/lib/Utils/link-preview.js +85 -0
  237. package/lib/Utils/link-preview.js.map +1 -0
  238. package/lib/Utils/logger.d.ts +13 -0
  239. package/lib/Utils/logger.d.ts.map +1 -0
  240. package/lib/Utils/logger.js +3 -0
  241. package/lib/Utils/logger.js.map +1 -0
  242. package/lib/Utils/lt-hash.d.ts +8 -0
  243. package/lib/Utils/lt-hash.d.ts.map +1 -0
  244. package/lib/Utils/lt-hash.js +8 -0
  245. package/lib/Utils/lt-hash.js.map +1 -0
  246. package/lib/Utils/make-mutex.d.ts +9 -0
  247. package/lib/Utils/make-mutex.d.ts.map +1 -0
  248. package/lib/Utils/make-mutex.js +33 -0
  249. package/lib/Utils/make-mutex.js.map +1 -0
  250. package/lib/Utils/message-retry-manager.d.ts +110 -0
  251. package/lib/Utils/message-retry-manager.d.ts.map +1 -0
  252. package/lib/Utils/message-retry-manager.js +225 -0
  253. package/lib/Utils/message-retry-manager.js.map +1 -0
  254. package/lib/Utils/messages-media.d.ts +130 -0
  255. package/lib/Utils/messages-media.d.ts.map +1 -0
  256. package/lib/Utils/messages-media.js +782 -0
  257. package/lib/Utils/messages-media.js.map +1 -0
  258. package/lib/Utils/messages.d.ts +91 -0
  259. package/lib/Utils/messages.d.ts.map +1 -0
  260. package/lib/Utils/messages.js +1238 -0
  261. package/lib/Utils/messages.js.map +1 -0
  262. package/lib/Utils/noise-handler.d.ts +20 -0
  263. package/lib/Utils/noise-handler.d.ts.map +1 -0
  264. package/lib/Utils/noise-handler.js +201 -0
  265. package/lib/Utils/noise-handler.js.map +1 -0
  266. package/lib/Utils/offline-node-processor.d.ts +17 -0
  267. package/lib/Utils/offline-node-processor.d.ts.map +1 -0
  268. package/lib/Utils/offline-node-processor.js +40 -0
  269. package/lib/Utils/offline-node-processor.js.map +1 -0
  270. package/lib/Utils/pre-key-manager.d.ts +28 -0
  271. package/lib/Utils/pre-key-manager.d.ts.map +1 -0
  272. package/lib/Utils/pre-key-manager.js +106 -0
  273. package/lib/Utils/pre-key-manager.js.map +1 -0
  274. package/lib/Utils/process-message.d.ts +60 -0
  275. package/lib/Utils/process-message.d.ts.map +1 -0
  276. package/lib/Utils/process-message.js +528 -0
  277. package/lib/Utils/process-message.js.map +1 -0
  278. package/lib/Utils/reporting-utils.d.ts +11 -0
  279. package/lib/Utils/reporting-utils.d.ts.map +1 -0
  280. package/lib/Utils/reporting-utils.js +258 -0
  281. package/lib/Utils/reporting-utils.js.map +1 -0
  282. package/lib/Utils/rich-messages.d.ts +277 -0
  283. package/lib/Utils/rich-messages.d.ts.map +1 -0
  284. package/lib/Utils/rich-messages.js +1144 -0
  285. package/lib/Utils/rich-messages.js.map +1 -0
  286. package/lib/Utils/signal.d.ts +34 -0
  287. package/lib/Utils/signal.d.ts.map +1 -0
  288. package/lib/Utils/signal.js +159 -0
  289. package/lib/Utils/signal.js.map +1 -0
  290. package/lib/Utils/stanza-ack.d.ts +11 -0
  291. package/lib/Utils/stanza-ack.d.ts.map +1 -0
  292. package/lib/Utils/stanza-ack.js +38 -0
  293. package/lib/Utils/stanza-ack.js.map +1 -0
  294. package/lib/Utils/sticker-pack.d.ts +10 -0
  295. package/lib/Utils/sticker-pack.js +111 -0
  296. package/lib/Utils/sync-action-utils.d.ts +19 -0
  297. package/lib/Utils/sync-action-utils.d.ts.map +1 -0
  298. package/lib/Utils/sync-action-utils.js +48 -0
  299. package/lib/Utils/sync-action-utils.js.map +1 -0
  300. package/lib/Utils/tc-token-utils.d.ts +12 -0
  301. package/lib/Utils/tc-token-utils.d.ts.map +1 -0
  302. package/lib/Utils/tc-token-utils.js +18 -0
  303. package/lib/Utils/tc-token-utils.js.map +1 -0
  304. package/lib/Utils/use-multi-file-auth-state.d.ts +13 -0
  305. package/lib/Utils/use-multi-file-auth-state.d.ts.map +1 -0
  306. package/lib/Utils/use-multi-file-auth-state.js +121 -0
  307. package/lib/Utils/use-multi-file-auth-state.js.map +1 -0
  308. package/lib/Utils/validate-connection.d.ts +11 -0
  309. package/lib/Utils/validate-connection.d.ts.map +1 -0
  310. package/lib/Utils/validate-connection.js +200 -0
  311. package/lib/Utils/validate-connection.js.map +1 -0
  312. package/lib/WABinary/constants.d.ts +28 -0
  313. package/lib/WABinary/constants.d.ts.map +1 -0
  314. package/lib/WABinary/constants.js +1301 -0
  315. package/lib/WABinary/constants.js.map +1 -0
  316. package/lib/WABinary/decode.d.ts +7 -0
  317. package/lib/WABinary/decode.d.ts.map +1 -0
  318. package/lib/WABinary/decode.js +262 -0
  319. package/lib/WABinary/decode.js.map +1 -0
  320. package/lib/WABinary/encode.d.ts +3 -0
  321. package/lib/WABinary/encode.d.ts.map +1 -0
  322. package/lib/WABinary/encode.js +220 -0
  323. package/lib/WABinary/encode.js.map +1 -0
  324. package/lib/WABinary/generic-utils.d.ts +17 -0
  325. package/lib/WABinary/generic-utils.d.ts.map +1 -0
  326. package/lib/WABinary/generic-utils.js +200 -0
  327. package/lib/WABinary/index.d.ts +6 -0
  328. package/lib/WABinary/index.d.ts.map +1 -0
  329. package/lib/WABinary/index.js +6 -0
  330. package/lib/WABinary/index.js.map +1 -0
  331. package/lib/WABinary/jid-utils.d.ts +48 -0
  332. package/lib/WABinary/jid-utils.d.ts.map +1 -0
  333. package/lib/WABinary/jid-utils.js +96 -0
  334. package/lib/WABinary/jid-utils.js.map +1 -0
  335. package/lib/WABinary/types.d.ts +19 -0
  336. package/lib/WABinary/types.d.ts.map +1 -0
  337. package/lib/WABinary/types.js +2 -0
  338. package/lib/WABinary/types.js.map +1 -0
  339. package/lib/WAM/BinaryInfo.d.ts +9 -0
  340. package/lib/WAM/BinaryInfo.d.ts.map +1 -0
  341. package/lib/WAM/BinaryInfo.js +10 -0
  342. package/lib/WAM/BinaryInfo.js.map +1 -0
  343. package/lib/WAM/constants.d.ts +40 -0
  344. package/lib/WAM/constants.d.ts.map +1 -0
  345. package/lib/WAM/constants.js +22853 -0
  346. package/lib/WAM/constants.js.map +1 -0
  347. package/lib/WAM/encode.d.ts +3 -0
  348. package/lib/WAM/encode.d.ts.map +1 -0
  349. package/lib/WAM/encode.js +150 -0
  350. package/lib/WAM/encode.js.map +1 -0
  351. package/lib/WAM/index.d.ts +4 -0
  352. package/lib/WAM/index.d.ts.map +1 -0
  353. package/lib/WAM/index.js +4 -0
  354. package/lib/WAM/index.js.map +1 -0
  355. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +10 -0
  356. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts.map +1 -0
  357. package/lib/WAUSync/Protocols/USyncContactProtocol.js +29 -0
  358. package/lib/WAUSync/Protocols/USyncContactProtocol.js.map +1 -0
  359. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +23 -0
  360. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts.map +1 -0
  361. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +54 -0
  362. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js.map +1 -0
  363. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +13 -0
  364. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts.map +1 -0
  365. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +27 -0
  366. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js.map +1 -0
  367. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +13 -0
  368. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts.map +1 -0
  369. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +38 -0
  370. package/lib/WAUSync/Protocols/USyncStatusProtocol.js.map +1 -0
  371. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +26 -0
  372. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts.map +1 -0
  373. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +51 -0
  374. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js.map +1 -0
  375. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +10 -0
  376. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts.map +1 -0
  377. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +29 -0
  378. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js.map +1 -0
  379. package/lib/WAUSync/Protocols/index.d.ts +5 -0
  380. package/lib/WAUSync/Protocols/index.d.ts.map +1 -0
  381. package/lib/WAUSync/Protocols/index.js +5 -0
  382. package/lib/WAUSync/Protocols/index.js.map +1 -0
  383. package/lib/WAUSync/USyncQuery.d.ts +29 -0
  384. package/lib/WAUSync/USyncQuery.d.ts.map +1 -0
  385. package/lib/WAUSync/USyncQuery.js +94 -0
  386. package/lib/WAUSync/USyncQuery.js.map +1 -0
  387. package/lib/WAUSync/USyncUser.d.ts +13 -0
  388. package/lib/WAUSync/USyncUser.d.ts.map +1 -0
  389. package/lib/WAUSync/USyncUser.js +23 -0
  390. package/lib/WAUSync/USyncUser.js.map +1 -0
  391. package/lib/WAUSync/index.d.ts +4 -0
  392. package/lib/WAUSync/index.d.ts.map +1 -0
  393. package/lib/WAUSync/index.js +4 -0
  394. package/lib/WAUSync/index.js.map +1 -0
  395. package/lib/index.d.ts +13 -0
  396. package/lib/index.d.ts.map +1 -0
  397. package/lib/index.js +12 -0
  398. package/lib/index.js.map +1 -0
  399. package/package.json +67 -4
  400. package/README.md +0 -3
@@ -0,0 +1,781 @@
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 {
14
+ isJidGroup,
15
+ isPnUser,
16
+ jidNormalizedUser,
17
+ STORIES_JID,
18
+ } from "../WABinary/index.js";
19
+ export class Dugong {
20
+ constructor(waUploadToServer, relayMessageFn, config, sock) {
21
+ this.relayMessage = relayMessageFn;
22
+ this.waUploadToServer = waUploadToServer;
23
+ this.config = config;
24
+ this.sock = sock;
25
+ }
26
+ detectType(content) {
27
+ if (content.requestPaymentMessage) return "PAYMENT";
28
+ if (content.productMessage) return "PRODUCT";
29
+ if (content.interactiveButtons) return "INTERACTIVE_BUTTONS";
30
+ if (content.interactiveMessage?.carouselMessage) return "CAROUSEL";
31
+ if (content.interactiveMessage) return "INTERACTIVE";
32
+ if (content.albumMessage || content.album) return "ALBUM";
33
+ if (content.eventMessage) return "EVENT";
34
+ if (content.pollResultMessage) return "POLL_RESULT";
35
+ if (content.groupStatusMessage) return "GROUP_STORY";
36
+ return null;
37
+ }
38
+ async handlePayment(content, quoted) {
39
+ const data = content.requestPaymentMessage;
40
+ let notes = {};
41
+ if (data.sticker?.stickerMessage) {
42
+ notes = {
43
+ stickerMessage: {
44
+ ...data.sticker.stickerMessage,
45
+ contextInfo: {
46
+ stanzaId: quoted?.key?.id,
47
+ participant: quoted?.key?.participant || content.sender,
48
+ quotedMessage: quoted?.message,
49
+ },
50
+ },
51
+ };
52
+ } else if (data.note) {
53
+ notes = {
54
+ extendedTextMessage: {
55
+ text: data.note,
56
+ contextInfo: {
57
+ stanzaId: quoted?.key?.id,
58
+ participant: quoted?.key?.participant || content.sender,
59
+ quotedMessage: quoted?.message,
60
+ },
61
+ },
62
+ };
63
+ }
64
+ return {
65
+ requestPaymentMessage: proto.Message.RequestPaymentMessage.fromObject({
66
+ expiryTimestamp: data.expiry || 0,
67
+ amount1000: data.amount || 0,
68
+ currencyCodeIso4217: data.currency || "IDR",
69
+ requestFrom: data.from || "0@s.whatsapp.net",
70
+ noteMessage: notes,
71
+ background: data.background ?? {
72
+ id: "DEFAULT",
73
+ placeholderArgb: 0xfff0f0f0,
74
+ },
75
+ }),
76
+ };
77
+ }
78
+ async handleProduct(content, jid, _quoted) {
79
+ const {
80
+ title,
81
+ description,
82
+ thumbnail,
83
+ productId,
84
+ retailerId,
85
+ url,
86
+ body = "",
87
+ footer = "",
88
+ buttons = [],
89
+ priceAmount1000 = null,
90
+ currencyCode = "IDR",
91
+ } = content.productMessage;
92
+ let productImage;
93
+ if (Buffer.isBuffer(thumbnail)) {
94
+ const { imageMessage } = await generateWAMessageContent(
95
+ { image: thumbnail },
96
+ { upload: this.waUploadToServer,
97
+ jid },
98
+ );
99
+ productImage = imageMessage;
100
+ } else if (typeof thumbnail === "object" && thumbnail.url) {
101
+ const { imageMessage } = await generateWAMessageContent(
102
+ { image: { url: thumbnail.url } },
103
+ { upload: this.waUploadToServer,
104
+ jid },
105
+ );
106
+ productImage = imageMessage;
107
+ }
108
+ return {
109
+ viewOnceMessage: {
110
+ message: {
111
+ interactiveMessage: {
112
+ body: { text: body },
113
+ footer: { text: footer },
114
+ header: {
115
+ title,
116
+ hasMediaAttachment: true,
117
+ productMessage: {
118
+ product: {
119
+ productImage,
120
+ productId,
121
+ title,
122
+ description,
123
+ currencyCode,
124
+ priceAmount1000,
125
+ retailerId,
126
+ url,
127
+ productImageCount: 1,
128
+ },
129
+ businessOwnerJid: "0@s.whatsapp.net",
130
+ },
131
+ },
132
+ nativeFlowMessage: { buttons },
133
+ },
134
+ },
135
+ },
136
+ };
137
+ }
138
+ async handleInteractive(content, jid, _quoted) {
139
+ const {
140
+ title,
141
+ footer,
142
+ thumbnail,
143
+ image,
144
+ video,
145
+ document,
146
+ mimetype,
147
+ fileName,
148
+ jpegThumbnail,
149
+ contextInfo,
150
+ externalAdReply,
151
+ buttons = [],
152
+ nativeFlowMessage,
153
+ header,
154
+ } = content.interactiveMessage;
155
+ let media = null;
156
+ let _mediaType = null;
157
+ if (thumbnail) {
158
+ media = await prepareWAMessageMedia(
159
+ { image: { url: thumbnail } },
160
+ { upload: this.waUploadToServer,
161
+ jid },
162
+ );
163
+ _mediaType = "image";
164
+ } else if (image) {
165
+ const src =
166
+ typeof image === "object" && image.url
167
+ ? { image: { url: image.url } }
168
+ : { image };
169
+ media = await prepareWAMessageMedia(src, {
170
+ upload: this.waUploadToServer,
171
+ jid,
172
+ });
173
+ _mediaType = "image";
174
+ } else if (video) {
175
+ const src =
176
+ typeof video === "object" && video.url
177
+ ? { video: { url: video.url } }
178
+ : { video };
179
+ media = await prepareWAMessageMedia(src, {
180
+ upload: this.waUploadToServer,
181
+ jid,
182
+ });
183
+ _mediaType = "video";
184
+ } else if (document) {
185
+ const docPayload = { document };
186
+ if (jpegThumbnail) {
187
+ docPayload.jpegThumbnail =
188
+ typeof jpegThumbnail === "object" && jpegThumbnail.url
189
+ ? { url: jpegThumbnail.url }
190
+ : jpegThumbnail;
191
+ }
192
+ media = await prepareWAMessageMedia(docPayload, {
193
+ upload: this.waUploadToServer,
194
+ jid,
195
+ });
196
+ if (fileName) media.documentMessage.fileName = fileName;
197
+ if (mimetype) media.documentMessage.mimetype = mimetype;
198
+ _mediaType = "document";
199
+ }
200
+ const interactiveMessage = {
201
+ body: { text: title || "" },
202
+ footer: { text: footer || "" },
203
+ };
204
+ if (buttons && buttons.length > 0) {
205
+ interactiveMessage.nativeFlowMessage = { buttons };
206
+ if (nativeFlowMessage) {
207
+ interactiveMessage.nativeFlowMessage = {
208
+ ...interactiveMessage.nativeFlowMessage,
209
+ ...nativeFlowMessage,
210
+ };
211
+ }
212
+ } else if (nativeFlowMessage) {
213
+ interactiveMessage.nativeFlowMessage = nativeFlowMessage;
214
+ }
215
+ if (media) {
216
+ interactiveMessage.header = {
217
+ title: header || "",
218
+ hasMediaAttachment: true,
219
+ ...media,
220
+ };
221
+ } else {
222
+ interactiveMessage.header = {
223
+ title: header || "",
224
+ hasMediaAttachment: false,
225
+ };
226
+ }
227
+ const finalContextInfo = {};
228
+ if (contextInfo) {
229
+ Object.assign(finalContextInfo, {
230
+ mentionedJid: contextInfo.mentionedJid || [],
231
+ forwardingScore: contextInfo.forwardingScore || 0,
232
+ isForwarded: contextInfo.isForwarded || false,
233
+ ...contextInfo,
234
+ });
235
+ }
236
+ if (externalAdReply) {
237
+ finalContextInfo.externalAdReply = {
238
+ title: externalAdReply.title || "",
239
+ body: externalAdReply.body || "",
240
+ mediaType: externalAdReply.mediaType || 1,
241
+ thumbnailUrl: externalAdReply.thumbnailUrl || "",
242
+ mediaUrl: externalAdReply.mediaUrl || "",
243
+ sourceUrl: externalAdReply.sourceUrl || "",
244
+ showAdAttribution: externalAdReply.showAdAttribution || false,
245
+ renderLargerThumbnail: externalAdReply.renderLargerThumbnail || false,
246
+ ...externalAdReply,
247
+ };
248
+ }
249
+ if (Object.keys(finalContextInfo).length > 0) {
250
+ interactiveMessage.contextInfo = finalContextInfo;
251
+ }
252
+ return { interactiveMessage };
253
+ }
254
+ async handleInteractiveButtons(content, jid, _quoted) {
255
+ const {
256
+ text,
257
+ caption,
258
+ title,
259
+ subtitle,
260
+ footer,
261
+ interactiveButtons,
262
+ hasMediaAttachment,
263
+ image,
264
+ video,
265
+ document,
266
+ mimetype,
267
+ jpegThumbnail,
268
+ location,
269
+ product,
270
+ businessOwnerJid,
271
+ } = content;
272
+ const bodyText = text || caption || "";
273
+ const buttons = interactiveButtons.map((btn) => ({
274
+ name: btn.name,
275
+ buttonParamsJson:
276
+ typeof btn.buttonParamsJson === "string"
277
+ ? btn.buttonParamsJson
278
+ : JSON.stringify(btn.buttonParamsJson),
279
+ }));
280
+ let headerContent = {};
281
+ let mediaAttached =
282
+ typeof hasMediaAttachment === "boolean" ? hasMediaAttachment : false;
283
+ if (image) {
284
+ const src =
285
+ typeof image === "object" && image.url
286
+ ? { image: { url: image.url } }
287
+ : { image };
288
+ const uploaded = await prepareWAMessageMedia(src, {
289
+ upload: this.waUploadToServer,
290
+ jid,
291
+ });
292
+ headerContent = { ...uploaded };
293
+ mediaAttached =
294
+ typeof hasMediaAttachment === "boolean" ? hasMediaAttachment : true;
295
+ } else if (video) {
296
+ const src =
297
+ typeof video === "object" && video.url
298
+ ? { video: { url: video.url } }
299
+ : { video };
300
+ const uploaded = await prepareWAMessageMedia(src, {
301
+ upload: this.waUploadToServer,
302
+ jid,
303
+ });
304
+ headerContent = { ...uploaded };
305
+ mediaAttached =
306
+ typeof hasMediaAttachment === "boolean" ? hasMediaAttachment : true;
307
+ } else if (document) {
308
+ const docPayload =
309
+ typeof document === "object" && document.url
310
+ ? { document: { url: document.url } }
311
+ : { document };
312
+ if (mimetype) docPayload.mimetype = mimetype;
313
+ const uploaded = await prepareWAMessageMedia(docPayload, {
314
+ upload: this.waUploadToServer,
315
+ jid,
316
+ });
317
+ if (jpegThumbnail) {
318
+ uploaded.documentMessage.jpegThumbnail =
319
+ typeof jpegThumbnail === "string"
320
+ ? Buffer.from(jpegThumbnail, "base64")
321
+ : jpegThumbnail;
322
+ }
323
+ headerContent = { ...uploaded };
324
+ mediaAttached =
325
+ typeof hasMediaAttachment === "boolean" ? hasMediaAttachment : true;
326
+ } else if (location) {
327
+ headerContent = {
328
+ locationMessage: {
329
+ degreesLatitude:
330
+ location.degressLatitude || location.degreesLatitude || 0,
331
+ degreesLongitude:
332
+ location.degressLongitude || location.degreesLongitude || 0,
333
+ name: location.name || "",
334
+ },
335
+ };
336
+ mediaAttached =
337
+ typeof hasMediaAttachment === "boolean" ? hasMediaAttachment : true;
338
+ } else if (product) {
339
+ let productImage;
340
+ if (product.productImage) {
341
+ const imgSrc =
342
+ typeof product.productImage === "object" && product.productImage.url
343
+ ? { image: { url: product.productImage.url } }
344
+ : { image: product.productImage };
345
+ const uploaded = await prepareWAMessageMedia(imgSrc, {
346
+ upload: this.waUploadToServer,
347
+ jid,
348
+ });
349
+ productImage = uploaded.imageMessage;
350
+ }
351
+ headerContent = {
352
+ productMessage: {
353
+ product: {
354
+ productImage,
355
+ productId: product.productId,
356
+ title: product.title,
357
+ description: product.description,
358
+ currencyCode: product.currencyCode || "IDR",
359
+ priceAmount1000: product.priceAmount1000,
360
+ retailerId: product.retailerId,
361
+ url: product.url,
362
+ productImageCount: product.productImageCount || 1,
363
+ },
364
+ businessOwnerJid: businessOwnerJid || "0@s.whatsapp.net",
365
+ },
366
+ };
367
+ mediaAttached =
368
+ typeof hasMediaAttachment === "boolean" ? hasMediaAttachment : true;
369
+ }
370
+ const interactiveMessage = {
371
+ body: { text: bodyText },
372
+ footer: { text: footer || "" },
373
+ header: {
374
+ title: title || "",
375
+ subtitle: subtitle || "",
376
+ hasMediaAttachment: mediaAttached,
377
+ ...headerContent,
378
+ },
379
+ nativeFlowMessage: { buttons },
380
+ };
381
+ return {
382
+ viewOnceMessage: {
383
+ message: {
384
+ messageContextInfo: {
385
+ deviceListMetadata: {},
386
+ deviceListMetadataVersion: 2,
387
+ messageSecret: crypto.randomBytes(32),
388
+ },
389
+ interactiveMessage,
390
+ },
391
+ },
392
+ };
393
+ }
394
+ async handleCarousel(content, jid, _quoted) {
395
+ const { interactiveMessage } = content;
396
+ const { body, footer, header, carouselMessage, contextInfo } =
397
+ interactiveMessage;
398
+ const processedCards = [];
399
+ for (const card of carouselMessage.cards) {
400
+ const cardMsg = {
401
+ body: card.body || { text: "" },
402
+ footer: card.footer || { text: "" },
403
+ header: {
404
+ title: card.header?.title || "",
405
+ hasMediaAttachment: false,
406
+ },
407
+ };
408
+ if (card.nativeFlowMessage) {
409
+ cardMsg.nativeFlowMessage = card.nativeFlowMessage;
410
+ }
411
+ if (
412
+ card.header?.imageMessage ||
413
+ card.header?.videoMessage ||
414
+ card.header?.documentMessage
415
+ ) {
416
+ let headerContent = {};
417
+ let mediaAttached = true;
418
+ if (card.header.imageMessage) {
419
+ const url = card.header.imageMessage.url || card.header.imageMessage;
420
+ const src =
421
+ typeof url === "string" ? { image: { url } } : { image: url };
422
+ const uploaded = await prepareWAMessageMedia(src, {
423
+ upload: this.waUploadToServer,
424
+ jid,
425
+ });
426
+ headerContent = { ...uploaded };
427
+ } else if (card.header.videoMessage) {
428
+ const url = card.header.videoMessage.url || card.header.videoMessage;
429
+ const src =
430
+ typeof url === "string" ? { video: { url } } : { video: url };
431
+ const uploaded = await prepareWAMessageMedia(src, {
432
+ upload: this.waUploadToServer,
433
+ jid,
434
+ });
435
+ headerContent = { ...uploaded };
436
+ } else if (card.header.documentMessage) {
437
+ const url =
438
+ card.header.documentMessage.url || card.header.documentMessage;
439
+ const src =
440
+ typeof url === "string" ? { document: { url } } : { document: url };
441
+ const uploaded = await prepareWAMessageMedia(src, {
442
+ upload: this.waUploadToServer,
443
+ jid,
444
+ });
445
+ headerContent = { ...uploaded };
446
+ }
447
+ cardMsg.header = {
448
+ title: card.header?.title || "",
449
+ hasMediaAttachment: mediaAttached,
450
+ ...headerContent,
451
+ };
452
+ }
453
+ processedCards.push(cardMsg);
454
+ }
455
+ const interactiveMsg = {
456
+ body: body || { text: "" },
457
+ footer: footer || { text: "" },
458
+ header: header || { title: "", hasMediaAttachment: false },
459
+ carouselMessage: {
460
+ cards: processedCards,
461
+ messageVersion: carouselMessage.messageVersion || 1,
462
+ carouselCardType: carouselMessage.carouselCardType ?? 1,
463
+ },
464
+ };
465
+ if (contextInfo) {
466
+ interactiveMsg.contextInfo = contextInfo;
467
+ }
468
+ return {
469
+ viewOnceMessage: {
470
+ message: {
471
+ messageContextInfo: {
472
+ deviceListMetadata: {},
473
+ deviceListMetadataVersion: 2,
474
+ messageSecret: crypto.randomBytes(32),
475
+ },
476
+ interactiveMessage: interactiveMsg,
477
+ },
478
+ },
479
+ };
480
+ }
481
+ async handleAlbum(content, jid, quoted) {
482
+ const array = content.albumMessage || content.album;
483
+ const ctxInfo = content.contextInfo || {};
484
+ const album = await generateWAMessageFromContent(
485
+ jid,
486
+ {
487
+ messageContextInfo: {
488
+ messageSecret: crypto.randomBytes(32),
489
+ },
490
+ albumMessage: {
491
+ expectedImageCount: array.filter((a) => "image" in a).length,
492
+ expectedVideoCount: array.filter((a) => "video" in a).length,
493
+ },
494
+ },
495
+ {
496
+ userJid: jidNormalizedUser(this.sock.authState?.creds?.me?.id || ""),
497
+ quoted,
498
+ upload: this.waUploadToServer,
499
+ },
500
+ );
501
+ await this.relayMessage(jid, album.message, {
502
+ messageId: album.key.id,
503
+ });
504
+ for (let item of array) {
505
+ if (ctxInfo && Object.keys(ctxInfo).length > 0 && !item.contextInfo) {
506
+ item = { ...item, contextInfo: ctxInfo };
507
+ }
508
+ const img = await generateWAMessage(jid, item, {
509
+ upload: this.waUploadToServer,
510
+ userJid: jidNormalizedUser(this.sock.authState?.creds?.me?.id || ""),
511
+ });
512
+ img.message.messageContextInfo = {
513
+ messageSecret: crypto.randomBytes(32),
514
+ messageAssociation: {
515
+ associationType: 1,
516
+ parentMessageKey: album.key,
517
+ },
518
+ };
519
+ await this.relayMessage(jid, img.message, {
520
+ messageId: img.key.id,
521
+ });
522
+ }
523
+ return album;
524
+ }
525
+ async handleEvent(content, jid, quoted) {
526
+ const eventData = content.eventMessage;
527
+ const msg = await generateWAMessageFromContent(
528
+ jid,
529
+ {
530
+ viewOnceMessage: {
531
+ message: {
532
+ messageContextInfo: {
533
+ deviceListMetadata: {},
534
+ deviceListMetadataVersion: 2,
535
+ messageSecret: crypto.randomBytes(32),
536
+ },
537
+ eventMessage: {
538
+ isCanceled: eventData.isCanceled || false,
539
+ name: eventData.name,
540
+ description: eventData.description,
541
+ location: eventData.location || {
542
+ degreesLatitude: 0,
543
+ degreesLongitude: 0,
544
+ name: "Location",
545
+ },
546
+ joinLink: eventData.joinLink || "",
547
+ startTime:
548
+ typeof eventData.startTime === "string"
549
+ ? parseInt(eventData.startTime)
550
+ : eventData.startTime || Date.now(),
551
+ endTime:
552
+ typeof eventData.endTime === "string"
553
+ ? parseInt(eventData.endTime)
554
+ : eventData.endTime || Date.now() + 3600000,
555
+ extraGuestsAllowed: eventData.extraGuestsAllowed !== false,
556
+ },
557
+ },
558
+ },
559
+ },
560
+ {
561
+ quoted,
562
+ userJid: jidNormalizedUser(this.sock.authState?.creds?.me?.id || ""),
563
+ },
564
+ );
565
+ await this.relayMessage(jid, msg.message, {
566
+ messageId: msg.key.id,
567
+ });
568
+ return msg;
569
+ }
570
+ async handlePollResult(content, jid, quoted) {
571
+ const pollData = content.pollResultMessage;
572
+ const msg = await generateWAMessageFromContent(
573
+ jid,
574
+ {
575
+ pollResultSnapshotMessage: {
576
+ name: pollData.name,
577
+ pollVotes: pollData.pollVotes.map((vote) => ({
578
+ optionName: vote.optionName,
579
+ optionVoteCount:
580
+ typeof vote.optionVoteCount === "number"
581
+ ? vote.optionVoteCount.toString()
582
+ : vote.optionVoteCount,
583
+ })),
584
+ },
585
+ },
586
+ {
587
+ quoted,
588
+ userJid: jidNormalizedUser(this.sock.authState?.creds?.me?.id || ""),
589
+ },
590
+ );
591
+ await this.relayMessage(jid, msg.message, {
592
+ messageId: msg.key.id,
593
+ });
594
+ return msg;
595
+ }
596
+ async handleGroupStory(content, jid, _quoted, options = {}) {
597
+ const storyData = content.groupStatusMessage;
598
+ let waMsgContent;
599
+ if (storyData.message) {
600
+ waMsgContent = storyData;
601
+ } else {
602
+ waMsgContent = await generateWAMessageContent(storyData, {
603
+ upload: this.waUploadToServer,
604
+ });
605
+ }
606
+ const innerMsg = waMsgContent.message || waMsgContent;
607
+ const msgKey = Object.keys(innerMsg).find(
608
+ (k) => innerMsg[k] && typeof innerMsg[k] === "object",
609
+ );
610
+ if (msgKey) {
611
+ innerMsg[msgKey].contextInfo = innerMsg[msgKey].contextInfo || {};
612
+ innerMsg[msgKey].contextInfo.isGroupStatus = true;
613
+ if (!innerMsg[msgKey].contextInfo.statusSourceType) {
614
+ if (innerMsg.imageMessage)
615
+ innerMsg[msgKey].contextInfo.statusSourceType = 0;
616
+ else if (innerMsg.videoMessage)
617
+ innerMsg[msgKey].contextInfo.statusSourceType = 1;
618
+ else if (innerMsg.audioMessage)
619
+ innerMsg[msgKey].contextInfo.statusSourceType = 3;
620
+ else if (innerMsg.extendedTextMessage)
621
+ innerMsg[msgKey].contextInfo.statusSourceType = 4;
622
+ }
623
+ }
624
+ const finalMsg = {
625
+ groupStatusMessageV2: {
626
+ message: innerMsg,
627
+ },
628
+ };
629
+ return await this.relayMessage(jid, finalMsg, {
630
+ messageId: generateMessageID(),
631
+ });
632
+ }
633
+ async sendStatusWhatsApp(content, jids = []) {
634
+ const userJid = jidNormalizedUser(this.sock.authState.creds.me.id);
635
+ const allUsers = new Set();
636
+ allUsers.add(userJid);
637
+ for (const id of jids) {
638
+ if (isJidGroup(id)) {
639
+ try {
640
+ const metadata = await this.sock.groupMetadata(id);
641
+ metadata.participants.forEach((p) =>
642
+ allUsers.add(jidNormalizedUser(p.id)),
643
+ );
644
+ } catch (error) {
645
+ this.config.logger.error(
646
+ `Error getting metadata for group ${id}: ${error}`,
647
+ );
648
+ }
649
+ } else if (isPnUser(id)) {
650
+ allUsers.add(jidNormalizedUser(id));
651
+ }
652
+ }
653
+ const uniqueUsers = Array.from(allUsers);
654
+ const getRandomHexColor = () =>
655
+ "#" +
656
+ Math.floor(Math.random() * 16777215)
657
+ .toString(16)
658
+ .padStart(6, "0");
659
+ const isMedia = content.image || content.video || content.audio;
660
+ const isAudio = !!content.audio;
661
+ const messageContent = { ...content };
662
+ if (isMedia && !isAudio) {
663
+ if (messageContent.text) {
664
+ messageContent.caption = messageContent.text;
665
+ delete messageContent.text;
666
+ }
667
+ delete messageContent.ptt;
668
+ delete messageContent.font;
669
+ delete messageContent.backgroundColor;
670
+ delete messageContent.textColor;
671
+ }
672
+ if (isAudio) {
673
+ delete messageContent.text;
674
+ delete messageContent.caption;
675
+ delete messageContent.font;
676
+ delete messageContent.textColor;
677
+ }
678
+ const font = !isMedia
679
+ ? content.font || Math.floor(Math.random() * 9)
680
+ : undefined;
681
+ const textColor = !isMedia
682
+ ? content.textColor || getRandomHexColor()
683
+ : undefined;
684
+ const backgroundColor =
685
+ !isMedia || isAudio
686
+ ? content.backgroundColor || getRandomHexColor()
687
+ : undefined;
688
+ const ptt = isAudio
689
+ ? typeof content.ptt === "boolean"
690
+ ? content.ptt
691
+ : true
692
+ : undefined;
693
+ const { getUrlInfo } = await import("../Utils/link-preview.js");
694
+ const msg = await generateWAMessage(STORIES_JID, messageContent, {
695
+ logger: this.config.logger,
696
+ userJid,
697
+ getUrlInfo: (text) =>
698
+ getUrlInfo(text, {
699
+ thumbnailWidth: this.config.linkPreviewImageThumbnailWidth,
700
+ fetchOpts: { timeout: 3000, ...(this.config.options || {}) },
701
+ logger: this.config.logger,
702
+ uploadImage: this.config.generateHighQualityLinkPreview
703
+ ? this.waUploadToServer
704
+ : undefined,
705
+ }),
706
+ upload: this.waUploadToServer,
707
+ mediaCache: this.config.mediaCache,
708
+ options: this.config.options,
709
+ font,
710
+ textColor,
711
+ backgroundColor,
712
+ ptt,
713
+ });
714
+ await this.relayMessage(STORIES_JID, msg.message, {
715
+ messageId: msg.key.id,
716
+ statusJidList: uniqueUsers,
717
+ additionalNodes: [
718
+ {
719
+ tag: "meta",
720
+ attrs: {},
721
+ content: [
722
+ {
723
+ tag: "mentioned_users",
724
+ attrs: {},
725
+ content: jids.map((jid) => ({
726
+ tag: "to",
727
+ attrs: { jid: jidNormalizedUser(jid) },
728
+ })),
729
+ },
730
+ ],
731
+ },
732
+ ],
733
+ });
734
+ for (const id of jids) {
735
+ try {
736
+ const normalizedId = jidNormalizedUser(id);
737
+ const isPrivate = isPnUser(normalizedId);
738
+ const type = isPrivate
739
+ ? "statusMentionMessage"
740
+ : "groupStatusMentionMessage";
741
+ const protocolMessage = {
742
+ [type]: {
743
+ message: {
744
+ protocolMessage: {
745
+ key: msg.key,
746
+ type: 25,
747
+ },
748
+ },
749
+ },
750
+ messageContextInfo: {
751
+ messageSecret: crypto.randomBytes(32),
752
+ },
753
+ };
754
+ const statusMsg = await generateWAMessageFromContent(
755
+ normalizedId,
756
+ protocolMessage,
757
+ {
758
+ userJid: jidNormalizedUser(
759
+ this.sock.authState?.creds?.me?.id || "",
760
+ ),
761
+ },
762
+ );
763
+ await this.relayMessage(normalizedId, statusMsg.message, {
764
+ additionalNodes: [
765
+ {
766
+ tag: "meta",
767
+ attrs: isPrivate
768
+ ? { is_status_mention: "true" }
769
+ : { is_group_status_mention: "true" },
770
+ },
771
+ ],
772
+ });
773
+ await delay(2000);
774
+ } catch (error) {
775
+ this.config.logger.error(`Error sending to ${id}: ${error}`);
776
+ }
777
+ }
778
+ return msg;
779
+ }
780
+ }
781
+ //# sourceMappingURL=dugong.js.map