baileys-joss 1.0.0 → 1.0.2

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.
Files changed (127) hide show
  1. package/README.md +2554 -78
  2. package/lib/Socket/business.d.ts +4 -0
  3. package/lib/Socket/business.d.ts.map +1 -1
  4. package/lib/Socket/chats.d.ts +4 -0
  5. package/lib/Socket/chats.d.ts.map +1 -1
  6. package/lib/Socket/chats.js +44 -1
  7. package/lib/Socket/chats.js.map +1 -1
  8. package/lib/Socket/communities.d.ts +4 -0
  9. package/lib/Socket/communities.d.ts.map +1 -1
  10. package/lib/Socket/groups.d.ts +4 -0
  11. package/lib/Socket/groups.d.ts.map +1 -1
  12. package/lib/Socket/index.d.ts +4 -0
  13. package/lib/Socket/index.d.ts.map +1 -1
  14. package/lib/Socket/messages-recv.d.ts +4 -0
  15. package/lib/Socket/messages-recv.d.ts.map +1 -1
  16. package/lib/Socket/messages-send.d.ts +4 -0
  17. package/lib/Socket/messages-send.d.ts.map +1 -1
  18. package/lib/Socket/messages-send.js +130 -1
  19. package/lib/Socket/messages-send.js.map +1 -1
  20. package/lib/Socket/newsletter.d.ts +4 -0
  21. package/lib/Socket/newsletter.d.ts.map +1 -1
  22. package/lib/Types/Message.d.ts +25 -1
  23. package/lib/Types/Message.d.ts.map +1 -1
  24. package/lib/Utils/activity-logger.d.ts +189 -0
  25. package/lib/Utils/activity-logger.d.ts.map +1 -0
  26. package/lib/Utils/activity-logger.js +418 -0
  27. package/lib/Utils/activity-logger.js.map +1 -0
  28. package/lib/Utils/anti-spam.d.ts +145 -0
  29. package/lib/Utils/anti-spam.d.ts.map +1 -0
  30. package/lib/Utils/anti-spam.js +398 -0
  31. package/lib/Utils/anti-spam.js.map +1 -0
  32. package/lib/Utils/auto-reply.d.ts +123 -0
  33. package/lib/Utils/auto-reply.d.ts.map +1 -0
  34. package/lib/Utils/auto-reply.js +234 -0
  35. package/lib/Utils/auto-reply.js.map +1 -0
  36. package/lib/Utils/broadcast.d.ts +121 -0
  37. package/lib/Utils/broadcast.d.ts.map +1 -0
  38. package/lib/Utils/broadcast.js +223 -0
  39. package/lib/Utils/broadcast.js.map +1 -0
  40. package/lib/Utils/bulk-messaging.d.ts +79 -0
  41. package/lib/Utils/bulk-messaging.d.ts.map +1 -0
  42. package/lib/Utils/bulk-messaging.js +148 -0
  43. package/lib/Utils/bulk-messaging.js.map +1 -0
  44. package/lib/Utils/chat-analytics.d.ts +92 -0
  45. package/lib/Utils/chat-analytics.d.ts.map +1 -0
  46. package/lib/Utils/chat-analytics.js +337 -0
  47. package/lib/Utils/chat-analytics.js.map +1 -0
  48. package/lib/Utils/chat-control.d.ts +156 -0
  49. package/lib/Utils/chat-control.d.ts.map +1 -0
  50. package/lib/Utils/chat-control.js +224 -0
  51. package/lib/Utils/chat-control.js.map +1 -0
  52. package/lib/Utils/chat-export.d.ts +75 -0
  53. package/lib/Utils/chat-export.d.ts.map +1 -0
  54. package/lib/Utils/chat-export.js +309 -0
  55. package/lib/Utils/chat-export.js.map +1 -0
  56. package/lib/Utils/content-detector.d.ts +199 -0
  57. package/lib/Utils/content-detector.d.ts.map +1 -0
  58. package/lib/Utils/content-detector.js +442 -0
  59. package/lib/Utils/content-detector.js.map +1 -0
  60. package/lib/Utils/index.d.ts +23 -0
  61. package/lib/Utils/index.d.ts.map +1 -1
  62. package/lib/Utils/index.js +52 -0
  63. package/lib/Utils/index.js.map +1 -1
  64. package/lib/Utils/link-scanner.d.ts +112 -0
  65. package/lib/Utils/link-scanner.d.ts.map +1 -0
  66. package/lib/Utils/link-scanner.js +433 -0
  67. package/lib/Utils/link-scanner.js.map +1 -0
  68. package/lib/Utils/media-downloader.d.ts +86 -0
  69. package/lib/Utils/media-downloader.d.ts.map +1 -0
  70. package/lib/Utils/media-downloader.js +269 -0
  71. package/lib/Utils/media-downloader.js.map +1 -0
  72. package/lib/Utils/meme-generator.d.ts +96 -0
  73. package/lib/Utils/meme-generator.d.ts.map +1 -0
  74. package/lib/Utils/meme-generator.js +368 -0
  75. package/lib/Utils/meme-generator.js.map +1 -0
  76. package/lib/Utils/message-search.d.ts +96 -0
  77. package/lib/Utils/message-search.d.ts.map +1 -0
  78. package/lib/Utils/message-search.js +261 -0
  79. package/lib/Utils/message-search.js.map +1 -0
  80. package/lib/Utils/messages-media.d.ts +20 -1
  81. package/lib/Utils/messages-media.d.ts.map +1 -1
  82. package/lib/Utils/messages-media.js +100 -5
  83. package/lib/Utils/messages-media.js.map +1 -1
  84. package/lib/Utils/messages.d.ts.map +1 -1
  85. package/lib/Utils/messages.js +14 -2
  86. package/lib/Utils/messages.js.map +1 -1
  87. package/lib/Utils/mini-games.d.ts +155 -0
  88. package/lib/Utils/mini-games.d.ts.map +1 -0
  89. package/lib/Utils/mini-games.js +445 -0
  90. package/lib/Utils/mini-games.js.map +1 -0
  91. package/lib/Utils/pomodoro.d.ts +139 -0
  92. package/lib/Utils/pomodoro.d.ts.map +1 -0
  93. package/lib/Utils/pomodoro.js +434 -0
  94. package/lib/Utils/pomodoro.js.map +1 -0
  95. package/lib/Utils/qr-generator.d.ts +95 -0
  96. package/lib/Utils/qr-generator.d.ts.map +1 -0
  97. package/lib/Utils/qr-generator.js +226 -0
  98. package/lib/Utils/qr-generator.js.map +1 -0
  99. package/lib/Utils/quotes.d.ts +110 -0
  100. package/lib/Utils/quotes.d.ts.map +1 -0
  101. package/lib/Utils/quotes.js +325 -0
  102. package/lib/Utils/quotes.js.map +1 -0
  103. package/lib/Utils/scheduling.d.ts +88 -0
  104. package/lib/Utils/scheduling.d.ts.map +1 -0
  105. package/lib/Utils/scheduling.js +163 -0
  106. package/lib/Utils/scheduling.js.map +1 -0
  107. package/lib/Utils/status-posting.d.ts +151 -0
  108. package/lib/Utils/status-posting.d.ts.map +1 -0
  109. package/lib/Utils/status-posting.js +162 -0
  110. package/lib/Utils/status-posting.js.map +1 -0
  111. package/lib/Utils/templates.d.ts +154 -0
  112. package/lib/Utils/templates.d.ts.map +1 -0
  113. package/lib/Utils/templates.js +368 -0
  114. package/lib/Utils/templates.js.map +1 -0
  115. package/lib/Utils/vcard.d.ts +86 -0
  116. package/lib/Utils/vcard.d.ts.map +1 -0
  117. package/lib/Utils/vcard.js +195 -0
  118. package/lib/Utils/vcard.js.map +1 -0
  119. package/lib/Utils/voice-note.d.ts +115 -0
  120. package/lib/Utils/voice-note.d.ts.map +1 -0
  121. package/lib/Utils/voice-note.js +212 -0
  122. package/lib/Utils/voice-note.js.map +1 -0
  123. package/lib/Utils/weather.d.ts +118 -0
  124. package/lib/Utils/weather.d.ts.map +1 -0
  125. package/lib/Utils/weather.js +362 -0
  126. package/lib/Utils/weather.js.map +1 -0
  127. package/package.json +6 -3
