botcast-sdk 1.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 +21 -0
- package/README.md +257 -0
- package/dist/client.cjs +91 -0
- package/dist/client.d.ts +64 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +87 -0
- package/dist/errors.cjs +59 -0
- package/dist/errors.d.ts +25 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +49 -0
- package/dist/index.cjs +26 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/modules/base.cjs +113 -0
- package/dist/modules/base.d.ts +22 -0
- package/dist/modules/base.d.ts.map +1 -0
- package/dist/modules/base.js +109 -0
- package/dist/modules/broadcast.cjs +30 -0
- package/dist/modules/broadcast.d.ts +27 -0
- package/dist/modules/broadcast.d.ts.map +1 -0
- package/dist/modules/broadcast.js +26 -0
- package/dist/modules/chats.cjs +113 -0
- package/dist/modules/chats.d.ts +106 -0
- package/dist/modules/chats.d.ts.map +1 -0
- package/dist/modules/chats.js +109 -0
- package/dist/modules/groups.cjs +200 -0
- package/dist/modules/groups.d.ts +139 -0
- package/dist/modules/groups.d.ts.map +1 -0
- package/dist/modules/groups.js +196 -0
- package/dist/modules/instances.cjs +138 -0
- package/dist/modules/instances.d.ts +91 -0
- package/dist/modules/instances.d.ts.map +1 -0
- package/dist/modules/instances.js +134 -0
- package/dist/modules/messages.cjs +217 -0
- package/dist/modules/messages.d.ts +155 -0
- package/dist/modules/messages.d.ts.map +1 -0
- package/dist/modules/messages.js +213 -0
- package/dist/modules/profile.cjs +129 -0
- package/dist/modules/profile.d.ts +92 -0
- package/dist/modules/profile.d.ts.map +1 -0
- package/dist/modules/profile.js +125 -0
- package/dist/types/chats.cjs +2 -0
- package/dist/types/chats.d.ts +62 -0
- package/dist/types/chats.d.ts.map +1 -0
- package/dist/types/chats.js +1 -0
- package/dist/types/groups.cjs +2 -0
- package/dist/types/groups.d.ts +47 -0
- package/dist/types/groups.d.ts.map +1 -0
- package/dist/types/groups.js +1 -0
- package/dist/types/index.cjs +22 -0
- package/dist/types/index.d.ts +34 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +6 -0
- package/dist/types/instances.cjs +2 -0
- package/dist/types/instances.d.ts +65 -0
- package/dist/types/instances.d.ts.map +1 -0
- package/dist/types/instances.js +1 -0
- package/dist/types/messages.cjs +2 -0
- package/dist/types/messages.d.ts +86 -0
- package/dist/types/messages.d.ts.map +1 -0
- package/dist/types/messages.js +1 -0
- package/dist/types/profile.cjs +2 -0
- package/dist/types/profile.d.ts +25 -0
- package/dist/types/profile.d.ts.map +1 -0
- package/dist/types/profile.js +1 -0
- package/dist/types/webhooks.cjs +2 -0
- package/dist/types/webhooks.d.ts +17 -0
- package/dist/types/webhooks.d.ts.map +1 -0
- package/dist/types/webhooks.js +1 -0
- package/dist/webhooks/index.cjs +71 -0
- package/dist/webhooks/index.d.ts +26 -0
- package/dist/webhooks/index.d.ts.map +1 -0
- package/dist/webhooks/index.js +67 -0
- package/package.json +61 -0
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { BaseModule } from './base.js';
|
|
2
|
+
export class ProfileModule extends BaseModule {
|
|
3
|
+
/**
|
|
4
|
+
* Fetches the bio / text status of a phone number or the current instance.
|
|
5
|
+
*/
|
|
6
|
+
async getStatus(targetPhoneOrJid) {
|
|
7
|
+
return this.request({
|
|
8
|
+
method: 'GET',
|
|
9
|
+
path: this.buildPath('profile/status'),
|
|
10
|
+
query: targetPhoneOrJid ? { phone: targetPhoneOrJid } : undefined,
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Updates the about / bio status of the connected WhatsApp instance.
|
|
15
|
+
*/
|
|
16
|
+
async setStatus(status) {
|
|
17
|
+
return this.request({
|
|
18
|
+
method: 'POST',
|
|
19
|
+
path: this.buildPath('profile/status'),
|
|
20
|
+
body: { status },
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Updates the public display name of the instance.
|
|
25
|
+
*/
|
|
26
|
+
async setName(name) {
|
|
27
|
+
return this.request({
|
|
28
|
+
method: 'POST',
|
|
29
|
+
path: this.buildPath('profile/name'),
|
|
30
|
+
body: { name },
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Fetches the profile picture URL of a contact or group.
|
|
35
|
+
*/
|
|
36
|
+
async getPicture(targetPhoneOrJid, highRes = false) {
|
|
37
|
+
return this.request({
|
|
38
|
+
method: 'GET',
|
|
39
|
+
path: this.buildPath('profile/picture'),
|
|
40
|
+
query: {
|
|
41
|
+
phone: targetPhoneOrJid,
|
|
42
|
+
highRes,
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Updates the profile picture for the instance or a group.
|
|
48
|
+
*/
|
|
49
|
+
async setPicture(imageSource, targetJid) {
|
|
50
|
+
return this.request({
|
|
51
|
+
method: 'POST',
|
|
52
|
+
path: this.buildPath('profile/picture'),
|
|
53
|
+
body: { jid: targetJid, ...imageSource },
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Removes the profile picture.
|
|
58
|
+
*/
|
|
59
|
+
async removePicture(targetJid) {
|
|
60
|
+
return this.request({
|
|
61
|
+
method: 'DELETE',
|
|
62
|
+
path: this.buildPath('profile/picture'),
|
|
63
|
+
body: { jid: targetJid },
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Fetches WhatsApp Business profile information (category, email, hours).
|
|
68
|
+
*/
|
|
69
|
+
async getBusinessProfile(targetPhoneOrJid) {
|
|
70
|
+
return this.request({
|
|
71
|
+
method: 'GET',
|
|
72
|
+
path: this.buildPath('profile/business'),
|
|
73
|
+
query: { phone: targetPhoneOrJid },
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Blocks a user on WhatsApp.
|
|
78
|
+
*/
|
|
79
|
+
async block(targetPhoneOrJid) {
|
|
80
|
+
return this.request({
|
|
81
|
+
method: 'POST',
|
|
82
|
+
path: this.buildPath('privacy/block'),
|
|
83
|
+
body: { phone: targetPhoneOrJid, action: 'block' },
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Unblocks a previously blocked user.
|
|
88
|
+
*/
|
|
89
|
+
async unblock(targetPhoneOrJid) {
|
|
90
|
+
return this.request({
|
|
91
|
+
method: 'POST',
|
|
92
|
+
path: this.buildPath('privacy/block'),
|
|
93
|
+
body: { phone: targetPhoneOrJid, action: 'unblock' },
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Fetches the full blocklist.
|
|
98
|
+
*/
|
|
99
|
+
async getBlocklist() {
|
|
100
|
+
return this.request({
|
|
101
|
+
method: 'GET',
|
|
102
|
+
path: this.buildPath('privacy/blocklist'),
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Fetches WhatsApp privacy settings.
|
|
107
|
+
*/
|
|
108
|
+
async getPrivacySettings(force = false) {
|
|
109
|
+
return this.request({
|
|
110
|
+
method: 'GET',
|
|
111
|
+
path: this.buildPath('privacy/settings'),
|
|
112
|
+
query: { force },
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Updates a WhatsApp privacy configuration (lastSeen, online, profilePicture, status, readReceipts).
|
|
117
|
+
*/
|
|
118
|
+
async updatePrivacySetting(type, value) {
|
|
119
|
+
return this.request({
|
|
120
|
+
method: 'POST',
|
|
121
|
+
path: this.buildPath('privacy/update'),
|
|
122
|
+
body: { type, value },
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { MessageKey } from './messages.js';
|
|
2
|
+
export interface ChatItem {
|
|
3
|
+
id: string;
|
|
4
|
+
name?: string;
|
|
5
|
+
unreadCount?: number;
|
|
6
|
+
readOnly?: boolean;
|
|
7
|
+
ephemeralExpiration?: number;
|
|
8
|
+
lastMessageTimestamp?: number;
|
|
9
|
+
}
|
|
10
|
+
export interface ContactItem {
|
|
11
|
+
id: string;
|
|
12
|
+
jid: string;
|
|
13
|
+
phoneNumber: string;
|
|
14
|
+
name?: string;
|
|
15
|
+
notify?: string;
|
|
16
|
+
updated_at?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface SyncedMessageItem {
|
|
19
|
+
id: string;
|
|
20
|
+
instance_id: string;
|
|
21
|
+
chat_jid: string;
|
|
22
|
+
sender_jid: string;
|
|
23
|
+
from_me: number;
|
|
24
|
+
message_type: string;
|
|
25
|
+
body: string;
|
|
26
|
+
timestamp: number;
|
|
27
|
+
}
|
|
28
|
+
export interface ListChatsParams {
|
|
29
|
+
search?: string;
|
|
30
|
+
limit?: number;
|
|
31
|
+
offset?: number;
|
|
32
|
+
}
|
|
33
|
+
export interface ListContactsParams {
|
|
34
|
+
search?: string;
|
|
35
|
+
limit?: number;
|
|
36
|
+
offset?: number;
|
|
37
|
+
}
|
|
38
|
+
export interface ListMessagesParams {
|
|
39
|
+
chatJid?: string;
|
|
40
|
+
limit?: number;
|
|
41
|
+
offset?: number;
|
|
42
|
+
}
|
|
43
|
+
export type ChatAction = 'archive' | 'unarchive' | 'mute' | 'unmute' | 'mark_read' | 'mark_unread' | 'delete_chat' | 'delete_for_me' | 'clear' | 'pin' | 'unpin' | 'star';
|
|
44
|
+
export interface ChatModifyOptions {
|
|
45
|
+
jid?: string;
|
|
46
|
+
chatJid?: string;
|
|
47
|
+
recipient?: string;
|
|
48
|
+
phone?: string;
|
|
49
|
+
action?: ChatAction;
|
|
50
|
+
modification?: any;
|
|
51
|
+
duration?: number;
|
|
52
|
+
isPin?: boolean;
|
|
53
|
+
isStar?: boolean;
|
|
54
|
+
lastMessages?: any[];
|
|
55
|
+
messages?: any[];
|
|
56
|
+
}
|
|
57
|
+
export interface FetchHistoryOptions {
|
|
58
|
+
count?: number;
|
|
59
|
+
oldestMsgKey?: MessageKey;
|
|
60
|
+
oldestMsgTimestamp?: number;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=chats.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chats.d.ts","sourceRoot":"","sources":["../../../src/types/chats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,UAAU,GAClB,SAAS,GACT,WAAW,GACX,MAAM,GACN,QAAQ,GACR,WAAW,GACX,aAAa,GACb,aAAa,GACb,eAAe,GACf,OAAO,GACP,KAAK,GACL,OAAO,GACP,MAAM,CAAC;AAEX,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,GAAG,EAAE,CAAC;IACrB,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,UAAU,CAAC;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export type GroupParticipantAction = 'add' | 'remove' | 'promote' | 'demote';
|
|
2
|
+
export type GroupSetting = 'announcement' | 'not_announcement' | 'locked' | 'unlocked';
|
|
3
|
+
export type GroupMemberAddMode = 'all_member_add' | 'admin_add';
|
|
4
|
+
export interface GroupParticipant {
|
|
5
|
+
id: string;
|
|
6
|
+
admin?: 'admin' | 'superadmin' | null;
|
|
7
|
+
}
|
|
8
|
+
export interface GroupMetadata {
|
|
9
|
+
id: string;
|
|
10
|
+
subject: string;
|
|
11
|
+
subjectOwner?: string;
|
|
12
|
+
subjectTime?: number;
|
|
13
|
+
size?: number;
|
|
14
|
+
creation?: number;
|
|
15
|
+
owner?: string;
|
|
16
|
+
desc?: string;
|
|
17
|
+
descId?: string;
|
|
18
|
+
descOwner?: string;
|
|
19
|
+
descTime?: number;
|
|
20
|
+
restrict?: boolean;
|
|
21
|
+
announce?: boolean;
|
|
22
|
+
participants: GroupParticipant[];
|
|
23
|
+
ephemeralDuration?: number;
|
|
24
|
+
inviteCode?: string;
|
|
25
|
+
memberAddMode?: boolean;
|
|
26
|
+
}
|
|
27
|
+
export interface CreateGroupResponse {
|
|
28
|
+
success: boolean;
|
|
29
|
+
message: string;
|
|
30
|
+
group: {
|
|
31
|
+
id: string;
|
|
32
|
+
subject: string;
|
|
33
|
+
participants: GroupParticipant[];
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
export interface GroupInviteCodeResponse {
|
|
37
|
+
success: boolean;
|
|
38
|
+
code?: string;
|
|
39
|
+
link?: string;
|
|
40
|
+
inviteCode?: string;
|
|
41
|
+
inviteLink?: string;
|
|
42
|
+
}
|
|
43
|
+
export interface JoinRequestItem {
|
|
44
|
+
jid: string;
|
|
45
|
+
requested_at: number;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=groups.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"groups.d.ts","sourceRoot":"","sources":["../../../src/types/groups.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,sBAAsB,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;AAC7E,MAAM,MAAM,YAAY,GAAG,cAAc,GAAG,kBAAkB,GAAG,QAAQ,GAAG,UAAU,CAAC;AACvF,MAAM,MAAM,kBAAkB,GAAG,gBAAgB,GAAG,WAAW,CAAC;AAEhE,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI,CAAC;CACvC;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,gBAAgB,EAAE,CAAC;IACjC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE;QACL,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,gBAAgB,EAAE,CAAC;KAClC,CAAC;CACH;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;CACtB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./instances.js"), exports);
|
|
18
|
+
__exportStar(require("./messages.js"), exports);
|
|
19
|
+
__exportStar(require("./chats.js"), exports);
|
|
20
|
+
__exportStar(require("./groups.js"), exports);
|
|
21
|
+
__exportStar(require("./profile.js"), exports);
|
|
22
|
+
__exportStar(require("./webhooks.js"), exports);
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export * from './instances.js';
|
|
2
|
+
export * from './messages.js';
|
|
3
|
+
export * from './chats.js';
|
|
4
|
+
export * from './groups.js';
|
|
5
|
+
export * from './profile.js';
|
|
6
|
+
export * from './webhooks.js';
|
|
7
|
+
export interface BotcastClientConfig {
|
|
8
|
+
/**
|
|
9
|
+
* The base URL of your Botcast instance or cloud gateway.
|
|
10
|
+
* Default: `https://botcast.site`
|
|
11
|
+
*/
|
|
12
|
+
baseUrl?: string;
|
|
13
|
+
/**
|
|
14
|
+
* Your unique Botcast Instance ID.
|
|
15
|
+
*/
|
|
16
|
+
instanceId: string;
|
|
17
|
+
/**
|
|
18
|
+
* The secret Instance Token for authentication.
|
|
19
|
+
*/
|
|
20
|
+
instanceToken: string;
|
|
21
|
+
/**
|
|
22
|
+
* Request timeout in milliseconds (default: 30000ms).
|
|
23
|
+
*/
|
|
24
|
+
timeout?: number;
|
|
25
|
+
/**
|
|
26
|
+
* Maximum retry attempts on network / rate limit errors (default: 2).
|
|
27
|
+
*/
|
|
28
|
+
maxRetries?: number;
|
|
29
|
+
/**
|
|
30
|
+
* Custom HTTP headers to include with every request.
|
|
31
|
+
*/
|
|
32
|
+
headers?: Record<string, string>;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAE9B,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
export type InstanceStatus = 'connected' | 'disconnected' | 'connecting' | 'qr_ready' | 'stopped';
|
|
2
|
+
export type InstanceType = 'dev' | 'paid' | 'custom';
|
|
3
|
+
export interface InstanceStatusResponse {
|
|
4
|
+
instanceId: string;
|
|
5
|
+
name: string;
|
|
6
|
+
type: InstanceType;
|
|
7
|
+
status: InstanceStatus;
|
|
8
|
+
phoneNumber?: string | null;
|
|
9
|
+
profileName?: string | null;
|
|
10
|
+
avatarUrl?: string | null;
|
|
11
|
+
profilePicUrl?: string | null;
|
|
12
|
+
allowedNumbers?: string[] | 'unlimited';
|
|
13
|
+
hasQRCode: boolean;
|
|
14
|
+
hasPairingCode: boolean;
|
|
15
|
+
pairingCode?: string | null;
|
|
16
|
+
uptime: number;
|
|
17
|
+
}
|
|
18
|
+
export interface InstanceQRResponse {
|
|
19
|
+
status: InstanceStatus;
|
|
20
|
+
qr?: string;
|
|
21
|
+
message: string;
|
|
22
|
+
phoneNumber?: string;
|
|
23
|
+
}
|
|
24
|
+
export interface PairCodeResponse {
|
|
25
|
+
success: boolean;
|
|
26
|
+
phoneNumber: string;
|
|
27
|
+
pairingCode: string;
|
|
28
|
+
formattedCode: string;
|
|
29
|
+
instructions: string;
|
|
30
|
+
}
|
|
31
|
+
export interface AllowedNumbersResponse {
|
|
32
|
+
instanceId: string;
|
|
33
|
+
type: InstanceType;
|
|
34
|
+
allowedNumbers: string[];
|
|
35
|
+
limit: number | 'unlimited';
|
|
36
|
+
}
|
|
37
|
+
export interface SetAllowedNumbersResponse {
|
|
38
|
+
success: boolean;
|
|
39
|
+
message: string;
|
|
40
|
+
allowedNumbers: string[];
|
|
41
|
+
}
|
|
42
|
+
export interface CheckNumberResponse {
|
|
43
|
+
exists: boolean;
|
|
44
|
+
phone: string;
|
|
45
|
+
jid: string;
|
|
46
|
+
avatarUrl?: string | null;
|
|
47
|
+
}
|
|
48
|
+
export interface PresenceOptions {
|
|
49
|
+
presence: 'available' | 'unavailable' | 'composing' | 'recording' | 'paused';
|
|
50
|
+
to?: string;
|
|
51
|
+
phone?: string;
|
|
52
|
+
recipient?: string;
|
|
53
|
+
}
|
|
54
|
+
export interface InstanceLimitsResponse {
|
|
55
|
+
instanceId: string;
|
|
56
|
+
daily_message_limit: number;
|
|
57
|
+
daily_new_contacts_limit: number;
|
|
58
|
+
is_message_limit_active: boolean;
|
|
59
|
+
is_new_contacts_limit_active: boolean;
|
|
60
|
+
}
|
|
61
|
+
export interface UpdateLimitsPayload {
|
|
62
|
+
daily_message_limit?: number;
|
|
63
|
+
daily_new_contacts_limit?: number;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=instances.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instances.d.ts","sourceRoot":"","sources":["../../../src/types/instances.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,cAAc,GAAG,YAAY,GAAG,UAAU,GAAG,SAAS,CAAC;AAClG,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAC;AAErD,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,EAAE,cAAc,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC;IACxC,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,cAAc,CAAC;IACvB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,YAAY,CAAC;IACnB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC;CAC7B;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,WAAW,GAAG,aAAa,GAAG,WAAW,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC7E,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,wBAAwB,EAAE,MAAM,CAAC;IACjC,uBAAuB,EAAE,OAAO,CAAC;IACjC,4BAA4B,EAAE,OAAO,CAAC;CACvC;AAED,MAAM,WAAW,mBAAmB;IAClC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
export type MessageType = 'text' | 'image' | 'video' | 'audio' | 'voice' | 'document' | 'sticker' | 'location' | 'contact' | 'reaction' | 'pin' | 'poll' | 'forward' | 'otp' | 'disappearing';
|
|
2
|
+
export interface MessageKey {
|
|
3
|
+
remoteJid?: string;
|
|
4
|
+
fromMe?: boolean;
|
|
5
|
+
id: string;
|
|
6
|
+
participant?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface QuotedMessageOptions {
|
|
9
|
+
key?: MessageKey;
|
|
10
|
+
message?: any;
|
|
11
|
+
quotedKey?: MessageKey;
|
|
12
|
+
quotedText?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface BaseMessageOptions {
|
|
15
|
+
quoted?: any;
|
|
16
|
+
quotedKey?: MessageKey;
|
|
17
|
+
quotedText?: string;
|
|
18
|
+
ephemeralExpiration?: number;
|
|
19
|
+
mentions?: string[];
|
|
20
|
+
}
|
|
21
|
+
export interface SendTextOptions extends BaseMessageOptions {
|
|
22
|
+
text: string;
|
|
23
|
+
}
|
|
24
|
+
export interface SendMediaOptions extends BaseMessageOptions {
|
|
25
|
+
url?: string;
|
|
26
|
+
base64?: string;
|
|
27
|
+
caption?: string;
|
|
28
|
+
fileName?: string;
|
|
29
|
+
mimetype?: string;
|
|
30
|
+
ptt?: boolean;
|
|
31
|
+
}
|
|
32
|
+
export interface SendLocationOptions extends BaseMessageOptions {
|
|
33
|
+
latitude: number;
|
|
34
|
+
longitude: number;
|
|
35
|
+
name?: string;
|
|
36
|
+
address?: string;
|
|
37
|
+
}
|
|
38
|
+
export interface SendContactOptions extends BaseMessageOptions {
|
|
39
|
+
displayName: string;
|
|
40
|
+
vcard?: string;
|
|
41
|
+
contacts?: Array<{
|
|
42
|
+
displayName: string;
|
|
43
|
+
vcard: string;
|
|
44
|
+
}>;
|
|
45
|
+
}
|
|
46
|
+
export interface SendPollOptions extends BaseMessageOptions {
|
|
47
|
+
name: string;
|
|
48
|
+
values: string[];
|
|
49
|
+
selectableCount?: number;
|
|
50
|
+
}
|
|
51
|
+
export interface SendOTPOptions {
|
|
52
|
+
code?: string;
|
|
53
|
+
otp?: string;
|
|
54
|
+
appName?: string;
|
|
55
|
+
service?: string;
|
|
56
|
+
expiryMinutes?: number;
|
|
57
|
+
}
|
|
58
|
+
export interface SendMessageResponse {
|
|
59
|
+
success: boolean;
|
|
60
|
+
messageId: string;
|
|
61
|
+
status: string;
|
|
62
|
+
timestamp?: number;
|
|
63
|
+
codeSent?: string;
|
|
64
|
+
result?: any;
|
|
65
|
+
}
|
|
66
|
+
export interface EditMessagePayload {
|
|
67
|
+
recipient: string;
|
|
68
|
+
key: MessageKey;
|
|
69
|
+
text: string;
|
|
70
|
+
}
|
|
71
|
+
export interface DeleteMessagePayload {
|
|
72
|
+
recipient: string;
|
|
73
|
+
key: MessageKey;
|
|
74
|
+
}
|
|
75
|
+
export interface ReactMessagePayload {
|
|
76
|
+
recipient: string;
|
|
77
|
+
key: MessageKey;
|
|
78
|
+
emoji: string;
|
|
79
|
+
}
|
|
80
|
+
export interface PinMessagePayload {
|
|
81
|
+
recipient: string;
|
|
82
|
+
key: MessageKey;
|
|
83
|
+
type?: 1 | 0;
|
|
84
|
+
time?: number;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=messages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../src/types/messages.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export interface BusinessProfile {
|
|
2
|
+
description?: string;
|
|
3
|
+
email?: string;
|
|
4
|
+
websites?: string[];
|
|
5
|
+
category?: string;
|
|
6
|
+
business_hours?: any;
|
|
7
|
+
}
|
|
8
|
+
export type PrivacySettingType = 'lastSeen' | 'online' | 'profilePicture' | 'status' | 'readReceipts' | 'groupsAdd' | 'defaultDisappearing';
|
|
9
|
+
export type PrivacyValue = 'all' | 'contacts' | 'contact_blacklist' | 'match_last_seen' | 'none' | boolean | number;
|
|
10
|
+
export interface PrivacySettings {
|
|
11
|
+
readreceipts?: string;
|
|
12
|
+
profile?: string;
|
|
13
|
+
status?: string;
|
|
14
|
+
online?: string;
|
|
15
|
+
last?: string;
|
|
16
|
+
groupadd?: string;
|
|
17
|
+
calladd?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface BroadcastStoryOptions {
|
|
20
|
+
statusJidList?: string[];
|
|
21
|
+
backgroundColor?: string;
|
|
22
|
+
font?: number;
|
|
23
|
+
caption?: string;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=profile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../../src/types/profile.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,GAAG,CAAC;CACtB;AAED,MAAM,MAAM,kBAAkB,GAC1B,UAAU,GACV,QAAQ,GACR,gBAAgB,GAChB,QAAQ,GACR,cAAc,GACd,WAAW,GACX,qBAAqB,CAAC;AAE1B,MAAM,MAAM,YAAY,GACpB,KAAK,GACL,UAAU,GACV,mBAAmB,GACnB,iBAAiB,GACjB,MAAM,GACN,OAAO,GACP,MAAM,CAAC;AAEX,MAAM,WAAW,eAAe;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,qBAAqB;IACpC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface WebhookMessageReceivedEvent {
|
|
2
|
+
event: 'message_received';
|
|
3
|
+
instanceId: string;
|
|
4
|
+
sender: string;
|
|
5
|
+
senderJid: string;
|
|
6
|
+
pushName?: string;
|
|
7
|
+
message: string;
|
|
8
|
+
raw?: any;
|
|
9
|
+
timestamp: string;
|
|
10
|
+
}
|
|
11
|
+
export type WebhookEvent = WebhookMessageReceivedEvent | {
|
|
12
|
+
event: string;
|
|
13
|
+
instanceId: string;
|
|
14
|
+
[key: string]: any;
|
|
15
|
+
};
|
|
16
|
+
export type WebhookHandler<T = WebhookEvent> = (event: T) => void | Promise<void>;
|
|
17
|
+
//# sourceMappingURL=webhooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../../../src/types/webhooks.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,kBAAkB,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,YAAY,GAAG,2BAA2B,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,CAAC;AAEnH,MAAM,MAAM,cAAc,CAAC,CAAC,GAAG,YAAY,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BotcastWebhook = void 0;
|
|
4
|
+
class BotcastWebhook {
|
|
5
|
+
handlers = new Map();
|
|
6
|
+
/**
|
|
7
|
+
* Registers a callback for incoming messages.
|
|
8
|
+
*/
|
|
9
|
+
onMessage(handler) {
|
|
10
|
+
return this.on('message_received', handler);
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Registers a callback for any event type.
|
|
14
|
+
*/
|
|
15
|
+
on(event, handler) {
|
|
16
|
+
if (!this.handlers.has(event)) {
|
|
17
|
+
this.handlers.set(event, new Set());
|
|
18
|
+
}
|
|
19
|
+
this.handlers.get(event).add(handler);
|
|
20
|
+
return this;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Dispatches and processes a raw webhook event body.
|
|
24
|
+
*/
|
|
25
|
+
async handleEvent(event) {
|
|
26
|
+
if (!event || !event.event)
|
|
27
|
+
return;
|
|
28
|
+
// Trigger specific event handlers
|
|
29
|
+
const specificHandlers = this.handlers.get(event.event);
|
|
30
|
+
if (specificHandlers) {
|
|
31
|
+
for (const handler of specificHandlers) {
|
|
32
|
+
await handler(event);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
// Trigger wildcard '*' handlers
|
|
36
|
+
const wildcardHandlers = this.handlers.get('*');
|
|
37
|
+
if (wildcardHandlers) {
|
|
38
|
+
for (const handler of wildcardHandlers) {
|
|
39
|
+
await handler(event);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Express / Connect compatible middleware:
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```ts
|
|
48
|
+
* app.post('/webhook', botcast.webhook.middleware());
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
middleware() {
|
|
52
|
+
return async (req, res, next) => {
|
|
53
|
+
try {
|
|
54
|
+
const body = req.body;
|
|
55
|
+
if (body && body.event) {
|
|
56
|
+
await this.handleEvent(body);
|
|
57
|
+
}
|
|
58
|
+
res.status(200).json({ received: true });
|
|
59
|
+
}
|
|
60
|
+
catch (err) {
|
|
61
|
+
if (typeof next === 'function') {
|
|
62
|
+
next(err);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
res.status(500).json({ error: 'Webhook processing failed', message: err.message });
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
exports.BotcastWebhook = BotcastWebhook;
|