@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
package/README.md CHANGED
@@ -1,3 +1,1548 @@
1
- # Temporary Holding Version
1
+ <div align="center">
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ <img src="https://raw.githubusercontent.com/Nazril0/dataaaaaaa/refs/heads/main/nazx.jpg" height="150" style="border-radius:50%" alt="nazx"/>
4
+
5
+ # @nanazx/baileys
6
+
7
+ **WhatsApp Web API library — Original Baileys diperkuat dengan fitur tambahan oleh nazx.**
8
+
9
+ [![npm](https://img.shields.io/badge/npm-%40nanazx%2Fbaileys-CB3837?style=flat&logo=npm)](https://github.com/Nazril0/nanazxbaileys)
10
+ [![Node](https://img.shields.io/badge/Node.js-%3E%3D20-339933?style=flat&logo=node.js)](https://nodejs.org)
11
+ [![License](https://img.shields.io/badge/License-MIT-blue?style=flat)](LICENSE)
12
+ [![GitHub](https://img.shields.io/badge/GitHub-Nazril0-181717?style=flat&logo=github)](https://github.com/Nazril0)
13
+ [![Instagram](https://img.shields.io/badge/Instagram-nazzxx._0-E4405F?style=flat&logo=instagram)](https://instagram.com/nazzxx._0)
14
+ [![TikTok](https://img.shields.io/badge/TikTok-nazxtampan__-000000?style=flat&logo=tiktok)](https://tiktok.com/@nazxtampan__)
15
+
16
+ </div>
17
+
18
+ ---
19
+
20
+ ## 📋 Index
21
+
22
+ - [Tentang](#-tentang)
23
+ - [Instalasi](#️-instalasi)
24
+ - [Quick Start](#-quick-start)
25
+ - [QR Code](#connect-via-qr-code)
26
+ - [Pairing Code](#connect-via-pairing-code)
27
+ - [Full History](#receive-full-history)
28
+ - [Socket Config](#️-socket-config)
29
+ - [Simpan Session](#-simpan-session)
30
+ - [Handling Events](#-handling-events)
31
+ - [Sending Messages](#-sending-messages)
32
+ - [Teks & Dasar](#teks--dasar)
33
+ - [Quote / Reply](#quote--reply)
34
+ - [Mention](#mention)
35
+ - [Forward](#forward)
36
+ - [Lokasi](#lokasi)
37
+ - [Live Location](#live-location)
38
+ - [Kontak](#kontak)
39
+ - [Reaksi](#reaksi)
40
+ - [Pin Pesan](#pin-pesan)
41
+ - [Poll](#poll)
42
+ - [Hapus Pesan](#hapus-pesan)
43
+ - [Edit Pesan](#edit-pesan)
44
+ - [Pesan Menghilang](#pesan-menghilang)
45
+ - [Group Invite](#group-invite)
46
+ - [Event / Jadwal](#event--jadwal)
47
+ - [Share / Request Phone Number](#share--request-phone-number)
48
+ - [Gambar](#gambar)
49
+ - [Video](#video)
50
+ - [Audio](#audio)
51
+ - [Voice Note (PTT)](#voice-note-ptt)
52
+ - [GIF](#gif)
53
+ - [Video Note (PTV)](#video-note-ptv)
54
+ - [Dokumen](#dokumen)
55
+ - [Stiker](#stiker)
56
+ - [View Once](#view-once)
57
+ - [Album](#album)
58
+ - [Status / Stories](#status--stories)
59
+ - [Status dengan Mention](#status-dengan-mention)
60
+ - [Group Story](#group-story)
61
+ - [Link Preview](#link-preview)
62
+ - [Buttons & Interactive](#-buttons--interactive)
63
+ - [Reply Buttons](#reply-buttons)
64
+ - [List Message](#list-message)
65
+ - [Template Buttons](#template-buttons)
66
+ - [Interactive Message (nativeFlow)](#interactive-message-nativeflow)
67
+ - [Interactive Buttons (Baron)](#interactive-buttons-baron)
68
+ - [Payment Request](#payment-request)
69
+ - [Product Message](#product-message)
70
+ - [Poll Result](#poll-result)
71
+ - [Button Reply](#button-reply)
72
+ - [List Reply](#list-reply)
73
+ - [relayMessage](#-relaymessage)
74
+ - [Download Media](#-download-media)
75
+ - [Re-upload Media](#-re-upload-media)
76
+ - [Read Messages](#-read-messages)
77
+ - [Presence](#-presence)
78
+ - [Groups](#-groups)
79
+ - [Newsletter (Channel)](#-newsletter-channel)
80
+ - [Community](#-community)
81
+ - [AI Groups](#-ai-groups)
82
+ - [Username WA](#-username-wa)
83
+ - [Privacy](#-privacy)
84
+ - [User & Profile](#-user--profile)
85
+ - [Modifikasi Chat](#-modifikasi-chat)
86
+ - [Panggilan](#-panggilan)
87
+ - [Decrypt Poll Votes](#-decrypt-poll-votes)
88
+ - [Custom Functionality](#-custom-functionality)
89
+ - [Struktur Library](#-struktur-library)
90
+ - [Credits](#-credits)
91
+ - [Kontak](#-kontak)
92
+
93
+ ---
94
+
95
+ ## 📖 Tentang
96
+
97
+ **@nanazx/baileys** adalah library WhatsApp Web API berbasis [Baileys](https://github.com/WhiskeySockets/Baileys), dengan tambahan layer socket ekstra yang dirancang untuk kebutuhan bot WA modern.
98
+
99
+ Library ini terhubung langsung ke WhatsApp Web lewat **WebSocket** — tanpa Selenium, tanpa browser, ringan dan cepat.
100
+
101
+ **Fitur tambahan dibanding Baileys standar:**
102
+
103
+ | Fitur | Keterangan |
104
+ |-------|-----------|
105
+ | `makePrivacySocket` | MEX GraphQL privacy settings |
106
+ | `makeUsernameSocket` | WA username (`@username`) |
107
+ | `makeAIGroupsSocket` | AI Groups (Meta AI di grup) |
108
+ | `makeInteropSocket` | Interoperability FB/IG |
109
+ | `makeGraphQLSocket` | HTTPS GraphQL (Meta AI, Events, Payments) |
110
+ | `makeManagedAccountSocket` | Managed accounts |
111
+ | `makeRegistrationSocket` | Registrasi & passkeys |
112
+ | `Baron` class | Album, Event, InteractiveButtons, Payment, Product, GroupStory, PollResult, Status |
113
+
114
+ > ⚠️ Tidak berafiliasi dengan WhatsApp. Gunakan dengan bijak sesuai ToS WhatsApp.
115
+
116
+ ---
117
+
118
+ ## ⚙️ Instalasi
119
+
120
+ ```bash
121
+ npm install github:Nazril0/nanazxbaileys
122
+ # atau
123
+ yarn add github:Nazril0/nanazxbaileys
124
+ ```
125
+
126
+ **Requirement:** Node.js ≥ 20
127
+
128
+ **Optional peer dependencies:**
129
+
130
+ | Package | Fungsi |
131
+ |---------|--------|
132
+ | `sharp` | Image processing / thumbnail otomatis |
133
+ | `jimp` | Fallback image processing |
134
+ | `audio-decode` | Metadata voice note |
135
+ | `link-preview-js` | Generate link preview |
136
+
137
+ ```bash
138
+ npm install sharp jimp link-preview-js audio-decode
139
+ ```
140
+
141
+ ---
142
+
143
+ ## 🚀 Quick Start
144
+
145
+ ### Connect via QR Code
146
+
147
+ ```js
148
+ import makeWASocket, { useMultiFileAuthState, DisconnectReason } from '@nanazx/baileys'
149
+ import { Boom } from '@hapi/boom'
150
+
151
+ async function connect() {
152
+ const { state, saveCreds } = await useMultiFileAuthState('./auth')
153
+
154
+ const sock = makeWASocket({
155
+ auth: state,
156
+ printQRInTerminal: true,
157
+ markOnlineOnConnect: false
158
+ })
159
+
160
+ sock.ev.on('creds.update', saveCreds)
161
+
162
+ sock.ev.on('connection.update', ({ connection, lastDisconnect }) => {
163
+ if (connection === 'close') {
164
+ const shouldReconnect =
165
+ new Boom(lastDisconnect?.error)?.output?.statusCode !== DisconnectReason.loggedOut
166
+ if (shouldReconnect) connect()
167
+ } else if (connection === 'open') {
168
+ console.log('✅ Terhubung!')
169
+ }
170
+ })
171
+
172
+ sock.ev.on('messages.upsert', async ({ messages, type }) => {
173
+ if (type !== 'notify') return
174
+ const msg = messages[0]
175
+ if (!msg.message) return
176
+ const jid = msg.key.remoteJid
177
+ const text = msg.message?.conversation || msg.message?.extendedTextMessage?.text || ''
178
+ if (text === 'ping') await sock.sendMessage(jid, { text: 'pong 🏓' }, { quoted: msg })
179
+ })
180
+ }
181
+
182
+ connect()
183
+ ```
184
+
185
+ ### Connect via Pairing Code
186
+
187
+ ```js
188
+ const sock = makeWASocket({ auth: state, printQRInTerminal: false })
189
+
190
+ if (!state.creds.registered) {
191
+ const code = await sock.requestPairingCode('628xxxxxxxxx') // nomor tanpa +
192
+ console.log('Pairing code:', code)
193
+ }
194
+ ```
195
+
196
+ ### Receive Full History
197
+
198
+ ```js
199
+ const sock = makeWASocket({
200
+ auth: state,
201
+ syncFullHistory: true
202
+ })
203
+ ```
204
+
205
+ ---
206
+
207
+ ## ⚙️ Socket Config
208
+
209
+ ```js
210
+ const sock = makeWASocket({
211
+ auth: state,
212
+
213
+ // Cache metadata grup agar tidak sering query ke WA server (recommended)
214
+ cachedGroupMetadata: async (jid) => groupCache.get(jid),
215
+
216
+ // Untuk retry pesan & decrypt poll votes — perlu store
217
+ getMessage: async (key) => store.getMsg(key),
218
+
219
+ // Supaya notif HP tidak terganggu saat bot aktif
220
+ markOnlineOnConnect: false,
221
+
222
+ // Link preview resolusi tinggi
223
+ generateHighQualityLinkPreview: true
224
+ })
225
+ ```
226
+
227
+ ---
228
+
229
+ ## 💾 Simpan Session
230
+
231
+ ```js
232
+ import { useMultiFileAuthState } from '@nanazx/baileys'
233
+
234
+ const { state, saveCreds } = await useMultiFileAuthState('./auth')
235
+ sock.ev.on('creds.update', saveCreds)
236
+ // session tersimpan di folder ./auth — jangan di-share!
237
+ ```
238
+
239
+ ---
240
+
241
+ ## 📅 Handling Events
242
+
243
+ ```js
244
+ // ─── Pesan ───────────────────────────────────────────────────────
245
+ sock.ev.on('messages.upsert', ({ messages, type }) => {}) // pesan masuk/baru
246
+ sock.ev.on('messages.update', updates => {}) // update status pesan
247
+ sock.ev.on('messages.delete', ({ keys }) => {}) // pesan dihapus
248
+ sock.ev.on('messages.reaction', reactions => {}) // reaksi pada pesan
249
+ sock.ev.on('messages.media-update', updates => {}) // update media key
250
+ sock.ev.on('message.comment', ({ message, comment }) => {}) // komentar pesan
251
+ sock.ev.on('message.quarantined', ({ message }) => {}) // pesan dikarantina
252
+ sock.ev.on('poll.add-option', ({ key }) => {}) // opsi poll ditambah
253
+
254
+ // ─── Chat & Kontak ────────────────────────────────────────────────
255
+ sock.ev.on('chats.upsert', chats => {})
256
+ sock.ev.on('chats.update', chats => {})
257
+ sock.ev.on('chats.delete', ids => {})
258
+ sock.ev.on('chats.lock', ({ id, locked }) => {})
259
+ sock.ev.on('contacts.upsert', contacts => {})
260
+ sock.ev.on('contacts.update', contacts => {})
261
+ sock.ev.on('blocklist.update', ({ blocklist, type }) => {})
262
+
263
+ // ─── Grup ────────────────────────────────────────────────────────
264
+ sock.ev.on('groups.upsert', groups => {})
265
+ sock.ev.on('groups.update', updates => {})
266
+ sock.ev.on('group-participants.update', ({ id, participants, action }) => {})
267
+ sock.ev.on('group.join-request', ({ id, participant, action }) => {})
268
+ sock.ev.on('group.member-tag.update', ({ id, participant }) => {})
269
+
270
+ // ─── Newsletter ───────────────────────────────────────────────────
271
+ sock.ev.on('newsletter-settings.update', update => {})
272
+ sock.ev.on('newsletter-participants.update', update => {})
273
+ sock.ev.on('newsletter.reaction', update => {})
274
+ sock.ev.on('newsletter.view', update => {})
275
+ sock.ev.on('newsletter.live-update', update => {})
276
+ sock.ev.on('newsletter.pin', update => {})
277
+ sock.ev.on('newsletter.invite', update => {})
278
+
279
+ // ─── Koneksi & Auth ──────────────────────────────────────────────
280
+ sock.ev.on('connection.update', ({ connection, qr, lastDisconnect, isOnline }) => {})
281
+ sock.ev.on('creds.update', saveCreds)
282
+ sock.ev.on('security.alert', data => {})
283
+ sock.ev.on('identity.update', ({ jid }) => {})
284
+ sock.ev.on('server.config', config => {})
285
+
286
+ // ─── Panggilan ────────────────────────────────────────────────────
287
+ sock.ev.on('call', calls => {})
288
+ sock.ev.on('call.scheduled', ({ call }) => {})
289
+ sock.ev.on('call.schedule-cancelled', ({ call }) => {})
290
+ sock.ev.on('coexistence.update', u => {})
291
+
292
+ // ─── Presence & Label ────────────────────────────────────────────
293
+ sock.ev.on('presence.update', ({ id, presences }) => {})
294
+ sock.ev.on('devices.update', ({ id, devices, isSelf }) => {})
295
+ sock.ev.on('labels.edit', ({ label }) => {})
296
+ sock.ev.on('labels.association', ({ association, type }) => {})
297
+ sock.ev.on('labels.reorder', ({ labelIds }) => {})
298
+
299
+ // ─── Sinkronisasi & Settings ─────────────────────────────────────
300
+ sock.ev.on('messaging-history.set', ({ chats, contacts, messages, isLatest }) => {})
301
+ sock.ev.on('messaging-history.status', ({ progress, hasMore }) => {})
302
+ sock.ev.on('settings.update', ({ setting, value }) => {})
303
+ sock.ev.on('lid-mapping.update', ({ lid, pn }) => {})
304
+ sock.ev.on('status.psa', ({ message }) => {})
305
+ sock.ev.on('status.mention', ({ message }) => {})
306
+ sock.ev.on('payment.split', ({ message }) => {})
307
+ sock.ev.on('payment.reminder', ({ message }) => {})
308
+ sock.ev.on('reminder.update', ({ message }) => {})
309
+ sock.ev.on('media.notify', ({ message }) => {})
310
+ sock.ev.on('cloud.thread.control', ({ message }) => {})
311
+ sock.ev.on('galaxy.flow.completed', ({ message }) => {})
312
+
313
+ // ─── Bot / Meta AI ────────────────────────────────────────────────
314
+ sock.ev.on('bot.feedback', ({ message }) => {})
315
+ sock.ev.on('bot.stop-generation', ({ message }) => {})
316
+ sock.ev.on('bot.welcome-request', ({ message }) => {})
317
+ ```
318
+
319
+ ---
320
+
321
+ ## 💬 Sending Messages
322
+
323
+ ### Teks & Dasar
324
+
325
+ ```js
326
+ await sock.sendMessage(jid, { text: 'Halo!' })
327
+ ```
328
+
329
+ ### Quote / Reply
330
+
331
+ ```js
332
+ await sock.sendMessage(jid, { text: 'Ini balasan' }, { quoted: msg })
333
+ ```
334
+
335
+ ### Mention
336
+
337
+ ```js
338
+ await sock.sendMessage(jid, {
339
+ text: '@628xxx halo!',
340
+ mentions: ['628xxx@s.whatsapp.net']
341
+ })
342
+
343
+ // Mention semua (@everyone)
344
+ await sock.sendMessage(jid, {
345
+ text: '@everyone',
346
+ mentionAll: true
347
+ })
348
+ ```
349
+
350
+ ### Forward
351
+
352
+ ```js
353
+ await sock.sendMessage(jid, { forward: msg })
354
+
355
+ // Force forward (tambah tanda forward)
356
+ await sock.sendMessage(jid, { forward: msg, force: true })
357
+ ```
358
+
359
+ ### Lokasi
360
+
361
+ ```js
362
+ await sock.sendMessage(jid, {
363
+ location: {
364
+ degreesLatitude: -6.200000,
365
+ degreesLongitude: 106.816666,
366
+ name: 'Jakarta', // opsional
367
+ address: 'Indonesia' // opsional
368
+ }
369
+ })
370
+ ```
371
+
372
+ ### Live Location
373
+
374
+ ```js
375
+ await sock.sendMessage(jid, {
376
+ liveLocation: {
377
+ degreesLatitude: -6.200000,
378
+ degreesLongitude: 106.816666
379
+ },
380
+ accuracyInMeters: 10,
381
+ speedInMps: 0,
382
+ degreesClockwisefromMagneticNorth: 0,
383
+ caption: 'Lokasi saya',
384
+ sequenceNumber: 1
385
+ })
386
+ ```
387
+
388
+ ### Kontak
389
+
390
+ ```js
391
+ const vcard = `BEGIN:VCARD\nVERSION:3.0\nFN:Nama Kontak\nTEL;type=CELL;waid=628xxx:+62 8xx xxxx xxxx\nEND:VCARD`
392
+
393
+ // Satu kontak
394
+ await sock.sendMessage(jid, {
395
+ contacts: {
396
+ displayName: 'Nama',
397
+ contacts: [{ vcard }]
398
+ }
399
+ })
400
+
401
+ // Banyak kontak sekaligus
402
+ await sock.sendMessage(jid, {
403
+ contacts: {
404
+ displayName: '2 Kontak',
405
+ contacts: [{ vcard }, { vcard: vcard2 }]
406
+ }
407
+ })
408
+ ```
409
+
410
+ ### Reaksi
411
+
412
+ ```js
413
+ // Tambah reaksi
414
+ await sock.sendMessage(jid, { react: { text: '🔥', key: msg.key } })
415
+
416
+ // Hapus reaksi
417
+ await sock.sendMessage(jid, { react: { text: '', key: msg.key } })
418
+ ```
419
+
420
+ ### Pin Pesan
421
+
422
+ ```js
423
+ // Pin pesan (type: 1 = pin, 0 = unpin)
424
+ // time: 86400 = 24 jam | 604800 = 7 hari | 2592000 = 30 hari
425
+ await sock.sendMessage(jid, {
426
+ pin: msg.key,
427
+ type: 1,
428
+ time: 86400
429
+ })
430
+
431
+ // Unpin
432
+ await sock.sendMessage(jid, { pin: msg.key, type: 0, time: 0 })
433
+ ```
434
+
435
+ ### Poll
436
+
437
+ ```js
438
+ // Poll pilih satu
439
+ await sock.sendMessage(jid, {
440
+ poll: {
441
+ name: 'Pilih satu!',
442
+ values: ['Opsi A', 'Opsi B', 'Opsi C'],
443
+ selectableCount: 1
444
+ }
445
+ })
446
+
447
+ // Poll pilih banyak
448
+ await sock.sendMessage(jid, {
449
+ poll: {
450
+ name: 'Pilih bebas!',
451
+ values: ['A', 'B', 'C'],
452
+ selectableCount: 0 // 0 = bebas pilih semua
453
+ }
454
+ })
455
+
456
+ // Poll di community announcement group (v2)
457
+ await sock.sendMessage(jid, {
458
+ poll: {
459
+ name: 'Voting komunitas',
460
+ values: ['Ya', 'Tidak'],
461
+ selectableCount: 1,
462
+ toAnnouncementGroup: true
463
+ }
464
+ })
465
+ ```
466
+
467
+ ### Hapus Pesan
468
+
469
+ ```js
470
+ // Hapus for everyone
471
+ await sock.sendMessage(jid, { delete: msg.key })
472
+
473
+ // Hapus pesan orang lain di grup (admin)
474
+ await sock.sendMessage(groupJid, { delete: otherPersonMsg.key })
475
+ ```
476
+
477
+ ### Edit Pesan
478
+
479
+ ```js
480
+ await sock.sendMessage(jid, {
481
+ edit: msg.key,
482
+ text: 'Teks yang sudah diedit'
483
+ })
484
+ ```
485
+
486
+ ### Pesan Menghilang
487
+
488
+ ```js
489
+ // Aktifkan di chat / grup
490
+ // 86400 = 24h | 604800 = 7d | 7776000 = 90d | false / 0 = off
491
+ await sock.sendMessage(jid, { disappearingMessagesInChat: 86400 })
492
+ await sock.sendMessage(jid, { disappearingMessagesInChat: false })
493
+
494
+ // Kirim pesan sebagai ephemeral
495
+ await sock.sendMessage(jid, { text: 'pesan ini menghilang' }, { ephemeralExpiration: 86400 })
496
+ ```
497
+
498
+ ### Group Invite
499
+
500
+ ```js
501
+ await sock.sendMessage(jid, {
502
+ groupInvite: {
503
+ jid: 'groupjid@g.us',
504
+ subject: 'Nama Grup',
505
+ inviteCode: 'xxxxxxxx',
506
+ inviteExpiration: Date.now() + 86400000,
507
+ text: 'Gabung yuk!'
508
+ }
509
+ })
510
+ ```
511
+
512
+ ### Event / Jadwal
513
+
514
+ ```js
515
+ await sock.sendMessage(jid, {
516
+ event: {
517
+ name: 'Nama Event',
518
+ description: 'Deskripsi event',
519
+ startDate: new Date('2025-01-01T10:00:00'),
520
+ endDate: new Date('2025-01-01T12:00:00'),
521
+ location: {
522
+ degreesLatitude: -6.2,
523
+ degreesLongitude: 106.8,
524
+ name: 'Jakarta'
525
+ },
526
+ extraGuestsAllowed: true,
527
+ isCancelled: false
528
+ }
529
+ })
530
+ ```
531
+
532
+ ### Share / Request Phone Number
533
+
534
+ ```js
535
+ // Bagikan nomor HP kamu ke lawan chat
536
+ await sock.sendMessage(jid, { sharePhoneNumber: true })
537
+
538
+ // Minta nomor HP dari lawan chat
539
+ await sock.sendMessage(jid, { requestPhoneNumber: true })
540
+ ```
541
+
542
+ ### Gambar
543
+
544
+ ```js
545
+ // Dari URL
546
+ await sock.sendMessage(jid, { image: { url: './img.jpg' }, caption: 'Caption' })
547
+
548
+ // Dari Buffer
549
+ import { readFileSync } from 'fs'
550
+ await sock.sendMessage(jid, { image: readFileSync('./img.jpg'), caption: 'Caption' })
551
+
552
+ // Dengan mention di caption
553
+ await sock.sendMessage(jid, {
554
+ image: { url: './img.jpg' },
555
+ caption: 'Halo @628xxx',
556
+ mentions: ['628xxx@s.whatsapp.net']
557
+ })
558
+ ```
559
+
560
+ ### Video
561
+
562
+ ```js
563
+ await sock.sendMessage(jid, { video: { url: './video.mp4' }, caption: 'Video' })
564
+ ```
565
+
566
+ ### Audio
567
+
568
+ ```js
569
+ await sock.sendMessage(jid, {
570
+ audio: { url: './audio.mp3' },
571
+ mimetype: 'audio/mp4'
572
+ })
573
+ ```
574
+
575
+ ### Voice Note (PTT)
576
+
577
+ ```js
578
+ // PTT = Push To Talk (pesan suara, buble bundar)
579
+ await sock.sendMessage(jid, {
580
+ audio: { url: './audio.ogg' },
581
+ mimetype: 'audio/ogg; codecs=opus',
582
+ ptt: true
583
+ })
584
+ ```
585
+
586
+ ### GIF
587
+
588
+ > WA tidak support `.gif` asli — kirim sebagai video mp4 dengan flag `gifPlayback`
589
+
590
+ ```js
591
+ await sock.sendMessage(jid, {
592
+ video: { url: './animasi.mp4' },
593
+ gifPlayback: true,
594
+ caption: 'GIF lucu'
595
+ })
596
+ ```
597
+
598
+ ### Video Note (PTV)
599
+
600
+ ```js
601
+ // Video note = video bulat seperti voice note
602
+ await sock.sendMessage(jid, {
603
+ video: { url: './clip.mp4' },
604
+ ptv: true
605
+ })
606
+ ```
607
+
608
+ ### Dokumen
609
+
610
+ ```js
611
+ await sock.sendMessage(jid, {
612
+ document: { url: './file.pdf' },
613
+ mimetype: 'application/pdf',
614
+ fileName: 'dokumen.pdf',
615
+ caption: 'Ini file PDF'
616
+ })
617
+ ```
618
+
619
+ ### Stiker
620
+
621
+ ```js
622
+ await sock.sendMessage(jid, { sticker: { url: './sticker.webp' } })
623
+ ```
624
+
625
+ ### View Once
626
+
627
+ ```js
628
+ // Gambar/video hanya bisa dilihat sekali
629
+ await sock.sendMessage(jid, {
630
+ image: { url: './rahasia.jpg' },
631
+ viewOnce: true
632
+ })
633
+
634
+ // View once video
635
+ await sock.sendMessage(jid, {
636
+ video: { url: './rahasia.mp4' },
637
+ viewOnce: true
638
+ })
639
+ ```
640
+
641
+ ### Album
642
+
643
+ > Kirim banyak foto/video sekaligus sebagai album (Baron feature)
644
+
645
+ ```js
646
+ // album berisi array gambar/video
647
+ await sock.sendMessage(jid, {
648
+ albumMessage: [
649
+ { image: { url: './foto1.jpg' }, caption: 'Foto 1' },
650
+ { image: { url: './foto2.jpg' }, caption: 'Foto 2' },
651
+ { video: { url: './video.mp4' }, caption: 'Video' }
652
+ ]
653
+ })
654
+
655
+ // Alias singkat
656
+ await sock.sendMessage(jid, {
657
+ album: [
658
+ { image: { url: './1.jpg' } },
659
+ { image: { url: './2.jpg' } }
660
+ ]
661
+ })
662
+ ```
663
+
664
+ ### Status / Stories
665
+
666
+ ```js
667
+ // Status teks
668
+ await sock.sendMessage('status@broadcast', {
669
+ text: 'Status saya hari ini 🔥',
670
+ backgroundColor: '#000000',
671
+ font: 2,
672
+ statusJidList: ['628xxx@s.whatsapp.net'] // daftar orang yang lihat
673
+ })
674
+
675
+ // Status gambar
676
+ await sock.sendMessage('status@broadcast', {
677
+ image: { url: './cover.jpg' },
678
+ caption: 'Caption status',
679
+ statusJidList: ['628xxx@s.whatsapp.net']
680
+ })
681
+
682
+ // Status video
683
+ await sock.sendMessage('status@broadcast', {
684
+ video: { url: './story.mp4' },
685
+ caption: 'Video status',
686
+ statusJidList: ['628xxx@s.whatsapp.net']
687
+ })
688
+
689
+ // Pakai Baron — sendStatusWhatsApp (otomatis handle statusJidList dari grup/personal)
690
+ // Kirim status ke semua anggota grup tertentu sekaligus:
691
+ await baron.sendStatusWhatsApp(
692
+ { text: 'Status ke grup', backgroundColor: '#1a1a2e' },
693
+ ['groupjid@g.us', '628xxx@s.whatsapp.net']
694
+ )
695
+ ```
696
+
697
+ ### Status dengan Mention
698
+
699
+ ```js
700
+ await sock.sendMessage('status@broadcast', {
701
+ text: 'Halo @628xxx 👋',
702
+ mentions: ['628xxx@s.whatsapp.net'],
703
+ statusMentionedJids: ['628xxx@s.whatsapp.net']
704
+ })
705
+ ```
706
+
707
+ ### Group Story
708
+
709
+ > Kirim story/status ke grup (Baron feature)
710
+
711
+ ```js
712
+ await sock.sendMessage(groupJid, {
713
+ groupStatusMessage: {
714
+ text: 'Story grup kita',
715
+ backgroundColor: '#ff6b6b'
716
+ }
717
+ })
718
+
719
+ // Atau dengan media
720
+ await sock.sendMessage(groupJid, {
721
+ groupStatusMessage: {
722
+ image: { url: './foto.jpg' },
723
+ caption: 'Story grup!'
724
+ }
725
+ })
726
+ ```
727
+
728
+ ### Link Preview
729
+
730
+ ```js
731
+ // Link preview otomatis jika ada link-preview-js terinstall
732
+ await sock.sendMessage(jid, {
733
+ text: 'Cek ini: https://github.com/Nazril0/nanazxbaileys'
734
+ })
735
+
736
+ // Nonaktifkan link preview
737
+ await sock.sendMessage(jid, {
738
+ text: 'https://example.com',
739
+ linkPreview: null
740
+ })
741
+ ```
742
+
743
+ ---
744
+
745
+ ## 🎛️ Buttons & Interactive
746
+
747
+ ### Reply Buttons
748
+
749
+ ```js
750
+ await sock.sendMessage(jid, {
751
+ buttonsMessage: {
752
+ text: 'Pilih salah satu:',
753
+ footer: 'Footer teks',
754
+ buttons: [
755
+ { buttonId: 'id1', buttonText: { displayText: 'Tombol 1' }, type: 1 },
756
+ { buttonId: 'id2', buttonText: { displayText: 'Tombol 2' }, type: 1 },
757
+ { buttonId: 'id3', buttonText: { displayText: 'Tombol 3' }, type: 1 }
758
+ ],
759
+ headerType: 1
760
+ }
761
+ })
762
+ ```
763
+
764
+ ### List Message
765
+
766
+ ```js
767
+ await sock.sendMessage(jid, {
768
+ listMessage: {
769
+ title: 'Menu Bot',
770
+ description: 'Pilih fitur yang kamu mau',
771
+ buttonText: 'Buka Menu',
772
+ listType: 1,
773
+ sections: [
774
+ {
775
+ title: 'Kategori 1',
776
+ rows: [
777
+ { title: 'Fitur A', description: 'Deskripsi A', rowId: 'fitur_a' },
778
+ { title: 'Fitur B', description: 'Deskripsi B', rowId: 'fitur_b' }
779
+ ]
780
+ },
781
+ {
782
+ title: 'Kategori 2',
783
+ rows: [
784
+ { title: 'Fitur C', description: 'Deskripsi C', rowId: 'fitur_c' }
785
+ ]
786
+ }
787
+ ]
788
+ }
789
+ })
790
+ ```
791
+
792
+ ### Template Buttons
793
+
794
+ ```js
795
+ await sock.sendMessage(jid, {
796
+ templateMessage: {
797
+ hydratedTemplate: {
798
+ hydratedContentText: 'Halo! Ada yang bisa dibantu?',
799
+ hydratedFooterText: 'Footer',
800
+ hydratedButtons: [
801
+ { quickReplyButton: { displayText: 'Ya', id: 'ya' } },
802
+ { quickReplyButton: { displayText: 'Tidak', id: 'tidak' } },
803
+ { urlButton: { displayText: 'Kunjungi Web', url: 'https://github.com/Nazril0' } },
804
+ { callButton: { displayText: 'Hubungi', phoneNumber: '+628xxx' } }
805
+ ]
806
+ }
807
+ }
808
+ })
809
+ ```
810
+
811
+ ### Interactive Message (nativeFlow)
812
+
813
+ ```js
814
+ // Tombol quick reply
815
+ await sock.sendMessage(jid, {
816
+ interactiveMessage: {
817
+ body: { text: 'Pilih aksi:' },
818
+ footer: { text: 'Footer teks' },
819
+ nativeFlowMessage: {
820
+ buttons: [
821
+ {
822
+ name: 'quick_reply',
823
+ buttonParamsJson: JSON.stringify({ display_text: 'Balas', id: 'balas' })
824
+ },
825
+ {
826
+ name: 'cta_url',
827
+ buttonParamsJson: JSON.stringify({
828
+ display_text: 'Kunjungi',
829
+ url: 'https://github.com/Nazril0',
830
+ merchant_url: 'https://github.com/Nazril0'
831
+ })
832
+ },
833
+ {
834
+ name: 'cta_call',
835
+ buttonParamsJson: JSON.stringify({ display_text: 'Telepon', phone_number: '+628xxx' })
836
+ },
837
+ {
838
+ name: 'cta_copy',
839
+ buttonParamsJson: JSON.stringify({
840
+ display_text: 'Salin Kode',
841
+ copy_code: 'NAZX2025'
842
+ })
843
+ }
844
+ ]
845
+ }
846
+ }
847
+ })
848
+
849
+ // Dengan gambar di header
850
+ await sock.sendMessage(jid, {
851
+ interactiveMessage: {
852
+ image: { url: './thumb.jpg' },
853
+ title: 'Header',
854
+ body: { text: 'Deskripsi' },
855
+ footer: { text: 'Footer' },
856
+ nativeFlowMessage: {
857
+ buttons: [
858
+ { name: 'quick_reply', buttonParamsJson: JSON.stringify({ display_text: 'Ok', id: 'ok' }) }
859
+ ]
860
+ }
861
+ }
862
+ })
863
+ ```
864
+
865
+ ### Interactive Buttons (Baron)
866
+
867
+ > Wrapper Baron untuk interactiveMessage — support media di header
868
+
869
+ ```js
870
+ await sock.sendMessage(jid, {
871
+ interactiveButtons: [
872
+ { name: 'quick_reply', buttonParamsJson: JSON.stringify({ display_text: 'Ya', id: 'ya' }) },
873
+ { name: 'quick_reply', buttonParamsJson: JSON.stringify({ display_text: 'Tidak', id: 'tidak' }) }
874
+ ],
875
+ text: 'Pilih jawaban:',
876
+ footer: 'Footer teks',
877
+ title: 'Header Judul',
878
+ image: { url: './thumb.jpg' } // opsional: image/video/document
879
+ })
880
+
881
+ // Dengan externalAdReply (iklan/preview eksternal)
882
+ await sock.sendMessage(jid, {
883
+ interactiveButtons: [
884
+ { name: 'quick_reply', buttonParamsJson: JSON.stringify({ display_text: 'Cek', id: 'cek' }) }
885
+ ],
886
+ text: 'Lihat penawaran ini!',
887
+ externalAdReply: {
888
+ title: 'Judul Iklan',
889
+ body: 'Deskripsi iklan',
890
+ thumbnailUrl: 'https://example.com/thumb.jpg',
891
+ sourceUrl: 'https://example.com',
892
+ mediaType: 1,
893
+ renderLargerThumbnail: true,
894
+ showAdAttribution: true
895
+ }
896
+ })
897
+ ```
898
+
899
+ ### Payment Request
900
+
901
+ ```js
902
+ await sock.sendMessage(jid, {
903
+ requestPaymentMessage: {
904
+ amount: 50000, // dalam satuan 1/1000 (50000 = Rp 50)
905
+ currency: 'IDR',
906
+ from: '628xxx@s.whatsapp.net',
907
+ expiry: Date.now() + 86400000,
908
+ note: 'Pembayaran untuk ...' // atau sticker
909
+ }
910
+ })
911
+ ```
912
+
913
+ ### Product Message
914
+
915
+ ```js
916
+ await sock.sendMessage(jid, {
917
+ productMessage: {
918
+ title: 'Nama Produk',
919
+ description: 'Deskripsi produk',
920
+ thumbnail: { url: './produk.jpg' }, // atau Buffer
921
+ productId: 'PROD123',
922
+ retailerId: 'SKU-001',
923
+ url: 'https://toko.com/produk',
924
+ priceAmount1000: 50000000, // Rp 50.000 (dalam 1/1000)
925
+ currencyCode: 'IDR',
926
+ body: 'Teks body pesan',
927
+ footer: 'Teks footer',
928
+ buttons: [
929
+ { name: 'quick_reply', buttonParamsJson: JSON.stringify({ display_text: 'Pesan', id: 'pesan' }) }
930
+ ]
931
+ }
932
+ })
933
+ ```
934
+
935
+ ### Poll Result
936
+
937
+ ```js
938
+ // Kirim hasil poll (snapshot)
939
+ await sock.sendMessage(jid, {
940
+ pollResultMessage: {
941
+ name: 'Nama Poll',
942
+ pollVotes: [
943
+ { optionName: 'Opsi A', optionVoteCount: 10 },
944
+ { optionName: 'Opsi B', optionVoteCount: 5 }
945
+ ]
946
+ }
947
+ })
948
+ ```
949
+
950
+ ### Button Reply
951
+
952
+ ```js
953
+ // Balas template button
954
+ await sock.sendMessage(jid, {
955
+ buttonReply: { displayText: 'Ya', id: 'ya', index: 0 },
956
+ type: 'template'
957
+ })
958
+
959
+ // Balas plain button
960
+ await sock.sendMessage(jid, {
961
+ buttonReply: { displayText: 'Ya', id: 'ya' },
962
+ type: 'plain'
963
+ })
964
+ ```
965
+
966
+ ### List Reply
967
+
968
+ ```js
969
+ await sock.sendMessage(jid, {
970
+ listReply: {
971
+ singleSelectReply: { selectedRowId: 'fitur_a' },
972
+ title: 'Fitur A',
973
+ description: 'Kamu pilih Fitur A'
974
+ }
975
+ })
976
+ ```
977
+
978
+ ---
979
+
980
+ ## 📡 relayMessage
981
+
982
+ > `relayMessage` adalah fungsi low-level untuk mengirim pesan langsung (tanpa generate ulang). Digunakan untuk kasus custom.
983
+
984
+ ```js
985
+ // Relay pesan biasa
986
+ await sock.relayMessage(jid, fullMsg.message, {
987
+ messageId: fullMsg.key.id
988
+ })
989
+
990
+ // Relay ke status (stories)
991
+ await sock.relayMessage('status@broadcast', msg.message, {
992
+ messageId: msg.key.id,
993
+ statusJidList: ['628xxx@s.whatsapp.net', '628yyy@s.whatsapp.net']
994
+ })
995
+
996
+ // Relay ke newsletter
997
+ await sock.relayMessage('xxxxxxxxxxx@newsletter', msg.message, {
998
+ messageId: msg.key.id
999
+ })
1000
+
1001
+ // Relay dengan participant tertentu (di grup)
1002
+ await sock.relayMessage(groupJid, msg.message, {
1003
+ messageId: msg.key.id,
1004
+ participant: '628xxx@s.whatsapp.net'
1005
+ })
1006
+
1007
+ // Relay dengan attribute tambahan (mis. untuk delete/edit)
1008
+ await sock.relayMessage(jid, msg.message, {
1009
+ messageId: msg.key.id,
1010
+ additionalAttributes: { edit: '7' } // 7=hapus sendiri, 8=hapus admin grup, 1=edit, 2=pin
1011
+ })
1012
+ ```
1013
+
1014
+ ---
1015
+
1016
+ ## 📥 Download Media
1017
+
1018
+ ```js
1019
+ import { downloadMediaMessage, getContentType } from '@nanazx/baileys'
1020
+
1021
+ sock.ev.on('messages.upsert', async ({ messages }) => {
1022
+ const msg = messages[0]
1023
+ if (!msg.message) return
1024
+
1025
+ const type = getContentType(msg.message)
1026
+ // 'imageMessage' | 'videoMessage' | 'audioMessage' | 'documentMessage' | 'stickerMessage' | ...
1027
+
1028
+ if (type === 'imageMessage') {
1029
+ // Download sebagai buffer
1030
+ const buffer = await downloadMediaMessage(msg, 'buffer', {})
1031
+ require('fs').writeFileSync('./hasil.jpg', buffer)
1032
+
1033
+ // Atau sebagai stream
1034
+ const stream = await downloadMediaMessage(msg, 'stream', {})
1035
+ stream.pipe(require('fs').createWriteStream('./hasil.jpg'))
1036
+ }
1037
+ })
1038
+ ```
1039
+
1040
+ ---
1041
+
1042
+ ## 🔄 Re-upload Media
1043
+
1044
+ ```js
1045
+ // WA kadang hapus media lama — re-upload dari device lain
1046
+ await sock.updateMediaMessage(msg)
1047
+ ```
1048
+
1049
+ ---
1050
+
1051
+ ## 📖 Read Messages
1052
+
1053
+ ```js
1054
+ // Tandai pesan sudah dibaca (satu atau banyak sekaligus)
1055
+ await sock.readMessages([msg.key])
1056
+ await sock.readMessages([msg1.key, msg2.key, msg3.key])
1057
+ ```
1058
+
1059
+ ---
1060
+
1061
+ ## 👁️ Presence
1062
+
1063
+ ```js
1064
+ // Pantau presence orang lain (typing, online)
1065
+ await sock.presenceSubscribe(jid)
1066
+ sock.ev.on('presence.update', ({ id, presences }) => {
1067
+ console.log(id, presences)
1068
+ // presences = { '628xxx@s.whatsapp.net': { lastKnownPresence: 'composing' } }
1069
+ })
1070
+
1071
+ // Update presence kamu sendiri
1072
+ // 'available' | 'unavailable' | 'composing' | 'recording' | 'paused'
1073
+ await sock.sendPresenceUpdate('composing', jid) // tampil "mengetik..."
1074
+ await sock.sendPresenceUpdate('recording', jid) // tampil "merekam..."
1075
+ await sock.sendPresenceUpdate('available') // online
1076
+ await sock.sendPresenceUpdate('unavailable') // offline
1077
+ ```
1078
+
1079
+ ---
1080
+
1081
+ ## 👥 Groups
1082
+
1083
+ ```js
1084
+ // Buat grup
1085
+ const group = await sock.groupCreate('Nama Grup', ['628xxx@s.whatsapp.net'])
1086
+ console.log('ID Grup:', group.gid)
1087
+
1088
+ // Add / Kick / Promote / Demote
1089
+ await sock.groupParticipantsUpdate(jid, ['628xxx@s.whatsapp.net'], 'add')
1090
+ // action: 'add' | 'remove' | 'promote' | 'demote'
1091
+
1092
+ // Ganti nama grup
1093
+ await sock.groupUpdateSubject(jid, 'Nama Baru')
1094
+
1095
+ // Ganti deskripsi
1096
+ await sock.groupUpdateDescription(jid, 'Deskripsi baru')
1097
+
1098
+ // Ubah setting
1099
+ await sock.groupSettingUpdate(jid, 'announcement') // hanya admin yang bisa kirim
1100
+ await sock.groupSettingUpdate(jid, 'not_announcement') // semua bisa kirim
1101
+ await sock.groupSettingUpdate(jid, 'locked') // hanya admin yang ubah info
1102
+ await sock.groupSettingUpdate(jid, 'unlocked') // semua bisa ubah info
1103
+
1104
+ // Keluar dari grup
1105
+ await sock.groupLeave(jid)
1106
+
1107
+ // Invite link
1108
+ const code = await sock.groupInviteCode(jid)
1109
+ console.log('https://chat.whatsapp.com/' + code)
1110
+ await sock.groupRevokeInvite(jid) // reset link
1111
+ await sock.groupAcceptInvite('kode') // join via kode
1112
+ const info = await sock.groupGetInviteInfo('kode') // info grup via kode
1113
+
1114
+ // Metadata grup
1115
+ const meta = await sock.groupMetadata(jid)
1116
+ console.log(meta.subject, meta.participants)
1117
+
1118
+ // Semua grup yang diikuti
1119
+ const all = await sock.groupFetchAllParticipating()
1120
+
1121
+ // Join request (grup dengan approval)
1122
+ const requests = await sock.groupRequestParticipantsList(jid)
1123
+ await sock.groupRequestParticipantsUpdate(jid, ['628xxx@s.whatsapp.net'], 'approve')
1124
+ // action: 'approve' | 'reject'
1125
+
1126
+ // Pesan menghilang (0 = off)
1127
+ await sock.groupToggleEphemeral(jid, 86400)
1128
+
1129
+ // Mode tambah anggota
1130
+ await sock.groupMemberAddMode(jid, 'all_member_add') // atau 'admin_add'
1131
+
1132
+ // Join approval mode
1133
+ await sock.groupJoinApprovalMode(jid, 'on') // 'on' | 'off'
1134
+
1135
+ // Acknowledge grup (tandai grup sudah dibaca)
1136
+ await sock.groupAcknowledge(jid)
1137
+ ```
1138
+
1139
+ ---
1140
+
1141
+ ## 📡 Newsletter (Channel)
1142
+
1143
+ ```js
1144
+ // Buat channel
1145
+ await sock.newsletterCreate('Nama Channel', 'Deskripsi')
1146
+
1147
+ // Metadata channel
1148
+ const meta = await sock.newsletterMetadata('invite', 'kode_atau_jid')
1149
+
1150
+ // Update channel
1151
+ await sock.newsletterUpdateName(jid, 'Nama Baru')
1152
+ await sock.newsletterUpdateDescription(jid, 'Deskripsi baru')
1153
+ await sock.newsletterUpdatePicture(jid, { url: './foto.jpg' })
1154
+ await sock.newsletterRemovePicture(jid)
1155
+
1156
+ // Ambil pesan channel
1157
+ const msgs = await sock.newsletterFetchMessages(jid, 10)
1158
+
1159
+ // Reaksi pada pesan channel
1160
+ await sock.newsletterReactMessage(jid, serverId, '🔥')
1161
+
1162
+ // Subscribe update channel (realtime)
1163
+ await sock.subscribeNewsletterUpdates(jid)
1164
+
1165
+ // Info admin & ganti owner
1166
+ const count = await sock.newsletterAdminCount(jid)
1167
+ await sock.newsletterChangeOwner(jid, newOwnerJid)
1168
+ await sock.newsletterDemote(jid, userJid)
1169
+
1170
+ // Daftar subscribers
1171
+ const subs = await sock.newsletterSubscribers(jid)
1172
+
1173
+ // Hapus channel
1174
+ await sock.newsletterDelete(jid)
1175
+ ```
1176
+
1177
+ ---
1178
+
1179
+ ## 🌐 Community
1180
+
1181
+ ```js
1182
+ // Buat community
1183
+ const community = await sock.communityCreate('Nama Community', 'Deskripsi')
1184
+
1185
+ // Buat grup di dalam community
1186
+ await sock.communityCreateGroup('Nama Grup', ['628xxx@s.whatsapp.net'], communityJid)
1187
+
1188
+ // Link / unlink grup ke community
1189
+ await sock.communityLinkGroup(groupJid, communityJid)
1190
+ await sock.communityUnlinkGroup(groupJid, communityJid)
1191
+
1192
+ // Ambil semua linked groups
1193
+ const linked = await sock.communityFetchLinkedGroups(communityJid)
1194
+
1195
+ // Update community
1196
+ await sock.communityUpdateSubject(communityJid, 'Nama Baru')
1197
+ await sock.communityUpdateDescription(communityJid, 'Deskripsi')
1198
+
1199
+ // Invite link
1200
+ const code = await sock.communityInviteCode(communityJid)
1201
+ await sock.communityRevokeInvite(communityJid)
1202
+ await sock.communityAcceptInvite('kode')
1203
+
1204
+ // Kelola anggota
1205
+ await sock.communityParticipantsUpdate(communityJid, ['628xxx@s.whatsapp.net'], 'add')
1206
+ // action: 'add' | 'remove' | 'promote' | 'demote'
1207
+
1208
+ // Join request
1209
+ const reqs = await sock.communityRequestParticipantsList(communityJid)
1210
+ await sock.communityRequestParticipantsUpdate(communityJid, ['628xxx@s.whatsapp.net'], 'approve')
1211
+
1212
+ // Keluar dari community
1213
+ await sock.communityLeave(communityJid)
1214
+ ```
1215
+
1216
+ ---
1217
+
1218
+ ## 🤖 AI Groups
1219
+
1220
+ ```js
1221
+ // Buat AI Group
1222
+ const aiGroup = await sock.aiGroupCreate('Nama AI Group', ['628xxx@s.whatsapp.net'])
1223
+
1224
+ // Tambah bot ke AI group (default: Meta AI)
1225
+ await sock.aiGroupAddBot(jid)
1226
+ await sock.aiGroupAddBot(jid, '867051314767696') // explicit bot ID
1227
+
1228
+ // Update subjek
1229
+ await sock.aiGroupUpdateSubject(jid, 'Subjek Baru')
1230
+
1231
+ // Get invite code & join
1232
+ const code = await sock.aiGroupInviteCode(jid)
1233
+ await sock.aiGroupAcceptInvite('kode')
1234
+ await sock.aiGroupRevokeInvite(jid)
1235
+
1236
+ // Kelola anggota
1237
+ await sock.aiGroupParticipantsUpdate(jid, ['628xxx@s.whatsapp.net'], 'add')
1238
+
1239
+ // Setting & ephemeral
1240
+ await sock.aiGroupSettingUpdate(jid, 'announcement')
1241
+ await sock.aiGroupToggleEphemeral(jid, 86400)
1242
+
1243
+ // Keluar
1244
+ await sock.aiGroupLeave(jid)
1245
+ ```
1246
+
1247
+ ---
1248
+
1249
+ ## 🔗 Username WA
1250
+
1251
+ ```js
1252
+ // Cek ketersediaan username
1253
+ const result = await sock.checkUsername('nazxtampan')
1254
+ // { available: true, username: 'nazxtampan' }
1255
+
1256
+ // Set username
1257
+ await sock.setUsername('nazxtampan')
1258
+
1259
+ // Get username kamu
1260
+ const me = await sock.getMyUsername()
1261
+
1262
+ // Cari user berdasarkan username
1263
+ const user = await sock.findUserByUsername('nazxtampan')
1264
+ // { jid: '628xxx@s.whatsapp.net', contact: false } atau null
1265
+
1266
+ // Ambil username dari daftar JID
1267
+ const usernames = await sock.fetchContactUsernames('628xxx@s.whatsapp.net')
1268
+
1269
+ // Cek banyak username sekaligus
1270
+ const results = await sock.checkUsernameMulti(['nazx', 'nazxtampan', 'nazxbot'])
1271
+
1272
+ // Rekomendasi username
1273
+ const recs = await sock.getUsernameRecommendations()
1274
+
1275
+ // Set PIN username
1276
+ await sock.setUsernamePin('123456')
1277
+
1278
+ // Hapus username
1279
+ await sock.deleteUsername()
1280
+ ```
1281
+
1282
+ ---
1283
+
1284
+ ## 🔒 Privacy
1285
+
1286
+ ```js
1287
+ // Blokir / Unblokir
1288
+ await sock.updateBlockStatus(jid, 'block')
1289
+ await sock.updateBlockStatus(jid, 'unblock')
1290
+
1291
+ // Ambil privacy settings
1292
+ const privacy = await sock.fetchPrivacySettings()
1293
+ const freshPrivacy = await sock.fetchPrivacySettings(true) // force refresh
1294
+
1295
+ // Ambil blocklist
1296
+ const blocklist = await sock.fetchBlocklist()
1297
+
1298
+ // Update privacy (IQ-based)
1299
+ await sock.updateLastSeenPrivacy('contacts') // 'all' | 'contacts' | 'contact_blacklist' | 'none'
1300
+ await sock.updateOnlinePrivacy('all') // 'all' | 'match_last_seen'
1301
+ await sock.updateProfilePicturePrivacy('contacts') // 'all' | 'contacts' | 'contact_blacklist' | 'none'
1302
+ await sock.updateStatusPrivacy('contacts')
1303
+ await sock.updateReadReceiptsPrivacy('all') // 'all' | 'none'
1304
+ await sock.updateGroupsAddPrivacy('contacts') // 'all' | 'contacts' | 'contact_blacklist'
1305
+ await sock.updateCallPrivacy('all')
1306
+ await sock.updateDefaultDisappearingMode(86400) // 0 = off
1307
+
1308
+ // Set via MEX GraphQL (lowercase feature & setting)
1309
+ await sock.setPrivacySetting('last', 'contacts')
1310
+ await sock.setPrivacySetting('online', 'all')
1311
+ await sock.setPrivacySetting('profile', 'contacts')
1312
+ await sock.setPrivacySetting('status', 'contacts')
1313
+ await sock.setPrivacySetting('readreceipts', 'all')
1314
+ await sock.setPrivacySetting('groupadd', 'contact_blacklist')
1315
+ await sock.setPrivacySetting('calladd', 'contacts')
1316
+ await sock.setPrivacySetting('defense', 'on_standard') // anti-scraping
1317
+
1318
+ // Kelola contact list untuk blacklist
1319
+ await sock.updatePrivacyContactList('groupadd', 'contact_blacklist', [jid1, jid2])
1320
+ const current = await sock.getPrivacyContactList('groupadd', 'contact_blacklist')
1321
+
1322
+ // Block pesan dari akun tidak dikenal
1323
+ const status = await sock.getChatBlockingStatus() // 'blocked' | 'unblocked'
1324
+ await sock.updateChatBlockingStatus('block')
1325
+ ```
1326
+
1327
+ ---
1328
+
1329
+ ## 👤 User & Profile
1330
+
1331
+ ```js
1332
+ // Cek apakah nomor terdaftar di WA
1333
+ const [result] = await sock.onWhatsApp('628xxxxxxxxx')
1334
+ console.log(result.exists, result.jid)
1335
+
1336
+ // Foto profil
1337
+ const pp = await sock.profilePictureUrl(jid, 'preview') // resolusi rendah
1338
+ const ppHD = await sock.profilePictureUrl(jid, 'image') // resolusi tinggi
1339
+
1340
+ // Status teks (legacy)
1341
+ const status = await sock.fetchStatus(jid)
1342
+
1343
+ // About text via MEX
1344
+ const abouts = await sock.getTextStatusList([jid])
1345
+ // [{ jid, text: 'Hey there!', emoji: '👋', timestamp: 1234567890 }]
1346
+
1347
+ // Profil bisnis
1348
+ const biz = await sock.getBusinessProfile(jid)
1349
+
1350
+ // Update profil
1351
+ await sock.updateProfileName('Nama Baru')
1352
+ await sock.updateProfileStatus('Bot aktif 24/7 🤖')
1353
+ await sock.updateProfilePicture(jid, { url: './foto.jpg' })
1354
+ await sock.removeProfilePicture(jid)
1355
+
1356
+ // History chat
1357
+ await sock.fetchMessageHistory(50, oldestMsg.key, oldestMsg.messageTimestamp)
1358
+
1359
+ // Verifikasi JID sebelum buka chat
1360
+ const integrity = await sock.contactIntegrityQuery([jid])
1361
+ ```
1362
+
1363
+ ---
1364
+
1365
+ ## 💬 Modifikasi Chat
1366
+
1367
+ ```js
1368
+ // Archive / Unarchive
1369
+ await sock.chatModify({ archive: true, lastMessages: [msg] }, jid)
1370
+ await sock.chatModify({ archive: false, lastMessages: [msg] }, jid)
1371
+
1372
+ // Mute (dalam ms) | null = unmute
1373
+ await sock.chatModify({ mute: 8 * 60 * 60 * 1000 }, jid) // mute 8 jam
1374
+ await sock.chatModify({ mute: 7 * 24 * 60 * 60 * 1000 }, jid) // mute 7 hari
1375
+ await sock.chatModify({ mute: null }, jid) // unmute
1376
+
1377
+ // Tandai belum/sudah dibaca
1378
+ await sock.chatModify({ markRead: false, lastMessages: [msg] }, jid)
1379
+ await sock.chatModify({ markRead: true, lastMessages: [msg] }, jid)
1380
+
1381
+ // Hapus pesan untuk saya saja
1382
+ await sock.chatModify({
1383
+ clear: {
1384
+ messages: [{ id: msg.key.id, fromMe: msg.key.fromMe, timestamp: msg.messageTimestamp }]
1385
+ }
1386
+ }, jid)
1387
+
1388
+ // Hapus seluruh chat
1389
+ await sock.chatModify({ delete: true, lastMessages: [msg] }, jid)
1390
+
1391
+ // Pin / Unpin chat
1392
+ await sock.chatModify({ pin: true }, jid)
1393
+ await sock.chatModify({ pin: false }, jid)
1394
+
1395
+ // Bintangi / Hapus bintang pesan
1396
+ await sock.chatModify({
1397
+ star: {
1398
+ messages: [{ id: msg.key.id, fromMe: msg.key.fromMe }],
1399
+ star: true // false = hapus bintang
1400
+ }
1401
+ }, jid)
1402
+
1403
+ // Pesan menghilang di chat
1404
+ await sock.sendMessage(jid, { disappearingMessagesInChat: 86400 }) // aktifkan
1405
+ await sock.sendMessage(jid, { disappearingMessagesInChat: false }) // nonaktifkan
1406
+ ```
1407
+
1408
+ ---
1409
+
1410
+ ## 📞 Panggilan
1411
+
1412
+ ```js
1413
+ // Tolak panggilan masuk
1414
+ await sock.rejectCall(callId, callFrom)
1415
+
1416
+ // Buat call link
1417
+ const token = await sock.createCallLink('audio') // 'audio' | 'video'
1418
+
1419
+ // Toggle waiting room di call link
1420
+ await sock.toggleCallLinkWaitingRoom(token, true, 'audio')
1421
+
1422
+ // Event panggilan
1423
+ sock.ev.on('call', (calls) => {
1424
+ for (const call of calls) {
1425
+ console.log('Panggilan dari:', call.from, 'status:', call.status)
1426
+ // Tolak otomatis
1427
+ if (call.status === 'offer') {
1428
+ sock.rejectCall(call.id, call.from)
1429
+ }
1430
+ }
1431
+ })
1432
+ ```
1433
+
1434
+ ---
1435
+
1436
+ ## 🗳️ Decrypt Poll Votes
1437
+
1438
+ ```js
1439
+ import { getAggregateVotesInPollMessage } from '@nanazx/baileys'
1440
+
1441
+ sock.ev.on('messages.update', async (updates) => {
1442
+ for (const { key, update } of updates) {
1443
+ if (update.pollUpdates) {
1444
+ const pollCreation = await getMessage(key) // ambil dari store
1445
+ if (pollCreation) {
1446
+ const votes = getAggregateVotesInPollMessage({
1447
+ message: pollCreation,
1448
+ pollUpdates: update.pollUpdates
1449
+ })
1450
+ console.log('Hasil poll:', votes)
1451
+ // [{ name: 'Opsi A', voters: ['628xxx@s.whatsapp.net'] }, ...]
1452
+ }
1453
+ }
1454
+ }
1455
+ })
1456
+ ```
1457
+
1458
+ ---
1459
+
1460
+ ## 🔧 Custom Functionality
1461
+
1462
+ ```js
1463
+ import P from 'pino'
1464
+
1465
+ // Enable debug logs
1466
+ const sock = makeWASocket({ logger: P({ level: 'debug' }) })
1467
+
1468
+ // Raw WebSocket events
1469
+ sock.ws.on('CB:message', node => console.log(node))
1470
+
1471
+ // Register callback untuk WA node tertentu
1472
+ sock.ws.on('CB:edge_routing', node => {})
1473
+ sock.ws.on('CB:ib,,dirty', node => {})
1474
+ sock.ws.on('CB:iq,,result', node => {})
1475
+
1476
+ // Raw WebSocket callback dengan filter atribut
1477
+ sock.ws.on('CB:edge_routing,id:abcd', node => {})
1478
+ sock.ws.on('CB:edge_routing,id:abcd,routing_info', node => {})
1479
+ ```
1480
+
1481
+ ---
1482
+
1483
+ ## 📁 Struktur Library
1484
+
1485
+ ```
1486
+ @nanazx/baileys/
1487
+ ├── lib/
1488
+ │ ├── Socket/
1489
+ │ │ ├── socket.js # core websocket
1490
+ │ │ ├── messages-send.js # sendMessage, relayMessage, readMessages
1491
+ │ │ ├── messages-recv.js # terima & decode pesan
1492
+ │ │ ├── interactive-handler.js # Baron class (album, event, interactive, dll)
1493
+ │ │ ├── chats.js # chat modifier, presence, profile, user queries
1494
+ │ │ ├── groups.js # group management
1495
+ │ │ ├── newsletter.js # channel/newsletter WA
1496
+ │ │ ├── communities.js # community WA
1497
+ │ │ ├── aigroups.js # AI Groups ★ nanazx
1498
+ │ │ ├── username.js # WA username ★ nanazx
1499
+ │ │ ├── privacy.js # MEX privacy ★ nanazx
1500
+ │ │ ├── interop.js # FB/IG interop ★ nanazx
1501
+ │ │ ├── graphql.js # HTTPS GraphQL ★ nanazx
1502
+ │ │ ├── managed-account.js # managed account ★ nanazx
1503
+ │ │ ├── registration.js # registrasi & passkeys ★ nanazx
1504
+ │ │ └── mex.js # MEX protocol core ★ nanazx
1505
+ │ ├── Utils/
1506
+ │ │ ├── messages.js # generateWAMessage & semua content types
1507
+ │ │ ├── messages-media.js # upload, download, thumbnail media
1508
+ │ │ ├── auth-utils.js # auth state utilities
1509
+ │ │ ├── crypto.js # enkripsi/dekripsi
1510
+ │ │ └── ...
1511
+ │ ├── Types/ # TypeScript type definitions
1512
+ │ ├── Store/ # in-memory store
1513
+ │ └── Defaults/ # konfigurasi default
1514
+ └── WAProto/ # protobuf WhatsApp
1515
+ ```
1516
+
1517
+ ---
1518
+
1519
+ ## 🙏 Credits
1520
+
1521
+ | Project | Link |
1522
+ |---------|------|
1523
+ | **Baileys** (by WhiskeySockets) | [github.com/WhiskeySockets/Baileys](https://github.com/WhiskeySockets/Baileys) |
1524
+ | **baron-baileys-v2** (by 7ucg) | [github.com/7ucg/baron-baileys-v2](https://github.com/7ucg/baron-baileys-v2) |
1525
+
1526
+ Terima kasih besar kepada seluruh kontributor dan maintainer kedua proyek luar biasa tersebut 🫶
1527
+
1528
+ ---
1529
+
1530
+ ## 📱 Kontak
1531
+
1532
+ | Platform | Link |
1533
+ |----------|------|
1534
+ | 🐙 GitHub | [@Nazril0](https://github.com/Nazril0) |
1535
+ | 📸 Instagram | [@nazzxx._0](https://instagram.com/nazzxx._0) |
1536
+ | 🎵 TikTok | [@nazxtampan__](https://tiktok.com/@nazxtampan__) |
1537
+
1538
+ ---
1539
+
1540
+ <div align="center">
1541
+
1542
+ Made with ❤️ by **nazx**
1543
+
1544
+ Built on top of [WhiskeySockets/Baileys](https://github.com/WhiskeySockets/Baileys) & [7ucg/baron-baileys-v2](https://github.com/7ucg/baron-baileys-v2)
1545
+
1546
+ ⚠️ Tidak berafiliasi dengan WhatsApp. Gunakan dengan tanggung jawab.
1547
+
1548
+ </div>