@@ -0,0 +1,442 @@
1
+ /**
2
+ * Baileys-Joss: Content Detector
3
+ *
4
+ * Deteksi otomatis berbagai jenis konten dalam pesan:
5
+ * - Links/URLs
6
+ * - Phone numbers
7
+ * - Emails
8
+ * - Media (images, videos, audio, documents)
9
+ * - Mentions
10
+ * - Hashtags
11
+ * - Sensitive content keywords
12
+ */
13
+ // =====================================================
14
+ // REGEX PATTERNS
15
+ // =====================================================
16
+ const PATTERNS = {
17
+ // URLs
18
+ URL: /https?:\/\/(?:www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b(?:[-a-zA-Z0-9()@:%_\+.~#?&\/=]*)/gi,
19
+ // Domain extraction
20
+ DOMAIN: /(?:https?:\/\/)?(?:www\.)?([a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)+)/i,
21
+ // Phone numbers (international format)
22
+ PHONE: /(?:\+62|62|0)(?:\d{2,3}[-\s.]?)?\d{3,4}[-\s.]?\d{3,4}(?:[-\s.]?\d{1,4})?|(?:\+\d{1,3}[-\s.]?)?\(?\d{1,4}\)?[-\s.]?\d{1,4}[-\s.]?\d{1,9}/g,
23
+ // Email addresses
24
+ EMAIL: /[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/gi,
25
+ // Hashtags
26
+ HASHTAG: /#[a-zA-Z0-9_\u0600-\u06FF]+/g,
27
+ // Emojis
28
+ EMOJI: /[\u{1F600}-\u{1F64F}]|[\u{1F300}-\u{1F5FF}]|[\u{1F680}-\u{1F6FF}]|[\u{1F1E0}-\u{1F1FF}]|[\u{2600}-\u{26FF}]|[\u{2700}-\u{27BF}]|[\u{FE00}-\u{FE0F}]|[\u{1F900}-\u{1F9FF}]|[\u{1FA00}-\u{1FA6F}]|[\u{1FA70}-\u{1FAFF}]/gu,
29
+ // Social media domains
30
+ SOCIAL_DOMAINS: /(?:facebook|fb|instagram|twitter|tiktok|youtube|linkedin|whatsapp|telegram|discord)\.(?:com|me|tv|gg)/i,
31
+ // Image extensions
32
+ IMAGE_URL: /\.(jpg|jpeg|png|gif|webp|bmp|svg)(\?.*)?$/i,
33
+ // Video extensions
34
+ VIDEO_URL: /\.(mp4|avi|mov|wmv|flv|webm|mkv)(\?.*)?$/i,
35
+ // File extensions
36
+ FILE_URL: /\.(pdf|doc|docx|xls|xlsx|ppt|pptx|zip|rar|7z|tar|gz)(\?.*)?$/i
37
+ };
38
+ // =====================================================
39
+ // CONTENT DETECTOR CLASS
40
+ // =====================================================
41
+ export class ContentDetector {
42
+ constructor(options = {}) {
43
+ this.sensitiveKeywords = [];
44
+ this.customPatterns = [];
45
+ this.sensitiveKeywords = options.sensitiveKeywords || [];
46
+ this.customPatterns = options.customPatterns || [];
47
+ }
48
+ /**
49
+ * Analyze a WhatsApp message
50
+ */
51
+ analyze(message) {
52
+ const text = this.extractText(message);
53
+ const mediaType = this.getMediaType(message);
54
+ const links = this.detectLinks(text);
55
+ const phoneNumbers = this.detectPhoneNumbers(text);
56
+ const emails = this.detectEmails(text);
57
+ const mentions = this.detectMentions(message);
58
+ const hashtags = this.detectHashtags(text);
59
+ const emojis = this.detectEmojis(text);
60
+ const sensitiveKeywords = this.detectSensitiveContent(text);
61
+ return {
62
+ hasMedia: mediaType !== null,
63
+ mediaType,
64
+ hasLinks: links.length > 0,
65
+ links,
66
+ hasPhoneNumbers: phoneNumbers.length > 0,
67
+ phoneNumbers,
68
+ hasEmails: emails.length > 0,
69
+ emails,
70
+ hasMentions: mentions.length > 0,
71
+ mentions,
72
+ hasHashtags: hashtags.length > 0,
73
+ hashtags,
74
+ hasEmojis: emojis.length > 0,
75
+ emojis,
76
+ hasSensitiveContent: sensitiveKeywords.length > 0,
77
+ sensitiveKeywords,
78
+ messageType: this.getMessageType(message),
79
+ textLength: text.length,
80
+ wordCount: text.split(/\s+/).filter(w => w.length > 0).length
81
+ };
82
+ }
83
+ /**
84
+ * Extract text from message
85
+ */
86
+ extractText(message) {
87
+ const content = message.message;
88
+ if (!content)
89
+ return '';
90
+ if (content.conversation)
91
+ return content.conversation;
92
+ if (content.extendedTextMessage?.text)
93
+ return content.extendedTextMessage.text;
94
+ if (content.imageMessage?.caption)
95
+ return content.imageMessage.caption;
96
+ if (content.videoMessage?.caption)
97
+ return content.videoMessage.caption;
98
+ if (content.documentMessage?.caption)
99
+ return content.documentMessage.caption;
100
+ return '';
101
+ }
102
+ /**
103
+ * Get media type from message
104
+ */
105
+ getMediaType(message) {
106
+ const content = message.message;
107
+ if (!content)
108
+ return null;
109
+ if (content.imageMessage)
110
+ return 'image';
111
+ if (content.videoMessage)
112
+ return 'video';
113
+ if (content.audioMessage)
114
+ return 'audio';
115
+ if (content.documentMessage)
116
+ return 'document';
117
+ if (content.stickerMessage)
118
+ return 'sticker';
119
+ if (content.locationMessage || content.liveLocationMessage)
120
+ return 'location';
121
+ if (content.contactMessage || content.contactsArrayMessage)
122
+ return 'contact';
123
+ return null;
124
+ }
125
+ /**
126
+ * Get message type string
127
+ */
128
+ getMessageType(message) {
129
+ const content = message.message;
130
+ if (!content)
131
+ return 'unknown';
132
+ if (content.conversation || content.extendedTextMessage)
133
+ return 'text';
134
+ if (content.imageMessage)
135
+ return 'image';
136
+ if (content.videoMessage)
137
+ return 'video';
138
+ if (content.audioMessage)
139
+ return 'audio';
140
+ if (content.documentMessage)
141
+ return 'document';
142
+ if (content.stickerMessage)
143
+ return 'sticker';
144
+ if (content.locationMessage)
145
+ return 'location';
146
+ if (content.liveLocationMessage)
147
+ return 'live_location';
148
+ if (content.contactMessage)
149
+ return 'contact';
150
+ if (content.contactsArrayMessage)
151
+ return 'contacts';
152
+ if (content.pollCreationMessage)
153
+ return 'poll';
154
+ if (content.reactionMessage)
155
+ return 'reaction';
156
+ return 'other';
157
+ }
158
+ /**
159
+ * Detect links in text
160
+ */
161
+ detectLinks(text) {
162
+ const matches = text.match(PATTERNS.URL) || [];
163
+ return matches.map(url => {
164
+ const domainMatch = url.match(PATTERNS.DOMAIN);
165
+ const domain = domainMatch ? domainMatch[1] || '' : '';
166
+ let type = 'other';
167
+ if (PATTERNS.SOCIAL_DOMAINS.test(url))
168
+ type = 'social';
169
+ else if (PATTERNS.IMAGE_URL.test(url))
170
+ type = 'image';
171
+ else if (PATTERNS.VIDEO_URL.test(url))
172
+ type = 'video';
173
+ else if (PATTERNS.FILE_URL.test(url))
174
+ type = 'file';
175
+ else
176
+ type = 'website';
177
+ return {
178
+ url,
179
+ domain,
180
+ isHttps: url.startsWith('https'),
181
+ type
182
+ };
183
+ });
184
+ }
185
+ /**
186
+ * Detect phone numbers
187
+ */
188
+ detectPhoneNumbers(text) {
189
+ const matches = text.match(PATTERNS.PHONE) || [];
190
+ return matches.map(raw => {
191
+ const digits = raw.replace(/\D/g, '');
192
+ let countryCode;
193
+ let formatted = raw;
194
+ if (digits.startsWith('62')) {
195
+ countryCode = '+62';
196
+ formatted = '+62 ' + digits.slice(2);
197
+ }
198
+ else if (digits.startsWith('0')) {
199
+ countryCode = '+62';
200
+ formatted = '+62 ' + digits.slice(1);
201
+ }
202
+ return { raw, formatted, countryCode };
203
+ });
204
+ }
205
+ /**
206
+ * Detect email addresses
207
+ */
208
+ detectEmails(text) {
209
+ return text.match(PATTERNS.EMAIL) || [];
210
+ }
211
+ /**
212
+ * Detect mentions from message
213
+ */
214
+ detectMentions(message) {
215
+ const mentions = [];
216
+ const mentionedJids = message.message?.extendedTextMessage?.contextInfo?.mentionedJid || [];
217
+ for (const jid of mentionedJids) {
218
+ mentions.push({
219
+ jid,
220
+ position: { start: 0, end: 0 } // Position detection would require more parsing
221
+ });
222
+ }
223
+ return mentions;
224
+ }
225
+ /**
226
+ * Detect hashtags
227
+ */
228
+ detectHashtags(text) {
229
+ return (text.match(PATTERNS.HASHTAG) || []).map(h => h.substring(1));
230
+ }
231
+ /**
232
+ * Detect emojis
233
+ */
234
+ detectEmojis(text) {
235
+ return text.match(PATTERNS.EMOJI) || [];
236
+ }
237
+ /**
238
+ * Detect sensitive content
239
+ */
240
+ detectSensitiveContent(text) {
241
+ const lowerText = text.toLowerCase();
242
+ return this.sensitiveKeywords.filter(keyword => lowerText.includes(keyword.toLowerCase()));
243
+ }
244
+ /**
245
+ * Check custom patterns
246
+ */
247
+ checkCustomPatterns(text) {
248
+ return this.customPatterns.map(pattern => pattern.test(text));
249
+ }
250
+ /**
251
+ * Add sensitive keywords
252
+ */
253
+ addSensitiveKeywords(keywords) {
254
+ this.sensitiveKeywords.push(...keywords);
255
+ }
256
+ /**
257
+ * Set sensitive keywords
258
+ */
259
+ setSensitiveKeywords(keywords) {
260
+ this.sensitiveKeywords = keywords;
261
+ }
262
+ /**
263
+ * Add custom pattern
264
+ */
265
+ addCustomPattern(pattern) {
266
+ this.customPatterns.push(pattern);
267
+ }
268
+ }
269
+ // =====================================================
270
+ // CONTENT FILTER CLASS
271
+ // =====================================================
272
+ export class ContentFilter {
273
+ constructor(options = {}) {
274
+ this.options = {
275
+ blockLinks: options.blockLinks ?? false,
276
+ blockedDomains: options.blockedDomains ?? [],
277
+ blockPhoneNumbers: options.blockPhoneNumbers ?? false,
278
+ blockEmails: options.blockEmails ?? false,
279
+ sensitiveKeywords: options.sensitiveKeywords ?? [],
280
+ maxMessageLength: options.maxMessageLength ?? 0,
281
+ customPatterns: options.customPatterns ?? []
282
+ };
283
+ }
284
+ /**
285
+ * Filter a message
286
+ */
287
+ filter(message) {
288
+ const detector = new ContentDetector({ sensitiveKeywords: this.options.sensitiveKeywords });
289
+ const analysis = detector.analyze(message);
290
+ const violations = [];
291
+ // Check links
292
+ if (this.options.blockLinks && analysis.hasLinks) {
293
+ violations.push('Links are not allowed');
294
+ }
295
+ // Check blocked domains
296
+ if (this.options.blockedDomains.length > 0 && analysis.hasLinks) {
297
+ const blockedFound = analysis.links.filter(link => this.options.blockedDomains.some(domain => link.domain.toLowerCase().includes(domain.toLowerCase())));
298
+ if (blockedFound.length > 0) {
299
+ violations.push(`Blocked domains: ${blockedFound.map(l => l.domain).join(', ')}`);
300
+ }
301
+ }
302
+ // Check phone numbers
303
+ if (this.options.blockPhoneNumbers && analysis.hasPhoneNumbers) {
304
+ violations.push('Phone numbers are not allowed');
305
+ }
306
+ // Check emails
307
+ if (this.options.blockEmails && analysis.hasEmails) {
308
+ violations.push('Email addresses are not allowed');
309
+ }
310
+ // Check sensitive content
311
+ if (analysis.hasSensitiveContent) {
312
+ violations.push(`Sensitive content detected: ${analysis.sensitiveKeywords.join(', ')}`);
313
+ }
314
+ // Check message length
315
+ if (this.options.maxMessageLength > 0 && analysis.textLength > this.options.maxMessageLength) {
316
+ violations.push(`Message too long (${analysis.textLength}/${this.options.maxMessageLength})`);
317
+ }
318
+ // Check custom patterns
319
+ const text = this.extractText(message);
320
+ for (let i = 0; i < this.options.customPatterns.length; i++) {
321
+ if (this.options.customPatterns[i]?.test(text)) {
322
+ violations.push(`Custom pattern #${i + 1} matched`);
323
+ }
324
+ }
325
+ return {
326
+ allowed: violations.length === 0,
327
+ blockedReason: violations.length > 0 ? violations[0] : undefined,
328
+ detectedViolations: violations
329
+ };
330
+ }
331
+ /**
332
+ * Extract text from message
333
+ */
334
+ extractText(message) {
335
+ const content = message.message;
336
+ if (!content)
337
+ return '';
338
+ if (content.conversation)
339
+ return content.conversation;
340
+ if (content.extendedTextMessage?.text)
341
+ return content.extendedTextMessage.text;
342
+ if (content.imageMessage?.caption)
343
+ return content.imageMessage.caption;
344
+ if (content.videoMessage?.caption)
345
+ return content.videoMessage.caption;
346
+ return '';
347
+ }
348
+ /**
349
+ * Update filter options
350
+ */
351
+ updateOptions(options) {
352
+ this.options = { ...this.options, ...options };
353
+ }
354
+ }
355
+ // =====================================================
356
+ // QUICK DETECTION FUNCTIONS
357
+ // =====================================================
358
+ /**
359
+ * Quick check if message contains links
360
+ */
361
+ export const hasLinks = (text) => {
362
+ return PATTERNS.URL.test(text);
363
+ };
364
+ /**
365
+ * Quick check if message contains phone numbers
366
+ */
367
+ export const hasPhoneNumbers = (text) => {
368
+ return PATTERNS.PHONE.test(text);
369
+ };
370
+ /**
371
+ * Quick check if message contains emails
372
+ */
373
+ export const hasEmails = (text) => {
374
+ return PATTERNS.EMAIL.test(text);
375
+ };
376
+ /**
377
+ * Extract all links from text
378
+ */
379
+ export const extractLinks = (text) => {
380
+ return text.match(PATTERNS.URL) || [];
381
+ };
382
+ /**
383
+ * Extract all phone numbers from text
384
+ */
385
+ export const extractPhoneNumbers = (text) => {
386
+ return text.match(PATTERNS.PHONE) || [];
387
+ };
388
+ /**
389
+ * Extract all emails from text
390
+ */
391
+ export const extractEmails = (text) => {
392
+ return text.match(PATTERNS.EMAIL) || [];
393
+ };
394
+ /**
395
+ * Check if message has media content
396
+ */
397
+ export const hasMediaContent = (message) => {
398
+ const content = message.message;
399
+ if (!content)
400
+ return false;
401
+ return !!(content.imageMessage ||
402
+ content.videoMessage ||
403
+ content.audioMessage ||
404
+ content.documentMessage ||
405
+ content.stickerMessage);
406
+ };
407
+ /**
408
+ * Check if message is forwarded
409
+ */
410
+ export const isForwarded = (message) => {
411
+ const content = message.message;
412
+ if (!content)
413
+ return false;
414
+ const contextInfo = content.extendedTextMessage?.contextInfo ||
415
+ content.imageMessage?.contextInfo ||
416
+ content.videoMessage?.contextInfo ||
417
+ content.documentMessage?.contextInfo ||
418
+ content.audioMessage?.contextInfo;
419
+ return !!contextInfo?.isForwarded;
420
+ };
421
+ /**
422
+ * Get forward count
423
+ */
424
+ export const getForwardCount = (message) => {
425
+ const content = message.message;
426
+ if (!content)
427
+ return 0;
428
+ const contextInfo = content.extendedTextMessage?.contextInfo ||
429
+ content.imageMessage?.contextInfo ||
430
+ content.videoMessage?.contextInfo;
431
+ return contextInfo?.forwardingScore || 0;
432
+ };
433
+ // =====================================================
434
+ // FACTORY FUNCTIONS
435
+ // =====================================================
436
+ export const createContentDetector = (options) => {
437
+ return new ContentDetector(options);
438
+ };
439
+ export const createContentFilter = (options) => {
440
+ return new ContentFilter(options);
441
+ };
442
+ //# sourceMappingURL=content-detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-detector.js","sourceRoot":"","sources":["../../src/Utils/content-detector.ts"],"names":[],"mappings":"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"}
@@ -23,4 +23,27 @@ export * from './view-once.js';
23
23
  export * from './anti-delete.js';
24
24
  export * from './sticker-maker.js';
25
25
  export * from './group-utils.js';
26
+ export * from './scheduling.js';
27
+ export * from './bulk-messaging.js';
28
+ export * from './auto-reply.js';
29
+ export * from './vcard.js';
30
+ export * from './status-posting.js';
31
+ export * from './voice-note.js';
32
+ export * from './templates.js';
33
+ export * from './broadcast.js';
34
+ export * from './chat-control.js';
35
+ export * from './message-search.js';
36
+ export * from './chat-analytics.js';
37
+ export * from './chat-export.js';
38
+ export * from './qr-generator.js';
39
+ export * from './media-downloader.js';
40
+ export * from './mini-games.js';
41
+ export * from './content-detector.js';
42
+ export * from './anti-spam.js';
43
+ export * from './link-scanner.js';
44
+ export * from './activity-logger.js';
45
+ export * from './meme-generator.js';
46
+ export * from './pomodoro.js';
47
+ export * from './quotes.js';
48
+ export * from './weather.js';
26
49
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,qBAAqB,CAAA;AACnC,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,uBAAuB,CAAA;AACrC,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,6BAA6B,CAAA;AAC3C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,yBAAyB,CAAA;AACvC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,2BAA2B,CAAA;AAOzC,cAAc,uBAAuB,CAAA;AAGrC,cAAc,gBAAgB,CAAA;AAG9B,cAAc,aAAa,CAAA;AAG3B,cAAc,eAAe,CAAA;AAG7B,cAAc,iBAAiB,CAAA;AAG/B,cAAc,eAAe,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,qBAAqB,CAAA;AACnC,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,uBAAuB,CAAA;AACrC,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,6BAA6B,CAAA;AAC3C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,yBAAyB,CAAA;AACvC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,2BAA2B,CAAA;AAOzC,cAAc,uBAAuB,CAAA;AAGrC,cAAc,gBAAgB,CAAA;AAG9B,cAAc,aAAa,CAAA;AAG3B,cAAc,eAAe,CAAA;AAG7B,cAAc,iBAAiB,CAAA;AAG/B,cAAc,eAAe,CAAA;AAO7B,cAAc,cAAc,CAAA;AAG5B,cAAc,kBAAkB,CAAA;AAGhC,cAAc,cAAc,CAAA;AAG5B,cAAc,SAAS,CAAA;AAGvB,cAAc,kBAAkB,CAAA;AAGhC,cAAc,cAAc,CAAA;AAG5B,cAAc,aAAa,CAAA;AAG3B,cAAc,aAAa,CAAA;AAG3B,cAAc,gBAAgB,CAAA;AAG9B,cAAc,kBAAkB,CAAA;AAGhC,cAAc,kBAAkB,CAAA;AAGhC,cAAc,eAAe,CAAA;AAG7B,cAAc,gBAAgB,CAAA;AAG9B,cAAc,oBAAoB,CAAA;AAOlC,cAAc,cAAc,CAAA;AAG5B,cAAc,oBAAoB,CAAA;AAGlC,cAAc,aAAa,CAAA;AAG3B,cAAc,gBAAgB,CAAA;AAG9B,cAAc,mBAAmB,CAAA;AAGjC,cAAc,kBAAkB,CAAA;AAGhC,cAAc,YAAY,CAAA;AAG1B,cAAc,UAAU,CAAA;AAGxB,cAAc,WAAW,CAAA"}
@@ -32,4 +32,56 @@ export * from './anti-delete.js';
32
32
  export * from './sticker-maker.js';
33
33
  // Group Utilities
34
34
  export * from './group-utils.js';
35
+ // =====================================================
36
+ // Baileys-Joss v1.0.2 NEW FEATURES
37
+ // =====================================================
38
+ // Message Scheduling
39
+ export * from './scheduling.js';
40
+ // Bulk Messaging
41
+ export * from './bulk-messaging.js';
42
+ // Auto Reply System
43
+ export * from './auto-reply.js';
44
+ // vCard / Contact Card
45
+ export * from './vcard.js';
46
+ // Status/Story Posting
47
+ export * from './status-posting.js';
48
+ // Voice Note Utilities
49
+ export * from './voice-note.js';
50
+ // Message Templates
51
+ export * from './templates.js';
52
+ // Broadcast List Manager
53
+ export * from './broadcast.js';
54
+ // Chat Control (Typing, Read Receipt, Pinned, Disappearing)
55
+ export * from './chat-control.js';
56
+ // Message Search
57
+ export * from './message-search.js';
58
+ // Chat Analytics
59
+ export * from './chat-analytics.js';
60
+ // Chat Export
61
+ export * from './chat-export.js';
62
+ // QR Code Generator
63
+ export * from './qr-generator.js';
64
+ // Media Downloader
65
+ export * from './media-downloader.js';
66
+ // =====================================================
67
+ // Baileys-Joss v1.0.3 FUN & SECURITY FEATURES
68
+ // =====================================================
69
+ // Mini Games (Guess Number, Quiz, TicTacToe, RPS, Dice, Coin Flip)
70
+ export * from './mini-games.js';
71
+ // Content Detector (Links, Phone, Email, Media, Mentions, Hashtags)
72
+ export * from './content-detector.js';
73
+ // Anti-Spam System (Rate Limit, Duplicate Detection, Flood Protection)
74
+ export * from './anti-spam.js';
75
+ // Link Scanner (URL Security, Phishing Detection)
76
+ export * from './link-scanner.js';
77
+ // Activity Logger (Audit Trail, Message Logging)
78
+ export * from './activity-logger.js';
79
+ // Meme Generator (Text Memes, Templates)
80
+ export * from './meme-generator.js';
81
+ // Pomodoro Timer (Productivity Timer)
82
+ export * from './pomodoro.js';
83
+ // Quote Generator (Random Quotes, Quote of the Day)
84
+ export * from './quotes.js';
85
+ // Weather Bot (Weather Information)
86
+ export * from './weather.js';
35
87
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,qBAAqB,CAAA;AACnC,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,uBAAuB,CAAA;AACrC,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,6BAA6B,CAAA;AAC3C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,yBAAyB,CAAA;AACvC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,2BAA2B,CAAA;AAEzC,wDAAwD;AACxD,+BAA+B;AAC/B,wDAAwD;AAExD,iCAAiC;AACjC,cAAc,uBAAuB,CAAA;AAErC,4BAA4B;AAC5B,cAAc,gBAAgB,CAAA;AAE9B,8BAA8B;AAC9B,cAAc,aAAa,CAAA;AAE3B,8BAA8B;AAC9B,cAAc,eAAe,CAAA;AAE7B,gBAAgB;AAChB,cAAc,iBAAiB,CAAA;AAE/B,kBAAkB;AAClB,cAAc,eAAe,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,qBAAqB,CAAA;AACnC,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,uBAAuB,CAAA;AACrC,cAAc,UAAU,CAAA;AACxB,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,6BAA6B,CAAA;AAC3C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,yBAAyB,CAAA;AACvC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,2BAA2B,CAAA;AAEzC,wDAAwD;AACxD,+BAA+B;AAC/B,wDAAwD;AAExD,iCAAiC;AACjC,cAAc,uBAAuB,CAAA;AAErC,4BAA4B;AAC5B,cAAc,gBAAgB,CAAA;AAE9B,8BAA8B;AAC9B,cAAc,aAAa,CAAA;AAE3B,8BAA8B;AAC9B,cAAc,eAAe,CAAA;AAE7B,gBAAgB;AAChB,cAAc,iBAAiB,CAAA;AAE/B,kBAAkB;AAClB,cAAc,eAAe,CAAA;AAE7B,wDAAwD;AACxD,mCAAmC;AACnC,wDAAwD;AAExD,qBAAqB;AACrB,cAAc,cAAc,CAAA;AAE5B,iBAAiB;AACjB,cAAc,kBAAkB,CAAA;AAEhC,oBAAoB;AACpB,cAAc,cAAc,CAAA;AAE5B,uBAAuB;AACvB,cAAc,SAAS,CAAA;AAEvB,uBAAuB;AACvB,cAAc,kBAAkB,CAAA;AAEhC,uBAAuB;AACvB,cAAc,cAAc,CAAA;AAE5B,oBAAoB;AACpB,cAAc,aAAa,CAAA;AAE3B,yBAAyB;AACzB,cAAc,aAAa,CAAA;AAE3B,4DAA4D;AAC5D,cAAc,gBAAgB,CAAA;AAE9B,iBAAiB;AACjB,cAAc,kBAAkB,CAAA;AAEhC,iBAAiB;AACjB,cAAc,kBAAkB,CAAA;AAEhC,cAAc;AACd,cAAc,eAAe,CAAA;AAE7B,oBAAoB;AACpB,cAAc,gBAAgB,CAAA;AAE9B,mBAAmB;AACnB,cAAc,oBAAoB,CAAA;AAElC,wDAAwD;AACxD,8CAA8C;AAC9C,wDAAwD;AAExD,mEAAmE;AACnE,cAAc,cAAc,CAAA;AAE5B,oEAAoE;AACpE,cAAc,oBAAoB,CAAA;AAElC,uEAAuE;AACvE,cAAc,aAAa,CAAA;AAE3B,kDAAkD;AAClD,cAAc,gBAAgB,CAAA;AAE9B,iDAAiD;AACjD,cAAc,mBAAmB,CAAA;AAEjC,yCAAyC;AACzC,cAAc,kBAAkB,CAAA;AAEhC,sCAAsC;AACtC,cAAc,YAAY,CAAA;AAE1B,oDAAoD;AACpD,cAAc,UAAU,CAAA;AAExB,oCAAoC;AACpC,cAAc,WAAW,CAAA"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Baileys-Joss: Link Scanner
3
+ *
4
+ * Scan dan validasi URL untuk keamanan:
5
+ * - Check domain reputation
6
+ * - Detect phishing patterns
7
+ * - URL shortener expansion
8
+ * - Safe browsing check
9
+ */
10
+ export interface LinkScanResult {
11
+ url: string;
12
+ safe: boolean;
13
+ riskLevel: 'safe' | 'low' | 'medium' | 'high' | 'critical';
14
+ riskScore: number;
15
+ threats: string[];
16
+ details: {
17
+ isShortener: boolean;
18
+ finalUrl?: string;
19
+ domain: string;
20
+ isHttps: boolean;
21
+ hasIPAddress: boolean;
22
+ hasSuspiciousPath: boolean;
23
+ isKnownMalicious: boolean;
24
+ phishingScore: number;
25
+ };
26
+ scannedAt: Date;
27
+ }
28
+ export interface LinkScannerOptions {
29
+ /** Follow redirects to get final URL */
30
+ followRedirects?: boolean;
31
+ /** Maximum redirects to follow */
32
+ maxRedirects?: number;
33
+ /** Timeout for URL check (ms) */
34
+ timeout?: number;
35
+ /** Custom malicious domains list */
36
+ maliciousDomains?: string[];
37
+ /** Custom safe domains (always allowed) */
38
+ safeDomains?: string[];
39
+ /** Enable phishing pattern detection */
40
+ enablePhishingDetection?: boolean;
41
+ }
42
+ export declare class LinkScanner {
43
+ private options;
44
+ private maliciousDomains;
45
+ private safeDomains;
46
+ constructor(options?: LinkScannerOptions);
47
+ /**
48
+ * Scan a URL for security threats
49
+ */
50
+ scan(url: string): Promise<LinkScanResult>;
51
+ /**
52
+ * Batch scan multiple URLs
53
+ */
54
+ scanMultiple(urls: string[]): Promise<LinkScanResult[]>;
55
+ /**
56
+ * Quick check if URL is suspicious
57
+ */
58
+ quickCheck(url: string): {
59
+ suspicious: boolean;
60
+ reasons: string[];
61
+ };
62
+ /**
63
+ * Add domain to malicious list
64
+ */
65
+ addMaliciousDomain(domain: string): void;
66
+ /**
67
+ * Add domain to safe list
68
+ */
69
+ addSafeDomain(domain: string): void;
70
+ /**
71
+ * Remove domain from malicious list
72
+ */
73
+ removeMaliciousDomain(domain: string): void;
74
+ /**
75
+ * Check if domain is safe
76
+ */
77
+ private isDomainSafe;
78
+ /**
79
+ * Check for suspicious TLD
80
+ */
81
+ private hasSuspiciousTLD;
82
+ /**
83
+ * Check for suspicious path patterns
84
+ */
85
+ private checkSuspiciousPath;
86
+ /**
87
+ * Calculate phishing score
88
+ */
89
+ private calculatePhishingScore;
90
+ /**
91
+ * Get risk level from score
92
+ */
93
+ private getRiskLevel;
94
+ /**
95
+ * Resolve URL redirects
96
+ */
97
+ private resolveRedirects;
98
+ }
99
+ export declare const createLinkScanner: (options?: LinkScannerOptions) => LinkScanner;
100
+ /**
101
+ * Quick check if URL is a shortener
102
+ */
103
+ export declare const isUrlShortener: (url: string) => boolean;
104
+ /**
105
+ * Extract domain from URL
106
+ */
107
+ export declare const extractDomain: (url: string) => string | null;
108
+ /**
109
+ * Check if domain is trusted
110
+ */
111
+ export declare const isTrustedDomain: (domain: string) => boolean;
112
+ //# sourceMappingURL=link-scanner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link-scanner.d.ts","sourceRoot":"","sources":["../../src/Utils/link-scanner.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AASH,MAAM,WAAW,cAAc;IAC9B,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,OAAO,CAAA;IACb,SAAS,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAA;IAC1D,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,OAAO,EAAE;QACR,WAAW,EAAE,OAAO,CAAA;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,MAAM,EAAE,MAAM,CAAA;QACd,OAAO,EAAE,OAAO,CAAA;QAChB,YAAY,EAAE,OAAO,CAAA;QACrB,iBAAiB,EAAE,OAAO,CAAA;QAC1B,gBAAgB,EAAE,OAAO,CAAA;QACzB,aAAa,EAAE,MAAM,CAAA;KACrB,CAAA;IACD,SAAS,EAAE,IAAI,CAAA;CACf;AAED,MAAM,WAAW,kBAAkB;IAClC,wCAAwC;IACxC,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,kCAAkC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,iCAAiC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,oCAAoC;IACpC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC3B,2CAA2C;IAC3C,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,wCAAwC;IACxC,uBAAuB,CAAC,EAAE,OAAO,CAAA;CACjC;AA8CD,qBAAa,WAAW;IACvB,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,gBAAgB,CAAa;IACrC,OAAO,CAAC,WAAW,CAAa;gBAEpB,OAAO,GAAE,kBAAuB;IAc5C;;OAEG;IACG,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAsJhD;;OAEG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAI7D;;OAEG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG;QAAE,UAAU,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE;IAoCnE;;OAEG;IACH,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIxC;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAInC;;OAEG;IACH,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI3C;;OAEG;IACH,OAAO,CAAC,YAAY;IAUpB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IASxB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAkB3B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAqD9B;;OAEG;IACH,OAAO,CAAC,YAAY;IAQpB;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAgCxB;AAMD,eAAO,MAAM,iBAAiB,GAAI,UAAU,kBAAkB,KAAG,WAEhE,CAAA;AAMD;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,KAAK,MAAM,KAAG,OAO5C,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,KAAK,MAAM,KAAG,MAAM,GAAG,IAMpD,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,QAAQ,MAAM,KAAG,OAEhD,CAAA"}