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.
- package/README.md +1983 -79
- package/lib/Socket/business.d.ts +4 -0
- package/lib/Socket/business.d.ts.map +1 -1
- package/lib/Socket/chats.d.ts +4 -0
- package/lib/Socket/chats.d.ts.map +1 -1
- package/lib/Socket/chats.js +44 -1
- package/lib/Socket/chats.js.map +1 -1
- package/lib/Socket/communities.d.ts +4 -0
- package/lib/Socket/communities.d.ts.map +1 -1
- package/lib/Socket/groups.d.ts +4 -0
- package/lib/Socket/groups.d.ts.map +1 -1
- package/lib/Socket/index.d.ts +4 -0
- package/lib/Socket/index.d.ts.map +1 -1
- package/lib/Socket/messages-recv.d.ts +4 -0
- package/lib/Socket/messages-recv.d.ts.map +1 -1
- package/lib/Socket/messages-send.d.ts +4 -0
- package/lib/Socket/messages-send.d.ts.map +1 -1
- package/lib/Socket/newsletter.d.ts +4 -0
- package/lib/Socket/newsletter.d.ts.map +1 -1
- package/lib/Types/Message.d.ts +4 -0
- package/lib/Types/Message.d.ts.map +1 -1
- package/lib/Utils/activity-logger.d.ts +189 -0
- package/lib/Utils/activity-logger.d.ts.map +1 -0
- package/lib/Utils/activity-logger.js +418 -0
- package/lib/Utils/activity-logger.js.map +1 -0
- package/lib/Utils/anti-spam.d.ts +145 -0
- package/lib/Utils/anti-spam.d.ts.map +1 -0
- package/lib/Utils/anti-spam.js +398 -0
- package/lib/Utils/anti-spam.js.map +1 -0
- package/lib/Utils/auto-reply.d.ts +123 -0
- package/lib/Utils/auto-reply.d.ts.map +1 -0
- package/lib/Utils/auto-reply.js +234 -0
- package/lib/Utils/auto-reply.js.map +1 -0
- package/lib/Utils/broadcast.d.ts +121 -0
- package/lib/Utils/broadcast.d.ts.map +1 -0
- package/lib/Utils/broadcast.js +223 -0
- package/lib/Utils/broadcast.js.map +1 -0
- package/lib/Utils/bulk-messaging.d.ts +79 -0
- package/lib/Utils/bulk-messaging.d.ts.map +1 -0
- package/lib/Utils/bulk-messaging.js +148 -0
- package/lib/Utils/bulk-messaging.js.map +1 -0
- package/lib/Utils/chat-analytics.d.ts +92 -0
- package/lib/Utils/chat-analytics.d.ts.map +1 -0
- package/lib/Utils/chat-analytics.js +337 -0
- package/lib/Utils/chat-analytics.js.map +1 -0
- package/lib/Utils/chat-control.d.ts +156 -0
- package/lib/Utils/chat-control.d.ts.map +1 -0
- package/lib/Utils/chat-control.js +224 -0
- package/lib/Utils/chat-control.js.map +1 -0
- package/lib/Utils/chat-export.d.ts +75 -0
- package/lib/Utils/chat-export.d.ts.map +1 -0
- package/lib/Utils/chat-export.js +309 -0
- package/lib/Utils/chat-export.js.map +1 -0
- package/lib/Utils/content-detector.d.ts +199 -0
- package/lib/Utils/content-detector.d.ts.map +1 -0
- package/lib/Utils/content-detector.js +442 -0
- package/lib/Utils/content-detector.js.map +1 -0
- package/lib/Utils/index.d.ts +23 -0
- package/lib/Utils/index.d.ts.map +1 -1
- package/lib/Utils/index.js +52 -0
- package/lib/Utils/index.js.map +1 -1
- package/lib/Utils/link-scanner.d.ts +112 -0
- package/lib/Utils/link-scanner.d.ts.map +1 -0
- package/lib/Utils/link-scanner.js +433 -0
- package/lib/Utils/link-scanner.js.map +1 -0
- package/lib/Utils/media-downloader.d.ts +86 -0
- package/lib/Utils/media-downloader.d.ts.map +1 -0
- package/lib/Utils/media-downloader.js +269 -0
- package/lib/Utils/media-downloader.js.map +1 -0
- package/lib/Utils/meme-generator.d.ts +96 -0
- package/lib/Utils/meme-generator.d.ts.map +1 -0
- package/lib/Utils/meme-generator.js +368 -0
- package/lib/Utils/meme-generator.js.map +1 -0
- package/lib/Utils/message-search.d.ts +96 -0
- package/lib/Utils/message-search.d.ts.map +1 -0
- package/lib/Utils/message-search.js +261 -0
- package/lib/Utils/message-search.js.map +1 -0
- package/lib/Utils/messages-media.d.ts +20 -1
- package/lib/Utils/messages-media.d.ts.map +1 -1
- package/lib/Utils/messages-media.js +100 -5
- package/lib/Utils/messages-media.js.map +1 -1
- package/lib/Utils/messages.d.ts.map +1 -1
- package/lib/Utils/messages.js +9 -2
- package/lib/Utils/messages.js.map +1 -1
- package/lib/Utils/mini-games.d.ts +155 -0
- package/lib/Utils/mini-games.d.ts.map +1 -0
- package/lib/Utils/mini-games.js +445 -0
- package/lib/Utils/mini-games.js.map +1 -0
- package/lib/Utils/pomodoro.d.ts +139 -0
- package/lib/Utils/pomodoro.d.ts.map +1 -0
- package/lib/Utils/pomodoro.js +434 -0
- package/lib/Utils/pomodoro.js.map +1 -0
- package/lib/Utils/qr-generator.d.ts +95 -0
- package/lib/Utils/qr-generator.d.ts.map +1 -0
- package/lib/Utils/qr-generator.js +226 -0
- package/lib/Utils/qr-generator.js.map +1 -0
- package/lib/Utils/quotes.d.ts +110 -0
- package/lib/Utils/quotes.d.ts.map +1 -0
- package/lib/Utils/quotes.js +325 -0
- package/lib/Utils/quotes.js.map +1 -0
- package/lib/Utils/scheduling.d.ts +88 -0
- package/lib/Utils/scheduling.d.ts.map +1 -0
- package/lib/Utils/scheduling.js +163 -0
- package/lib/Utils/scheduling.js.map +1 -0
- package/lib/Utils/status-posting.d.ts +151 -0
- package/lib/Utils/status-posting.d.ts.map +1 -0
- package/lib/Utils/status-posting.js +162 -0
- package/lib/Utils/status-posting.js.map +1 -0
- package/lib/Utils/templates.d.ts +154 -0
- package/lib/Utils/templates.d.ts.map +1 -0
- package/lib/Utils/templates.js +368 -0
- package/lib/Utils/templates.js.map +1 -0
- package/lib/Utils/vcard.d.ts +86 -0
- package/lib/Utils/vcard.d.ts.map +1 -0
- package/lib/Utils/vcard.js +195 -0
- package/lib/Utils/vcard.js.map +1 -0
- package/lib/Utils/voice-note.d.ts +115 -0
- package/lib/Utils/voice-note.d.ts.map +1 -0
- package/lib/Utils/voice-note.js +212 -0
- package/lib/Utils/voice-note.js.map +1 -0
- package/lib/Utils/weather.d.ts +118 -0
- package/lib/Utils/weather.d.ts.map +1 -0
- package/lib/Utils/weather.js +362 -0
- package/lib/Utils/weather.js.map +1 -0
- package/package.json +6 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activity-logger.d.ts","sourceRoot":"","sources":["../../src/Utils/activity-logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -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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"}
|