baileys-joss 1.0.1 → 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 (125) hide show
  1. package/README.md +1983 -79
  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/newsletter.d.ts +4 -0
  19. package/lib/Socket/newsletter.d.ts.map +1 -1
  20. package/lib/Types/Message.d.ts +4 -0
  21. package/lib/Types/Message.d.ts.map +1 -1
  22. package/lib/Utils/activity-logger.d.ts +189 -0
  23. package/lib/Utils/activity-logger.d.ts.map +1 -0
  24. package/lib/Utils/activity-logger.js +418 -0
  25. package/lib/Utils/activity-logger.js.map +1 -0
  26. package/lib/Utils/anti-spam.d.ts +145 -0
  27. package/lib/Utils/anti-spam.d.ts.map +1 -0
  28. package/lib/Utils/anti-spam.js +398 -0
  29. package/lib/Utils/anti-spam.js.map +1 -0
  30. package/lib/Utils/auto-reply.d.ts +123 -0
  31. package/lib/Utils/auto-reply.d.ts.map +1 -0
  32. package/lib/Utils/auto-reply.js +234 -0
  33. package/lib/Utils/auto-reply.js.map +1 -0
  34. package/lib/Utils/broadcast.d.ts +121 -0
  35. package/lib/Utils/broadcast.d.ts.map +1 -0
  36. package/lib/Utils/broadcast.js +223 -0
  37. package/lib/Utils/broadcast.js.map +1 -0
  38. package/lib/Utils/bulk-messaging.d.ts +79 -0
  39. package/lib/Utils/bulk-messaging.d.ts.map +1 -0
  40. package/lib/Utils/bulk-messaging.js +148 -0
  41. package/lib/Utils/bulk-messaging.js.map +1 -0
  42. package/lib/Utils/chat-analytics.d.ts +92 -0
  43. package/lib/Utils/chat-analytics.d.ts.map +1 -0
  44. package/lib/Utils/chat-analytics.js +337 -0
  45. package/lib/Utils/chat-analytics.js.map +1 -0
  46. package/lib/Utils/chat-control.d.ts +156 -0
  47. package/lib/Utils/chat-control.d.ts.map +1 -0
  48. package/lib/Utils/chat-control.js +224 -0
  49. package/lib/Utils/chat-control.js.map +1 -0
  50. package/lib/Utils/chat-export.d.ts +75 -0
  51. package/lib/Utils/chat-export.d.ts.map +1 -0
  52. package/lib/Utils/chat-export.js +309 -0
  53. package/lib/Utils/chat-export.js.map +1 -0
  54. package/lib/Utils/content-detector.d.ts +199 -0
  55. package/lib/Utils/content-detector.d.ts.map +1 -0
  56. package/lib/Utils/content-detector.js +442 -0
  57. package/lib/Utils/content-detector.js.map +1 -0
  58. package/lib/Utils/index.d.ts +23 -0
  59. package/lib/Utils/index.d.ts.map +1 -1
  60. package/lib/Utils/index.js +52 -0
  61. package/lib/Utils/index.js.map +1 -1
  62. package/lib/Utils/link-scanner.d.ts +112 -0
  63. package/lib/Utils/link-scanner.d.ts.map +1 -0
  64. package/lib/Utils/link-scanner.js +433 -0
  65. package/lib/Utils/link-scanner.js.map +1 -0
  66. package/lib/Utils/media-downloader.d.ts +86 -0
  67. package/lib/Utils/media-downloader.d.ts.map +1 -0
  68. package/lib/Utils/media-downloader.js +269 -0
  69. package/lib/Utils/media-downloader.js.map +1 -0
  70. package/lib/Utils/meme-generator.d.ts +96 -0
  71. package/lib/Utils/meme-generator.d.ts.map +1 -0
  72. package/lib/Utils/meme-generator.js +368 -0
  73. package/lib/Utils/meme-generator.js.map +1 -0
  74. package/lib/Utils/message-search.d.ts +96 -0
  75. package/lib/Utils/message-search.d.ts.map +1 -0
  76. package/lib/Utils/message-search.js +261 -0
  77. package/lib/Utils/message-search.js.map +1 -0
  78. package/lib/Utils/messages-media.d.ts +20 -1
  79. package/lib/Utils/messages-media.d.ts.map +1 -1
  80. package/lib/Utils/messages-media.js +100 -5
  81. package/lib/Utils/messages-media.js.map +1 -1
  82. package/lib/Utils/messages.d.ts.map +1 -1
  83. package/lib/Utils/messages.js +9 -2
  84. package/lib/Utils/messages.js.map +1 -1
  85. package/lib/Utils/mini-games.d.ts +155 -0
  86. package/lib/Utils/mini-games.d.ts.map +1 -0
  87. package/lib/Utils/mini-games.js +445 -0
  88. package/lib/Utils/mini-games.js.map +1 -0
  89. package/lib/Utils/pomodoro.d.ts +139 -0
  90. package/lib/Utils/pomodoro.d.ts.map +1 -0
  91. package/lib/Utils/pomodoro.js +434 -0
  92. package/lib/Utils/pomodoro.js.map +1 -0
  93. package/lib/Utils/qr-generator.d.ts +95 -0
  94. package/lib/Utils/qr-generator.d.ts.map +1 -0
  95. package/lib/Utils/qr-generator.js +226 -0
  96. package/lib/Utils/qr-generator.js.map +1 -0
  97. package/lib/Utils/quotes.d.ts +110 -0
  98. package/lib/Utils/quotes.d.ts.map +1 -0
  99. package/lib/Utils/quotes.js +325 -0
  100. package/lib/Utils/quotes.js.map +1 -0
  101. package/lib/Utils/scheduling.d.ts +88 -0
  102. package/lib/Utils/scheduling.d.ts.map +1 -0
  103. package/lib/Utils/scheduling.js +163 -0
  104. package/lib/Utils/scheduling.js.map +1 -0
  105. package/lib/Utils/status-posting.d.ts +151 -0
  106. package/lib/Utils/status-posting.d.ts.map +1 -0
  107. package/lib/Utils/status-posting.js +162 -0
  108. package/lib/Utils/status-posting.js.map +1 -0
  109. package/lib/Utils/templates.d.ts +154 -0
  110. package/lib/Utils/templates.d.ts.map +1 -0
  111. package/lib/Utils/templates.js +368 -0
  112. package/lib/Utils/templates.js.map +1 -0
  113. package/lib/Utils/vcard.d.ts +86 -0
  114. package/lib/Utils/vcard.d.ts.map +1 -0
  115. package/lib/Utils/vcard.js +195 -0
  116. package/lib/Utils/vcard.js.map +1 -0
  117. package/lib/Utils/voice-note.d.ts +115 -0
  118. package/lib/Utils/voice-note.d.ts.map +1 -0
  119. package/lib/Utils/voice-note.js +212 -0
  120. package/lib/Utils/voice-note.js.map +1 -0
  121. package/lib/Utils/weather.d.ts +118 -0
  122. package/lib/Utils/weather.d.ts.map +1 -0
  123. package/lib/Utils/weather.js +362 -0
  124. package/lib/Utils/weather.js.map +1 -0
  125. package/package.json +6 -3
