@badzz88/baileys 8.5.4 → 8.5.6

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 (269) hide show
  1. package/README.md +2 -2
  2. package/WAProto/fix-imports.js +69 -79
  3. package/WAProto/index.d.ts +15305 -87935
  4. package/WAProto/index.js +41109 -194076
  5. package/engine-requirements.js +15 -8
  6. package/package.json +23 -19
  7. package/src/Defaults/index.js +186 -0
  8. package/src/Signal/Group/ciphertext-message.js +15 -0
  9. package/src/Signal/Group/group-session-builder.js +86 -0
  10. package/src/Signal/Group/group_cipher.js +82 -0
  11. package/src/Signal/Group/index.js +140 -0
  12. package/src/Signal/Group/keyhelper.js +77 -0
  13. package/src/Signal/Group/sender-chain-key.js +29 -0
  14. package/src/Signal/Group/sender-key-distribution-message.js +66 -0
  15. package/src/Signal/Group/sender-key-message.js +69 -0
  16. package/src/Signal/Group/sender-key-name.js +51 -0
  17. package/src/Signal/Group/sender-key-record.js +44 -0
  18. package/src/Signal/Group/sender-key-state.js +87 -0
  19. package/src/Signal/Group/sender-message-key.js +29 -0
  20. package/src/Signal/libsignal.js +455 -0
  21. package/src/Signal/lid-mapping.js +273 -0
  22. package/src/Socket/Client/index.js +31 -0
  23. package/src/Socket/Client/types.js +13 -0
  24. package/src/Socket/Client/websocket.js +61 -0
  25. package/src/Socket/aigroups.js +221 -0
  26. package/src/Socket/business.js +411 -0
  27. package/src/Socket/chats.js +1449 -0
  28. package/src/Socket/communities.js +463 -0
  29. package/src/Socket/graphql.js +523 -0
  30. package/src/Socket/groups.js +516 -0
  31. package/src/Socket/index.js +31 -0
  32. package/src/Socket/interactive-handler.js +527 -0
  33. package/src/Socket/interop.js +339 -0
  34. package/src/Socket/luxu.js +349 -0
  35. package/src/Socket/managed-account.js +98 -0
  36. package/src/Socket/messages-recv.js +2685 -0
  37. package/src/Socket/messages-send.js +2047 -0
  38. package/src/Socket/mex.js +57 -0
  39. package/src/Socket/newsletter.js +455 -0
  40. package/src/Socket/privacy.js +125 -0
  41. package/src/Socket/registration.js +236 -0
  42. package/src/Socket/socket.js +983 -0
  43. package/src/Socket/text-router.js +65 -0
  44. package/src/Socket/username.js +130 -0
  45. package/src/Store/index.js +33 -0
  46. package/src/Store/keyed-db.js +118 -0
  47. package/src/Store/make-cache-manager-store.js +84 -0
  48. package/src/Store/make-in-memory-store.js +551 -0
  49. package/src/Store/make-ordered-dictionary.js +81 -0
  50. package/src/Store/object-repository.js +26 -0
  51. package/src/Types/Auth.js +31 -0
  52. package/src/Types/Bussines.js +2 -0
  53. package/src/Types/Call.js +2 -0
  54. package/src/Types/Chat.js +4 -0
  55. package/src/Types/Contact.js +2 -0
  56. package/src/Types/Events.js +2 -0
  57. package/src/Types/GroupMetadata.js +2 -0
  58. package/src/Types/Label.js +26 -0
  59. package/src/Types/LabelAssociation.js +8 -0
  60. package/src/Types/Message.js +93 -0
  61. package/src/Types/Mex.js +112 -0
  62. package/src/Types/Newsletter.js +109 -0
  63. package/src/Types/Product.js +2 -0
  64. package/src/Types/Signal.js +2 -0
  65. package/src/Types/Socket.js +2 -0
  66. package/src/Types/State.js +62 -0
  67. package/src/Types/USync.js +2 -0
  68. package/src/Types/index.js +56 -0
  69. package/src/Utils/auth-utils.js +254 -0
  70. package/src/Utils/browser-utils.js +112 -0
  71. package/src/Utils/business.js +240 -0
  72. package/src/Utils/chat-utils.js +1230 -0
  73. package/src/Utils/command-loader.d.ts +27 -0
  74. package/src/Utils/command-loader.js +89 -0
  75. package/src/Utils/companion-reg-client-utils.js +40 -0
  76. package/src/Utils/consumer-application.js +105 -0
  77. package/src/Utils/crypto.js +118 -0
  78. package/src/Utils/curve25519-js.js +242 -0
  79. package/src/Utils/decode-wa-message.js +529 -0
  80. package/src/Utils/event-buffer.js +580 -0
  81. package/src/Utils/generics.js +483 -0
  82. package/src/Utils/group-history.js +44 -0
  83. package/src/Utils/history.js +232 -0
  84. package/src/Utils/identity-change-handler.js +52 -0
  85. package/src/Utils/index.js +58 -0
  86. package/src/Utils/jid-display-normalization.js +195 -0
  87. package/src/Utils/link-preview.js +135 -0
  88. package/src/Utils/logger.js +8 -0
  89. package/src/Utils/lt-hash.js +25 -0
  90. package/src/Utils/make-mutex.js +36 -0
  91. package/src/Utils/message-composer.js +471 -0
  92. package/src/Utils/message-retry-manager.js +217 -0
  93. package/src/Utils/messages-media.js +843 -0
  94. package/src/Utils/messages.js +2817 -0
  95. package/src/Utils/meta-ai-msmsg.js +222 -0
  96. package/src/Utils/native-bridge.js +68 -0
  97. package/src/Utils/noise-handler.js +169 -0
  98. package/src/Utils/offline-node-processor.js +34 -0
  99. package/src/Utils/pre-key-manager.js +90 -0
  100. package/src/Utils/process-message.js +950 -0
  101. package/src/Utils/reporting-utils.js +261 -0
  102. package/src/Utils/session-pool.d.ts +14 -0
  103. package/src/Utils/session-pool.js +70 -0
  104. package/src/Utils/signal.js +217 -0
  105. package/src/Utils/stanza-ack.js +30 -0
  106. package/src/Utils/sticker.d.ts +13 -0
  107. package/src/Utils/sticker.js +123 -0
  108. package/src/Utils/sync-action-utils.js +45 -0
  109. package/src/Utils/tc-token-utils.js +158 -0
  110. package/src/Utils/use-multi-file-auth-state.js +111 -0
  111. package/src/Utils/validate-connection.js +209 -0
  112. package/src/Utils/view-once-cache.d.ts +12 -0
  113. package/src/Utils/view-once-cache.js +63 -0
  114. package/src/Utils/voip-rekey.js +22 -0
  115. package/src/WABinary/constants.js +1304 -0
  116. package/src/WABinary/decode.js +342 -0
  117. package/src/WABinary/encode.js +225 -0
  118. package/src/WABinary/generic-utils.js +238 -0
  119. package/src/WABinary/index.js +34 -0
  120. package/src/WABinary/jid-utils.js +351 -0
  121. package/src/WABinary/types.js +2 -0
  122. package/src/WAM/BinaryInfo.js +13 -0
  123. package/src/WAM/constants.js +39484 -0
  124. package/src/WAM/encode.js +149 -0
  125. package/src/WAM/index.js +32 -0
  126. package/src/WAUSync/Protocols/USyncBotProfileProtocol.js +53 -0
  127. package/src/WAUSync/Protocols/USyncBusinessProtocol.js +44 -0
  128. package/src/WAUSync/Protocols/USyncContactProtocol.js +55 -0
  129. package/src/WAUSync/Protocols/USyncDeviceProtocol.js +55 -0
  130. package/src/WAUSync/Protocols/USyncDisappearingModeProtocol.js +31 -0
  131. package/src/WAUSync/Protocols/USyncFeatureProtocol.js +54 -0
  132. package/src/WAUSync/Protocols/USyncLIDProtocol.js +32 -0
  133. package/src/WAUSync/Protocols/USyncNewsletterProtocol.js +473 -0
  134. package/src/WAUSync/Protocols/USyncPictureProtocol.js +34 -0
  135. package/src/WAUSync/Protocols/USyncSidelistProtocol.js +29 -0
  136. package/src/WAUSync/Protocols/USyncStatusProtocol.js +42 -0
  137. package/src/WAUSync/Protocols/USyncTextStatusProtocol.js +38 -0
  138. package/src/WAUSync/Protocols/USyncUsernameProtocol.js +28 -0
  139. package/src/WAUSync/Protocols/index.js +40 -0
  140. package/src/WAUSync/USyncQuery.js +126 -0
  141. package/src/WAUSync/USyncUser.js +50 -0
  142. package/src/WAUSync/index.js +32 -0
  143. package/src/antiban.js +4152 -0
  144. package/{lib → src}/index.js +51 -49
  145. package/lib/Defaults/index.js +0 -195
  146. package/lib/Signal/Group/ciphertext-message.js +0 -15
  147. package/lib/Signal/Group/group-session-builder.js +0 -92
  148. package/lib/Signal/Group/group_cipher.js +0 -89
  149. package/lib/Signal/Group/index.js +0 -136
  150. package/lib/Signal/Group/keyhelper.js +0 -73
  151. package/lib/Signal/Group/sender-chain-key.js +0 -32
  152. package/lib/Signal/Group/sender-key-distribution-message.js +0 -66
  153. package/lib/Signal/Group/sender-key-message.js +0 -69
  154. package/lib/Signal/Group/sender-key-name.js +0 -50
  155. package/lib/Signal/Group/sender-key-record.js +0 -44
  156. package/lib/Signal/Group/sender-key-state.js +0 -97
  157. package/lib/Signal/Group/sender-message-key.js +0 -30
  158. package/lib/Signal/libsignal.js +0 -470
  159. package/lib/Signal/lid-mapping.js +0 -280
  160. package/lib/Socket/Client/index.js +0 -30
  161. package/lib/Socket/Client/types.js +0 -13
  162. package/lib/Socket/Client/websocket.js +0 -62
  163. package/lib/Socket/aigroups.js +0 -240
  164. package/lib/Socket/business.js +0 -414
  165. package/lib/Socket/chats.js +0 -2165
  166. package/lib/Socket/communities.js +0 -545
  167. package/lib/Socket/graphql.js +0 -863
  168. package/lib/Socket/groups.js +0 -685
  169. package/lib/Socket/index.js +0 -41
  170. package/lib/Socket/interactive-handler.js +0 -579
  171. package/lib/Socket/interop.js +0 -430
  172. package/lib/Socket/managed-account.js +0 -214
  173. package/lib/Socket/messages-recv.js +0 -3000
  174. package/lib/Socket/messages-send.js +0 -2155
  175. package/lib/Socket/mex.js +0 -47
  176. package/lib/Socket/newsletter.js +0 -814
  177. package/lib/Socket/privacy.js +0 -261
  178. package/lib/Socket/registration.js +0 -434
  179. package/lib/Socket/socket.js +0 -1074
  180. package/lib/Socket/username.js +0 -160
  181. package/lib/Store/index.js +0 -36
  182. package/lib/Store/make-cache-manager-store.js +0 -90
  183. package/lib/Store/make-in-memory-store.js +0 -488
  184. package/lib/Store/make-ordered-dictionary.js +0 -81
  185. package/lib/Store/object-repository.js +0 -29
  186. package/lib/Types/Auth.js +0 -38
  187. package/lib/Types/Bussines.js +0 -2
  188. package/lib/Types/Call.js +0 -2
  189. package/lib/Types/Chat.js +0 -4
  190. package/lib/Types/Contact.js +0 -2
  191. package/lib/Types/Events.js +0 -2
  192. package/lib/Types/GroupMetadata.js +0 -2
  193. package/lib/Types/Label.js +0 -27
  194. package/lib/Types/LabelAssociation.js +0 -9
  195. package/lib/Types/Message.js +0 -95
  196. package/lib/Types/Newsletter.js +0 -152
  197. package/lib/Types/Product.js +0 -2
  198. package/lib/Types/Signal.js +0 -2
  199. package/lib/Types/Socket.js +0 -2
  200. package/lib/Types/State.js +0 -70
  201. package/lib/Types/USync.js +0 -2
  202. package/lib/Types/index.js +0 -55
  203. package/lib/Utils/auth-utils.js +0 -301
  204. package/lib/Utils/browser-utils.js +0 -114
  205. package/lib/Utils/business.js +0 -243
  206. package/lib/Utils/chat-utils.js +0 -1272
  207. package/lib/Utils/consumer-application.js +0 -107
  208. package/lib/Utils/crypto.js +0 -125
  209. package/lib/Utils/decode-wa-message.js +0 -793
  210. package/lib/Utils/event-buffer.js +0 -583
  211. package/lib/Utils/generics.js +0 -617
  212. package/lib/Utils/group-history.js +0 -51
  213. package/lib/Utils/history.js +0 -244
  214. package/lib/Utils/identity-change-handler.js +0 -52
  215. package/lib/Utils/index.js +0 -53
  216. package/lib/Utils/jid-display-normalization.js +0 -218
  217. package/lib/Utils/link-preview.js +0 -138
  218. package/lib/Utils/logger.js +0 -9
  219. package/lib/Utils/lt-hash.js +0 -6
  220. package/lib/Utils/make-mutex.js +0 -36
  221. package/lib/Utils/message-composer.js +0 -479
  222. package/lib/Utils/message-inspect.js +0 -393
  223. package/lib/Utils/message-retry-manager.js +0 -205
  224. package/lib/Utils/messages-media.js +0 -925
  225. package/lib/Utils/messages.js +0 -2482
  226. package/lib/Utils/meta-ai-msmsg.js +0 -122
  227. package/lib/Utils/noise-handler.js +0 -194
  228. package/lib/Utils/offline-node-processor.js +0 -37
  229. package/lib/Utils/pre-key-manager.js +0 -97
  230. package/lib/Utils/process-message.js +0 -1139
  231. package/lib/Utils/reporting-utils.js +0 -262
  232. package/lib/Utils/signal.js +0 -189
  233. package/lib/Utils/stanza-ack.js +0 -67
  234. package/lib/Utils/sync-action-utils.js +0 -51
  235. package/lib/Utils/tc-token-utils.js +0 -156
  236. package/lib/Utils/use-multi-file-auth-state.js +0 -137
  237. package/lib/Utils/validate-connection.js +0 -259
  238. package/lib/Utils/voip-rekey.js +0 -22
  239. package/lib/WABinary/constants.js +0 -1304
  240. package/lib/WABinary/decode.js +0 -377
  241. package/lib/WABinary/encode.js +0 -58
  242. package/lib/WABinary/generic-utils.js +0 -150
  243. package/lib/WABinary/index.js +0 -33
  244. package/lib/WABinary/jid-utils.js +0 -374
  245. package/lib/WABinary/types.js +0 -2
  246. package/lib/WAM/BinaryInfo.js +0 -13
  247. package/lib/WAM/constants.js +0 -39486
  248. package/lib/WAM/encode.js +0 -142
  249. package/lib/WAM/index.js +0 -31
  250. package/lib/WAUSync/Protocols/USyncBotProfileProtocol.js +0 -55
  251. package/lib/WAUSync/Protocols/USyncBusinessProtocol.js +0 -100
  252. package/lib/WAUSync/Protocols/USyncContactProtocol.js +0 -60
  253. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +0 -65
  254. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +0 -27
  255. package/lib/WAUSync/Protocols/USyncFeatureProtocol.js +0 -72
  256. package/lib/WAUSync/Protocols/USyncLIDProtocol.js +0 -31
  257. package/lib/WAUSync/Protocols/USyncNewsletterProtocol.js +0 -865
  258. package/lib/WAUSync/Protocols/USyncPictureProtocol.js +0 -32
  259. package/lib/WAUSync/Protocols/USyncSidelistProtocol.js +0 -29
  260. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +0 -44
  261. package/lib/WAUSync/Protocols/USyncTextStatusProtocol.js +0 -38
  262. package/lib/WAUSync/Protocols/USyncUsernameProtocol.js +0 -28
  263. package/lib/WAUSync/Protocols/index.js +0 -40
  264. package/lib/WAUSync/USyncBackoff.js +0 -26
  265. package/lib/WAUSync/USyncQuery.js +0 -204
  266. package/lib/WAUSync/USyncUser.js +0 -58
  267. package/lib/WAUSync/index.js +0 -32
  268. package/lib/antiban.js +0 -4391
  269. /package/{lib → src}/Defaults/phonenumber-mcc.json +0 -0
