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 @@
1
+ {"version":3,"file":"bulk-messaging.d.ts","sourceRoot":"","sources":["../../src/Utils/bulk-messaging.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAE5D,MAAM,WAAW,iBAAiB;IACjC,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,IAAI,CAAA;CACb;AAED,MAAM,WAAW,mBAAmB;IACnC,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,oBAAoB;IACpC,mEAAmE;IACnE,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,8DAA8D;IAC9D,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,wCAAwC;IACxC,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,kCAAkC;IAClC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,mBAAmB,KAAK,IAAI,CAAA;IACpD,oCAAoC;IACpC,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAA;IACnD,wBAAwB;IACxB,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IAC7C,0CAA0C;IAC1C,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,iBAAiB,EAAE,KAAK,IAAI,CAAA;CACnD;AAED,KAAK,uBAAuB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,CAAA;AAc1G;;GAEG;AACH,qBAAa,iBAAiB;IAC7B,OAAO,CAAC,WAAW,CAAyB;IAC5C,OAAO,CAAC,OAAO,CAAgC;IAC/C,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,UAAU,CAAQ;gBAEd,WAAW,EAAE,uBAAuB,EAAE,OAAO,GAAE,oBAAyB;IAcpF;;OAEG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAI1F;;OAEG;IACG,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,iBAAiB,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IA2FtG;;OAEG;IACH,IAAI,IAAI,IAAI;IAIZ;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;CACD;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAC5B,aAAa,uBAAuB,EACpC,UAAU,oBAAoB,KAC5B,iBAEF,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAC5B,aAAa,uBAAuB,EACpC,MAAM,MAAM,EAAE,EACd,SAAS,iBAAiB,EAC1B,UAAU,oBAAoB,KAC5B,OAAO,CAAC,iBAAiB,EAAE,CAG7B,CAAA"}
@@ -0,0 +1,148 @@
1
+ /**
2
+ * Baileys-Joss: Bulk Messaging System
3
+ *
4
+ * Fitur untuk mengirim pesan massal dengan rate limiting
5
+ */
6
+ /**
7
+ * Generate random delay for natural message timing
8
+ */
9
+ const getRandomDelay = (baseDelay, variation) => {
10
+ return baseDelay + Math.floor(Math.random() * variation);
11
+ };
12
+ /**
13
+ * Sleep helper
14
+ */
15
+ const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
16
+ /**
17
+ * Bulk Message Sender - Kirim pesan ke banyak kontak dengan rate limiting
18
+ */
19
+ export class BulkMessageSender {
20
+ constructor(sendMessage, options = {}) {
21
+ this.isRunning = false;
22
+ this.shouldStop = false;
23
+ this.sendMessage = sendMessage;
24
+ this.options = {
25
+ delayBetweenMessages: options.delayBetweenMessages ?? 1000,
26
+ randomDelay: options.randomDelay ?? 500,
27
+ maxRetries: options.maxRetries ?? 2,
28
+ continueOnError: options.continueOnError ?? true,
29
+ onProgress: options.onProgress ?? (() => { }),
30
+ onMessageSent: options.onMessageSent ?? (() => { }),
31
+ onError: options.onError ?? (() => { }),
32
+ onComplete: options.onComplete ?? (() => { })
33
+ };
34
+ }
35
+ /**
36
+ * Send same message to multiple recipients
37
+ */
38
+ async sendToMany(jids, content) {
39
+ return this.send(jids.map(jid => ({ jid, content })));
40
+ }
41
+ /**
42
+ * Send different messages to different recipients
43
+ */
44
+ async send(messages) {
45
+ if (this.isRunning) {
46
+ throw new Error('Bulk messaging is already in progress');
47
+ }
48
+ this.isRunning = true;
49
+ this.shouldStop = false;
50
+ const results = [];
51
+ const total = messages.length;
52
+ let sent = 0;
53
+ let failed = 0;
54
+ try {
55
+ for (let i = 0; i < messages.length; i++) {
56
+ if (this.shouldStop) {
57
+ break;
58
+ }
59
+ const msg = messages[i];
60
+ if (!msg)
61
+ continue;
62
+ const { jid, content } = msg;
63
+ const result = { jid, success: false };
64
+ // Update progress
65
+ this.options.onProgress({
66
+ total,
67
+ sent,
68
+ failed,
69
+ remaining: total - sent - failed,
70
+ currentJid: jid,
71
+ percentage: Math.round(((sent + failed) / total) * 100)
72
+ });
73
+ // Try to send with retries
74
+ let lastError = null;
75
+ for (let retry = 0; retry <= this.options.maxRetries; retry++) {
76
+ try {
77
+ const message = await this.sendMessage(jid, content);
78
+ result.success = true;
79
+ result.messageId = message?.key?.id ?? undefined;
80
+ result.sentAt = new Date();
81
+ sent++;
82
+ break;
83
+ }
84
+ catch (error) {
85
+ lastError = error;
86
+ if (retry < this.options.maxRetries) {
87
+ await sleep(500); // Short delay before retry
88
+ }
89
+ }
90
+ }
91
+ if (!result.success) {
92
+ failed++;
93
+ result.error = lastError?.message;
94
+ this.options.onError(jid, lastError);
95
+ if (!this.options.continueOnError) {
96
+ throw lastError;
97
+ }
98
+ }
99
+ results.push(result);
100
+ this.options.onMessageSent(result);
101
+ // Add delay between messages (not after the last one)
102
+ if (i < messages.length - 1) {
103
+ const delay = getRandomDelay(this.options.delayBetweenMessages, this.options.randomDelay);
104
+ await sleep(delay);
105
+ }
106
+ }
107
+ }
108
+ finally {
109
+ this.isRunning = false;
110
+ }
111
+ // Final progress update
112
+ this.options.onProgress({
113
+ total,
114
+ sent,
115
+ failed,
116
+ remaining: 0,
117
+ percentage: 100
118
+ });
119
+ this.options.onComplete(results);
120
+ return results;
121
+ }
122
+ /**
123
+ * Stop the current bulk messaging operation
124
+ */
125
+ stop() {
126
+ this.shouldStop = true;
127
+ }
128
+ /**
129
+ * Check if bulk messaging is in progress
130
+ */
131
+ get running() {
132
+ return this.isRunning;
133
+ }
134
+ }
135
+ /**
136
+ * Create a bulk message sender instance
137
+ */
138
+ export const createBulkSender = (sendMessage, options) => {
139
+ return new BulkMessageSender(sendMessage, options);
140
+ };
141
+ /**
142
+ * Simple helper to send message to multiple JIDs
143
+ */
144
+ export const sendBulkMessages = async (sendMessage, jids, content, options) => {
145
+ const sender = new BulkMessageSender(sendMessage, options);
146
+ return sender.sendToMany(jids, content);
147
+ };
148
+ //# sourceMappingURL=bulk-messaging.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bulk-messaging.js","sourceRoot":"","sources":["../../src/Utils/bulk-messaging.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Baileys-Joss: Chat Analytics
3
+ *
4
+ * Statistik dan analitik chat
5
+ */
6
+ import type { WAMessage } from '../Types/index.js';
7
+ export interface ChatStats {
8
+ jid: string;
9
+ totalMessages: number;
10
+ messagesFromMe: number;
11
+ messagesFromOthers: number;
12
+ messagesByType: {
13
+ text: number;
14
+ image: number;
15
+ video: number;
16
+ audio: number;
17
+ document: number;
18
+ sticker: number;
19
+ location: number;
20
+ contact: number;
21
+ poll: number;
22
+ other: number;
23
+ };
24
+ participants?: Map<string, number>;
25
+ firstMessageTime?: Date;
26
+ lastMessageTime?: Date;
27
+ averageMessagesPerDay: number;
28
+ mostActiveHour: number;
29
+ mostActiveDay: string;
30
+ mediaCount: number;
31
+ linkCount: number;
32
+ emojiCount: number;
33
+ averageMessageLength: number;
34
+ }
35
+ export interface GlobalStats {
36
+ totalChats: number;
37
+ totalMessages: number;
38
+ totalContacts: number;
39
+ totalGroups: number;
40
+ messagesByType: ChatStats['messagesByType'];
41
+ mostActiveChat: {
42
+ jid: string;
43
+ count: number;
44
+ } | null;
45
+ averageMessagesPerChat: number;
46
+ }
47
+ export interface TimeRange {
48
+ start: Date;
49
+ end: Date;
50
+ }
51
+ /**
52
+ * Chat Analytics Manager
53
+ */
54
+ export declare class ChatAnalytics {
55
+ private messages;
56
+ /**
57
+ * Add messages for analysis
58
+ */
59
+ addMessages(messages: WAMessage[]): void;
60
+ /**
61
+ * Clear all messages
62
+ */
63
+ clear(): void;
64
+ /**
65
+ * Get stats for a specific chat
66
+ */
67
+ getChatStats(jid: string, timeRange?: TimeRange): ChatStats | null;
68
+ /**
69
+ * Get global stats across all chats
70
+ */
71
+ getGlobalStats(): GlobalStats;
72
+ /**
73
+ * Get activity by hour (0-23)
74
+ */
75
+ getActivityByHour(jid?: string): number[];
76
+ /**
77
+ * Get activity by day of week
78
+ */
79
+ getActivityByDay(jid?: string): Record<string, number>;
80
+ /**
81
+ * Get top participants in a chat
82
+ */
83
+ getTopParticipants(jid: string, limit?: number): Array<{
84
+ participant: string;
85
+ count: number;
86
+ }>;
87
+ }
88
+ /**
89
+ * Create chat analytics instance
90
+ */
91
+ export declare const createChatAnalytics: () => ChatAnalytics;
92
+ //# sourceMappingURL=chat-analytics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-analytics.d.ts","sourceRoot":"","sources":["../../src/Utils/chat-analytics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEzC,MAAM,WAAW,SAAS;IACzB,GAAG,EAAE,MAAM,CAAA;IACX,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,EAAE,MAAM,CAAA;IACtB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,cAAc,EAAE;QACf,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,CAAA;QACb,KAAK,EAAE,MAAM,CAAA;QACb,KAAK,EAAE,MAAM,CAAA;QACb,QAAQ,EAAE,MAAM,CAAA;QAChB,OAAO,EAAE,MAAM,CAAA;QACf,QAAQ,EAAE,MAAM,CAAA;QAChB,OAAO,EAAE,MAAM,CAAA;QACf,IAAI,EAAE,MAAM,CAAA;QACZ,KAAK,EAAE,MAAM,CAAA;KACb,CAAA;IACD,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAClC,gBAAgB,CAAC,EAAE,IAAI,CAAA;IACvB,eAAe,CAAC,EAAE,IAAI,CAAA;IACtB,qBAAqB,EAAE,MAAM,CAAA;IAC7B,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,oBAAoB,EAAE,MAAM,CAAA;CAC5B;AAED,MAAM,WAAW,WAAW;IAC3B,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAA;IAC3C,cAAc,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IACrD,sBAAsB,EAAE,MAAM,CAAA;CAC9B;AAED,MAAM,WAAW,SAAS;IACzB,KAAK,EAAE,IAAI,CAAA;IACX,GAAG,EAAE,IAAI,CAAA;CACT;AAmED;;GAEG;AACH,qBAAa,aAAa;IACzB,OAAO,CAAC,QAAQ,CAAsC;IAEtD;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI;IAWxC;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,IAAI;IA4IlE;;OAEG;IACH,cAAc,IAAI,WAAW;IAsD7B;;OAEG;IACH,iBAAiB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;IAgBzC;;OAEG;IACH,gBAAgB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAyBtD;;OAEG;IACH,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,KAAK,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAS1F;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,QAAO,aAEtC,CAAA"}
@@ -0,0 +1,337 @@
1
+ /**
2
+ * Baileys-Joss: Chat Analytics
3
+ *
4
+ * Statistik dan analitik chat
5
+ */
6
+ /**
7
+ * Count emojis in text
8
+ */
9
+ const countEmojis = (text) => {
10
+ const emojiRegex = /[\u{1F300}-\u{1F9FF}]|[\u{2600}-\u{26FF}]|[\u{2700}-\u{27BF}]/gu;
11
+ const matches = text.match(emojiRegex);
12
+ return matches ? matches.length : 0;
13
+ };
14
+ /**
15
+ * Count links in text
16
+ */
17
+ const countLinks = (text) => {
18
+ const urlRegex = /https?:\/\/[^\s]+/gi;
19
+ const matches = text.match(urlRegex);
20
+ return matches ? matches.length : 0;
21
+ };
22
+ /**
23
+ * Get day name from date
24
+ */
25
+ const DAYS = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
26
+ const getDayName = (date) => {
27
+ return DAYS[date.getDay()] || 'Unknown';
28
+ };
29
+ /**
30
+ * Extract message type
31
+ */
32
+ const getMessageTypeKey = (message) => {
33
+ const content = message.message;
34
+ if (!content)
35
+ return 'other';
36
+ if (content.conversation || content.extendedTextMessage)
37
+ return 'text';
38
+ if (content.imageMessage)
39
+ return 'image';
40
+ if (content.videoMessage)
41
+ return 'video';
42
+ if (content.audioMessage)
43
+ return 'audio';
44
+ if (content.documentMessage)
45
+ return 'document';
46
+ if (content.stickerMessage)
47
+ return 'sticker';
48
+ if (content.locationMessage || content.liveLocationMessage)
49
+ return 'location';
50
+ if (content.contactMessage || content.contactsArrayMessage)
51
+ return 'contact';
52
+ if (content.pollCreationMessage)
53
+ return 'poll';
54
+ return 'other';
55
+ };
56
+ /**
57
+ * Extract text content from message
58
+ */
59
+ const extractText = (message) => {
60
+ const content = message.message;
61
+ if (!content)
62
+ return '';
63
+ return (content.conversation ||
64
+ content.extendedTextMessage?.text ||
65
+ content.imageMessage?.caption ||
66
+ content.videoMessage?.caption ||
67
+ content.documentMessage?.caption ||
68
+ '');
69
+ };
70
+ /**
71
+ * Chat Analytics Manager
72
+ */
73
+ export class ChatAnalytics {
74
+ constructor() {
75
+ this.messages = new Map();
76
+ }
77
+ /**
78
+ * Add messages for analysis
79
+ */
80
+ addMessages(messages) {
81
+ for (const msg of messages) {
82
+ const jid = msg.key.remoteJid;
83
+ if (!jid)
84
+ continue;
85
+ const existing = this.messages.get(jid) || [];
86
+ existing.push(msg);
87
+ this.messages.set(jid, existing);
88
+ }
89
+ }
90
+ /**
91
+ * Clear all messages
92
+ */
93
+ clear() {
94
+ this.messages.clear();
95
+ }
96
+ /**
97
+ * Get stats for a specific chat
98
+ */
99
+ getChatStats(jid, timeRange) {
100
+ const messages = this.messages.get(jid);
101
+ if (!messages || messages.length === 0)
102
+ return null;
103
+ // Filter by time range
104
+ let filtered = messages;
105
+ if (timeRange) {
106
+ filtered = messages.filter(m => {
107
+ const ts = m.messageTimestamp;
108
+ if (!ts)
109
+ return true;
110
+ const time = typeof ts === 'number' ? ts * 1000 : Number(ts) * 1000;
111
+ return time >= timeRange.start.getTime() && time <= timeRange.end.getTime();
112
+ });
113
+ }
114
+ const stats = {
115
+ jid,
116
+ totalMessages: filtered.length,
117
+ messagesFromMe: 0,
118
+ messagesFromOthers: 0,
119
+ messagesByType: {
120
+ text: 0,
121
+ image: 0,
122
+ video: 0,
123
+ audio: 0,
124
+ document: 0,
125
+ sticker: 0,
126
+ location: 0,
127
+ contact: 0,
128
+ poll: 0,
129
+ other: 0
130
+ },
131
+ participants: new Map(),
132
+ averageMessagesPerDay: 0,
133
+ mostActiveHour: 0,
134
+ mostActiveDay: 'Monday',
135
+ mediaCount: 0,
136
+ linkCount: 0,
137
+ emojiCount: 0,
138
+ averageMessageLength: 0
139
+ };
140
+ const hourCounts = new Array(24).fill(0);
141
+ const dayCounts = {
142
+ Sunday: 0,
143
+ Monday: 0,
144
+ Tuesday: 0,
145
+ Wednesday: 0,
146
+ Thursday: 0,
147
+ Friday: 0,
148
+ Saturday: 0
149
+ };
150
+ let totalTextLength = 0;
151
+ let textMessageCount = 0;
152
+ let firstTime = null;
153
+ let lastTime = null;
154
+ for (const msg of filtered) {
155
+ // From me / from others
156
+ if (msg.key.fromMe) {
157
+ stats.messagesFromMe++;
158
+ }
159
+ else {
160
+ stats.messagesFromOthers++;
161
+ }
162
+ // Message type
163
+ const type = getMessageTypeKey(msg);
164
+ stats.messagesByType[type]++;
165
+ // Media count
166
+ if (['image', 'video', 'audio', 'document', 'sticker'].includes(type)) {
167
+ stats.mediaCount++;
168
+ }
169
+ // Participant tracking
170
+ const participant = msg.key.participant || msg.key.remoteJid || 'unknown';
171
+ stats.participants.set(participant, (stats.participants.get(participant) || 0) + 1);
172
+ // Time analysis
173
+ const ts = msg.messageTimestamp;
174
+ if (ts) {
175
+ const time = typeof ts === 'number' ? ts * 1000 : Number(ts) * 1000;
176
+ const date = new Date(time);
177
+ if (firstTime === null || time < firstTime)
178
+ firstTime = time;
179
+ if (lastTime === null || time > lastTime)
180
+ lastTime = time;
181
+ const hour = date.getHours();
182
+ const dayName = getDayName(date);
183
+ if (hourCounts[hour] !== undefined)
184
+ hourCounts[hour]++;
185
+ if (dayCounts[dayName] !== undefined)
186
+ dayCounts[dayName]++;
187
+ }
188
+ // Text analysis
189
+ const text = extractText(msg);
190
+ if (text) {
191
+ totalTextLength += text.length;
192
+ textMessageCount++;
193
+ stats.linkCount += countLinks(text);
194
+ stats.emojiCount += countEmojis(text);
195
+ }
196
+ }
197
+ // Calculate averages and most active
198
+ if (firstTime !== null && lastTime !== null) {
199
+ stats.firstMessageTime = new Date(firstTime);
200
+ stats.lastMessageTime = new Date(lastTime);
201
+ const days = Math.max(1, (lastTime - firstTime) / (1000 * 60 * 60 * 24));
202
+ stats.averageMessagesPerDay = Math.round(stats.totalMessages / days);
203
+ }
204
+ if (textMessageCount > 0) {
205
+ stats.averageMessageLength = Math.round(totalTextLength / textMessageCount);
206
+ }
207
+ // Most active hour
208
+ let maxHour = 0;
209
+ for (let i = 0; i < 24; i++) {
210
+ if ((hourCounts[i] ?? 0) > (hourCounts[maxHour] ?? 0)) {
211
+ maxHour = i;
212
+ }
213
+ }
214
+ stats.mostActiveHour = maxHour;
215
+ // Most active day
216
+ let maxDay = 'Monday';
217
+ let maxDayCount = 0;
218
+ for (const [day, count] of Object.entries(dayCounts)) {
219
+ if (count > maxDayCount) {
220
+ maxDay = day;
221
+ maxDayCount = count;
222
+ }
223
+ }
224
+ stats.mostActiveDay = maxDay;
225
+ return stats;
226
+ }
227
+ /**
228
+ * Get global stats across all chats
229
+ */
230
+ getGlobalStats() {
231
+ const stats = {
232
+ totalChats: this.messages.size,
233
+ totalMessages: 0,
234
+ totalContacts: 0,
235
+ totalGroups: 0,
236
+ messagesByType: {
237
+ text: 0,
238
+ image: 0,
239
+ video: 0,
240
+ audio: 0,
241
+ document: 0,
242
+ sticker: 0,
243
+ location: 0,
244
+ contact: 0,
245
+ poll: 0,
246
+ other: 0
247
+ },
248
+ mostActiveChat: null,
249
+ averageMessagesPerChat: 0
250
+ };
251
+ let maxChatCount = 0;
252
+ for (const [jid, messages] of this.messages) {
253
+ stats.totalMessages += messages.length;
254
+ // Count chat type
255
+ if (jid.endsWith('@g.us')) {
256
+ stats.totalGroups++;
257
+ }
258
+ else if (jid.endsWith('@s.whatsapp.net')) {
259
+ stats.totalContacts++;
260
+ }
261
+ // Most active chat
262
+ if (messages.length > maxChatCount) {
263
+ maxChatCount = messages.length;
264
+ stats.mostActiveChat = { jid, count: messages.length };
265
+ }
266
+ // Message types
267
+ for (const msg of messages) {
268
+ const type = getMessageTypeKey(msg);
269
+ stats.messagesByType[type]++;
270
+ }
271
+ }
272
+ if (stats.totalChats > 0) {
273
+ stats.averageMessagesPerChat = Math.round(stats.totalMessages / stats.totalChats);
274
+ }
275
+ return stats;
276
+ }
277
+ /**
278
+ * Get activity by hour (0-23)
279
+ */
280
+ getActivityByHour(jid) {
281
+ const hourCounts = new Array(24).fill(0);
282
+ const targetMessages = jid ? this.messages.get(jid) || [] : Array.from(this.messages.values()).flat();
283
+ for (const msg of targetMessages) {
284
+ const ts = msg.messageTimestamp;
285
+ if (ts) {
286
+ const time = typeof ts === 'number' ? ts * 1000 : Number(ts) * 1000;
287
+ const hour = new Date(time).getHours();
288
+ hourCounts[hour]++;
289
+ }
290
+ }
291
+ return hourCounts;
292
+ }
293
+ /**
294
+ * Get activity by day of week
295
+ */
296
+ getActivityByDay(jid) {
297
+ const dayCounts = {
298
+ Sunday: 0,
299
+ Monday: 0,
300
+ Tuesday: 0,
301
+ Wednesday: 0,
302
+ Thursday: 0,
303
+ Friday: 0,
304
+ Saturday: 0
305
+ };
306
+ const targetMessages = jid ? this.messages.get(jid) || [] : Array.from(this.messages.values()).flat();
307
+ for (const msg of targetMessages) {
308
+ const ts = msg.messageTimestamp;
309
+ if (ts) {
310
+ const time = typeof ts === 'number' ? ts * 1000 : Number(ts) * 1000;
311
+ const day = getDayName(new Date(time));
312
+ if (dayCounts[day] !== undefined)
313
+ dayCounts[day]++;
314
+ }
315
+ }
316
+ return dayCounts;
317
+ }
318
+ /**
319
+ * Get top participants in a chat
320
+ */
321
+ getTopParticipants(jid, limit = 10) {
322
+ const stats = this.getChatStats(jid);
323
+ if (!stats || !stats.participants)
324
+ return [];
325
+ return Array.from(stats.participants.entries())
326
+ .map(([participant, count]) => ({ participant, count }))
327
+ .sort((a, b) => b.count - a.count)
328
+ .slice(0, limit);
329
+ }
330
+ }
331
+ /**
332
+ * Create chat analytics instance
333
+ */
334
+ export const createChatAnalytics = () => {
335
+ return new ChatAnalytics();
336
+ };
337
+ //# sourceMappingURL=chat-analytics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-analytics.js","sourceRoot":"","sources":["../../src/Utils/chat-analytics.ts"],"names":[],"mappings":"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"}