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,418 @@
1
+ /**
2
+ * Baileys-Joss: Activity Logger
3
+ *
4
+ * Logging aktivitas untuk audit trail:
5
+ * - Message logs
6
+ * - User activity
7
+ * - Group changes
8
+ * - Bot actions
9
+ */
10
+ import * as fs from 'fs';
11
+ import * as path from 'path';
12
+ // =====================================================
13
+ // ACTIVITY LOGGER CLASS
14
+ // =====================================================
15
+ export class ActivityLogger {
16
+ constructor(options = {}) {
17
+ this.logs = [];
18
+ this.currentFileSize = 0;
19
+ this.LOG_LEVELS = {
20
+ debug: 0,
21
+ info: 1,
22
+ warn: 2,
23
+ error: 3,
24
+ critical: 4
25
+ };
26
+ this.options = {
27
+ fileLogging: options.fileLogging ?? false,
28
+ logFilePath: options.logFilePath ?? './logs/activity.log',
29
+ maxMemoryEntries: options.maxMemoryEntries ?? 1000,
30
+ maxFileSize: options.maxFileSize ?? 10 * 1024 * 1024, // 10MB
31
+ minLevel: options.minLevel ?? 'info',
32
+ categories: options.categories ?? ['message', 'user', 'group', 'bot', 'system', 'security', 'error'],
33
+ formatter: options.formatter,
34
+ onLog: options.onLog
35
+ };
36
+ if (this.options.fileLogging) {
37
+ this.initFileLogging();
38
+ }
39
+ }
40
+ /**
41
+ * Initialize file logging
42
+ */
43
+ initFileLogging() {
44
+ const dir = path.dirname(this.options.logFilePath);
45
+ if (!fs.existsSync(dir)) {
46
+ fs.mkdirSync(dir, { recursive: true });
47
+ }
48
+ // Check existing file size
49
+ if (fs.existsSync(this.options.logFilePath)) {
50
+ const stats = fs.statSync(this.options.logFilePath);
51
+ this.currentFileSize = stats.size;
52
+ // Rotate if needed
53
+ if (this.currentFileSize >= this.options.maxFileSize) {
54
+ this.rotateLogFile();
55
+ }
56
+ }
57
+ this.writeStream = fs.createWriteStream(this.options.logFilePath, { flags: 'a' });
58
+ }
59
+ /**
60
+ * Rotate log file
61
+ */
62
+ rotateLogFile() {
63
+ const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
64
+ const rotatedPath = this.options.logFilePath.replace('.log', `.${timestamp}.log`);
65
+ if (this.writeStream) {
66
+ this.writeStream.end();
67
+ }
68
+ fs.renameSync(this.options.logFilePath, rotatedPath);
69
+ this.currentFileSize = 0;
70
+ this.writeStream = fs.createWriteStream(this.options.logFilePath, { flags: 'a' });
71
+ }
72
+ /**
73
+ * Generate unique log ID
74
+ */
75
+ generateId() {
76
+ return `log_${Date.now()}_${Math.random().toString(36).substring(2, 8)}`;
77
+ }
78
+ /**
79
+ * Format log entry for file
80
+ */
81
+ formatEntry(entry) {
82
+ if (this.options.formatter) {
83
+ return this.options.formatter(entry);
84
+ }
85
+ return JSON.stringify({
86
+ ...entry,
87
+ timestamp: entry.timestamp.toISOString()
88
+ }) + '\n';
89
+ }
90
+ /**
91
+ * Check if log should be recorded
92
+ */
93
+ shouldLog(level, category) {
94
+ if (this.LOG_LEVELS[level] < this.LOG_LEVELS[this.options.minLevel]) {
95
+ return false;
96
+ }
97
+ if (!this.options.categories.includes(category)) {
98
+ return false;
99
+ }
100
+ return true;
101
+ }
102
+ /**
103
+ * Write log entry
104
+ */
105
+ writeLog(entry) {
106
+ // Add to memory
107
+ this.logs.push(entry);
108
+ // Trim memory if needed
109
+ if (this.logs.length > this.options.maxMemoryEntries) {
110
+ this.logs = this.logs.slice(-this.options.maxMemoryEntries);
111
+ }
112
+ // Write to file
113
+ if (this.options.fileLogging && this.writeStream) {
114
+ const formatted = this.formatEntry(entry);
115
+ this.writeStream.write(formatted);
116
+ this.currentFileSize += Buffer.byteLength(formatted);
117
+ // Rotate if needed
118
+ if (this.currentFileSize >= this.options.maxFileSize) {
119
+ this.rotateLogFile();
120
+ }
121
+ }
122
+ // Callback
123
+ if (this.options.onLog) {
124
+ this.options.onLog(entry);
125
+ }
126
+ }
127
+ /**
128
+ * Log an entry
129
+ */
130
+ log(level, category, action, actor, details = {}, target, metadata) {
131
+ if (!this.shouldLog(level, category)) {
132
+ return null;
133
+ }
134
+ const entry = {
135
+ id: this.generateId(),
136
+ timestamp: new Date(),
137
+ level,
138
+ category,
139
+ action,
140
+ actor,
141
+ target,
142
+ details,
143
+ metadata
144
+ };
145
+ this.writeLog(entry);
146
+ return entry;
147
+ }
148
+ // =====================================================
149
+ // CONVENIENCE METHODS
150
+ // =====================================================
151
+ /**
152
+ * Log debug message
153
+ */
154
+ debug(category, action, actor, details) {
155
+ return this.log('debug', category, action, actor, details);
156
+ }
157
+ /**
158
+ * Log info message
159
+ */
160
+ info(category, action, actor, details) {
161
+ return this.log('info', category, action, actor, details);
162
+ }
163
+ /**
164
+ * Log warning
165
+ */
166
+ warn(category, action, actor, details) {
167
+ return this.log('warn', category, action, actor, details);
168
+ }
169
+ /**
170
+ * Log error
171
+ */
172
+ error(category, action, actor, details) {
173
+ return this.log('error', category, action, actor, details);
174
+ }
175
+ /**
176
+ * Log critical error
177
+ */
178
+ critical(category, action, actor, details) {
179
+ return this.log('critical', category, action, actor, details);
180
+ }
181
+ // =====================================================
182
+ // SPECIALIZED LOGGING METHODS
183
+ // =====================================================
184
+ /**
185
+ * Log incoming message
186
+ */
187
+ logMessage(message, type) {
188
+ const jid = message.key.remoteJid || 'unknown';
189
+ const sender = message.key.fromMe ? 'self' : (message.key.participant || jid);
190
+ const messageType = this.getMessageType(message);
191
+ return this.log('info', 'message', type, sender, {
192
+ messageId: message.key.id,
193
+ chatJid: jid,
194
+ messageType,
195
+ fromMe: message.key.fromMe,
196
+ hasMedia: ['image', 'video', 'audio', 'document', 'sticker'].includes(messageType)
197
+ }, jid);
198
+ }
199
+ /**
200
+ * Log user action
201
+ */
202
+ logUserAction(actor, action, target, details) {
203
+ return this.log('info', 'user', action, actor, details, target);
204
+ }
205
+ /**
206
+ * Log group event
207
+ */
208
+ logGroupEvent(groupJid, action, actor, details) {
209
+ return this.log('info', 'group', action, actor, details, groupJid);
210
+ }
211
+ /**
212
+ * Log bot action
213
+ */
214
+ logBotAction(action, details, target) {
215
+ return this.log('info', 'bot', action, 'bot', details, target);
216
+ }
217
+ /**
218
+ * Log security event
219
+ */
220
+ logSecurityEvent(level, action, actor, details) {
221
+ return this.log(level, 'security', action, actor, details);
222
+ }
223
+ /**
224
+ * Get message type helper
225
+ */
226
+ getMessageType(message) {
227
+ const content = message.message;
228
+ if (!content)
229
+ return 'unknown';
230
+ if (content.conversation || content.extendedTextMessage)
231
+ return 'text';
232
+ if (content.imageMessage)
233
+ return 'image';
234
+ if (content.videoMessage)
235
+ return 'video';
236
+ if (content.audioMessage)
237
+ return 'audio';
238
+ if (content.documentMessage)
239
+ return 'document';
240
+ if (content.stickerMessage)
241
+ return 'sticker';
242
+ if (content.locationMessage)
243
+ return 'location';
244
+ if (content.contactMessage)
245
+ return 'contact';
246
+ if (content.pollCreationMessage)
247
+ return 'poll';
248
+ if (content.reactionMessage)
249
+ return 'reaction';
250
+ return 'other';
251
+ }
252
+ // =====================================================
253
+ // QUERY METHODS
254
+ // =====================================================
255
+ /**
256
+ * Query logs
257
+ */
258
+ query(query) {
259
+ let results = [...this.logs];
260
+ // Filter by level
261
+ if (query.level) {
262
+ const levels = Array.isArray(query.level) ? query.level : [query.level];
263
+ results = results.filter(e => levels.includes(e.level));
264
+ }
265
+ // Filter by category
266
+ if (query.category) {
267
+ const categories = Array.isArray(query.category) ? query.category : [query.category];
268
+ results = results.filter(e => categories.includes(e.category));
269
+ }
270
+ // Filter by actor
271
+ if (query.actor) {
272
+ results = results.filter(e => e.actor.includes(query.actor));
273
+ }
274
+ // Filter by target
275
+ if (query.target) {
276
+ results = results.filter(e => e.target?.includes(query.target));
277
+ }
278
+ // Filter by action
279
+ if (query.action) {
280
+ results = results.filter(e => e.action.includes(query.action));
281
+ }
282
+ // Filter by date range
283
+ if (query.fromDate) {
284
+ results = results.filter(e => e.timestamp >= query.fromDate);
285
+ }
286
+ if (query.toDate) {
287
+ results = results.filter(e => e.timestamp <= query.toDate);
288
+ }
289
+ // Pagination
290
+ const offset = query.offset || 0;
291
+ const limit = query.limit || 100;
292
+ return results.slice(offset, offset + limit);
293
+ }
294
+ /**
295
+ * Get logs for a specific actor
296
+ */
297
+ getActorLogs(actor, limit = 50) {
298
+ return this.query({ actor, limit });
299
+ }
300
+ /**
301
+ * Get logs for a specific target (e.g., chat JID)
302
+ */
303
+ getTargetLogs(target, limit = 50) {
304
+ return this.query({ target, limit });
305
+ }
306
+ /**
307
+ * Get recent logs
308
+ */
309
+ getRecentLogs(limit = 50) {
310
+ return this.logs.slice(-limit).reverse();
311
+ }
312
+ /**
313
+ * Get logs by level
314
+ */
315
+ getLogsByLevel(level, limit = 50) {
316
+ return this.query({ level, limit });
317
+ }
318
+ /**
319
+ * Get error logs
320
+ */
321
+ getErrorLogs(limit = 50) {
322
+ return this.query({ level: ['error', 'critical'], limit });
323
+ }
324
+ // =====================================================
325
+ // STATISTICS
326
+ // =====================================================
327
+ /**
328
+ * Get log statistics
329
+ */
330
+ getStats() {
331
+ const byLevel = {
332
+ debug: 0,
333
+ info: 0,
334
+ warn: 0,
335
+ error: 0,
336
+ critical: 0
337
+ };
338
+ const byCategory = {
339
+ message: 0,
340
+ user: 0,
341
+ group: 0,
342
+ bot: 0,
343
+ system: 0,
344
+ security: 0,
345
+ error: 0
346
+ };
347
+ const actorCounts = new Map();
348
+ for (const entry of this.logs) {
349
+ byLevel[entry.level]++;
350
+ byCategory[entry.category]++;
351
+ actorCounts.set(entry.actor, (actorCounts.get(entry.actor) || 0) + 1);
352
+ }
353
+ const topActors = Array.from(actorCounts.entries())
354
+ .map(([actor, count]) => ({ actor, count }))
355
+ .sort((a, b) => b.count - a.count)
356
+ .slice(0, 10);
357
+ return {
358
+ totalEntries: this.logs.length,
359
+ byLevel,
360
+ byCategory,
361
+ recentActivity: this.getRecentLogs(10),
362
+ topActors
363
+ };
364
+ }
365
+ // =====================================================
366
+ // MANAGEMENT
367
+ // =====================================================
368
+ /**
369
+ * Clear all logs from memory
370
+ */
371
+ clearMemory() {
372
+ this.logs = [];
373
+ }
374
+ /**
375
+ * Export logs to JSON
376
+ */
377
+ export(query) {
378
+ const logs = query ? this.query(query) : this.logs;
379
+ return JSON.stringify(logs, null, 2);
380
+ }
381
+ /**
382
+ * Export logs to file
383
+ */
384
+ async exportToFile(filePath, query) {
385
+ const content = this.export(query);
386
+ await fs.promises.writeFile(filePath, content);
387
+ }
388
+ /**
389
+ * Close logger
390
+ */
391
+ close() {
392
+ if (this.writeStream) {
393
+ this.writeStream.end();
394
+ }
395
+ }
396
+ }
397
+ // =====================================================
398
+ // FACTORY FUNCTION
399
+ // =====================================================
400
+ export const createActivityLogger = (options) => {
401
+ return new ActivityLogger(options);
402
+ };
403
+ // =====================================================
404
+ // CONSOLE FORMATTER
405
+ // =====================================================
406
+ export const consoleFormatter = (entry) => {
407
+ const levelColors = {
408
+ debug: '\x1b[90m',
409
+ info: '\x1b[36m',
410
+ warn: '\x1b[33m',
411
+ error: '\x1b[31m',
412
+ critical: '\x1b[35m'
413
+ };
414
+ const reset = '\x1b[0m';
415
+ const color = levelColors[entry.level];
416
+ return `${color}[${entry.timestamp.toISOString()}] [${entry.level.toUpperCase()}] [${entry.category}]${reset} ${entry.action} by ${entry.actor}${entry.target ? ` -> ${entry.target}` : ''}\n`;
417
+ };
418
+ //# sourceMappingURL=activity-logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity-logger.js","sourceRoot":"","sources":["../../src/Utils/activity-logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,145 @@
1
+ /**
2
+ * Baileys-Joss: Anti-Spam System
3
+ *
4
+ * Sistem untuk mendeteksi dan mencegah spam:
5
+ * - Rate limiting
6
+ * - Duplicate message detection
7
+ * - Flood protection
8
+ * - Pattern-based spam detection
9
+ */
10
+ import type { WAMessage } from '../Types/index.js';
11
+ export interface SpamRule {
12
+ id: string;
13
+ name: string;
14
+ type: 'rate_limit' | 'duplicate' | 'pattern' | 'flood' | 'custom';
15
+ enabled: boolean;
16
+ config: Record<string, unknown>;
17
+ action: 'warn' | 'mute' | 'kick' | 'ban' | 'delete' | 'ignore';
18
+ duration?: number;
19
+ }
20
+ export interface SpamDetectionResult {
21
+ isSpam: boolean;
22
+ rules: string[];
23
+ score: number;
24
+ action: SpamRule['action'];
25
+ reason: string;
26
+ }
27
+ export interface UserActivity {
28
+ jid: string;
29
+ messageCount: number;
30
+ lastMessageTime: number;
31
+ recentMessages: string[];
32
+ warnings: number;
33
+ muted: boolean;
34
+ mutedUntil?: number;
35
+ banned: boolean;
36
+ }
37
+ export interface AntiSpamOptions {
38
+ /** Maximum messages per minute per user */
39
+ maxMessagesPerMinute?: number;
40
+ /** Maximum duplicate messages allowed */
41
+ maxDuplicates?: number;
42
+ /** Time window for duplicate detection (ms) */
43
+ duplicateWindow?: number;
44
+ /** Maximum characters per message */
45
+ maxMessageLength?: number;
46
+ /** Minimum delay between messages (ms) */
47
+ minMessageDelay?: number;
48
+ /** Patterns to detect as spam */
49
+ spamPatterns?: RegExp[];
50
+ /** Whitelist JIDs (never spam) */
51
+ whitelist?: string[];
52
+ /** Callback when spam detected */
53
+ onSpamDetected?: (jid: string, message: WAMessage, result: SpamDetectionResult) => void;
54
+ }
55
+ export declare class AntiSpamManager {
56
+ private rules;
57
+ private userActivity;
58
+ private options;
59
+ private messageHashes;
60
+ constructor(options?: AntiSpamOptions);
61
+ /**
62
+ * Initialize default spam rules
63
+ */
64
+ private initDefaultRules;
65
+ /**
66
+ * Add a spam rule
67
+ */
68
+ addRule(rule: SpamRule): void;
69
+ /**
70
+ * Remove a spam rule
71
+ */
72
+ removeRule(ruleId: string): boolean;
73
+ /**
74
+ * Enable/disable a rule
75
+ */
76
+ toggleRule(ruleId: string, enabled: boolean): void;
77
+ /**
78
+ * Check if a message is spam
79
+ */
80
+ check(message: WAMessage): SpamDetectionResult;
81
+ /**
82
+ * Check individual rule
83
+ */
84
+ private checkRule;
85
+ /**
86
+ * Get action severity (higher = more severe)
87
+ */
88
+ private getActionSeverity;
89
+ /**
90
+ * Extract text from message
91
+ */
92
+ private extractText;
93
+ /**
94
+ * Create a simple hash of message
95
+ */
96
+ private hashMessage;
97
+ /**
98
+ * Mute a user
99
+ */
100
+ muteUser(jid: string, durationMs: number): void;
101
+ /**
102
+ * Unmute a user
103
+ */
104
+ unmuteUser(jid: string): void;
105
+ /**
106
+ * Ban a user
107
+ */
108
+ banUser(jid: string): void;
109
+ /**
110
+ * Unban a user
111
+ */
112
+ unbanUser(jid: string): void;
113
+ /**
114
+ * Add to whitelist
115
+ */
116
+ addToWhitelist(jid: string): void;
117
+ /**
118
+ * Remove from whitelist
119
+ */
120
+ removeFromWhitelist(jid: string): void;
121
+ /**
122
+ * Get user activity
123
+ */
124
+ getUserActivity(jid: string): UserActivity | undefined;
125
+ /**
126
+ * Reset user activity
127
+ */
128
+ resetUserActivity(jid: string): void;
129
+ /**
130
+ * Get spam statistics
131
+ */
132
+ getStats(): {
133
+ totalUsers: number;
134
+ mutedUsers: number;
135
+ bannedUsers: number;
136
+ totalWarnings: number;
137
+ };
138
+ /**
139
+ * Clear all data
140
+ */
141
+ clear(): void;
142
+ }
143
+ export declare const createAntiSpam: (options?: AntiSpamOptions) => AntiSpamManager;
144
+ export declare const COMMON_SPAM_PATTERNS: RegExp[];
145
+ //# sourceMappingURL=anti-spam.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anti-spam.d.ts","sourceRoot":"","sources":["../../src/Utils/anti-spam.ts"],"names":[],"mappings":"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"}