@kangwifi-pro/waliwa 2.1.0 → 3.0.0
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/LICENSE +0 -0
- package/README.md +0 -0
- package/dist/advanced/features.d.ts +0 -0
- package/dist/advanced/features.d.ts.map +0 -0
- package/dist/advanced/features.js +0 -0
- package/dist/advanced/features.js.map +0 -0
- package/dist/auth/auth-state.d.ts +0 -0
- package/dist/auth/auth-state.d.ts.map +0 -0
- package/dist/auth/auth-state.js +0 -0
- package/dist/auth/auth-state.js.map +0 -0
- package/dist/auth/pairing-code.d.ts +0 -0
- package/dist/auth/pairing-code.d.ts.map +0 -0
- package/dist/auth/pairing-code.js +0 -0
- package/dist/auth/pairing-code.js.map +0 -0
- package/dist/auth/qr-code.d.ts +0 -0
- package/dist/auth/qr-code.d.ts.map +0 -0
- package/dist/auth/qr-code.js +0 -0
- package/dist/auth/qr-code.js.map +0 -0
- package/dist/calls/handler.d.ts +0 -0
- package/dist/calls/handler.d.ts.map +0 -0
- package/dist/calls/handler.js +0 -0
- package/dist/calls/handler.js.map +0 -0
- package/dist/community/audio-transcription.d.ts +0 -0
- package/dist/community/audio-transcription.d.ts.map +0 -0
- package/dist/community/audio-transcription.js +0 -0
- package/dist/community/audio-transcription.js.map +0 -0
- package/dist/community/bulk-operations.d.ts +0 -0
- package/dist/community/bulk-operations.d.ts.map +0 -0
- package/dist/community/bulk-operations.js +0 -0
- package/dist/community/bulk-operations.js.map +0 -0
- package/dist/community/community-fixes.d.ts +0 -0
- package/dist/community/community-fixes.d.ts.map +0 -0
- package/dist/community/community-fixes.js +0 -0
- package/dist/community/community-fixes.js.map +0 -0
- package/dist/community/contacts-manager.d.ts +0 -0
- package/dist/community/contacts-manager.d.ts.map +0 -0
- package/dist/community/contacts-manager.js +0 -0
- package/dist/community/contacts-manager.js.map +0 -0
- package/dist/community/disappearing.d.ts +0 -0
- package/dist/community/disappearing.d.ts.map +0 -0
- package/dist/community/disappearing.js +0 -0
- package/dist/community/disappearing.js.map +0 -0
- package/dist/community/index.d.ts +0 -0
- package/dist/community/index.d.ts.map +0 -0
- package/dist/community/index.js +0 -0
- package/dist/community/index.js.map +0 -0
- package/dist/community/live-location.d.ts +0 -0
- package/dist/community/live-location.d.ts.map +0 -0
- package/dist/community/live-location.js +0 -0
- package/dist/community/live-location.js.map +0 -0
- package/dist/community/message-extras.d.ts +0 -0
- package/dist/community/message-extras.d.ts.map +0 -0
- package/dist/community/message-extras.js +0 -0
- package/dist/community/message-extras.js.map +0 -0
- package/dist/community/newsletter-extended.d.ts +0 -0
- package/dist/community/newsletter-extended.d.ts.map +0 -0
- package/dist/community/newsletter-extended.js +0 -0
- package/dist/community/newsletter-extended.js.map +0 -0
- package/dist/community/privacy-manager.d.ts +0 -0
- package/dist/community/privacy-manager.d.ts.map +0 -0
- package/dist/community/privacy-manager.js +0 -0
- package/dist/community/privacy-manager.js.map +0 -0
- package/dist/community/profile-manager.d.ts +0 -0
- package/dist/community/profile-manager.d.ts.map +0 -0
- package/dist/community/profile-manager.js +0 -0
- package/dist/community/profile-manager.js.map +0 -0
- package/dist/community/status-extended.d.ts +0 -0
- package/dist/community/status-extended.d.ts.map +0 -0
- package/dist/community/status-extended.js +0 -0
- package/dist/community/status-extended.js.map +0 -0
- package/dist/community/sticker-manager.d.ts +0 -0
- package/dist/community/sticker-manager.d.ts.map +0 -0
- package/dist/community/sticker-manager.js +0 -0
- package/dist/community/sticker-manager.js.map +0 -0
- package/dist/core/binary.d.ts +0 -0
- package/dist/core/binary.d.ts.map +0 -0
- package/dist/core/binary.js +0 -0
- package/dist/core/binary.js.map +0 -0
- package/dist/core/client-payload.d.ts +0 -0
- package/dist/core/client-payload.d.ts.map +0 -0
- package/dist/core/client-payload.js +0 -0
- package/dist/core/client-payload.js.map +0 -0
- package/dist/core/crypto.d.ts +0 -0
- package/dist/core/crypto.d.ts.map +0 -0
- package/dist/core/crypto.js +0 -0
- package/dist/core/crypto.js.map +0 -0
- package/dist/core/noise.d.ts +0 -0
- package/dist/core/noise.d.ts.map +0 -0
- package/dist/core/noise.js +0 -0
- package/dist/core/noise.js.map +0 -0
- package/dist/events/emitter.d.ts +0 -0
- package/dist/events/emitter.d.ts.map +0 -0
- package/dist/events/emitter.js +0 -0
- package/dist/events/emitter.js.map +0 -0
- package/dist/features/index.d.ts +0 -0
- package/dist/features/index.d.ts.map +0 -0
- package/dist/features/index.js +0 -0
- package/dist/features/index.js.map +0 -0
- package/dist/fixes/index.d.ts +0 -0
- package/dist/fixes/index.d.ts.map +0 -0
- package/dist/fixes/index.js +0 -0
- package/dist/fixes/index.js.map +0 -0
- package/dist/groups/management.d.ts +0 -0
- package/dist/groups/management.d.ts.map +0 -0
- package/dist/groups/management.js +0 -0
- package/dist/groups/management.js.map +0 -0
- package/dist/helpers/automation.d.ts +84 -0
- package/dist/helpers/automation.d.ts.map +1 -0
- package/dist/helpers/automation.js +245 -0
- package/dist/helpers/automation.js.map +1 -0
- package/dist/helpers/builder.d.ts +263 -0
- package/dist/helpers/builder.d.ts.map +1 -0
- package/dist/helpers/builder.js +446 -0
- package/dist/helpers/builder.js.map +1 -0
- package/dist/helpers/command.d.ts +130 -0
- package/dist/helpers/command.d.ts.map +1 -0
- package/dist/helpers/command.js +281 -0
- package/dist/helpers/command.js.map +1 -0
- package/dist/helpers/defaults.d.ts +2 -0
- package/dist/helpers/defaults.d.ts.map +1 -1
- package/dist/helpers/defaults.js +5 -3
- package/dist/helpers/defaults.js.map +1 -1
- package/dist/helpers/media.d.ts +0 -0
- package/dist/helpers/media.d.ts.map +1 -1
- package/dist/helpers/media.js +0 -0
- package/dist/helpers/media.js.map +1 -1
- package/dist/helpers/message.d.ts +0 -0
- package/dist/helpers/message.d.ts.map +1 -1
- package/dist/helpers/message.js +0 -0
- package/dist/helpers/message.js.map +1 -1
- package/dist/helpers/plugin.d.ts +77 -0
- package/dist/helpers/plugin.d.ts.map +1 -0
- package/dist/helpers/plugin.js +180 -0
- package/dist/helpers/plugin.js.map +1 -0
- package/dist/helpers/sticker.d.ts +0 -0
- package/dist/helpers/sticker.d.ts.map +1 -1
- package/dist/helpers/sticker.js +0 -0
- package/dist/helpers/sticker.js.map +1 -1
- package/dist/index.d.ts +23 -21
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +45 -23
- package/dist/index.js.map +1 -1
- package/dist/messages/media.d.ts +0 -0
- package/dist/messages/media.d.ts.map +0 -0
- package/dist/messages/media.js +0 -0
- package/dist/messages/media.js.map +0 -0
- package/dist/messages/message-encoder.d.ts +0 -0
- package/dist/messages/message-encoder.d.ts.map +0 -0
- package/dist/messages/message-encoder.js +0 -0
- package/dist/messages/message-encoder.js.map +0 -0
- package/dist/messages/send.d.ts +0 -0
- package/dist/messages/send.d.ts.map +0 -0
- package/dist/messages/send.js +0 -0
- package/dist/messages/send.js.map +0 -0
- package/dist/recovery/index.d.ts +0 -0
- package/dist/recovery/index.d.ts.map +0 -0
- package/dist/recovery/index.js +0 -0
- package/dist/recovery/index.js.map +0 -0
- package/dist/skdm/index.d.ts +0 -0
- package/dist/skdm/index.d.ts.map +0 -0
- package/dist/skdm/index.js +0 -0
- package/dist/skdm/index.js.map +0 -0
- package/dist/socket/hybrid.d.ts +0 -0
- package/dist/socket/hybrid.d.ts.map +0 -0
- package/dist/socket/hybrid.js +0 -0
- package/dist/socket/hybrid.js.map +0 -0
- package/dist/socket/wa-socket.d.ts +0 -0
- package/dist/socket/wa-socket.d.ts.map +0 -0
- package/dist/socket/wa-socket.js +0 -0
- package/dist/socket/wa-socket.js.map +0 -0
- package/dist/socket/ws-socket.d.ts +0 -0
- package/dist/socket/ws-socket.d.ts.map +0 -0
- package/dist/socket/ws-socket.js +0 -0
- package/dist/socket/ws-socket.js.map +0 -0
- package/dist/types/index.d.ts +0 -0
- package/dist/types/index.d.ts.map +0 -0
- package/dist/types/index.js +0 -0
- package/dist/types/index.js.map +0 -0
- package/dist/utils/jid.d.ts +0 -0
- package/dist/utils/jid.d.ts.map +0 -0
- package/dist/utils/jid.js +0 -0
- package/dist/utils/jid.js.map +0 -0
- package/dist/utils/logger.d.ts +0 -0
- package/dist/utils/logger.d.ts.map +0 -0
- package/dist/utils/logger.js +0 -0
- package/dist/utils/logger.js.map +0 -0
- package/dist/utils/retry.d.ts +0 -0
- package/dist/utils/retry.d.ts.map +0 -0
- package/dist/utils/retry.js +0 -0
- package/dist/utils/retry.js.map +0 -0
- package/package.json +12 -12
package/LICENSE
CHANGED
|
File without changes
|
package/README.md
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/dist/auth/auth-state.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/dist/auth/qr-code.d.ts
CHANGED
|
File without changes
|
|
File without changes
|
package/dist/auth/qr-code.js
CHANGED
|
File without changes
|
package/dist/auth/qr-code.js.map
CHANGED
|
File without changes
|
package/dist/calls/handler.d.ts
CHANGED
|
File without changes
|
|
File without changes
|
package/dist/calls/handler.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/dist/community/index.js
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/dist/core/binary.d.ts
CHANGED
|
File without changes
|
|
File without changes
|
package/dist/core/binary.js
CHANGED
|
File without changes
|
package/dist/core/binary.js.map
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/dist/core/crypto.d.ts
CHANGED
|
File without changes
|
|
File without changes
|
package/dist/core/crypto.js
CHANGED
|
File without changes
|
package/dist/core/crypto.js.map
CHANGED
|
File without changes
|
package/dist/core/noise.d.ts
CHANGED
|
File without changes
|
package/dist/core/noise.d.ts.map
CHANGED
|
File without changes
|
package/dist/core/noise.js
CHANGED
|
File without changes
|
package/dist/core/noise.js.map
CHANGED
|
File without changes
|
package/dist/events/emitter.d.ts
CHANGED
|
File without changes
|
|
File without changes
|
package/dist/events/emitter.js
CHANGED
|
File without changes
|
|
File without changes
|
package/dist/features/index.d.ts
CHANGED
|
File without changes
|
|
File without changes
|
package/dist/features/index.js
CHANGED
|
File without changes
|
|
File without changes
|
package/dist/fixes/index.d.ts
CHANGED
|
File without changes
|
|
File without changes
|
package/dist/fixes/index.js
CHANGED
|
File without changes
|
package/dist/fixes/index.js.map
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Waliwa - Automation Module (from zaileys concept)
|
|
3
|
+
*
|
|
4
|
+
* Auto features:
|
|
5
|
+
* - AutoRejectCall: auto-reject incoming calls
|
|
6
|
+
* - AutoDelete: auto-delete old messages
|
|
7
|
+
* - AutoRead: auto-mark messages as read
|
|
8
|
+
* - AutoPresence: auto typing/recording indicator
|
|
9
|
+
* - Broadcast: send to multiple recipients with delay
|
|
10
|
+
* - RateLimiter: per-recipient rate limiting
|
|
11
|
+
* - Scheduler: schedule messages for future delivery
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* import { AutoRejectCall, AutoRead, AutoPresence } from 'waliwa';
|
|
16
|
+
*
|
|
17
|
+
* const autoReject = new AutoRejectCall(sock);
|
|
18
|
+
* autoReject.start();
|
|
19
|
+
*
|
|
20
|
+
* const autoRead = new AutoRead(sock);
|
|
21
|
+
* autoRead.start();
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export declare class AutoRejectCall {
|
|
25
|
+
private sock;
|
|
26
|
+
private enabled;
|
|
27
|
+
private whitelist;
|
|
28
|
+
constructor(sock: any);
|
|
29
|
+
start(): void;
|
|
30
|
+
allow(jid: string): void;
|
|
31
|
+
stop(): void;
|
|
32
|
+
}
|
|
33
|
+
export declare class AutoRead {
|
|
34
|
+
private sock;
|
|
35
|
+
private enabled;
|
|
36
|
+
private excludeGroups;
|
|
37
|
+
constructor(sock: any, opts?: {
|
|
38
|
+
excludeGroups?: boolean;
|
|
39
|
+
});
|
|
40
|
+
start(): void;
|
|
41
|
+
stop(): void;
|
|
42
|
+
}
|
|
43
|
+
export declare class AutoPresence {
|
|
44
|
+
private sock;
|
|
45
|
+
private enabled;
|
|
46
|
+
private typingTimers;
|
|
47
|
+
constructor(sock: any);
|
|
48
|
+
start(): void;
|
|
49
|
+
stop(): void;
|
|
50
|
+
}
|
|
51
|
+
export declare class Broadcast {
|
|
52
|
+
private sock;
|
|
53
|
+
private defaultDelay;
|
|
54
|
+
constructor(sock: any, defaultDelayMs?: number);
|
|
55
|
+
send(jids: string[], content: any, opts?: {
|
|
56
|
+
delayMs?: number;
|
|
57
|
+
onProgress?: (current: number, total: number) => void;
|
|
58
|
+
}): Promise<Array<{
|
|
59
|
+
jid: string;
|
|
60
|
+
success: boolean;
|
|
61
|
+
error?: string;
|
|
62
|
+
}>>;
|
|
63
|
+
sendText(jids: string[], text: string, opts?: any): Promise<any>;
|
|
64
|
+
}
|
|
65
|
+
export declare class Scheduler {
|
|
66
|
+
private sock;
|
|
67
|
+
private jobs;
|
|
68
|
+
constructor(sock: any);
|
|
69
|
+
schedule(id: string, jid: string, content: any, delayMs: number): string;
|
|
70
|
+
cancel(id: string): boolean;
|
|
71
|
+
list(): Array<{
|
|
72
|
+
id: string;
|
|
73
|
+
jid: string;
|
|
74
|
+
}>;
|
|
75
|
+
cancelAll(): void;
|
|
76
|
+
}
|
|
77
|
+
export declare class RateLimiter {
|
|
78
|
+
private limits;
|
|
79
|
+
setLimit(jid: string, max: number, windowMs: number): void;
|
|
80
|
+
canSend(jid: string): boolean;
|
|
81
|
+
getRemaining(jid: string): number;
|
|
82
|
+
reset(jid: string): void;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=automation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"automation.d.ts","sourceRoot":"","sources":["../../src/helpers/automation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,qBAAa,cAAc;IACzB,OAAO,CAAC,IAAI,CAAM;IAClB,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,SAAS,CAA0B;IAE3C,YAAY,IAAI,EAAE,GAAG,EAEpB;IAED,KAAK,IAAI,IAAI,CAUZ;IAED,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEvB;IAED,IAAI,IAAI,IAAI,CAEX;CACF;AAED,qBAAa,QAAQ;IACnB,OAAO,CAAC,IAAI,CAAM;IAClB,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,aAAa,CAAkB;IAEvC,YAAY,IAAI,EAAE,GAAG,EAAE,IAAI,GAAE;QAAE,aAAa,CAAC,EAAE,OAAO,CAAA;KAAO,EAG5D;IAED,KAAK,IAAI,IAAI,CAsBZ;IAED,IAAI,IAAI,IAAI,CAEX;CACF;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,IAAI,CAAM;IAClB,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,YAAY,CAA0C;IAE9D,YAAY,IAAI,EAAE,GAAG,EAEpB;IAED,KAAK,IAAI,IAAI,CAiCZ;IAED,IAAI,IAAI,IAAI,CAMX;CACF;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,IAAI,CAAM;IAClB,OAAO,CAAC,YAAY,CAAS;IAE7B,YAAY,IAAI,EAAE,GAAG,EAAE,cAAc,GAAE,MAAa,EAGnD;IAEK,IAAI,CACR,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,GAAG,EACZ,IAAI,GAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;KAAO,GACrF,OAAO,CAAC,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAmBnE;IAEK,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAErE;CACF;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,IAAI,CAAM;IAClB,OAAO,CAAC,IAAI,CAAkF;IAE9F,YAAY,IAAI,EAAE,GAAG,EAEpB;IAED,QAAQ,CACN,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,GAAG,EACZ,OAAO,EAAE,MAAM,GACd,MAAM,CAeR;IAED,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAM1B;IAED,IAAI,IAAI,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAKzC;IAED,SAAS,IAAI,IAAI,CAKhB;CACF;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAiF;IAE/F,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAEzD;IAED,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAU5B;IAED,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAIhC;IAED,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAGvB;CACF"}
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Waliwa - Automation Module (from zaileys concept)
|
|
4
|
+
*
|
|
5
|
+
* Auto features:
|
|
6
|
+
* - AutoRejectCall: auto-reject incoming calls
|
|
7
|
+
* - AutoDelete: auto-delete old messages
|
|
8
|
+
* - AutoRead: auto-mark messages as read
|
|
9
|
+
* - AutoPresence: auto typing/recording indicator
|
|
10
|
+
* - Broadcast: send to multiple recipients with delay
|
|
11
|
+
* - RateLimiter: per-recipient rate limiting
|
|
12
|
+
* - Scheduler: schedule messages for future delivery
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* import { AutoRejectCall, AutoRead, AutoPresence } from 'waliwa';
|
|
17
|
+
*
|
|
18
|
+
* const autoReject = new AutoRejectCall(sock);
|
|
19
|
+
* autoReject.start();
|
|
20
|
+
*
|
|
21
|
+
* const autoRead = new AutoRead(sock);
|
|
22
|
+
* autoRead.start();
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.RateLimiter = exports.Scheduler = exports.Broadcast = exports.AutoPresence = exports.AutoRead = exports.AutoRejectCall = void 0;
|
|
27
|
+
class AutoRejectCall {
|
|
28
|
+
sock;
|
|
29
|
+
enabled = false;
|
|
30
|
+
whitelist = new Set();
|
|
31
|
+
constructor(sock) {
|
|
32
|
+
this.sock = sock;
|
|
33
|
+
}
|
|
34
|
+
start() {
|
|
35
|
+
if (this.enabled)
|
|
36
|
+
return;
|
|
37
|
+
this.enabled = true;
|
|
38
|
+
this.sock.ev.on('call', (calls) => {
|
|
39
|
+
for (const call of calls) {
|
|
40
|
+
if (call.status === 'ringing' && !this.whitelist.has(call.from)) {
|
|
41
|
+
this.sock.rejectCall(call.id, call.from).catch(() => { });
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
allow(jid) {
|
|
47
|
+
this.whitelist.add(jid);
|
|
48
|
+
}
|
|
49
|
+
stop() {
|
|
50
|
+
this.enabled = false;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
exports.AutoRejectCall = AutoRejectCall;
|
|
54
|
+
class AutoRead {
|
|
55
|
+
sock;
|
|
56
|
+
enabled = false;
|
|
57
|
+
excludeGroups = false;
|
|
58
|
+
constructor(sock, opts = {}) {
|
|
59
|
+
this.sock = sock;
|
|
60
|
+
this.excludeGroups = opts.excludeGroups ?? false;
|
|
61
|
+
}
|
|
62
|
+
start() {
|
|
63
|
+
if (this.enabled)
|
|
64
|
+
return;
|
|
65
|
+
this.enabled = true;
|
|
66
|
+
this.sock.ev.on('messages.upsert', async ({ messages, type }) => {
|
|
67
|
+
if (type !== 'notify')
|
|
68
|
+
return;
|
|
69
|
+
for (const msg of messages) {
|
|
70
|
+
if (msg.key?.fromMe)
|
|
71
|
+
continue;
|
|
72
|
+
const jid = msg.key?.remoteJid;
|
|
73
|
+
if (!jid)
|
|
74
|
+
continue;
|
|
75
|
+
if (this.excludeGroups && jid.endsWith('@g.us'))
|
|
76
|
+
continue;
|
|
77
|
+
try {
|
|
78
|
+
await this.sock.readMessages([msg.key]);
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
// ignore
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
stop() {
|
|
87
|
+
this.enabled = false;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
exports.AutoRead = AutoRead;
|
|
91
|
+
class AutoPresence {
|
|
92
|
+
sock;
|
|
93
|
+
enabled = false;
|
|
94
|
+
typingTimers = new Map();
|
|
95
|
+
constructor(sock) {
|
|
96
|
+
this.sock = sock;
|
|
97
|
+
}
|
|
98
|
+
start() {
|
|
99
|
+
if (this.enabled)
|
|
100
|
+
return;
|
|
101
|
+
this.enabled = true;
|
|
102
|
+
this.sock.ev.on('messages.upsert', async ({ messages, type }) => {
|
|
103
|
+
if (type !== 'notify')
|
|
104
|
+
return;
|
|
105
|
+
for (const msg of messages) {
|
|
106
|
+
if (msg.key?.fromMe)
|
|
107
|
+
continue;
|
|
108
|
+
const jid = msg.key?.remoteJid;
|
|
109
|
+
if (!jid)
|
|
110
|
+
continue;
|
|
111
|
+
// Clear existing timer
|
|
112
|
+
const existing = this.typingTimers.get(jid);
|
|
113
|
+
if (existing)
|
|
114
|
+
clearTimeout(existing);
|
|
115
|
+
// Send typing indicator
|
|
116
|
+
try {
|
|
117
|
+
await this.sock.sendPresenceUpdate('composing', jid);
|
|
118
|
+
// Stop after 3 seconds
|
|
119
|
+
this.typingTimers.set(jid, setTimeout(async () => {
|
|
120
|
+
try {
|
|
121
|
+
await this.sock.sendPresenceUpdate('paused', jid);
|
|
122
|
+
}
|
|
123
|
+
catch { }
|
|
124
|
+
this.typingTimers.delete(jid);
|
|
125
|
+
}, 3000));
|
|
126
|
+
}
|
|
127
|
+
catch {
|
|
128
|
+
// ignore
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
stop() {
|
|
134
|
+
this.enabled = false;
|
|
135
|
+
for (const timer of this.typingTimers.values()) {
|
|
136
|
+
clearTimeout(timer);
|
|
137
|
+
}
|
|
138
|
+
this.typingTimers.clear();
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
exports.AutoPresence = AutoPresence;
|
|
142
|
+
class Broadcast {
|
|
143
|
+
sock;
|
|
144
|
+
defaultDelay;
|
|
145
|
+
constructor(sock, defaultDelayMs = 1000) {
|
|
146
|
+
this.sock = sock;
|
|
147
|
+
this.defaultDelay = defaultDelayMs;
|
|
148
|
+
}
|
|
149
|
+
async send(jids, content, opts = {}) {
|
|
150
|
+
const { delayMs = this.defaultDelay, onProgress } = opts;
|
|
151
|
+
const results = [];
|
|
152
|
+
for (let i = 0; i < jids.length; i++) {
|
|
153
|
+
const jid = jids[i];
|
|
154
|
+
try {
|
|
155
|
+
await this.sock.sendMessage(jid, content);
|
|
156
|
+
results.push({ jid, success: true });
|
|
157
|
+
}
|
|
158
|
+
catch (err) {
|
|
159
|
+
results.push({ jid, success: false, error: err.message });
|
|
160
|
+
}
|
|
161
|
+
onProgress?.(i + 1, jids.length);
|
|
162
|
+
if (delayMs > 0 && i < jids.length - 1) {
|
|
163
|
+
await new Promise(resolve => setTimeout(resolve, delayMs));
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
return results;
|
|
167
|
+
}
|
|
168
|
+
async sendText(jids, text, opts) {
|
|
169
|
+
return this.send(jids, { text }, opts);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
exports.Broadcast = Broadcast;
|
|
173
|
+
class Scheduler {
|
|
174
|
+
sock;
|
|
175
|
+
jobs = new Map();
|
|
176
|
+
constructor(sock) {
|
|
177
|
+
this.sock = sock;
|
|
178
|
+
}
|
|
179
|
+
schedule(id, jid, content, delayMs) {
|
|
180
|
+
// Cancel existing job with same ID
|
|
181
|
+
this.cancel(id);
|
|
182
|
+
const timeout = setTimeout(async () => {
|
|
183
|
+
try {
|
|
184
|
+
await this.sock.sendMessage(jid, content);
|
|
185
|
+
}
|
|
186
|
+
catch (err) {
|
|
187
|
+
console.error(`Scheduled message ${id} failed:`, err.message);
|
|
188
|
+
}
|
|
189
|
+
this.jobs.delete(id);
|
|
190
|
+
}, delayMs);
|
|
191
|
+
this.jobs.set(id, { jid, content, timeout });
|
|
192
|
+
return id;
|
|
193
|
+
}
|
|
194
|
+
cancel(id) {
|
|
195
|
+
const job = this.jobs.get(id);
|
|
196
|
+
if (!job)
|
|
197
|
+
return false;
|
|
198
|
+
clearTimeout(job.timeout);
|
|
199
|
+
this.jobs.delete(id);
|
|
200
|
+
return true;
|
|
201
|
+
}
|
|
202
|
+
list() {
|
|
203
|
+
return Array.from(this.jobs.entries()).map(([id, job]) => ({
|
|
204
|
+
id,
|
|
205
|
+
jid: job.jid
|
|
206
|
+
}));
|
|
207
|
+
}
|
|
208
|
+
cancelAll() {
|
|
209
|
+
for (const job of this.jobs.values()) {
|
|
210
|
+
clearTimeout(job.timeout);
|
|
211
|
+
}
|
|
212
|
+
this.jobs.clear();
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
exports.Scheduler = Scheduler;
|
|
216
|
+
class RateLimiter {
|
|
217
|
+
limits = new Map();
|
|
218
|
+
setLimit(jid, max, windowMs) {
|
|
219
|
+
this.limits.set(jid, { max, windowMs, requests: [] });
|
|
220
|
+
}
|
|
221
|
+
canSend(jid) {
|
|
222
|
+
const limit = this.limits.get(jid);
|
|
223
|
+
if (!limit)
|
|
224
|
+
return true;
|
|
225
|
+
const now = Date.now();
|
|
226
|
+
limit.requests = limit.requests.filter(t => now - t < limit.windowMs);
|
|
227
|
+
if (limit.requests.length >= limit.max)
|
|
228
|
+
return false;
|
|
229
|
+
limit.requests.push(now);
|
|
230
|
+
return true;
|
|
231
|
+
}
|
|
232
|
+
getRemaining(jid) {
|
|
233
|
+
const limit = this.limits.get(jid);
|
|
234
|
+
if (!limit)
|
|
235
|
+
return Infinity;
|
|
236
|
+
return Math.max(0, limit.max - limit.requests.length);
|
|
237
|
+
}
|
|
238
|
+
reset(jid) {
|
|
239
|
+
const limit = this.limits.get(jid);
|
|
240
|
+
if (limit)
|
|
241
|
+
limit.requests = [];
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
exports.RateLimiter = RateLimiter;
|
|
245
|
+
//# sourceMappingURL=automation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"automation.js","sourceRoot":"","sources":["../../src/helpers/automation.ts"],"names":[],"mappings":"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"}
|