@badzz88/baileys 8.5.6 → 8.5.8
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.
- package/README.md +337 -1055
- package/WAProto/WAProto.proto +28 -1189
- package/WAProto/fix-imports.js +79 -69
- package/WAProto/index.d.ts +71491 -15254
- package/WAProto/index.js +126436 -19814
- package/engine-requirements.js +8 -15
- package/lib/Defaults/index.js +130 -0
- package/{src → lib}/Signal/Group/ciphertext-message.js +2 -5
- package/lib/Signal/Group/group-session-builder.js +30 -0
- package/{src → lib}/Signal/Group/group_cipher.js +11 -11
- package/lib/Signal/Group/index.js +12 -0
- package/lib/Signal/Group/keyhelper.js +18 -0
- package/{src → lib}/Signal/Group/sender-chain-key.js +6 -9
- package/{src → lib}/Signal/Group/sender-key-distribution-message.js +6 -9
- package/{src → lib}/Signal/Group/sender-key-message.js +9 -12
- package/{src → lib}/Signal/Group/sender-key-name.js +2 -5
- package/{src → lib}/Signal/Group/sender-key-record.js +8 -11
- package/{src → lib}/Signal/Group/sender-key-state.js +6 -9
- package/lib/Signal/Group/sender-message-key.js +26 -0
- package/{src → lib}/Signal/libsignal.js +131 -155
- package/{src → lib}/Signal/lid-mapping.js +27 -23
- package/lib/Socket/Client/index.js +3 -0
- package/lib/Socket/Client/types.js +11 -0
- package/{src → lib}/Socket/Client/websocket.js +11 -18
- package/{src → lib}/Socket/business.js +35 -67
- package/{src → lib}/Socket/chats.js +294 -550
- package/{src → lib}/Socket/communities.js +82 -114
- package/lib/Socket/graphql.js +716 -0
- package/lib/Socket/groups.js +374 -0
- package/lib/Socket/index.js +18 -0
- package/lib/Socket/interop.js +463 -0
- package/{src → lib}/Socket/luxu.js +120 -82
- package/lib/Socket/messages-recv.js +1916 -0
- package/lib/Socket/messages-send.js +1436 -0
- package/lib/Socket/mex.js +54 -0
- package/lib/Socket/newsletter.js +757 -0
- package/lib/Socket/privacy.js +318 -0
- package/{src → lib}/Socket/socket.js +356 -244
- package/lib/Socket/username.js +236 -0
- package/lib/Store/index.js +10 -0
- package/{src → lib}/Store/keyed-db.js +11 -21
- package/lib/Store/make-cache-manager-store.js +85 -0
- package/lib/Store/make-in-memory-store.js +244 -0
- package/{src → lib}/Store/make-ordered-dictionary.js +19 -25
- package/{src → lib}/Store/object-repository.js +11 -5
- package/lib/Types/Auth.js +2 -0
- package/lib/Types/Bussines.js +2 -0
- package/lib/Types/Call.js +2 -0
- package/lib/Types/Chat.js +8 -0
- package/lib/Types/Contact.js +2 -0
- package/lib/Types/Events.js +2 -0
- package/lib/Types/GroupMetadata.js +2 -0
- package/lib/Types/Label.js +25 -0
- package/lib/Types/LabelAssociation.js +7 -0
- package/lib/Types/Message.js +11 -0
- package/lib/Types/Mex.js +111 -0
- package/lib/Types/Product.js +2 -0
- package/lib/Types/Signal.js +2 -0
- package/lib/Types/Socket.js +3 -0
- package/lib/Types/State.js +56 -0
- package/lib/Types/USync.js +2 -0
- package/lib/Types/index.js +26 -0
- package/{src → lib}/Utils/auth-utils.js +91 -43
- package/lib/Utils/browser-utils.js +48 -0
- package/lib/Utils/business.js +231 -0
- package/lib/Utils/chat-utils.js +872 -0
- package/lib/Utils/companion-reg-client-utils.js +35 -0
- package/lib/Utils/crypto.js +118 -0
- package/lib/Utils/decode-wa-message.js +350 -0
- package/{src → lib}/Utils/event-buffer.js +81 -39
- package/lib/Utils/generics.js +403 -0
- package/lib/Utils/history.js +134 -0
- package/{src → lib}/Utils/identity-change-handler.js +9 -11
- package/lib/Utils/index.js +23 -0
- package/lib/Utils/link-preview.js +85 -0
- package/lib/Utils/logger.js +3 -0
- package/lib/Utils/lt-hash.js +8 -0
- package/{src → lib}/Utils/make-mutex.js +7 -10
- package/lib/Utils/message-composer.js +273 -0
- package/{src → lib}/Utils/message-retry-manager.js +76 -28
- package/lib/Utils/messages-media.js +870 -0
- package/lib/Utils/messages.js +1337 -0
- package/lib/Utils/noise-handler.js +201 -0
- package/{src → lib}/Utils/offline-node-processor.js +10 -4
- package/{src → lib}/Utils/pre-key-manager.js +27 -11
- package/lib/Utils/process-message.js +630 -0
- package/{src → lib}/Utils/reporting-utils.js +12 -15
- package/lib/Utils/signal.js +201 -0
- package/{src → lib}/Utils/stanza-ack.js +12 -4
- package/lib/Utils/sticker.js +110 -0
- package/{src → lib}/Utils/sync-action-utils.js +14 -10
- package/{src → lib}/Utils/tc-token-utils.js +48 -43
- package/{src → lib}/Utils/use-multi-file-auth-state.js +35 -25
- package/lib/Utils/validate-connection.js +203 -0
- package/{src → lib}/WABinary/constants.js +9 -12
- package/{src → lib}/WABinary/decode.js +38 -118
- package/{src → lib}/WABinary/encode.js +6 -11
- package/lib/WABinary/generic-utils.js +204 -0
- package/lib/WABinary/index.js +6 -0
- package/lib/WABinary/jid-utils.js +98 -0
- package/lib/WABinary/types.js +2 -0
- package/{src → lib}/WAM/BinaryInfo.js +2 -5
- package/{src → lib}/WAM/constants.js +4 -16635
- package/{src → lib}/WAM/encode.js +18 -17
- package/lib/WAM/index.js +4 -0
- package/lib/WAUSync/Protocols/USyncBotProfileProtocol.js +53 -0
- package/lib/WAUSync/Protocols/USyncBusinessProtocol.js +43 -0
- package/lib/WAUSync/Protocols/USyncContactProtocol.js +54 -0
- package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +57 -0
- package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +30 -0
- package/lib/WAUSync/Protocols/USyncFeatureProtocol.js +58 -0
- package/lib/WAUSync/Protocols/USyncLIDProtocol.js +30 -0
- package/lib/WAUSync/Protocols/USyncPictureProtocol.js +32 -0
- package/lib/WAUSync/Protocols/USyncSidelistProtocol.js +28 -0
- package/lib/WAUSync/Protocols/USyncStatusProtocol.js +39 -0
- package/lib/WAUSync/Protocols/USyncTextStatusProtocol.js +38 -0
- package/lib/WAUSync/Protocols/USyncUsernameProtocol.js +27 -0
- package/lib/WAUSync/Protocols/index.js +12 -0
- package/lib/WAUSync/USyncQuery.js +151 -0
- package/lib/WAUSync/USyncUser.js +56 -0
- package/lib/WAUSync/index.js +3 -0
- package/{src → lib}/index.js +16 -51
- package/package.json +129 -99
- package/LICENSE +0 -21
- package/src/Defaults/index.js +0 -186
- package/src/Defaults/phonenumber-mcc.json +0 -223
- package/src/Signal/Group/group-session-builder.js +0 -86
- package/src/Signal/Group/index.js +0 -140
- package/src/Signal/Group/keyhelper.js +0 -77
- package/src/Signal/Group/sender-message-key.js +0 -29
- package/src/Socket/Client/index.js +0 -31
- package/src/Socket/Client/types.js +0 -13
- package/src/Socket/aigroups.js +0 -221
- package/src/Socket/graphql.js +0 -523
- package/src/Socket/groups.js +0 -516
- package/src/Socket/index.js +0 -31
- package/src/Socket/interactive-handler.js +0 -527
- package/src/Socket/interop.js +0 -339
- package/src/Socket/managed-account.js +0 -98
- package/src/Socket/messages-recv.js +0 -2685
- package/src/Socket/messages-send.js +0 -2047
- package/src/Socket/mex.js +0 -57
- package/src/Socket/newsletter.js +0 -455
- package/src/Socket/privacy.js +0 -125
- package/src/Socket/registration.js +0 -236
- package/src/Socket/text-router.js +0 -65
- package/src/Socket/username.js +0 -130
- package/src/Store/index.js +0 -33
- package/src/Store/make-cache-manager-store.js +0 -84
- package/src/Store/make-in-memory-store.js +0 -551
- package/src/Types/Auth.js +0 -31
- package/src/Types/Bussines.js +0 -2
- package/src/Types/Call.js +0 -2
- package/src/Types/Chat.js +0 -4
- package/src/Types/Contact.js +0 -2
- package/src/Types/Events.js +0 -2
- package/src/Types/GroupMetadata.js +0 -2
- package/src/Types/Label.js +0 -26
- package/src/Types/LabelAssociation.js +0 -8
- package/src/Types/Message.js +0 -93
- package/src/Types/Mex.js +0 -112
- package/src/Types/Newsletter.js +0 -109
- package/src/Types/Product.js +0 -2
- package/src/Types/Signal.js +0 -2
- package/src/Types/Socket.js +0 -2
- package/src/Types/State.js +0 -62
- package/src/Types/USync.js +0 -2
- package/src/Types/index.js +0 -56
- package/src/Utils/browser-utils.js +0 -112
- package/src/Utils/business.js +0 -240
- package/src/Utils/chat-utils.js +0 -1230
- package/src/Utils/command-loader.d.ts +0 -27
- package/src/Utils/command-loader.js +0 -89
- package/src/Utils/companion-reg-client-utils.js +0 -40
- package/src/Utils/consumer-application.js +0 -105
- package/src/Utils/crypto.js +0 -118
- package/src/Utils/curve25519-js.js +0 -242
- package/src/Utils/decode-wa-message.js +0 -529
- package/src/Utils/generics.js +0 -483
- package/src/Utils/group-history.js +0 -44
- package/src/Utils/history.js +0 -232
- package/src/Utils/index.js +0 -58
- package/src/Utils/jid-display-normalization.js +0 -195
- package/src/Utils/link-preview.js +0 -135
- package/src/Utils/logger.js +0 -8
- package/src/Utils/lt-hash.js +0 -25
- package/src/Utils/message-composer.js +0 -471
- package/src/Utils/messages-media.js +0 -843
- package/src/Utils/messages.js +0 -2817
- package/src/Utils/meta-ai-msmsg.js +0 -222
- package/src/Utils/native-bridge.js +0 -68
- package/src/Utils/noise-handler.js +0 -169
- package/src/Utils/process-message.js +0 -950
- package/src/Utils/session-pool.d.ts +0 -14
- package/src/Utils/session-pool.js +0 -70
- package/src/Utils/signal.js +0 -217
- package/src/Utils/sticker.d.ts +0 -13
- package/src/Utils/sticker.js +0 -123
- package/src/Utils/validate-connection.js +0 -209
- package/src/Utils/view-once-cache.d.ts +0 -12
- package/src/Utils/view-once-cache.js +0 -63
- package/src/Utils/voip-rekey.js +0 -22
- package/src/WABinary/generic-utils.js +0 -238
- package/src/WABinary/index.js +0 -34
- package/src/WABinary/jid-utils.js +0 -351
- package/src/WABinary/types.js +0 -2
- package/src/WAM/index.js +0 -32
- package/src/WAUSync/Protocols/USyncBotProfileProtocol.js +0 -53
- package/src/WAUSync/Protocols/USyncBusinessProtocol.js +0 -44
- package/src/WAUSync/Protocols/USyncContactProtocol.js +0 -55
- package/src/WAUSync/Protocols/USyncDeviceProtocol.js +0 -55
- package/src/WAUSync/Protocols/USyncDisappearingModeProtocol.js +0 -31
- package/src/WAUSync/Protocols/USyncFeatureProtocol.js +0 -54
- package/src/WAUSync/Protocols/USyncLIDProtocol.js +0 -32
- package/src/WAUSync/Protocols/USyncNewsletterProtocol.js +0 -473
- package/src/WAUSync/Protocols/USyncPictureProtocol.js +0 -34
- package/src/WAUSync/Protocols/USyncSidelistProtocol.js +0 -29
- package/src/WAUSync/Protocols/USyncStatusProtocol.js +0 -42
- package/src/WAUSync/Protocols/USyncTextStatusProtocol.js +0 -38
- package/src/WAUSync/Protocols/USyncUsernameProtocol.js +0 -28
- package/src/WAUSync/Protocols/index.js +0 -40
- package/src/WAUSync/USyncQuery.js +0 -126
- package/src/WAUSync/USyncUser.js +0 -50
- package/src/WAUSync/index.js +0 -32
- package/src/antiban.js +0 -4152
|
@@ -1,27 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const Utils_1 = require('../Utils');
|
|
11
|
-
const logger_1 = __importDefault(require('../Utils/logger'));
|
|
12
|
-
const WABinary_1 = require('../WABinary');
|
|
13
|
-
const business_1 = require('./business');
|
|
14
|
-
const mex_1 = require('./mex');
|
|
15
|
-
const COMMUNITY_MEX_QUERY_IDS = {
|
|
16
|
-
QUERY_PARTICIPANT_COUNT: '31981537024824320',
|
|
17
|
-
QUERY_SUBGROUPS: '25554052094203120',
|
|
18
|
-
QUERY_SUBGROUP_PARTICIPANT_COUNT: '24784259781196780',
|
|
19
|
-
UPDATE_OWNER: '24781435194845316'
|
|
20
|
-
};
|
|
21
|
-
const makeCommunitiesSocket = config => {
|
|
22
|
-
const sock = (0, business_1.makeBusinessSocket)(config);
|
|
23
|
-
const { authState, ev, query, generateMessageTag, upsertMessage } = sock;
|
|
24
|
-
const mexQuery = (variables, queryId, dataPath) => (0, mex_1.executeWMexQuery)(variables, queryId, dataPath, query, generateMessageTag);
|
|
1
|
+
import { proto } from '../../WAProto/index.js';
|
|
2
|
+
import { WAMessageStubType } from '../Types/index.js';
|
|
3
|
+
import { generateMessageID, generateMessageIDV2, unixTimestampSeconds } from '../Utils/index.js';
|
|
4
|
+
import logger from '../Utils/logger.js';
|
|
5
|
+
import { getBinaryNodeChild, getBinaryNodeChildren, getBinaryNodeChildString, jidEncode, jidNormalizedUser } from '../WABinary/index.js';
|
|
6
|
+
import { makeBusinessSocket } from './business.js';
|
|
7
|
+
export const makeCommunitiesSocket = (config) => {
|
|
8
|
+
const sock = makeBusinessSocket(config);
|
|
9
|
+
const { authState, ev, query, upsertMessage } = sock;
|
|
25
10
|
const communityQuery = async (jid, type, content) => query({
|
|
26
11
|
tag: 'iq',
|
|
27
12
|
attrs: {
|
|
@@ -33,7 +18,7 @@ const makeCommunitiesSocket = config => {
|
|
|
33
18
|
});
|
|
34
19
|
const communityMetadata = async (jid) => {
|
|
35
20
|
const result = await communityQuery(jid, 'get', [{ tag: 'query', attrs: { request: 'interactive' } }]);
|
|
36
|
-
return
|
|
21
|
+
return extractCommunityMetadata(result);
|
|
37
22
|
};
|
|
38
23
|
const communityFetchAllParticipating = async () => {
|
|
39
24
|
const result = await query({
|
|
@@ -55,11 +40,11 @@ const makeCommunitiesSocket = config => {
|
|
|
55
40
|
]
|
|
56
41
|
});
|
|
57
42
|
const data = {};
|
|
58
|
-
const communitiesChild =
|
|
43
|
+
const communitiesChild = getBinaryNodeChild(result, 'communities');
|
|
59
44
|
if (communitiesChild) {
|
|
60
|
-
const communities =
|
|
45
|
+
const communities = getBinaryNodeChildren(communitiesChild, 'community');
|
|
61
46
|
for (const communityNode of communities) {
|
|
62
|
-
const meta =
|
|
47
|
+
const meta = extractCommunityMetadata({
|
|
63
48
|
tag: 'result',
|
|
64
49
|
attrs: {},
|
|
65
50
|
content: [communityNode]
|
|
@@ -71,15 +56,16 @@ const makeCommunitiesSocket = config => {
|
|
|
71
56
|
return data;
|
|
72
57
|
};
|
|
73
58
|
async function parseGroupResult(node) {
|
|
74
|
-
|
|
75
|
-
const groupNode =
|
|
59
|
+
logger.info({ node }, 'parseGroupResult');
|
|
60
|
+
const groupNode = getBinaryNodeChild(node, 'group');
|
|
76
61
|
if (groupNode) {
|
|
77
62
|
try {
|
|
63
|
+
logger.info({ groupNode }, 'groupNode');
|
|
78
64
|
const metadata = await sock.groupMetadata(`${groupNode.attrs.id}@g.us`);
|
|
79
65
|
return metadata ? metadata : Optional.empty();
|
|
80
66
|
}
|
|
81
67
|
catch (error) {
|
|
82
|
-
|
|
68
|
+
console.error('Error parsing group metadata:', error);
|
|
83
69
|
return Optional.empty();
|
|
84
70
|
}
|
|
85
71
|
}
|
|
@@ -87,10 +73,10 @@ const makeCommunitiesSocket = config => {
|
|
|
87
73
|
}
|
|
88
74
|
const Optional = {
|
|
89
75
|
empty: () => null,
|
|
90
|
-
of: value => (value !== null ? { value } : null)
|
|
76
|
+
of: (value) => (value !== null ? { value } : null)
|
|
91
77
|
};
|
|
92
78
|
sock.ws.on('CB:ib,,dirty', async (node) => {
|
|
93
|
-
const { attrs } =
|
|
79
|
+
const { attrs } = getBinaryNodeChild(node, 'dirty');
|
|
94
80
|
if (attrs.type !== 'communities') {
|
|
95
81
|
return;
|
|
96
82
|
}
|
|
@@ -101,7 +87,7 @@ const makeCommunitiesSocket = config => {
|
|
|
101
87
|
...sock,
|
|
102
88
|
communityMetadata,
|
|
103
89
|
communityCreate: async (subject, body) => {
|
|
104
|
-
const descriptionId =
|
|
90
|
+
const descriptionId = generateMessageID().substring(0, 12);
|
|
105
91
|
const result = await communityQuery('@g.us', 'set', [
|
|
106
92
|
{
|
|
107
93
|
tag: 'create',
|
|
@@ -136,7 +122,7 @@ const makeCommunitiesSocket = config => {
|
|
|
136
122
|
return await parseGroupResult(result);
|
|
137
123
|
},
|
|
138
124
|
communityCreateGroup: async (subject, participants, parentCommunityJid) => {
|
|
139
|
-
const key =
|
|
125
|
+
const key = generateMessageIDV2();
|
|
140
126
|
const result = await communityQuery('@g.us', 'set', [
|
|
141
127
|
{
|
|
142
128
|
tag: 'create',
|
|
@@ -200,24 +186,28 @@ const makeCommunitiesSocket = config => {
|
|
|
200
186
|
communityFetchLinkedGroups: async (jid) => {
|
|
201
187
|
let communityJid = jid;
|
|
202
188
|
let isCommunity = false;
|
|
189
|
+
// Try to determine if it is a subgroup or a community
|
|
203
190
|
const metadata = await sock.groupMetadata(jid);
|
|
204
191
|
if (metadata.linkedParent) {
|
|
192
|
+
// It is a subgroup, get the community jid
|
|
205
193
|
communityJid = metadata.linkedParent;
|
|
206
194
|
}
|
|
207
195
|
else {
|
|
196
|
+
// It is a community
|
|
208
197
|
isCommunity = true;
|
|
209
198
|
}
|
|
199
|
+
// Fetch all subgroups of the community
|
|
210
200
|
const result = await communityQuery(communityJid, 'get', [{ tag: 'sub_groups', attrs: {} }]);
|
|
211
201
|
const linkedGroupsData = [];
|
|
212
|
-
const subGroupsNode =
|
|
202
|
+
const subGroupsNode = getBinaryNodeChild(result, 'sub_groups');
|
|
213
203
|
if (subGroupsNode) {
|
|
214
|
-
const groupNodes =
|
|
204
|
+
const groupNodes = getBinaryNodeChildren(subGroupsNode, 'group');
|
|
215
205
|
for (const groupNode of groupNodes) {
|
|
216
206
|
linkedGroupsData.push({
|
|
217
|
-
id: groupNode.attrs.id ?
|
|
207
|
+
id: groupNode.attrs.id ? jidEncode(groupNode.attrs.id, 'g.us') : undefined,
|
|
218
208
|
subject: groupNode.attrs.subject || '',
|
|
219
209
|
creation: groupNode.attrs.creation ? Number(groupNode.attrs.creation) : undefined,
|
|
220
|
-
owner: groupNode.attrs.creator ?
|
|
210
|
+
owner: groupNode.attrs.creator ? jidNormalizedUser(groupNode.attrs.creator) : undefined,
|
|
221
211
|
size: groupNode.attrs.size ? Number(groupNode.attrs.size) : undefined
|
|
222
212
|
});
|
|
223
213
|
}
|
|
@@ -235,8 +225,8 @@ const makeCommunitiesSocket = config => {
|
|
|
235
225
|
attrs: {}
|
|
236
226
|
}
|
|
237
227
|
]);
|
|
238
|
-
const node =
|
|
239
|
-
const participants =
|
|
228
|
+
const node = getBinaryNodeChild(result, 'membership_approval_requests');
|
|
229
|
+
const participants = getBinaryNodeChildren(node, 'membership_approval_request');
|
|
240
230
|
return participants.map(v => v.attrs);
|
|
241
231
|
},
|
|
242
232
|
communityRequestParticipantsUpdate: async (jid, participants, action) => {
|
|
@@ -256,9 +246,9 @@ const makeCommunitiesSocket = config => {
|
|
|
256
246
|
]
|
|
257
247
|
}
|
|
258
248
|
]);
|
|
259
|
-
const node =
|
|
260
|
-
const nodeAction =
|
|
261
|
-
const participantsAffected =
|
|
249
|
+
const node = getBinaryNodeChild(result, 'membership_requests_action');
|
|
250
|
+
const nodeAction = getBinaryNodeChild(node, action);
|
|
251
|
+
const participantsAffected = getBinaryNodeChildren(nodeAction, 'participant');
|
|
262
252
|
return participantsAffected.map(p => {
|
|
263
253
|
return { status: p.attrs.error || '200', jid: p.attrs.jid };
|
|
264
254
|
});
|
|
@@ -274,8 +264,8 @@ const makeCommunitiesSocket = config => {
|
|
|
274
264
|
}))
|
|
275
265
|
}
|
|
276
266
|
]);
|
|
277
|
-
const node =
|
|
278
|
-
const participantsAffected =
|
|
267
|
+
const node = getBinaryNodeChild(result, action);
|
|
268
|
+
const participantsAffected = getBinaryNodeChildren(node, 'participant');
|
|
279
269
|
return participantsAffected.map(p => {
|
|
280
270
|
return { status: p.attrs.error || '200', jid: p.attrs.jid, content: p };
|
|
281
271
|
});
|
|
@@ -287,7 +277,7 @@ const makeCommunitiesSocket = config => {
|
|
|
287
277
|
{
|
|
288
278
|
tag: 'description',
|
|
289
279
|
attrs: {
|
|
290
|
-
...(description ? { id:
|
|
280
|
+
...(description ? { id: generateMessageID() } : { delete: 'true' }),
|
|
291
281
|
...(prev ? { prev } : {})
|
|
292
282
|
},
|
|
293
283
|
content: description ? [{ tag: 'body', attrs: {}, content: Buffer.from(description, 'utf-8') }] : undefined
|
|
@@ -296,25 +286,36 @@ const makeCommunitiesSocket = config => {
|
|
|
296
286
|
},
|
|
297
287
|
communityInviteCode: async (jid) => {
|
|
298
288
|
const result = await communityQuery(jid, 'get', [{ tag: 'invite', attrs: {} }]);
|
|
299
|
-
const inviteNode =
|
|
289
|
+
const inviteNode = getBinaryNodeChild(result, 'invite');
|
|
300
290
|
return inviteNode?.attrs.code;
|
|
301
291
|
},
|
|
302
292
|
communityRevokeInvite: async (jid) => {
|
|
303
293
|
const result = await communityQuery(jid, 'set', [{ tag: 'invite', attrs: {} }]);
|
|
304
|
-
const inviteNode =
|
|
294
|
+
const inviteNode = getBinaryNodeChild(result, 'invite');
|
|
305
295
|
return inviteNode?.attrs.code;
|
|
306
296
|
},
|
|
307
297
|
communityAcceptInvite: async (code) => {
|
|
308
298
|
const results = await communityQuery('@g.us', 'set', [{ tag: 'invite', attrs: { code } }]);
|
|
309
|
-
const result =
|
|
299
|
+
const result = getBinaryNodeChild(results, 'community');
|
|
310
300
|
return result?.attrs.jid;
|
|
311
301
|
},
|
|
302
|
+
/**
|
|
303
|
+
* revoke a v4 invite for someone
|
|
304
|
+
* @param communityJid community jid
|
|
305
|
+
* @param invitedJid jid of person you invited
|
|
306
|
+
* @returns true if successful
|
|
307
|
+
*/
|
|
312
308
|
communityRevokeInviteV4: async (communityJid, invitedJid) => {
|
|
313
309
|
const result = await communityQuery(communityJid, 'set', [
|
|
314
310
|
{ tag: 'revoke', attrs: {}, content: [{ tag: 'participant', attrs: { jid: invitedJid } }] }
|
|
315
311
|
]);
|
|
316
312
|
return !!result;
|
|
317
313
|
},
|
|
314
|
+
/**
|
|
315
|
+
* accept a CommunityInviteMessage
|
|
316
|
+
* @param key the key of the invite message, or optionally only provide the jid of the person who sent the invite
|
|
317
|
+
* @param inviteMessage the message to accept
|
|
318
|
+
*/
|
|
318
319
|
communityAcceptInviteV4: ev.createBufferedFunction(async (key, inviteMessage) => {
|
|
319
320
|
key = typeof key === 'string' ? { remoteJid: key } : key;
|
|
320
321
|
const results = await communityQuery(inviteMessage.groupJid, 'set', [
|
|
@@ -327,8 +328,11 @@ const makeCommunitiesSocket = config => {
|
|
|
327
328
|
}
|
|
328
329
|
}
|
|
329
330
|
]);
|
|
331
|
+
// if we have the full message key
|
|
332
|
+
// update the invite message to be expired
|
|
330
333
|
if (key.id) {
|
|
331
|
-
|
|
334
|
+
// create new invite message that is expired
|
|
335
|
+
inviteMessage = proto.Message.GroupInviteMessage.fromObject(inviteMessage);
|
|
332
336
|
inviteMessage.inviteExpiration = 0;
|
|
333
337
|
inviteMessage.inviteCode = '';
|
|
334
338
|
ev.emit('messages.update', [
|
|
@@ -342,23 +346,24 @@ const makeCommunitiesSocket = config => {
|
|
|
342
346
|
}
|
|
343
347
|
]);
|
|
344
348
|
}
|
|
349
|
+
// generate the community add message
|
|
345
350
|
await upsertMessage({
|
|
346
351
|
key: {
|
|
347
352
|
remoteJid: inviteMessage.groupJid,
|
|
348
|
-
id:
|
|
353
|
+
id: generateMessageIDV2(sock.user?.id),
|
|
349
354
|
fromMe: false,
|
|
350
|
-
participant: key.remoteJid
|
|
355
|
+
participant: key.remoteJid // TODO: investigate if this makes any sense at all
|
|
351
356
|
},
|
|
352
|
-
messageStubType:
|
|
357
|
+
messageStubType: WAMessageStubType.GROUP_PARTICIPANT_ADD,
|
|
353
358
|
messageStubParameters: [JSON.stringify(authState.creds.me)],
|
|
354
359
|
participant: key.remoteJid,
|
|
355
|
-
messageTimestamp:
|
|
360
|
+
messageTimestamp: unixTimestampSeconds()
|
|
356
361
|
}, 'notify');
|
|
357
362
|
return results.attrs.from;
|
|
358
363
|
}),
|
|
359
364
|
communityGetInviteInfo: async (code) => {
|
|
360
365
|
const results = await communityQuery('@g.us', 'get', [{ tag: 'invite', attrs: { code } }]);
|
|
361
|
-
return
|
|
366
|
+
return extractCommunityMetadata(results);
|
|
362
367
|
},
|
|
363
368
|
communityToggleEphemeral: async (jid, ephemeralExpiration) => {
|
|
364
369
|
const content = ephemeralExpiration
|
|
@@ -377,87 +382,50 @@ const makeCommunitiesSocket = config => {
|
|
|
377
382
|
{ tag: 'membership_approval_mode', attrs: {}, content: [{ tag: 'community_join', attrs: { state: mode } }] }
|
|
378
383
|
]);
|
|
379
384
|
},
|
|
380
|
-
|
|
381
|
-
const { img } = await (0, Utils_1.generateProfilePicture)(content);
|
|
382
|
-
await communityQuery(jid, 'set', [
|
|
383
|
-
{
|
|
384
|
-
tag: 'picture',
|
|
385
|
-
attrs: { type: 'image' },
|
|
386
|
-
content: img
|
|
387
|
-
}
|
|
388
|
-
]);
|
|
389
|
-
},
|
|
390
|
-
communityRemovePicture: async (jid) => {
|
|
391
|
-
await communityQuery(jid, 'set', [{ tag: 'picture', attrs: { type: 'delete' } }]);
|
|
392
|
-
},
|
|
393
|
-
communitySettingUpdate: async (jid, setting) => {
|
|
394
|
-
await communityQuery(jid, 'set', [{ tag: setting, attrs: {} }]);
|
|
395
|
-
},
|
|
396
|
-
communityDeactivate: async (jid) => {
|
|
397
|
-
await communityQuery(jid, 'set', [{ tag: 'delete_parent', attrs: {} }]);
|
|
398
|
-
},
|
|
399
|
-
communityGetInviteInfo: async (code) => {
|
|
400
|
-
const results = await communityQuery('@g.us', 'get', [{ tag: 'invite', attrs: { code } }]);
|
|
401
|
-
return (0, exports.extractCommunityMetadata)(results);
|
|
402
|
-
},
|
|
403
|
-
communityToggleEphemeral: async (jid, ephemeralExpiration) => {
|
|
404
|
-
const content = ephemeralExpiration
|
|
405
|
-
? { tag: 'ephemeral', attrs: { expiration: ephemeralExpiration.toString() } }
|
|
406
|
-
: { tag: 'not_ephemeral', attrs: {} };
|
|
407
|
-
await communityQuery(jid, 'set', [content]);
|
|
408
|
-
},
|
|
409
|
-
communityFetchAllParticipating,
|
|
410
|
-
communityParticipantCount: jid => mexQuery({ group_input: { group_id: jid } }, COMMUNITY_MEX_QUERY_IDS.QUERY_PARTICIPANT_COUNT, 'xwa2_group_query_by_id'),
|
|
411
|
-
communitySubgroupsMex: jid => mexQuery({ group_input: { group_id: jid } }, COMMUNITY_MEX_QUERY_IDS.QUERY_SUBGROUPS, 'xwa2_group_query_by_id'),
|
|
412
|
-
communitySubgroupParticipantCount: subgroupJid => mexQuery({ group_input: { group_id: subgroupJid } }, COMMUNITY_MEX_QUERY_IDS.QUERY_SUBGROUP_PARTICIPANT_COUNT, 'xwa2_group_query_by_id'),
|
|
413
|
-
communityTransferOwnershipMex: (communityJid, newOwnerJid) => mexQuery({
|
|
414
|
-
group_id: communityJid,
|
|
415
|
-
role_updates: [{ user_jid: newOwnerJid, new_role: 'SUPERADMIN_MEMBER' }]
|
|
416
|
-
}, COMMUNITY_MEX_QUERY_IDS.UPDATE_OWNER, 'xwa2_community_update_owner'),
|
|
417
|
-
COMMUNITY_MEX_QUERY_IDS
|
|
385
|
+
communityFetchAllParticipating
|
|
418
386
|
};
|
|
419
387
|
};
|
|
420
|
-
|
|
421
|
-
const
|
|
422
|
-
const
|
|
423
|
-
const descChild = (0, WABinary_1.getBinaryNodeChild)(community, 'description');
|
|
388
|
+
export const extractCommunityMetadata = (result) => {
|
|
389
|
+
const community = getBinaryNodeChild(result, 'community');
|
|
390
|
+
const descChild = getBinaryNodeChild(community, 'description');
|
|
424
391
|
let desc;
|
|
425
392
|
let descId;
|
|
426
393
|
if (descChild) {
|
|
427
|
-
desc =
|
|
394
|
+
desc = getBinaryNodeChildString(descChild, 'body');
|
|
428
395
|
descId = descChild.attrs.id;
|
|
429
396
|
}
|
|
430
397
|
const communityId = community.attrs.id?.includes('@')
|
|
431
398
|
? community.attrs.id
|
|
432
|
-
:
|
|
433
|
-
const eph =
|
|
434
|
-
const memberAddMode =
|
|
399
|
+
: jidEncode(community.attrs.id || '', 'g.us');
|
|
400
|
+
const eph = getBinaryNodeChild(community, 'ephemeral')?.attrs.expiration;
|
|
401
|
+
const memberAddMode = getBinaryNodeChildString(community, 'member_add_mode') === 'all_member_add';
|
|
435
402
|
const metadata = {
|
|
436
403
|
id: communityId,
|
|
437
404
|
subject: community.attrs.subject || '',
|
|
438
405
|
subjectOwner: community.attrs.s_o,
|
|
439
406
|
subjectTime: Number(community.attrs.s_t || 0),
|
|
440
|
-
size:
|
|
407
|
+
size: getBinaryNodeChildren(community, 'participant').length,
|
|
441
408
|
creation: Number(community.attrs.creation || 0),
|
|
442
|
-
owner: community.attrs.creator ?
|
|
409
|
+
owner: community.attrs.creator ? jidNormalizedUser(community.attrs.creator) : undefined,
|
|
443
410
|
desc,
|
|
444
411
|
descId,
|
|
445
|
-
linkedParent:
|
|
446
|
-
restrict: !!
|
|
447
|
-
announce: !!
|
|
448
|
-
isCommunity: !!
|
|
449
|
-
isCommunityAnnounce: !!
|
|
450
|
-
joinApprovalMode: !!
|
|
412
|
+
linkedParent: getBinaryNodeChild(community, 'linked_parent')?.attrs.jid || undefined,
|
|
413
|
+
restrict: !!getBinaryNodeChild(community, 'locked'),
|
|
414
|
+
announce: !!getBinaryNodeChild(community, 'announcement'),
|
|
415
|
+
isCommunity: !!getBinaryNodeChild(community, 'parent'),
|
|
416
|
+
isCommunityAnnounce: !!getBinaryNodeChild(community, 'default_sub_community'),
|
|
417
|
+
joinApprovalMode: !!getBinaryNodeChild(community, 'membership_approval_mode'),
|
|
451
418
|
memberAddMode,
|
|
452
|
-
participants:
|
|
419
|
+
participants: getBinaryNodeChildren(community, 'participant').map(({ attrs }) => {
|
|
453
420
|
return {
|
|
421
|
+
// TODO: IMPLEMENT THE PN/LID FIELDS HERE!!
|
|
454
422
|
id: attrs.jid,
|
|
455
|
-
admin: attrs.type || null
|
|
423
|
+
admin: (attrs.type || null)
|
|
456
424
|
};
|
|
457
425
|
}),
|
|
458
426
|
ephemeralDuration: eph ? +eph : undefined,
|
|
459
|
-
addressingMode:
|
|
427
|
+
addressingMode: getBinaryNodeChildString(community, 'addressing_mode')
|
|
460
428
|
};
|
|
461
429
|
return metadata;
|
|
462
430
|
};
|
|
463
|
-
|
|
431
|
+
//# sourceMappingURL=communities.js.map
|