@@ -0,0 +1,309 @@
1
+ /**
2
+ * Baileys-Joss: Chat Export
3
+ *
4
+ * Export chat ke JSON, HTML, atau TXT
5
+ */
6
+ /**
7
+ * Format date for display
8
+ */
9
+ const formatDate = (timestamp, format) => {
10
+ if (!timestamp)
11
+ return 'Unknown';
12
+ const time = typeof timestamp === 'number' ? timestamp * 1000 : Number(timestamp) * 1000;
13
+ const date = new Date(time);
14
+ if (format) {
15
+ // Simple format implementation
16
+ return format
17
+ .replace('YYYY', date.getFullYear().toString())
18
+ .replace('MM', (date.getMonth() + 1).toString().padStart(2, '0'))
19
+ .replace('DD', date.getDate().toString().padStart(2, '0'))
20
+ .replace('HH', date.getHours().toString().padStart(2, '0'))
21
+ .replace('mm', date.getMinutes().toString().padStart(2, '0'))
22
+ .replace('ss', date.getSeconds().toString().padStart(2, '0'));
23
+ }
24
+ return date.toLocaleString();
25
+ };
26
+ /**
27
+ * Extract text from message
28
+ */
29
+ const extractText = (message) => {
30
+ const content = message.message;
31
+ if (!content)
32
+ return '[Empty Message]';
33
+ if (content.conversation)
34
+ return content.conversation;
35
+ if (content.extendedTextMessage?.text)
36
+ return content.extendedTextMessage.text;
37
+ if (content.imageMessage?.caption)
38
+ return `[Image] ${content.imageMessage.caption}`;
39
+ if (content.videoMessage?.caption)
40
+ return `[Video] ${content.videoMessage.caption}`;
41
+ if (content.documentMessage?.caption)
42
+ return `[Document: ${content.documentMessage.fileName}] ${content.documentMessage.caption || ''}`;
43
+ if (content.audioMessage)
44
+ return content.audioMessage.ptt ? '[Voice Note]' : '[Audio]';
45
+ if (content.stickerMessage)
46
+ return '[Sticker]';
47
+ if (content.locationMessage)
48
+ return `[Location: ${content.locationMessage.name || 'Unknown'}]`;
49
+ if (content.contactMessage)
50
+ return `[Contact: ${content.contactMessage.displayName}]`;
51
+ if (content.pollCreationMessage)
52
+ return `[Poll: ${content.pollCreationMessage.name}]`;
53
+ return '[Unsupported Message]';
54
+ };
55
+ /**
56
+ * Get sender name
57
+ */
58
+ const getSender = (message) => {
59
+ if (message.key.fromMe)
60
+ return 'You';
61
+ return message.key.participant || message.key.remoteJid || 'Unknown';
62
+ };
63
+ /**
64
+ * Filter messages based on options
65
+ */
66
+ const filterMessages = (messages, options) => {
67
+ return messages.filter(msg => {
68
+ // Date range filter
69
+ if (options.dateRange) {
70
+ const ts = msg.messageTimestamp;
71
+ if (ts) {
72
+ const time = typeof ts === 'number' ? ts * 1000 : Number(ts) * 1000;
73
+ if (time < options.dateRange.start.getTime() || time > options.dateRange.end.getTime()) {
74
+ return false;
75
+ }
76
+ }
77
+ }
78
+ // Sender filter
79
+ if (options.fromSender) {
80
+ const sender = msg.key.participant || msg.key.remoteJid;
81
+ if (sender !== options.fromSender)
82
+ return false;
83
+ }
84
+ // From me filter
85
+ if (options.fromMe !== undefined && msg.key.fromMe !== options.fromMe) {
86
+ return false;
87
+ }
88
+ return true;
89
+ });
90
+ };
91
+ /**
92
+ * Export to JSON
93
+ */
94
+ const exportToJson = (messages, options) => {
95
+ const data = messages.map(msg => {
96
+ const base = {
97
+ id: msg.key.id,
98
+ from: getSender(msg),
99
+ text: extractText(msg),
100
+ timestamp: formatDate(msg.messageTimestamp, options.dateFormat)
101
+ };
102
+ if (options.includeMetadata) {
103
+ base.fromMe = msg.key.fromMe;
104
+ base.remoteJid = msg.key.remoteJid;
105
+ base.participant = msg.key.participant;
106
+ base.status = msg.status;
107
+ }
108
+ if (options.includeMediaInfo && msg.message) {
109
+ const content = msg.message;
110
+ if (content.imageMessage) {
111
+ base.media = { type: 'image', mimetype: content.imageMessage.mimetype };
112
+ }
113
+ else if (content.videoMessage) {
114
+ base.media = { type: 'video', mimetype: content.videoMessage.mimetype };
115
+ }
116
+ else if (content.audioMessage) {
117
+ base.media = { type: 'audio', mimetype: content.audioMessage.mimetype, ptt: content.audioMessage.ptt };
118
+ }
119
+ else if (content.documentMessage) {
120
+ base.media = { type: 'document', filename: content.documentMessage.fileName, mimetype: content.documentMessage.mimetype };
121
+ }
122
+ }
123
+ return base;
124
+ });
125
+ return JSON.stringify(data, null, 2);
126
+ };
127
+ /**
128
+ * Export to HTML
129
+ */
130
+ const exportToHtml = (messages, options) => {
131
+ const title = options.title || 'Chat Export';
132
+ const css = options.customCss || `
133
+ body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; max-width: 800px; margin: 0 auto; padding: 20px; background: #f0f0f0; }
134
+ .header { text-align: center; margin-bottom: 20px; }
135
+ .message { margin: 10px 0; padding: 10px 15px; border-radius: 10px; max-width: 80%; }
136
+ .message.from-me { background: #dcf8c6; margin-left: auto; }
137
+ .message.from-other { background: white; }
138
+ .sender { font-weight: bold; font-size: 0.9em; color: #128c7e; }
139
+ .time { font-size: 0.75em; color: #888; margin-top: 5px; }
140
+ .text { margin-top: 5px; word-wrap: break-word; }
141
+ .media-info { font-style: italic; color: #666; }
142
+ `;
143
+ const messageHtml = messages.map(msg => {
144
+ const isFromMe = msg.key.fromMe;
145
+ const sender = getSender(msg);
146
+ const text = extractText(msg);
147
+ const time = formatDate(msg.messageTimestamp, options.dateFormat);
148
+ return `
149
+ <div class="message ${isFromMe ? 'from-me' : 'from-other'}">
150
+ <div class="sender">${escapeHtml(sender)}</div>
151
+ <div class="text">${escapeHtml(text)}</div>
152
+ <div class="time">${escapeHtml(time)}</div>
153
+ </div>`;
154
+ }).join('\n');
155
+ return `<!DOCTYPE html>
156
+ <html>
157
+ <head>
158
+ <meta charset="UTF-8">
159
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
160
+ <title>${escapeHtml(title)}</title>
161
+ <style>${css}</style>
162
+ </head>
163
+ <body>
164
+ <div class="header">
165
+ <h1>${escapeHtml(title)}</h1>
166
+ <p>${messages.length} messages</p>
167
+ </div>
168
+ ${messageHtml}
169
+ </body>
170
+ </html>`;
171
+ };
172
+ /**
173
+ * Export to TXT
174
+ */
175
+ const exportToTxt = (messages, options) => {
176
+ return messages.map(msg => {
177
+ const sender = getSender(msg);
178
+ const text = extractText(msg);
179
+ const time = formatDate(msg.messageTimestamp, options.dateFormat);
180
+ return `[${time}] ${sender}: ${text}`;
181
+ }).join('\n');
182
+ };
183
+ /**
184
+ * Export to CSV
185
+ */
186
+ const exportToCsv = (messages, options) => {
187
+ const headers = ['Timestamp', 'Sender', 'Message', 'FromMe'];
188
+ if (options.includeMetadata) {
189
+ headers.push('RemoteJid', 'Participant', 'MessageId');
190
+ }
191
+ const rows = messages.map(msg => {
192
+ const row = [
193
+ formatDate(msg.messageTimestamp, options.dateFormat),
194
+ getSender(msg),
195
+ extractText(msg).replace(/"/g, '""'),
196
+ msg.key.fromMe ? 'Yes' : 'No'
197
+ ];
198
+ if (options.includeMetadata) {
199
+ row.push(msg.key.remoteJid || '', msg.key.participant || '', msg.key.id || '');
200
+ }
201
+ return row.map(cell => `"${cell}"`).join(',');
202
+ });
203
+ return [headers.join(','), ...rows].join('\n');
204
+ };
205
+ /**
206
+ * Escape HTML special characters
207
+ */
208
+ const escapeHtml = (text) => {
209
+ return text
210
+ .replace(/&/g, '&amp;')
211
+ .replace(/</g, '&lt;')
212
+ .replace(/>/g, '&gt;')
213
+ .replace(/"/g, '&quot;')
214
+ .replace(/'/g, '&#039;')
215
+ .replace(/\n/g, '<br>');
216
+ };
217
+ /**
218
+ * Export chat messages
219
+ */
220
+ export const exportChat = (messages, jid, options) => {
221
+ const filtered = filterMessages(messages, options);
222
+ let content;
223
+ switch (options.format) {
224
+ case 'json':
225
+ content = exportToJson(filtered, options);
226
+ break;
227
+ case 'html':
228
+ content = exportToHtml(filtered, options);
229
+ break;
230
+ case 'csv':
231
+ content = exportToCsv(filtered, options);
232
+ break;
233
+ case 'txt':
234
+ default:
235
+ content = exportToTxt(filtered, options);
236
+ break;
237
+ }
238
+ const timestamp = Date.now();
239
+ const extension = options.format === 'html' ? 'html' : options.format;
240
+ const sanitizedJid = jid.replace(/[^a-zA-Z0-9]/g, '_');
241
+ return {
242
+ content,
243
+ format: options.format,
244
+ messageCount: filtered.length,
245
+ exportedAt: new Date(),
246
+ filename: `chat_${sanitizedJid}_${timestamp}.${extension}`
247
+ };
248
+ };
249
+ /**
250
+ * Chat Export Manager
251
+ */
252
+ export class ChatExporter {
253
+ constructor() {
254
+ this.messages = new Map();
255
+ }
256
+ /**
257
+ * Add messages for export
258
+ */
259
+ addMessages(jid, messages) {
260
+ const existing = this.messages.get(jid) || [];
261
+ this.messages.set(jid, [...existing, ...messages]);
262
+ }
263
+ /**
264
+ * Export a specific chat
265
+ */
266
+ export(jid, options) {
267
+ const messages = this.messages.get(jid);
268
+ if (!messages)
269
+ return null;
270
+ return exportChat(messages, jid, options);
271
+ }
272
+ /**
273
+ * Export all chats
274
+ */
275
+ exportAll(options) {
276
+ const results = [];
277
+ for (const [jid, messages] of this.messages) {
278
+ results.push(exportChat(messages, jid, options));
279
+ }
280
+ return results;
281
+ }
282
+ /**
283
+ * Get available chats for export
284
+ */
285
+ getAvailableChats() {
286
+ return Array.from(this.messages.entries()).map(([jid, msgs]) => ({
287
+ jid,
288
+ messageCount: msgs.length
289
+ }));
290
+ }
291
+ /**
292
+ * Clear messages
293
+ */
294
+ clear(jid) {
295
+ if (jid) {
296
+ this.messages.delete(jid);
297
+ }
298
+ else {
299
+ this.messages.clear();
300
+ }
301
+ }
302
+ }
303
+ /**
304
+ * Create chat exporter
305
+ */
306
+ export const createChatExporter = () => {
307
+ return new ChatExporter();
308
+ };
309
+ //# sourceMappingURL=chat-export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-export.js","sourceRoot":"","sources":["../../src/Utils/chat-export.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,199 @@
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
+ import type { WAMessage } from '../Types/index.js';
14
+ export interface LinkInfo {
15
+ url: string;
16
+ domain: string;
17
+ isHttps: boolean;
18
+ type: 'website' | 'image' | 'video' | 'social' | 'file' | 'other';
19
+ }
20
+ export interface PhoneInfo {
21
+ raw: string;
22
+ formatted: string;
23
+ countryCode?: string;
24
+ }
25
+ export interface MentionInfo {
26
+ jid: string;
27
+ position: {
28
+ start: number;
29
+ end: number;
30
+ };
31
+ }
32
+ export interface DetectionResult {
33
+ hasMedia: boolean;
34
+ mediaType: 'image' | 'video' | 'audio' | 'document' | 'sticker' | 'location' | 'contact' | null;
35
+ hasLinks: boolean;
36
+ links: LinkInfo[];
37
+ hasPhoneNumbers: boolean;
38
+ phoneNumbers: PhoneInfo[];
39
+ hasEmails: boolean;
40
+ emails: string[];
41
+ hasMentions: boolean;
42
+ mentions: MentionInfo[];
43
+ hasHashtags: boolean;
44
+ hashtags: string[];
45
+ hasEmojis: boolean;
46
+ emojis: string[];
47
+ hasSensitiveContent: boolean;
48
+ sensitiveKeywords: string[];
49
+ messageType: string;
50
+ textLength: number;
51
+ wordCount: number;
52
+ }
53
+ export interface ContentFilterOptions {
54
+ /** Block links */
55
+ blockLinks?: boolean;
56
+ /** Block specific domains */
57
+ blockedDomains?: string[];
58
+ /** Block phone numbers */
59
+ blockPhoneNumbers?: boolean;
60
+ /** Block emails */
61
+ blockEmails?: boolean;
62
+ /** Sensitive keywords to detect */
63
+ sensitiveKeywords?: string[];
64
+ /** Maximum message length */
65
+ maxMessageLength?: number;
66
+ /** Custom regex patterns to detect */
67
+ customPatterns?: RegExp[];
68
+ }
69
+ export interface FilterResult {
70
+ allowed: boolean;
71
+ blockedReason?: string;
72
+ detectedViolations: string[];
73
+ }
74
+ export declare class ContentDetector {
75
+ private sensitiveKeywords;
76
+ private customPatterns;
77
+ constructor(options?: {
78
+ sensitiveKeywords?: string[];
79
+ customPatterns?: RegExp[];
80
+ });
81
+ /**
82
+ * Analyze a WhatsApp message
83
+ */
84
+ analyze(message: WAMessage): DetectionResult;
85
+ /**
86
+ * Extract text from message
87
+ */
88
+ private extractText;
89
+ /**
90
+ * Get media type from message
91
+ */
92
+ private getMediaType;
93
+ /**
94
+ * Get message type string
95
+ */
96
+ private getMessageType;
97
+ /**
98
+ * Detect links in text
99
+ */
100
+ detectLinks(text: string): LinkInfo[];
101
+ /**
102
+ * Detect phone numbers
103
+ */
104
+ detectPhoneNumbers(text: string): PhoneInfo[];
105
+ /**
106
+ * Detect email addresses
107
+ */
108
+ detectEmails(text: string): string[];
109
+ /**
110
+ * Detect mentions from message
111
+ */
112
+ detectMentions(message: WAMessage): MentionInfo[];
113
+ /**
114
+ * Detect hashtags
115
+ */
116
+ detectHashtags(text: string): string[];
117
+ /**
118
+ * Detect emojis
119
+ */
120
+ detectEmojis(text: string): string[];
121
+ /**
122
+ * Detect sensitive content
123
+ */
124
+ detectSensitiveContent(text: string): string[];
125
+ /**
126
+ * Check custom patterns
127
+ */
128
+ checkCustomPatterns(text: string): boolean[];
129
+ /**
130
+ * Add sensitive keywords
131
+ */
132
+ addSensitiveKeywords(keywords: string[]): void;
133
+ /**
134
+ * Set sensitive keywords
135
+ */
136
+ setSensitiveKeywords(keywords: string[]): void;
137
+ /**
138
+ * Add custom pattern
139
+ */
140
+ addCustomPattern(pattern: RegExp): void;
141
+ }
142
+ export declare class ContentFilter {
143
+ private options;
144
+ constructor(options?: ContentFilterOptions);
145
+ /**
146
+ * Filter a message
147
+ */
148
+ filter(message: WAMessage): FilterResult;
149
+ /**
150
+ * Extract text from message
151
+ */
152
+ private extractText;
153
+ /**
154
+ * Update filter options
155
+ */
156
+ updateOptions(options: Partial<ContentFilterOptions>): void;
157
+ }
158
+ /**
159
+ * Quick check if message contains links
160
+ */
161
+ export declare const hasLinks: (text: string) => boolean;
162
+ /**
163
+ * Quick check if message contains phone numbers
164
+ */
165
+ export declare const hasPhoneNumbers: (text: string) => boolean;
166
+ /**
167
+ * Quick check if message contains emails
168
+ */
169
+ export declare const hasEmails: (text: string) => boolean;
170
+ /**
171
+ * Extract all links from text
172
+ */
173
+ export declare const extractLinks: (text: string) => string[];
174
+ /**
175
+ * Extract all phone numbers from text
176
+ */
177
+ export declare const extractPhoneNumbers: (text: string) => string[];
178
+ /**
179
+ * Extract all emails from text
180
+ */
181
+ export declare const extractEmails: (text: string) => string[];
182
+ /**
183
+ * Check if message has media content
184
+ */
185
+ export declare const hasMediaContent: (message: WAMessage) => boolean;
186
+ /**
187
+ * Check if message is forwarded
188
+ */
189
+ export declare const isForwarded: (message: WAMessage) => boolean;
190
+ /**
191
+ * Get forward count
192
+ */
193
+ export declare const getForwardCount: (message: WAMessage) => number;
194
+ export declare const createContentDetector: (options?: {
195
+ sensitiveKeywords?: string[];
196
+ customPatterns?: RegExp[];
197
+ }) => ContentDetector;
198
+ export declare const createContentFilter: (options?: ContentFilterOptions) => ContentFilter;
199
+ //# sourceMappingURL=content-detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-detector.d.ts","sourceRoot":"","sources":["../../src/Utils/content-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAMzC,MAAM,WAAW,QAAQ;IACxB,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;CACjE;AAED,MAAM,WAAW,SAAS;IACzB,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,WAAW;IAC3B,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;CACxC;AAED,MAAM,WAAW,eAAe;IAC/B,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,IAAI,CAAA;IAC/F,QAAQ,EAAE,OAAO,CAAA;IACjB,KAAK,EAAE,QAAQ,EAAE,CAAA;IACjB,eAAe,EAAE,OAAO,CAAA;IACxB,YAAY,EAAE,SAAS,EAAE,CAAA;IACzB,SAAS,EAAE,OAAO,CAAA;IAClB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,WAAW,EAAE,OAAO,CAAA;IACpB,QAAQ,EAAE,WAAW,EAAE,CAAA;IACvB,WAAW,EAAE,OAAO,CAAA;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,SAAS,EAAE,OAAO,CAAA;IAClB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,iBAAiB,EAAE,MAAM,EAAE,CAAA;IAC3B,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,oBAAoB;IACpC,kBAAkB;IAClB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,6BAA6B;IAC7B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,0BAA0B;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,mBAAmB;IACnB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,mCAAmC;IACnC,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC5B,6BAA6B;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,sCAAsC;IACtC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;CACzB;AAED,MAAM,WAAW,YAAY;IAC5B,OAAO,EAAE,OAAO,CAAA;IAChB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,kBAAkB,EAAE,MAAM,EAAE,CAAA;CAC5B;AA0CD,qBAAa,eAAe;IAC3B,OAAO,CAAC,iBAAiB,CAAe;IACxC,OAAO,CAAC,cAAc,CAAe;gBAEzB,OAAO,GAAE;QAAE,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;KAAO;IAKrF;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,SAAS,GAAG,eAAe;IAmC5C;;OAEG;IACH,OAAO,CAAC,WAAW;IAanB;;OAEG;IACH,OAAO,CAAC,YAAY;IAepB;;OAEG;IACH,OAAO,CAAC,cAAc;IAoBtB;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,EAAE;IAsBrC;;OAEG;IACH,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE;IAmB7C;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;IAIpC;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,SAAS,GAAG,WAAW,EAAE;IAcjD;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;IAItC;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;IAIpC;;OAEG;IACH,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;IAO9C;;OAEG;IACH,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,EAAE;IAI5C;;OAEG;IACH,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAI9C;;OAEG;IACH,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAI9C;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAGvC;AAMD,qBAAa,aAAa;IACzB,OAAO,CAAC,OAAO,CAAgC;gBAEnC,OAAO,GAAE,oBAAyB;IAY9C;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,SAAS,GAAG,YAAY;IAyDxC;;OAEG;IACH,OAAO,CAAC,WAAW;IAYnB;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,IAAI;CAG3D;AAMD;;GAEG;AACH,eAAO,MAAM,QAAQ,GAAI,MAAM,MAAM,KAAG,OAEvC,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,MAAM,MAAM,KAAG,OAE9C,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,SAAS,GAAI,MAAM,MAAM,KAAG,OAExC,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,KAAG,MAAM,EAEjD,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAAI,MAAM,MAAM,KAAG,MAAM,EAExD,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,KAAG,MAAM,EAElD,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,SAAS,SAAS,KAAG,OAWpD,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,SAAS,SAAS,KAAG,OAYhD,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,GAAI,SAAS,SAAS,KAAG,MAUpD,CAAA;AAMD,eAAO,MAAM,qBAAqB,GAAI,UAAU;IAC/C,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC5B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;CACzB,KAAG,eAEH,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,UAAU,oBAAoB,KAAG,aAEpE,CAAA"}