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.
- package/README.md +2554 -78
- 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/messages-send.js +130 -1
- package/lib/Socket/messages-send.js.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 +25 -1
- 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 +14 -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,234 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Baileys-Joss: Auto Reply System
|
|
3
|
+
*
|
|
4
|
+
* Sistem balasan otomatis berdasarkan keyword/pattern
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Auto Reply Handler - Sistem balasan otomatis
|
|
8
|
+
*/
|
|
9
|
+
export class AutoReplyHandler {
|
|
10
|
+
constructor(sendMessage, sendPresence, options = {}) {
|
|
11
|
+
this.rules = new Map();
|
|
12
|
+
this.cooldowns = new Map();
|
|
13
|
+
this.globalCooldown = new Map();
|
|
14
|
+
this.sendMessage = sendMessage;
|
|
15
|
+
this.sendPresence = sendPresence;
|
|
16
|
+
this.options = {
|
|
17
|
+
globalCooldown: options.globalCooldown ?? 1000,
|
|
18
|
+
simulateTyping: options.simulateTyping ?? false,
|
|
19
|
+
typingDuration: options.typingDuration ?? 1000,
|
|
20
|
+
multiMatch: options.multiMatch ?? false,
|
|
21
|
+
onReply: options.onReply ?? (() => { }),
|
|
22
|
+
onError: options.onError ?? (() => { })
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Generate unique ID for rule
|
|
27
|
+
*/
|
|
28
|
+
generateId() {
|
|
29
|
+
return `ar_${Date.now()}_${Math.random().toString(36).substring(2, 9)}`;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Add a new auto-reply rule
|
|
33
|
+
*/
|
|
34
|
+
addRule(rule) {
|
|
35
|
+
const fullRule = {
|
|
36
|
+
...rule,
|
|
37
|
+
id: rule.id ?? this.generateId(),
|
|
38
|
+
active: rule.active ?? true,
|
|
39
|
+
priority: rule.priority ?? 0
|
|
40
|
+
};
|
|
41
|
+
if (!fullRule.keywords && !fullRule.pattern && !fullRule.exactMatch) {
|
|
42
|
+
throw new Error('Rule must have at least one of: keywords, pattern, or exactMatch');
|
|
43
|
+
}
|
|
44
|
+
this.rules.set(fullRule.id, fullRule);
|
|
45
|
+
return fullRule;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Remove a rule by ID
|
|
49
|
+
*/
|
|
50
|
+
removeRule(id) {
|
|
51
|
+
return this.rules.delete(id);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Get all rules
|
|
55
|
+
*/
|
|
56
|
+
getRules() {
|
|
57
|
+
return Array.from(this.rules.values());
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Get a rule by ID
|
|
61
|
+
*/
|
|
62
|
+
getRule(id) {
|
|
63
|
+
return this.rules.get(id);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Enable/disable a rule
|
|
67
|
+
*/
|
|
68
|
+
setRuleActive(id, active) {
|
|
69
|
+
const rule = this.rules.get(id);
|
|
70
|
+
if (rule) {
|
|
71
|
+
rule.active = active;
|
|
72
|
+
return true;
|
|
73
|
+
}
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Clear all rules
|
|
78
|
+
*/
|
|
79
|
+
clearRules() {
|
|
80
|
+
this.rules.clear();
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Check cooldown for a specific rule and JID
|
|
84
|
+
*/
|
|
85
|
+
checkCooldown(ruleId, jid) {
|
|
86
|
+
const key = `${ruleId}:${jid}`;
|
|
87
|
+
const lastTime = this.cooldowns.get(key) ?? 0;
|
|
88
|
+
return Date.now() - lastTime > 0;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Check global cooldown for JID
|
|
92
|
+
*/
|
|
93
|
+
checkGlobalCooldown(jid) {
|
|
94
|
+
const lastTime = this.globalCooldown.get(jid) ?? 0;
|
|
95
|
+
return Date.now() - lastTime > this.options.globalCooldown;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Set cooldown
|
|
99
|
+
*/
|
|
100
|
+
setCooldown(ruleId, jid, cooldown) {
|
|
101
|
+
const key = `${ruleId}:${jid}`;
|
|
102
|
+
this.cooldowns.set(key, Date.now() + cooldown);
|
|
103
|
+
this.globalCooldown.set(jid, Date.now());
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Check if message matches a rule
|
|
107
|
+
*/
|
|
108
|
+
matchRule(text, rule) {
|
|
109
|
+
if (!rule.active)
|
|
110
|
+
return null;
|
|
111
|
+
// Check exact match
|
|
112
|
+
if (rule.exactMatch) {
|
|
113
|
+
if (text.toLowerCase() === rule.exactMatch.toLowerCase()) {
|
|
114
|
+
return [text];
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
// Check keywords
|
|
118
|
+
if (rule.keywords && rule.keywords.length > 0) {
|
|
119
|
+
const lowerText = text.toLowerCase();
|
|
120
|
+
for (const keyword of rule.keywords) {
|
|
121
|
+
if (lowerText.includes(keyword.toLowerCase())) {
|
|
122
|
+
return [keyword];
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
// Check pattern
|
|
127
|
+
if (rule.pattern) {
|
|
128
|
+
return text.match(rule.pattern);
|
|
129
|
+
}
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Check if JID is allowed for this rule
|
|
134
|
+
*/
|
|
135
|
+
isJidAllowed(jid, rule) {
|
|
136
|
+
const isGroup = jid.endsWith('@g.us');
|
|
137
|
+
const isNewsletter = jid.endsWith('@newsletter');
|
|
138
|
+
// Skip newsletters
|
|
139
|
+
if (isNewsletter)
|
|
140
|
+
return false;
|
|
141
|
+
// Check group/private filters
|
|
142
|
+
if (rule.groupsOnly && !isGroup)
|
|
143
|
+
return false;
|
|
144
|
+
if (rule.privateOnly && isGroup)
|
|
145
|
+
return false;
|
|
146
|
+
// Check allowed/blocked lists
|
|
147
|
+
if (rule.allowedJids && rule.allowedJids.length > 0) {
|
|
148
|
+
if (!rule.allowedJids.includes(jid))
|
|
149
|
+
return false;
|
|
150
|
+
}
|
|
151
|
+
if (rule.blockedJids && rule.blockedJids.includes(jid)) {
|
|
152
|
+
return false;
|
|
153
|
+
}
|
|
154
|
+
return true;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Process incoming message and send auto-reply if matched
|
|
158
|
+
*/
|
|
159
|
+
async processMessage(message) {
|
|
160
|
+
// Get message text
|
|
161
|
+
const messageContent = message.message;
|
|
162
|
+
if (!messageContent)
|
|
163
|
+
return false;
|
|
164
|
+
const text = messageContent.conversation ||
|
|
165
|
+
messageContent.extendedTextMessage?.text ||
|
|
166
|
+
messageContent.imageMessage?.caption ||
|
|
167
|
+
messageContent.videoMessage?.caption ||
|
|
168
|
+
messageContent.documentMessage?.caption ||
|
|
169
|
+
'';
|
|
170
|
+
if (!text)
|
|
171
|
+
return false;
|
|
172
|
+
const jid = message.key.remoteJid;
|
|
173
|
+
if (!jid)
|
|
174
|
+
return false;
|
|
175
|
+
// Check global cooldown
|
|
176
|
+
if (!this.checkGlobalCooldown(jid))
|
|
177
|
+
return false;
|
|
178
|
+
// Sort rules by priority (descending)
|
|
179
|
+
const sortedRules = Array.from(this.rules.values())
|
|
180
|
+
.filter(r => r.active)
|
|
181
|
+
.sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));
|
|
182
|
+
let matched = false;
|
|
183
|
+
for (const rule of sortedRules) {
|
|
184
|
+
// Check JID filters
|
|
185
|
+
if (!this.isJidAllowed(jid, rule))
|
|
186
|
+
continue;
|
|
187
|
+
// Check cooldown
|
|
188
|
+
if (rule.cooldown && !this.checkCooldown(rule.id, jid))
|
|
189
|
+
continue;
|
|
190
|
+
// Match rule
|
|
191
|
+
const match = this.matchRule(text, rule);
|
|
192
|
+
if (!match)
|
|
193
|
+
continue;
|
|
194
|
+
try {
|
|
195
|
+
// Get response content
|
|
196
|
+
let response;
|
|
197
|
+
if (typeof rule.response === 'function') {
|
|
198
|
+
response = await rule.response(message, match);
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
response = rule.response;
|
|
202
|
+
}
|
|
203
|
+
// Simulate typing
|
|
204
|
+
if (this.options.simulateTyping && this.sendPresence) {
|
|
205
|
+
await this.sendPresence(jid, 'composing');
|
|
206
|
+
await new Promise(r => setTimeout(r, this.options.typingDuration));
|
|
207
|
+
await this.sendPresence(jid, 'paused');
|
|
208
|
+
}
|
|
209
|
+
// Send reply
|
|
210
|
+
await this.sendMessage(jid, response, rule.quoted ? { quoted: message } : undefined);
|
|
211
|
+
// Set cooldown
|
|
212
|
+
if (rule.cooldown) {
|
|
213
|
+
this.setCooldown(rule.id, jid, rule.cooldown);
|
|
214
|
+
}
|
|
215
|
+
this.options.onReply(rule, message, response);
|
|
216
|
+
matched = true;
|
|
217
|
+
// Stop if not multi-match
|
|
218
|
+
if (!this.options.multiMatch)
|
|
219
|
+
break;
|
|
220
|
+
}
|
|
221
|
+
catch (error) {
|
|
222
|
+
this.options.onError(error, rule, message);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
return matched;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Create an auto-reply handler instance
|
|
230
|
+
*/
|
|
231
|
+
export const createAutoReply = (sendMessage, sendPresence, options) => {
|
|
232
|
+
return new AutoReplyHandler(sendMessage, sendPresence, options);
|
|
233
|
+
};
|
|
234
|
+
//# sourceMappingURL=auto-reply.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-reply.js","sourceRoot":"","sources":["../../src/Utils/auto-reply.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Baileys-Joss: Broadcast List Manager
|
|
3
|
+
*
|
|
4
|
+
* Fitur untuk mengelola dan mengirim ke broadcast list
|
|
5
|
+
*/
|
|
6
|
+
import type { AnyMessageContent, WAMessage } from '../Types/index.js';
|
|
7
|
+
export interface BroadcastList {
|
|
8
|
+
id: string;
|
|
9
|
+
name: string;
|
|
10
|
+
description?: string;
|
|
11
|
+
recipients: string[];
|
|
12
|
+
createdAt: Date;
|
|
13
|
+
updatedAt: Date;
|
|
14
|
+
metadata?: Record<string, any>;
|
|
15
|
+
}
|
|
16
|
+
export interface BroadcastResult {
|
|
17
|
+
listId: string;
|
|
18
|
+
listName: string;
|
|
19
|
+
totalRecipients: number;
|
|
20
|
+
sent: number;
|
|
21
|
+
failed: number;
|
|
22
|
+
results: Array<{
|
|
23
|
+
jid: string;
|
|
24
|
+
success: boolean;
|
|
25
|
+
messageId?: string;
|
|
26
|
+
error?: string;
|
|
27
|
+
}>;
|
|
28
|
+
startedAt: Date;
|
|
29
|
+
completedAt: Date;
|
|
30
|
+
}
|
|
31
|
+
export interface BroadcastOptions {
|
|
32
|
+
/** Delay between messages in ms (default: 1000) */
|
|
33
|
+
delay?: number;
|
|
34
|
+
/** Random delay variation in ms (default: 500) */
|
|
35
|
+
randomDelay?: number;
|
|
36
|
+
/** Continue on error (default: true) */
|
|
37
|
+
continueOnError?: boolean;
|
|
38
|
+
/** Progress callback */
|
|
39
|
+
onProgress?: (sent: number, total: number, currentJid: string) => void;
|
|
40
|
+
}
|
|
41
|
+
type BroadcastSendFunction = (jid: string, content: AnyMessageContent) => Promise<WAMessage | undefined>;
|
|
42
|
+
/**
|
|
43
|
+
* Broadcast List Manager
|
|
44
|
+
*/
|
|
45
|
+
export declare class BroadcastManager {
|
|
46
|
+
private lists;
|
|
47
|
+
private sendMessage;
|
|
48
|
+
constructor(sendMessage: BroadcastSendFunction);
|
|
49
|
+
/**
|
|
50
|
+
* Generate unique ID
|
|
51
|
+
*/
|
|
52
|
+
private generateId;
|
|
53
|
+
/**
|
|
54
|
+
* Create a new broadcast list
|
|
55
|
+
*/
|
|
56
|
+
create(options: {
|
|
57
|
+
name: string;
|
|
58
|
+
recipients: string[];
|
|
59
|
+
description?: string;
|
|
60
|
+
id?: string;
|
|
61
|
+
metadata?: Record<string, any>;
|
|
62
|
+
}): BroadcastList;
|
|
63
|
+
/**
|
|
64
|
+
* Get a broadcast list by ID
|
|
65
|
+
*/
|
|
66
|
+
get(id: string): BroadcastList | undefined;
|
|
67
|
+
/**
|
|
68
|
+
* Get list by name
|
|
69
|
+
*/
|
|
70
|
+
getByName(name: string): BroadcastList | undefined;
|
|
71
|
+
/**
|
|
72
|
+
* Get all broadcast lists
|
|
73
|
+
*/
|
|
74
|
+
getAll(): BroadcastList[];
|
|
75
|
+
/**
|
|
76
|
+
* Update a broadcast list
|
|
77
|
+
*/
|
|
78
|
+
update(id: string, updates: Partial<Omit<BroadcastList, 'id' | 'createdAt'>>): BroadcastList | undefined;
|
|
79
|
+
/**
|
|
80
|
+
* Add recipients to a list
|
|
81
|
+
*/
|
|
82
|
+
addRecipients(id: string, jids: string[]): BroadcastList | undefined;
|
|
83
|
+
/**
|
|
84
|
+
* Remove recipients from a list
|
|
85
|
+
*/
|
|
86
|
+
removeRecipients(id: string, jids: string[]): BroadcastList | undefined;
|
|
87
|
+
/**
|
|
88
|
+
* Delete a broadcast list
|
|
89
|
+
*/
|
|
90
|
+
delete(id: string): boolean;
|
|
91
|
+
/**
|
|
92
|
+
* Send message to a broadcast list
|
|
93
|
+
*/
|
|
94
|
+
broadcast(listId: string, content: AnyMessageContent, options?: BroadcastOptions): Promise<BroadcastResult>;
|
|
95
|
+
/**
|
|
96
|
+
* Send message to multiple lists
|
|
97
|
+
*/
|
|
98
|
+
broadcastToLists(listIds: string[], content: AnyMessageContent, options?: BroadcastOptions): Promise<BroadcastResult[]>;
|
|
99
|
+
/**
|
|
100
|
+
* Export lists to JSON
|
|
101
|
+
*/
|
|
102
|
+
export(): string;
|
|
103
|
+
/**
|
|
104
|
+
* Import lists from JSON
|
|
105
|
+
*/
|
|
106
|
+
import(json: string, overwrite?: boolean): number;
|
|
107
|
+
/**
|
|
108
|
+
* Get statistics
|
|
109
|
+
*/
|
|
110
|
+
getStats(): {
|
|
111
|
+
totalLists: number;
|
|
112
|
+
totalRecipients: number;
|
|
113
|
+
averageRecipientsPerList: number;
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Create a broadcast manager
|
|
118
|
+
*/
|
|
119
|
+
export declare const createBroadcastManager: (sendMessage: BroadcastSendFunction) => BroadcastManager;
|
|
120
|
+
export {};
|
|
121
|
+
//# sourceMappingURL=broadcast.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"broadcast.d.ts","sourceRoot":"","sources":["../../src/Utils/broadcast.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Baileys-Joss: Broadcast List Manager
|
|
3
|
+
*
|
|
4
|
+
* Fitur untuk mengelola dan mengirim ke broadcast list
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Generate random delay
|
|
8
|
+
*/
|
|
9
|
+
const getRandomDelay = (base, variation) => {
|
|
10
|
+
return base + Math.floor(Math.random() * variation);
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Sleep helper
|
|
14
|
+
*/
|
|
15
|
+
const sleep = (ms) => new Promise(r => setTimeout(r, ms));
|
|
16
|
+
/**
|
|
17
|
+
* Broadcast List Manager
|
|
18
|
+
*/
|
|
19
|
+
export class BroadcastManager {
|
|
20
|
+
constructor(sendMessage) {
|
|
21
|
+
this.lists = new Map();
|
|
22
|
+
this.sendMessage = sendMessage;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Generate unique ID
|
|
26
|
+
*/
|
|
27
|
+
generateId() {
|
|
28
|
+
return `bl_${Date.now()}_${Math.random().toString(36).substring(2, 9)}`;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Create a new broadcast list
|
|
32
|
+
*/
|
|
33
|
+
create(options) {
|
|
34
|
+
const list = {
|
|
35
|
+
id: options.id ?? this.generateId(),
|
|
36
|
+
name: options.name,
|
|
37
|
+
description: options.description,
|
|
38
|
+
recipients: [...new Set(options.recipients)], // Remove duplicates
|
|
39
|
+
createdAt: new Date(),
|
|
40
|
+
updatedAt: new Date(),
|
|
41
|
+
metadata: options.metadata
|
|
42
|
+
};
|
|
43
|
+
this.lists.set(list.id, list);
|
|
44
|
+
return list;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Get a broadcast list by ID
|
|
48
|
+
*/
|
|
49
|
+
get(id) {
|
|
50
|
+
return this.lists.get(id);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Get list by name
|
|
54
|
+
*/
|
|
55
|
+
getByName(name) {
|
|
56
|
+
return Array.from(this.lists.values()).find(l => l.name === name);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Get all broadcast lists
|
|
60
|
+
*/
|
|
61
|
+
getAll() {
|
|
62
|
+
return Array.from(this.lists.values());
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Update a broadcast list
|
|
66
|
+
*/
|
|
67
|
+
update(id, updates) {
|
|
68
|
+
const list = this.lists.get(id);
|
|
69
|
+
if (!list)
|
|
70
|
+
return undefined;
|
|
71
|
+
const updated = {
|
|
72
|
+
...list,
|
|
73
|
+
...updates,
|
|
74
|
+
updatedAt: new Date()
|
|
75
|
+
};
|
|
76
|
+
if (updates.recipients) {
|
|
77
|
+
updated.recipients = [...new Set(updates.recipients)];
|
|
78
|
+
}
|
|
79
|
+
this.lists.set(id, updated);
|
|
80
|
+
return updated;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Add recipients to a list
|
|
84
|
+
*/
|
|
85
|
+
addRecipients(id, jids) {
|
|
86
|
+
const list = this.lists.get(id);
|
|
87
|
+
if (!list)
|
|
88
|
+
return undefined;
|
|
89
|
+
const newRecipients = [...new Set([...list.recipients, ...jids])];
|
|
90
|
+
return this.update(id, { recipients: newRecipients });
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Remove recipients from a list
|
|
94
|
+
*/
|
|
95
|
+
removeRecipients(id, jids) {
|
|
96
|
+
const list = this.lists.get(id);
|
|
97
|
+
if (!list)
|
|
98
|
+
return undefined;
|
|
99
|
+
const jidSet = new Set(jids);
|
|
100
|
+
const newRecipients = list.recipients.filter(r => !jidSet.has(r));
|
|
101
|
+
return this.update(id, { recipients: newRecipients });
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Delete a broadcast list
|
|
105
|
+
*/
|
|
106
|
+
delete(id) {
|
|
107
|
+
return this.lists.delete(id);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Send message to a broadcast list
|
|
111
|
+
*/
|
|
112
|
+
async broadcast(listId, content, options = {}) {
|
|
113
|
+
const list = this.lists.get(listId);
|
|
114
|
+
if (!list) {
|
|
115
|
+
throw new Error(`Broadcast list not found: ${listId}`);
|
|
116
|
+
}
|
|
117
|
+
const delay = options.delay ?? 1000;
|
|
118
|
+
const randomDelay = options.randomDelay ?? 500;
|
|
119
|
+
const continueOnError = options.continueOnError ?? true;
|
|
120
|
+
const result = {
|
|
121
|
+
listId: list.id,
|
|
122
|
+
listName: list.name,
|
|
123
|
+
totalRecipients: list.recipients.length,
|
|
124
|
+
sent: 0,
|
|
125
|
+
failed: 0,
|
|
126
|
+
results: [],
|
|
127
|
+
startedAt: new Date(),
|
|
128
|
+
completedAt: new Date()
|
|
129
|
+
};
|
|
130
|
+
for (let i = 0; i < list.recipients.length; i++) {
|
|
131
|
+
const jid = list.recipients[i];
|
|
132
|
+
if (!jid)
|
|
133
|
+
continue;
|
|
134
|
+
try {
|
|
135
|
+
options.onProgress?.(i + 1, list.recipients.length, jid);
|
|
136
|
+
const message = await this.sendMessage(jid, content);
|
|
137
|
+
result.sent++;
|
|
138
|
+
result.results.push({
|
|
139
|
+
jid,
|
|
140
|
+
success: true,
|
|
141
|
+
messageId: message?.key?.id ?? undefined
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
catch (error) {
|
|
145
|
+
result.failed++;
|
|
146
|
+
result.results.push({
|
|
147
|
+
jid,
|
|
148
|
+
success: false,
|
|
149
|
+
error: error.message
|
|
150
|
+
});
|
|
151
|
+
if (!continueOnError) {
|
|
152
|
+
throw error;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
// Delay between messages
|
|
156
|
+
if (i < list.recipients.length - 1) {
|
|
157
|
+
await sleep(getRandomDelay(delay, randomDelay));
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
result.completedAt = new Date();
|
|
161
|
+
return result;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Send message to multiple lists
|
|
165
|
+
*/
|
|
166
|
+
async broadcastToLists(listIds, content, options = {}) {
|
|
167
|
+
const results = [];
|
|
168
|
+
for (const listId of listIds) {
|
|
169
|
+
try {
|
|
170
|
+
const result = await this.broadcast(listId, content, options);
|
|
171
|
+
results.push(result);
|
|
172
|
+
}
|
|
173
|
+
catch (error) {
|
|
174
|
+
// Continue to next list
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
return results;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Export lists to JSON
|
|
181
|
+
*/
|
|
182
|
+
export() {
|
|
183
|
+
return JSON.stringify(Array.from(this.lists.values()), null, 2);
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Import lists from JSON
|
|
187
|
+
*/
|
|
188
|
+
import(json, overwrite = false) {
|
|
189
|
+
const lists = JSON.parse(json);
|
|
190
|
+
let imported = 0;
|
|
191
|
+
for (const list of lists) {
|
|
192
|
+
if (!overwrite && this.lists.has(list.id)) {
|
|
193
|
+
continue;
|
|
194
|
+
}
|
|
195
|
+
this.lists.set(list.id, {
|
|
196
|
+
...list,
|
|
197
|
+
createdAt: new Date(list.createdAt),
|
|
198
|
+
updatedAt: new Date(list.updatedAt)
|
|
199
|
+
});
|
|
200
|
+
imported++;
|
|
201
|
+
}
|
|
202
|
+
return imported;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Get statistics
|
|
206
|
+
*/
|
|
207
|
+
getStats() {
|
|
208
|
+
const lists = this.getAll();
|
|
209
|
+
const totalRecipients = lists.reduce((sum, l) => sum + l.recipients.length, 0);
|
|
210
|
+
return {
|
|
211
|
+
totalLists: lists.length,
|
|
212
|
+
totalRecipients,
|
|
213
|
+
averageRecipientsPerList: lists.length > 0 ? Math.round(totalRecipients / lists.length) : 0
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Create a broadcast manager
|
|
219
|
+
*/
|
|
220
|
+
export const createBroadcastManager = (sendMessage) => {
|
|
221
|
+
return new BroadcastManager(sendMessage);
|
|
222
|
+
};
|
|
223
|
+
//# sourceMappingURL=broadcast.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"broadcast.js","sourceRoot":"","sources":["../../src/Utils/broadcast.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Baileys-Joss: Bulk Messaging System
|
|
3
|
+
*
|
|
4
|
+
* Fitur untuk mengirim pesan massal dengan rate limiting
|
|
5
|
+
*/
|
|
6
|
+
import type { AnyMessageContent, WAMessage } from '../Types/index.js';
|
|
7
|
+
export interface BulkMessageResult {
|
|
8
|
+
jid: string;
|
|
9
|
+
success: boolean;
|
|
10
|
+
messageId?: string;
|
|
11
|
+
error?: string;
|
|
12
|
+
sentAt?: Date;
|
|
13
|
+
}
|
|
14
|
+
export interface BulkMessageProgress {
|
|
15
|
+
total: number;
|
|
16
|
+
sent: number;
|
|
17
|
+
failed: number;
|
|
18
|
+
remaining: number;
|
|
19
|
+
currentJid?: string;
|
|
20
|
+
percentage: number;
|
|
21
|
+
}
|
|
22
|
+
export interface BulkMessagingOptions {
|
|
23
|
+
/** Delay between each message in milliseconds (default: 1000ms) */
|
|
24
|
+
delayBetweenMessages?: number;
|
|
25
|
+
/** Random delay variation in milliseconds (default: 500ms) */
|
|
26
|
+
randomDelay?: number;
|
|
27
|
+
/** Maximum retries per message (default: 2) */
|
|
28
|
+
maxRetries?: number;
|
|
29
|
+
/** Continue on error (default: true) */
|
|
30
|
+
continueOnError?: boolean;
|
|
31
|
+
/** Callback on progress update */
|
|
32
|
+
onProgress?: (progress: BulkMessageProgress) => void;
|
|
33
|
+
/** Callback on each message sent */
|
|
34
|
+
onMessageSent?: (result: BulkMessageResult) => void;
|
|
35
|
+
/** Callback on error */
|
|
36
|
+
onError?: (jid: string, error: Error) => void;
|
|
37
|
+
/** Callback when all messages are sent */
|
|
38
|
+
onComplete?: (results: BulkMessageResult[]) => void;
|
|
39
|
+
}
|
|
40
|
+
type BulkSendMessageFunction = (jid: string, content: AnyMessageContent) => Promise<WAMessage | undefined>;
|
|
41
|
+
/**
|
|
42
|
+
* Bulk Message Sender - Kirim pesan ke banyak kontak dengan rate limiting
|
|
43
|
+
*/
|
|
44
|
+
export declare class BulkMessageSender {
|
|
45
|
+
private sendMessage;
|
|
46
|
+
private options;
|
|
47
|
+
private isRunning;
|
|
48
|
+
private shouldStop;
|
|
49
|
+
constructor(sendMessage: BulkSendMessageFunction, options?: BulkMessagingOptions);
|
|
50
|
+
/**
|
|
51
|
+
* Send same message to multiple recipients
|
|
52
|
+
*/
|
|
53
|
+
sendToMany(jids: string[], content: AnyMessageContent): Promise<BulkMessageResult[]>;
|
|
54
|
+
/**
|
|
55
|
+
* Send different messages to different recipients
|
|
56
|
+
*/
|
|
57
|
+
send(messages: Array<{
|
|
58
|
+
jid: string;
|
|
59
|
+
content: AnyMessageContent;
|
|
60
|
+
}>): Promise<BulkMessageResult[]>;
|
|
61
|
+
/**
|
|
62
|
+
* Stop the current bulk messaging operation
|
|
63
|
+
*/
|
|
64
|
+
stop(): void;
|
|
65
|
+
/**
|
|
66
|
+
* Check if bulk messaging is in progress
|
|
67
|
+
*/
|
|
68
|
+
get running(): boolean;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Create a bulk message sender instance
|
|
72
|
+
*/
|
|
73
|
+
export declare const createBulkSender: (sendMessage: BulkSendMessageFunction, options?: BulkMessagingOptions) => BulkMessageSender;
|
|
74
|
+
/**
|
|
75
|
+
* Simple helper to send message to multiple JIDs
|
|
76
|
+
*/
|
|
77
|
+
export declare const sendBulkMessages: (sendMessage: BulkSendMessageFunction, jids: string[], content: AnyMessageContent, options?: BulkMessagingOptions) => Promise<BulkMessageResult[]>;
|
|
78
|
+
export {};
|
|
79
|
+
//# sourceMappingURL=bulk-messaging.d.ts.map
|