@@ -1,685 +0,0 @@
1
- 'use strict'
2
- Object.defineProperty(exports, '__esModule', { value: true })
3
- exports.extractGroupMetadata = exports.makeGroupsSocket = void 0
4
- const index_js_1 = require('../../WAProto/index.js')
5
- const Types_1 = require('../Types')
6
- const Utils_1 = require('../Utils')
7
- const WABinary_1 = require('../WABinary')
8
- const chats_1 = require('./chats')
9
- const mex_1 = require('./mex')
10
-
11
- const GROUP_MEX_QUERY_IDS = {
12
- QUERY_INFO: '25530136513328492',
13
- QUERY_INFO_BY_CODE: '24576337542042464',
14
- QUERY_BATCH: '26440064815661176',
15
- QUERY_INVITE_LINK: '24558418350455204',
16
- QUERY_PARTICIPATING: '26664341543184776',
17
- QUERY_SUGGESTED: '26012055225051916',
18
- QUERY_LINKED: '25629003043401452',
19
- QUERY_SUBGROUPS: '25554052094203120',
20
- ADD_PARTICIPANTS_V2: '32627550323510250',
21
- ADD_PARTICIPANTS_V3: '26581073158212628',
22
- SET_PROPERTY: '24688994337458820',
23
- RESET_INVITE_LINK: '24812851838367452',
24
- CREATE_INVITE_CODE: '25207706598901440',
25
- CREATE_GROUP: '32341779532133480',
26
- ALLOW_NON_ADMIN_GROUP_CREATION: '32024438593867696',
27
- GET_INVITE_INFO: '24745668928467084',
28
- GET_PRE_REG_ADD_REQUESTS: '25018599251091280',
29
- GET_SUGGESTED_CONTACTS: '27208468032086900',
30
- STORE_INVITES_SMS: '25508574885415376',
31
- LOG_SERVER_SENT_INVITE: '26580640204871220',
32
- QUERY_ONLINE_STATUS: '24599444653063564',
33
- QUERY_ONLINE_STATUS_LAST_SEEN: '24653084284365540'
34
- }
35
-
36
- const makeGroupsSocket = config => {
37
- const sock = (0, chats_1.makeChatsSocket)(config)
38
- const { authState, ev, query, generateMessageTag, upsertMessage } = sock
39
- const groupQuery = async (jid, type, content) =>
40
- query({
41
- tag: 'iq',
42
- attrs: {
43
- type,
44
- xmlns: 'w:g2',
45
- to: jid
46
- },
47
- content
48
- })
49
-
50
-
51
-
52
- const persistParticipantLidMappings = async participantLists => {
53
- const pairs = []
54
- for (const participants of participantLists) {
55
- for (const p of participants || []) {
56
- if (p.phoneNumber) pairs.push({ lid: p.id, pn: p.phoneNumber })
57
- else if (p.lid) pairs.push({ lid: p.lid, pn: p.id })
58
- }
59
- }
60
- if (!pairs.length) return
61
- try {
62
- await sock.signalRepository.lidMapping.storeLIDPNMappings(pairs)
63
- } catch (error) {
64
- sock.logger?.warn?.({ error }, 'failed to store LID/PN mappings from group metadata')
65
- }
66
- }
67
-
68
- const mexQuery = (variables, queryId, dataPath) =>
69
- (0, mex_1.executeWMexQuery)(variables, queryId, dataPath, query, generateMessageTag)
70
- const groupMetadata = async jid => {
71
- const result = await groupQuery(jid, 'get', [{ tag: 'query', attrs: { request: 'interactive' } }])
72
- const metadata = (0, exports.extractGroupMetadata)(result)
73
- persistParticipantLidMappings([metadata.participants]).catch(() => {})
74
- return metadata
75
- }
76
-
77
- const groupAcknowledge = async jid => {
78
- await groupQuery(jid, 'set', [{ tag: 'ack', attrs: {} }])
79
- }
80
-
81
- const groupGetLinkedParticipants = async jid => {
82
- const result = await groupQuery(jid, 'get', [{ tag: 'linked_groups_participants', attrs: {} }])
83
- const node = (0, WABinary_1.getBinaryNodeChild)(result, 'linked_groups_participants')
84
- return (0, WABinary_1.getBinaryNodeChildren)(node, 'participant').map(p => ({
85
- jid: p.attrs.jid,
86
- phoneNumber: p.attrs.phone_number || p.attrs.pn || undefined
87
- }))
88
- }
89
-
90
- const groupJoinLinked = async (parentJid, linkedGroupJid, type) => {
91
- const result = await groupQuery(parentJid, 'set', [
92
- { tag: 'join_linked_group', attrs: { jid: linkedGroupJid, ...(type ? { type } : {}) } }
93
- ])
94
- return { approvalRequested: !!(0, WABinary_1.getBinaryNodeChild)(result, 'membership_approval_request') }
95
- }
96
-
97
- const getGroupProfilePictures = async (jids, type = 'preview') => {
98
- const result = await groupQuery(WABinary_1.S_WHATSAPP_NET, 'get', [
99
- {
100
- tag: 'pictures',
101
- attrs: {},
102
- content: jids.map(id => ({ tag: 'picture', attrs: { id, type } }))
103
- }
104
- ])
105
- return (0, WABinary_1.getBinaryNodeChildren)(result, 'picture').map(pic => ({
106
- jid: pic.attrs.id || pic.attrs.jid,
107
- type: pic.attrs.type,
108
- directPath: pic.attrs['direct_path'],
109
- url: pic.attrs.url
110
- }))
111
- }
112
-
113
- const groupCreateSubGroupSuggestion = async (parentJid, suggestion) => {
114
- await groupQuery(parentJid, 'set', [{ tag: 'sub_group_suggestion', attrs: {}, content: suggestion }])
115
- }
116
-
117
- const groupSubGroupSuggestionsAction = async (parentJid, action, suggestions) => {
118
- await groupQuery(parentJid, 'set', [
119
- {
120
- tag: 'sub_group_suggestions_action',
121
- attrs: {},
122
- content: [
123
- {
124
- tag: action,
125
- attrs: {},
126
- content: suggestions.map(s => ({
127
- tag: 'sub_group_suggestion',
128
- attrs: action === 'cancel' ? { jid: s.jid } : { creator: s.creator }
129
- }))
130
- }
131
- ]
132
- }
133
- ])
134
- }
135
- const groupFetchAllParticipating = async () => {
136
- const result = await query({
137
- tag: 'iq',
138
- attrs: {
139
- to: '@g.us',
140
- xmlns: 'w:g2',
141
- type: 'get'
142
- },
143
- content: [
144
- {
145
- tag: 'participating',
146
- attrs: {},
147
- content: [
148
- { tag: 'participants', attrs: {} },
149
- { tag: 'description', attrs: {} }
150
- ]
151
- }
152
- ]
153
- })
154
- const data = {}
155
- const groupsChild = (0, WABinary_1.getBinaryNodeChild)(result, 'groups')
156
- if (groupsChild) {
157
- const groups = (0, WABinary_1.getBinaryNodeChildren)(groupsChild, 'group')
158
- for (const groupNode of groups) {
159
- const meta = (0, exports.extractGroupMetadata)({
160
- tag: 'result',
161
- attrs: {},
162
- content: [groupNode]
163
- })
164
- data[meta.id] = meta
165
- }
166
- }
167
- const allGroups = Object.values(data)
168
- persistParticipantLidMappings(allGroups.map(g => g.participants)).catch(() => {})
169
- sock.ev.emit('groups.update', allGroups)
170
- return data
171
- }
172
- sock.ws.on('CB:ib,,dirty', async node => {
173
- const { attrs } = (0, WABinary_1.getBinaryNodeChild)(node, 'dirty')
174
- if (attrs.type !== 'groups') {
175
- return
176
- }
177
- await groupFetchAllParticipating()
178
- await sock.cleanDirtyBits('groups')
179
- })
180
- return {
181
- ...sock,
182
- groupMetadata,
183
- groupAcknowledge,
184
- groupGetLinkedParticipants,
185
- groupJoinLinked,
186
- getGroupProfilePictures,
187
- groupCreateSubGroupSuggestion,
188
- groupSubGroupSuggestionsAction,
189
- groupCreate: async (subject, participants) => {
190
- const key = (0, Utils_1.generateMessageIDV2)()
191
- const result = await groupQuery('@g.us', 'set', [
192
- {
193
- tag: 'create',
194
- attrs: {
195
- subject,
196
- key
197
- },
198
- content: participants.map(jid => ({
199
- tag: 'participant',
200
- attrs: { jid }
201
- }))
202
- }
203
- ])
204
- return (0, exports.extractGroupMetadata)(result)
205
- },
206
- groupLeave: async id => {
207
- await groupQuery('@g.us', 'set', [
208
- {
209
- tag: 'leave',
210
- attrs: {},
211
- content: [{ tag: 'group', attrs: { id } }]
212
- }
213
- ])
214
- },
215
- groupUpdateSubject: async (jid, subject) => {
216
- await groupQuery(jid, 'set', [
217
- {
218
- tag: 'subject',
219
- attrs: {},
220
- content: Buffer.from(subject, 'utf-8')
221
- }
222
- ])
223
- },
224
- groupRequestParticipantsList: async jid => {
225
- const result = await groupQuery(jid, 'get', [
226
- {
227
- tag: 'membership_approval_requests',
228
- attrs: {}
229
- }
230
- ])
231
- const node = (0, WABinary_1.getBinaryNodeChild)(result, 'membership_approval_requests')
232
- const participants = (0, WABinary_1.getBinaryNodeChildren)(node, 'membership_approval_request')
233
- return participants.map(v => v.attrs)
234
- },
235
- groupRequestParticipantsUpdate: async (jid, participants, action) => {
236
- const result = await groupQuery(jid, 'set', [
237
- {
238
- tag: 'membership_requests_action',
239
- attrs: {},
240
- content: [
241
- {
242
- tag: action,
243
- attrs: {},
244
- content: participants.map(jid => ({
245
- tag: 'participant',
246
- attrs: { jid }
247
- }))
248
- }
249
- ]
250
- }
251
- ])
252
- const node = (0, WABinary_1.getBinaryNodeChild)(result, 'membership_requests_action')
253
- const nodeAction = (0, WABinary_1.getBinaryNodeChild)(node, action)
254
- const participantsAffected = (0, WABinary_1.getBinaryNodeChildren)(nodeAction, 'participant')
255
- return participantsAffected.map(p => {
256
- return { status: p.attrs.error || '200', jid: p.attrs.jid }
257
- })
258
- },
259
- groupParticipantsUpdate: async (jid, participants, action) => {
260
- const result = await groupQuery(jid, 'set', [
261
- {
262
- tag: action,
263
- attrs: {},
264
- content: participants.map(jid => ({
265
- tag: 'participant',
266
- attrs: { jid }
267
- }))
268
- }
269
- ])
270
- const node = (0, WABinary_1.getBinaryNodeChild)(result, action)
271
- const participantsAffected = (0, WABinary_1.getBinaryNodeChildren)(node, 'participant')
272
- return participantsAffected.map(p => {
273
- return { status: p.attrs.error || '200', jid: p.attrs.jid, content: p }
274
- })
275
- },
276
- groupUpdateDescription: async (jid, description) => {
277
- const metadata = await groupMetadata(jid)
278
- const prev = metadata.descId ?? null
279
- await groupQuery(jid, 'set', [
280
- {
281
- tag: 'description',
282
- attrs: {
283
- ...(description ? { id: (0, Utils_1.generateMessageIDV2)() } : { delete: 'true' }),
284
- ...(prev ? { prev } : {})
285
- },
286
- content: description ? [{ tag: 'body', attrs: {}, content: Buffer.from(description, 'utf-8') }] : undefined
287
- }
288
- ])
289
- },
290
- groupInviteCode: async jid => {
291
- const result = await groupQuery(jid, 'get', [{ tag: 'invite', attrs: {} }])
292
- const inviteNode = (0, WABinary_1.getBinaryNodeChild)(result, 'invite')
293
- return inviteNode?.attrs.code
294
- },
295
- groupRevokeInvite: async jid => {
296
- const result = await groupQuery(jid, 'set', [{ tag: 'invite', attrs: {} }])
297
- const inviteNode = (0, WABinary_1.getBinaryNodeChild)(result, 'invite')
298
- return inviteNode?.attrs.code
299
- },
300
- groupAcceptInvite: async code => {
301
- const results = await groupQuery('@g.us', 'set', [{ tag: 'invite', attrs: { code } }])
302
- const result = (0, WABinary_1.getBinaryNodeChild)(results, 'group')
303
- return result?.attrs.jid
304
- },
305
-
306
- groupRevokeInviteV4: async (groupJid, invitedJid) => {
307
- const result = await groupQuery(groupJid, 'set', [
308
- { tag: 'revoke', attrs: {}, content: [{ tag: 'participant', attrs: { jid: invitedJid } }] }
309
- ])
310
- return !!result
311
- },
312
-
313
- groupAcceptInviteV4: ev.createBufferedFunction(async (key, inviteMessage) => {
314
- key = typeof key === 'string' ? { remoteJid: key } : key
315
- const results = await groupQuery(inviteMessage.groupJid, 'set', [
316
- {
317
- tag: 'accept',
318
- attrs: {
319
- code: inviteMessage.inviteCode,
320
- expiration: inviteMessage.inviteExpiration.toString(),
321
- admin: key.remoteJid
322
- }
323
- }
324
- ])
325
-
326
-
327
- if (key.id) {
328
-
329
- inviteMessage = index_js_1.proto.Message.GroupInviteMessage.fromObject(inviteMessage)
330
- inviteMessage.inviteExpiration = 0
331
- inviteMessage.inviteCode = ''
332
- ev.emit('messages.update', [
333
- {
334
- key,
335
- update: {
336
- message: {
337
- groupInviteMessage: inviteMessage
338
- }
339
- }
340
- }
341
- ])
342
- }
343
-
344
- await upsertMessage(
345
- {
346
- key: {
347
- remoteJid: inviteMessage.groupJid,
348
- id: (0, Utils_1.generateMessageIDV2)(sock.user?.id),
349
- fromMe: false,
350
- participant: key.remoteJid
351
- },
352
- messageStubType: Types_1.WAMessageStubType.GROUP_PARTICIPANT_ADD,
353
- messageStubParameters: [JSON.stringify(authState.creds.me)],
354
- participant: key.remoteJid,
355
- messageTimestamp: (0, Utils_1.unixTimestampSeconds)()
356
- },
357
- 'notify'
358
- )
359
- return results.attrs.from
360
- }),
361
- groupGetInviteInfo: async code => {
362
- const results = await groupQuery('@g.us', 'get', [{ tag: 'invite', attrs: { code } }])
363
- return (0, exports.extractGroupMetadata)(results)
364
- },
365
- groupToggleEphemeral: async (jid, ephemeralExpiration) => {
366
- const content = ephemeralExpiration
367
- ? { tag: 'ephemeral', attrs: { expiration: ephemeralExpiration.toString() } }
368
- : { tag: 'not_ephemeral', attrs: {} }
369
- await groupQuery(jid, 'set', [content])
370
- },
371
- groupSettingUpdate: async (jid, setting) => {
372
- await groupQuery(jid, 'set', [{ tag: setting, attrs: {} }])
373
- },
374
- groupMemberAddMode: async (jid, mode) => {
375
- await groupQuery(jid, 'set', [{ tag: 'member_add_mode', attrs: {}, content: mode }])
376
- },
377
- groupJoinApprovalMode: async (jid, mode) => {
378
- await groupQuery(jid, 'set', [
379
- { tag: 'membership_approval_mode', attrs: {}, content: [{ tag: 'group_join', attrs: { state: mode } }] }
380
- ])
381
- },
382
-
383
- groupGetPastParticipants: async jid => {
384
- const result = await groupQuery(jid, 'get', [{ tag: 'past_participants', attrs: {} }])
385
- const node = (0, WABinary_1.getBinaryNodeChild)(result, 'past_participants')
386
- if (!node) return []
387
- const participants = (0, WABinary_1.getBinaryNodeChildren)(node, 'past_participant')
388
- return participants.map(p => ({
389
- jid: p.attrs.jid,
390
- leaveReason: p.attrs.reason,
391
- leaveTimestamp: p.attrs.t ? Number(p.attrs.t) : undefined
392
- }))
393
- },
394
-
395
- groupCreateSubgroup: async (communityJid, subject, participants = []) => {
396
- const key = (0, Utils_1.generateMessageIDV2)()
397
- const result = await groupQuery('@g.us', 'set', [
398
- {
399
- tag: 'create',
400
- attrs: { subject, key },
401
- content: [
402
- ...participants.map(jid => ({ tag: 'participant', attrs: { jid } })),
403
- { tag: 'linked_parent', attrs: { jid: communityJid } }
404
- ]
405
- }
406
- ])
407
- return (0, exports.extractGroupMetadata)(result)
408
- },
409
-
410
- groupLinkToCommunity: async (communityJid, groupJid) => {
411
- await groupQuery(communityJid, 'set', [
412
- {
413
- tag: 'links',
414
- attrs: {},
415
- content: [
416
- { tag: 'link', attrs: { link_type: 'sub_group' }, content: [{ tag: 'group', attrs: { jid: groupJid } }] }
417
- ]
418
- }
419
- ])
420
- },
421
-
422
- groupUnlinkFromCommunity: async (communityJid, groupJid) => {
423
- await groupQuery(communityJid, 'set', [
424
- {
425
- tag: 'unlinks',
426
- attrs: {},
427
- content: [
428
- { tag: 'unlink', attrs: { link_type: 'sub_group' }, content: [{ tag: 'group', attrs: { jid: groupJid } }] }
429
- ]
430
- }
431
- ])
432
- },
433
-
434
- groupSetMemberLabel: async (jid, participantJid, label) => {
435
- await groupQuery(jid, 'set', [
436
- {
437
- tag: 'member_add_mode',
438
- attrs: {},
439
- content: [
440
- {
441
- tag: 'participant',
442
- attrs: { jid: participantJid, label: label || '' }
443
- }
444
- ]
445
- }
446
- ])
447
- },
448
-
449
- groupGetLinkedSubgroups: async communityJid => {
450
- const result = await groupQuery(communityJid, 'get', [{ tag: 'links', attrs: { link_type: 'sub_group' } }])
451
- const linksNode = (0, WABinary_1.getBinaryNodeChild)(result, 'links')
452
- if (!linksNode) return []
453
- return (0, WABinary_1.getBinaryNodeChildren)(linksNode, 'link')
454
- .map(link => {
455
- const group = (0, WABinary_1.getBinaryNodeChild)(link, 'group')
456
- return { jid: group?.attrs?.jid, linkType: link.attrs?.link_type }
457
- })
458
- .filter(l => !!l.jid)
459
- },
460
- groupFetchAllParticipating,
461
-
462
-
463
-
464
-
465
- groupQueryInfo: jid => mexQuery({ group_id: jid }, GROUP_MEX_QUERY_IDS.QUERY_INFO, 'xwa2_group_query_by_id'),
466
-
467
-
468
- groupQueryInfoByCode: code =>
469
- mexQuery(
470
- { group_input: { invite_code: code } },
471
- GROUP_MEX_QUERY_IDS.QUERY_INFO_BY_CODE,
472
- 'xwa2_group_query_by_id'
473
- ),
474
-
475
-
476
- groupQueryBatch: jids =>
477
- mexQuery(
478
- { groups_input: jids.map(group_id => ({ group_id })) },
479
- GROUP_MEX_QUERY_IDS.QUERY_BATCH,
480
- 'xwa2_group_query_batch'
481
- ),
482
-
483
-
484
- groupQueryInviteLink: jid =>
485
- mexQuery({ group_input: { group_id: jid } }, GROUP_MEX_QUERY_IDS.QUERY_INVITE_LINK, 'xwa2_group_query_by_id'),
486
-
487
-
488
- groupQueryParticipating: () =>
489
- mexQuery({}, GROUP_MEX_QUERY_IDS.QUERY_PARTICIPATING, 'xwa2_group_query_participating'),
490
-
491
-
492
- groupQuerySuggested: communityJid =>
493
- mexQuery(
494
- { group_input: { group_id: communityJid } },
495
- GROUP_MEX_QUERY_IDS.QUERY_SUGGESTED,
496
- 'xwa2_group_query_by_id'
497
- ),
498
-
499
-
500
- groupQueryLinked: jid =>
501
- mexQuery({ group_input: { group_id: jid } }, GROUP_MEX_QUERY_IDS.QUERY_LINKED, 'xwa2_group_query_by_id'),
502
-
503
-
504
- groupQuerySubgroups: communityJid =>
505
- mexQuery(
506
- { group_input: { group_id: communityJid } },
507
- GROUP_MEX_QUERY_IDS.QUERY_SUBGROUPS,
508
- 'xwa2_group_query_by_id'
509
- ),
510
-
511
-
512
- groupAddParticipantsMex: (jid, participants) =>
513
- mexQuery(
514
- { group_id: jid, participants: participants.map(p => ({ user_jid: p })) },
515
- GROUP_MEX_QUERY_IDS.ADD_PARTICIPANTS_V2,
516
- 'xwa2_group_add_participants'
517
- ),
518
-
519
-
520
- groupSetProperty: (jid, property, value) =>
521
- mexQuery({ group_id: jid, [property]: value }, GROUP_MEX_QUERY_IDS.SET_PROPERTY, 'xwa2_group_update_property'),
522
-
523
-
524
- groupResetInviteLinkMex: jid =>
525
- mexQuery({ group_jid: jid }, GROUP_MEX_QUERY_IDS.RESET_INVITE_LINK, 'xwa2_group_reset_invite_link'),
526
-
527
-
528
- groupCreateMex: (subject, participantJids) =>
529
- mexQuery(
530
- { input: { subject, participants: participantJids.map(jid => ({ jid })) } },
531
- GROUP_MEX_QUERY_IDS.CREATE_GROUP,
532
- 'xwa2_group_create'
533
- ),
534
-
535
-
536
- groupAllowNonAdminCreation: (communityJid, allow) =>
537
- mexQuery(
538
- { group_jid: communityJid, allow_non_admin_sub_group_creation: allow },
539
- GROUP_MEX_QUERY_IDS.ALLOW_NON_ADMIN_GROUP_CREATION,
540
- 'xwa2_group_allow_non_admin_creation'
541
- ),
542
-
543
-
544
- groupGetInviteInfo: inviteCode =>
545
- mexQuery({ invite_code: inviteCode }, GROUP_MEX_QUERY_IDS.GET_INVITE_INFO, 'xwa2_group_get_invite_info'),
546
-
547
-
548
- groupPreRegAddRequests: jid =>
549
- mexQuery({ group_jid: jid }, GROUP_MEX_QUERY_IDS.GET_PRE_REG_ADD_REQUESTS, 'xwa2_group_pre_reg_add_requests'),
550
-
551
-
552
- groupSuggestedContacts: jid =>
553
- mexQuery({ group_jid: jid }, GROUP_MEX_QUERY_IDS.GET_SUGGESTED_CONTACTS, 'xwa2_group_suggested_contacts'),
554
-
555
-
556
- groupStoreInvitesSms: (jid, invites) =>
557
- mexQuery(
558
- { group_jid: jid, invites: invites.map(({ phone, inviteCode }) => ({ phone, invite_code: inviteCode })) },
559
- GROUP_MEX_QUERY_IDS.STORE_INVITES_SMS,
560
- 'xwa2_group_store_invites_sms'
561
- ),
562
-
563
-
564
- groupLogServerSentInvite: (jid, inviteCode) =>
565
- mexQuery(
566
- { group_jid: jid, invite_code: inviteCode },
567
- GROUP_MEX_QUERY_IDS.LOG_SERVER_SENT_INVITE,
568
- 'xwa2_group_log_server_sent_invite'
569
- ),
570
-
571
-
572
- queryOnlineStatus: jids => mexQuery({ jids }, GROUP_MEX_QUERY_IDS.QUERY_ONLINE_STATUS, 'xwa2_query_online_status'),
573
-
574
-
575
- queryOnlineStatusLastSeen: jids =>
576
- mexQuery({ jids }, GROUP_MEX_QUERY_IDS.QUERY_ONLINE_STATUS_LAST_SEEN, 'xwa2_query_online_status_last_seen'),
577
-
578
- GROUP_MEX_QUERY_IDS
579
- }
580
- }
581
- exports.makeGroupsSocket = makeGroupsSocket
582
- const extractGroupMetadata = result => {
583
- const group = (0, WABinary_1.getBinaryNodeChild)(result, 'group')
584
- const descChild = (0, WABinary_1.getBinaryNodeChild)(group, 'description')
585
- let desc
586
- let descId
587
- let descOwner
588
- let descOwnerPn
589
- let descOwnerUsername
590
- let descTime
591
- if (descChild) {
592
- desc = (0, WABinary_1.getBinaryNodeChildString)(descChild, 'body')
593
- descOwner = descChild.attrs.participant ? (0, WABinary_1.jidNormalizedUser)(descChild.attrs.participant) : undefined
594
- descOwnerPn = descChild.attrs.participant_pn
595
- ? (0, WABinary_1.jidNormalizedUser)(descChild.attrs.participant_pn)
596
- : undefined
597
- descOwnerUsername = descChild.attrs.participant_username || undefined
598
- descTime = +descChild.attrs.t
599
- descId = descChild.attrs.id
600
- }
601
- const groupId = group.attrs.id.includes('@') ? group.attrs.id : (0, WABinary_1.jidEncode)(group.attrs.id, 'g.us')
602
- const eph = (0, WABinary_1.getBinaryNodeChild)(group, 'ephemeral')?.attrs.expiration
603
- const memberAddMode = (0, WABinary_1.getBinaryNodeChildString)(group, 'member_add_mode') === 'all_member_add'
604
- const linkedParentNode = (0, WABinary_1.getBinaryNodeChild)(group, 'linked_parent')
605
- const communityMemberAddGroupNode = (0, WABinary_1.getBinaryNodeChild)(group, 'allow_non_admin_sub_group_creation')
606
- const subGroupVisibilityNode = (0, WABinary_1.getBinaryNodeChild)(group, 'sub_groups_list')
607
- const membershipApprovalNode = (0, WABinary_1.getBinaryNodeChild)(group, 'membership_approval_mode')
608
- const capiNode = (0, WABinary_1.getBinaryNodeChild)(group, 'capi')
609
- const appealStatusNode = (0, WABinary_1.getBinaryNodeChild)(group, 'appeal_status')
610
- const defaultSubGroupNode = (0, WABinary_1.getBinaryNodeChild)(group, 'default_sub_group')
611
- const generalChatNode = (0, WABinary_1.getBinaryNodeChild)(group, 'general_chat')
612
- const hiddenGroupNode = (0, WABinary_1.getBinaryNodeChild)(group, 'hidden_group')
613
- const metadata = {
614
- id: groupId,
615
- notify: group.attrs.notify,
616
- addressingMode:
617
- group.attrs.addressing_mode === 'lid' ? Types_1.WAMessageAddressingMode.LID : Types_1.WAMessageAddressingMode.PN,
618
- subject: group.attrs.subject,
619
- subjectOwner: group.attrs.s_o,
620
- subjectOwnerPn: group.attrs.s_o_pn,
621
- subjectOwnerUsername: group.attrs.s_o_username,
622
- subjectTime: +group.attrs.s_t,
623
- size: group.attrs.size ? +group.attrs.size : (0, WABinary_1.getBinaryNodeChildren)(group, 'participant').length,
624
- creation: +group.attrs.creation,
625
- owner: group.attrs.creator ? (0, WABinary_1.jidNormalizedUser)(group.attrs.creator) : undefined,
626
- ownerPn: group.attrs.creator_pn ? (0, WABinary_1.jidNormalizedUser)(group.attrs.creator_pn) : undefined,
627
- ownerUsername: group.attrs.creator_username || undefined,
628
- owner_country_code: group.attrs.creator_country_code,
629
- desc,
630
- descId,
631
- descOwner,
632
- descOwnerPn,
633
- descOwnerUsername,
634
- descTime,
635
- linkedParent: linkedParentNode?.attrs.jid || undefined,
636
- restrict: !!(0, WABinary_1.getBinaryNodeChild)(group, 'locked'),
637
- announce: !!(0, WABinary_1.getBinaryNodeChild)(group, 'announcement'),
638
- isCommunity: !!(0, WABinary_1.getBinaryNodeChild)(group, 'parent'),
639
- isCommunityAnnounce: !!(0, WABinary_1.getBinaryNodeChild)(group, 'default_sub_group'),
640
- joinApprovalMode: !!membershipApprovalNode,
641
- memberAddMode,
642
- memberShareHistoryMode:
643
- (0, WABinary_1.getBinaryNodeChildString)(group, 'member_share_group_history_mode') || undefined,
644
- memberLinkMode: (0, WABinary_1.getBinaryNodeChildString)(group, 'member_link_mode') || undefined,
645
- limitSharing: !!(0, WABinary_1.getBinaryNodeChild)(group, 'limit_sharing_enabled'),
646
- communityMemberAddGroupMode: communityMemberAddGroupNode?.attrs.state || undefined,
647
- capiCreatedGroup: !!capiNode || undefined,
648
- appealStatus: appealStatusNode?.attrs.type || undefined,
649
- isSubGroupHidden: group.attrs.sub_group_visibility === 'hidden' || undefined,
650
- membershipApprovalMode: group.attrs.membership_approval_mode || undefined,
651
- joinPermissions: group.attrs.join_permissions || undefined,
652
- isDefaultSubgroup: !!defaultSubGroupNode || undefined,
653
- isGeneralSubgroup: !!generalChatNode || undefined,
654
- isHiddenSubgroup: !!hiddenGroupNode || undefined,
655
- participants: (0, WABinary_1.getBinaryNodeChildren)(group, 'participant').map(({ attrs }) => {
656
-
657
-
658
-
659
- return {
660
- id: attrs.jid,
661
- phoneNumber:
662
- (0, WABinary_1.isLidUser)(attrs.jid) && (0, WABinary_1.isPnUser)(attrs.phone_number)
663
- ? attrs.phone_number
664
- : undefined,
665
- lid: (0, WABinary_1.isPnUser)(attrs.jid) && (0, WABinary_1.isLidUser)(attrs.lid) ? attrs.lid : undefined,
666
- username: attrs.participant_username || attrs.username || undefined,
667
- admin: attrs.type || null,
668
- memberLabel: attrs.label || undefined,
669
- memberLabelTimestamp: attrs.label_ts ? +attrs.label_ts : undefined,
670
- isBanned: attrs.error === '402' || attrs.ban === 'true' || undefined,
671
- uuid: attrs.uuid || attrs.participant_uuid || undefined
672
- }
673
- }),
674
- bannedParticipants: (0, WABinary_1.getBinaryNodeChildren)(group, 'participant')
675
- .filter(({ attrs }) => attrs.error === '402' || attrs.ban === 'true')
676
- .map(({ attrs }) => ({
677
- id: attrs.jid,
678
- phoneNumber: attrs.phone_number || undefined,
679
- lid: attrs.lid || undefined
680
- })),
681
- ephemeralDuration: eph ? +eph : undefined
682
- }
683
- return metadata
684
- }
685
- exports.extractGroupMetadata = extractGroupMetadata