whatsauto.js 0.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/README.md +37 -0
- package/dist/Defaults/index.d.ts +32 -0
- package/dist/Defaults/index.d.ts.map +1 -0
- package/dist/Defaults/index.js +37 -0
- package/dist/Error/index.d.ts +9 -0
- package/dist/Error/index.d.ts.map +1 -0
- package/dist/Error/index.js +25 -0
- package/dist/Logger/index.d.ts +8 -0
- package/dist/Logger/index.d.ts.map +1 -0
- package/dist/Logger/index.js +17 -0
- package/dist/Messaging/index.d.ts +33 -0
- package/dist/Messaging/index.d.ts.map +1 -0
- package/dist/Messaging/index.js +245 -0
- package/dist/Socket/index.d.ts +29 -0
- package/dist/Socket/index.d.ts.map +1 -0
- package/dist/Socket/index.js +374 -0
- package/dist/Types/index.d.ts +89 -0
- package/dist/Types/index.d.ts.map +1 -0
- package/dist/Types/index.js +2 -0
- package/dist/Utils/create-delay.d.ts +2 -0
- package/dist/Utils/create-delay.d.ts.map +1 -0
- package/dist/Utils/create-delay.js +18 -0
- package/dist/Utils/error.d.ts +4 -0
- package/dist/Utils/error.d.ts.map +1 -0
- package/dist/Utils/error.js +8 -0
- package/dist/Utils/helper.d.ts +22 -0
- package/dist/Utils/helper.d.ts.map +1 -0
- package/dist/Utils/helper.js +129 -0
- package/dist/Utils/index.d.ts +3 -0
- package/dist/Utils/index.d.ts.map +1 -0
- package/dist/Utils/index.js +18 -0
- package/dist/Utils/is-exist.d.ts +3 -0
- package/dist/Utils/is-exist.d.ts.map +1 -0
- package/dist/Utils/is-exist.js +38 -0
- package/dist/Utils/message-status.d.ts +4 -0
- package/dist/Utils/message-status.d.ts.map +1 -0
- package/dist/Utils/message-status.js +18 -0
- package/dist/Utils/phone-to-jid.d.ts +5 -0
- package/dist/Utils/phone-to-jid.d.ts.map +1 -0
- package/dist/Utils/phone-to-jid.js +30 -0
- package/dist/Utils/save-media.d.ts +5 -0
- package/dist/Utils/save-media.d.ts.map +1 -0
- package/dist/Utils/save-media.js +49 -0
- package/dist/Utils/set-credentials-dir.d.ts +3 -0
- package/dist/Utils/set-credentials-dir.d.ts.map +1 -0
- package/dist/Utils/set-credentials-dir.js +14 -0
- package/dist/Utils/tools.d.ts +12 -0
- package/dist/Utils/tools.d.ts.map +1 -0
- package/dist/Utils/tools.js +34 -0
- package/dist/WhatsApp/AutoWA.d.ts +38 -0
- package/dist/WhatsApp/AutoWA.d.ts.map +1 -0
- package/dist/WhatsApp/AutoWA.js +545 -0
- package/dist/WhatsApp/AutoWAEvent.d.ts +28 -0
- package/dist/WhatsApp/AutoWAEvent.d.ts.map +1 -0
- package/dist/WhatsApp/AutoWAEvent.js +66 -0
- package/dist/WhatsApp/AutoWAManager.d.ts +12 -0
- package/dist/WhatsApp/AutoWAManager.d.ts.map +1 -0
- package/dist/WhatsApp/AutoWAManager.js +68 -0
- package/dist/WhatsApp/action.d.ts +1 -0
- package/dist/WhatsApp/action.d.ts.map +1 -0
- package/dist/WhatsApp/action.js +272 -0
- package/dist/WhatsApp/auto-wa-event.d.ts +26 -0
- package/dist/WhatsApp/auto-wa-event.d.ts.map +1 -0
- package/dist/WhatsApp/auto-wa-event.js +60 -0
- package/dist/WhatsApp/auto-wa-manager.d.ts +12 -0
- package/dist/WhatsApp/auto-wa-manager.d.ts.map +1 -0
- package/dist/WhatsApp/auto-wa-manager.js +68 -0
- package/dist/WhatsApp/auto-wa.d.ts +36 -0
- package/dist/WhatsApp/auto-wa.d.ts.map +1 -0
- package/dist/WhatsApp/auto-wa.js +497 -0
- package/dist/WhatsApp/event.d.ts +24 -0
- package/dist/WhatsApp/event.d.ts.map +1 -0
- package/dist/WhatsApp/event.js +54 -0
- package/dist/WhatsApp/index.d.ts +3 -0
- package/dist/WhatsApp/index.d.ts.map +1 -0
- package/dist/WhatsApp/index.js +18 -0
- package/dist/WhatsApp/multi-auto-wa.d.ts +14 -0
- package/dist/WhatsApp/multi-auto-wa.d.ts.map +1 -0
- package/dist/WhatsApp/multi-auto-wa.js +86 -0
- package/dist/WhatsApp/setup.d.ts +1 -0
- package/dist/WhatsApp/setup.d.ts.map +1 -0
- package/dist/WhatsApp/setup.js +221 -0
- package/dist/WhatsApp/undefined.jpeg +0 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/package.json +38 -0
|
@@ -0,0 +1,374 @@
|
|
|
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
36
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
37
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
38
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
39
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
40
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
41
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
45
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
46
|
+
};
|
|
47
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
|
+
exports.onPairingCode = exports.onMessageUpdate = exports.onConnecting = exports.onDisconnected = exports.onConnected = exports.onQRUpdated = exports.onMessageReceived = exports.loadSessionsFromStorage = exports.getSession = exports.getAllSession = exports.deleteSession = exports.startWhatsapp = exports.startSessionWithPairingCode = exports.startSessionWithQR = void 0;
|
|
49
|
+
const baileys_1 = __importStar(require("@whiskeysockets/baileys"));
|
|
50
|
+
const path_1 = __importDefault(require("path"));
|
|
51
|
+
const fs_1 = __importDefault(require("fs"));
|
|
52
|
+
const Defaults_1 = require("../Defaults");
|
|
53
|
+
const save_media_1 = require("../Utils/save-media");
|
|
54
|
+
const Error_1 = require("../Error");
|
|
55
|
+
const message_status_1 = require("../Utils/message-status");
|
|
56
|
+
const Utils_1 = require("../Utils");
|
|
57
|
+
const sessions = new Map();
|
|
58
|
+
const callback = new Map();
|
|
59
|
+
const retryCount = new Map();
|
|
60
|
+
const P = require("pino")({
|
|
61
|
+
level: "silent",
|
|
62
|
+
});
|
|
63
|
+
function getMediaMimeType(conversation) {
|
|
64
|
+
var _a, _b, _c, _d, _e, _f;
|
|
65
|
+
if (!(conversation === null || conversation === void 0 ? void 0 : conversation.message))
|
|
66
|
+
return "";
|
|
67
|
+
const { imageMessage, videoMessage, documentMessage, audioMessage, documentWithCaptionMessage, } = (conversation === null || conversation === void 0 ? void 0 : conversation.message) || {};
|
|
68
|
+
return Utils_1.to.string((_d = (_c = (_b = (_a = imageMessage === null || imageMessage === void 0 ? void 0 : imageMessage.mimetype) !== null && _a !== void 0 ? _a : audioMessage === null || audioMessage === void 0 ? void 0 : audioMessage.mimetype) !== null && _b !== void 0 ? _b : videoMessage === null || videoMessage === void 0 ? void 0 : videoMessage.mimetype) !== null && _c !== void 0 ? _c : documentMessage === null || documentMessage === void 0 ? void 0 : documentMessage.mimetype) !== null && _d !== void 0 ? _d : (_f = (_e = documentWithCaptionMessage === null || documentWithCaptionMessage === void 0 ? void 0 : documentWithCaptionMessage.message) === null || _e === void 0 ? void 0 : _e.documentMessage) === null || _f === void 0 ? void 0 : _f.mimetype);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Start WhatsApp session with QR method
|
|
72
|
+
*/
|
|
73
|
+
const startSessionWithQR = (...args_1) => __awaiter(void 0, [...args_1], void 0, function* (sessionId = "mysession", options = { printQR: true }) {
|
|
74
|
+
if (isSessionExistAndRunning(sessionId))
|
|
75
|
+
throw new Error_1.WhatsappError(Defaults_1.Messages.sessionAlreadyExist(sessionId));
|
|
76
|
+
const { version } = yield (0, baileys_1.fetchLatestBaileysVersion)();
|
|
77
|
+
const startSocket = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
78
|
+
const { state, saveCreds } = yield (0, baileys_1.useMultiFileAuthState)(path_1.default.resolve(Defaults_1.CREDENTIALS.DIR_NAME, sessionId + Defaults_1.CREDENTIALS.PREFIX));
|
|
79
|
+
const sock = (0, baileys_1.default)({
|
|
80
|
+
version,
|
|
81
|
+
printQRInTerminal: options.printQR,
|
|
82
|
+
auth: state,
|
|
83
|
+
logger: P,
|
|
84
|
+
markOnlineOnConnect: false,
|
|
85
|
+
browser: baileys_1.Browsers.ubuntu("Chrome"),
|
|
86
|
+
});
|
|
87
|
+
sessions.set(sessionId, Object.assign({}, sock));
|
|
88
|
+
try {
|
|
89
|
+
sock.ev.process((events) => __awaiter(void 0, void 0, void 0, function* () {
|
|
90
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
|
|
91
|
+
if (events["connection.update"]) {
|
|
92
|
+
const update = events["connection.update"];
|
|
93
|
+
const { connection, lastDisconnect } = update;
|
|
94
|
+
if (update.qr) {
|
|
95
|
+
(_a = callback.get(Defaults_1.CALLBACK_KEY.ON_QR)) === null || _a === void 0 ? void 0 : _a({
|
|
96
|
+
sessionId,
|
|
97
|
+
qr: update.qr,
|
|
98
|
+
});
|
|
99
|
+
(_b = options.onQRUpdated) === null || _b === void 0 ? void 0 : _b.call(options, update.qr);
|
|
100
|
+
}
|
|
101
|
+
if (connection == "connecting") {
|
|
102
|
+
(_c = callback.get(Defaults_1.CALLBACK_KEY.ON_CONNECTING)) === null || _c === void 0 ? void 0 : _c(sessionId);
|
|
103
|
+
(_d = options.onConnecting) === null || _d === void 0 ? void 0 : _d.call(options);
|
|
104
|
+
}
|
|
105
|
+
if (connection === "close") {
|
|
106
|
+
const code = (_f = (_e = lastDisconnect === null || lastDisconnect === void 0 ? void 0 : lastDisconnect.error) === null || _e === void 0 ? void 0 : _e.output) === null || _f === void 0 ? void 0 : _f.statusCode;
|
|
107
|
+
let retryAttempt = (_g = retryCount.get(sessionId)) !== null && _g !== void 0 ? _g : 0;
|
|
108
|
+
let shouldRetry;
|
|
109
|
+
if (code != baileys_1.DisconnectReason.loggedOut && retryAttempt < 10) {
|
|
110
|
+
shouldRetry = true;
|
|
111
|
+
}
|
|
112
|
+
if (shouldRetry) {
|
|
113
|
+
retryAttempt++;
|
|
114
|
+
retryCount.set(sessionId, retryAttempt);
|
|
115
|
+
startSocket();
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
retryCount.delete(sessionId);
|
|
119
|
+
(0, exports.deleteSession)(sessionId);
|
|
120
|
+
(_h = callback.get(Defaults_1.CALLBACK_KEY.ON_DISCONNECTED)) === null || _h === void 0 ? void 0 : _h(sessionId);
|
|
121
|
+
(_j = options.onDisconnected) === null || _j === void 0 ? void 0 : _j.call(options);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
if (connection == "open") {
|
|
125
|
+
retryCount.delete(sessionId);
|
|
126
|
+
(_k = callback.get(Defaults_1.CALLBACK_KEY.ON_CONNECTED)) === null || _k === void 0 ? void 0 : _k(sessionId);
|
|
127
|
+
(_l = options.onConnected) === null || _l === void 0 ? void 0 : _l.call(options);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
if (events["creds.update"]) {
|
|
131
|
+
yield saveCreds();
|
|
132
|
+
}
|
|
133
|
+
if (events["messages.update"]) {
|
|
134
|
+
const msg = events["messages.update"][0];
|
|
135
|
+
const mimeType = getMediaMimeType(msg);
|
|
136
|
+
const media = { mimeType, data: "" };
|
|
137
|
+
if (mimeType !== "") {
|
|
138
|
+
const mediaBuffer = yield (0, baileys_1.downloadMediaMessage)(msg, "buffer", {});
|
|
139
|
+
media.data = mediaBuffer.toString("base64");
|
|
140
|
+
}
|
|
141
|
+
const data = Object.assign(Object.assign({ sessionId: sessionId, messageStatus: (0, message_status_1.parseMessageStatusCodeToReadable)(msg.update.status) }, msg), media);
|
|
142
|
+
(_m = callback.get(Defaults_1.CALLBACK_KEY.ON_MESSAGE_UPDATED)) === null || _m === void 0 ? void 0 : _m(sessionId, data);
|
|
143
|
+
(_o = options.onMessageUpdated) === null || _o === void 0 ? void 0 : _o.call(options, data);
|
|
144
|
+
}
|
|
145
|
+
if (events["messages.upsert"]) {
|
|
146
|
+
let msg = (_p = events["messages.upsert"]
|
|
147
|
+
.messages) === null || _p === void 0 ? void 0 : _p[0];
|
|
148
|
+
const mimeType = getMediaMimeType(msg);
|
|
149
|
+
const media = { mimeType, data: "" };
|
|
150
|
+
if (mimeType !== "") {
|
|
151
|
+
const mediaBuffer = yield (0, baileys_1.downloadMediaMessage)(msg, "buffer", {});
|
|
152
|
+
media.data = mediaBuffer.toString("base64");
|
|
153
|
+
}
|
|
154
|
+
msg.media = media;
|
|
155
|
+
msg.sessionId = sessionId;
|
|
156
|
+
msg.saveImage = (path) => (0, save_media_1.saveImageHandler)(msg, path);
|
|
157
|
+
msg.saveVideo = (path) => (0, save_media_1.saveVideoHandler)(msg, path);
|
|
158
|
+
msg.saveDocument = (path) => (0, save_media_1.saveDocumentHandler)(msg, path);
|
|
159
|
+
(_q = callback.get(Defaults_1.CALLBACK_KEY.ON_MESSAGE_RECEIVED)) === null || _q === void 0 ? void 0 : _q(Object.assign({}, msg));
|
|
160
|
+
(_r = options.onMessageReceived) === null || _r === void 0 ? void 0 : _r.call(options, msg);
|
|
161
|
+
}
|
|
162
|
+
}));
|
|
163
|
+
return sock;
|
|
164
|
+
}
|
|
165
|
+
catch (error) {
|
|
166
|
+
// console.log("SOCKET ERROR", error);
|
|
167
|
+
return sock;
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
return startSocket();
|
|
171
|
+
});
|
|
172
|
+
exports.startSessionWithQR = startSessionWithQR;
|
|
173
|
+
/**
|
|
174
|
+
* Start WhatsApp session with pairing code method
|
|
175
|
+
*/
|
|
176
|
+
const startSessionWithPairingCode = (sessionId, options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
177
|
+
if (isSessionExistAndRunning(sessionId))
|
|
178
|
+
throw new Error_1.WhatsappError(Defaults_1.Messages.sessionAlreadyExist(sessionId));
|
|
179
|
+
const { version } = yield (0, baileys_1.fetchLatestBaileysVersion)();
|
|
180
|
+
const startSocket = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
181
|
+
var _a, _b;
|
|
182
|
+
const { state, saveCreds } = yield (0, baileys_1.useMultiFileAuthState)(path_1.default.resolve(Defaults_1.CREDENTIALS.DIR_NAME, sessionId + Defaults_1.CREDENTIALS.PREFIX));
|
|
183
|
+
const sock = (0, baileys_1.default)({
|
|
184
|
+
version,
|
|
185
|
+
printQRInTerminal: false,
|
|
186
|
+
auth: state,
|
|
187
|
+
logger: P,
|
|
188
|
+
markOnlineOnConnect: false,
|
|
189
|
+
browser: baileys_1.Browsers.ubuntu("Chrome"),
|
|
190
|
+
});
|
|
191
|
+
sessions.set(sessionId, Object.assign({}, sock));
|
|
192
|
+
try {
|
|
193
|
+
if (!sock.authState.creds.registered) {
|
|
194
|
+
console.log("first time pairing");
|
|
195
|
+
const code = yield sock.requestPairingCode(options.phoneNumber);
|
|
196
|
+
console.log(code);
|
|
197
|
+
(_a = callback.get(Defaults_1.CALLBACK_KEY.ON_PAIRING_CODE)) === null || _a === void 0 ? void 0 : _a(sessionId, code);
|
|
198
|
+
(_b = options.onPairingCode) === null || _b === void 0 ? void 0 : _b.call(options, code);
|
|
199
|
+
}
|
|
200
|
+
sock.ev.process((events) => __awaiter(void 0, void 0, void 0, function* () {
|
|
201
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
|
|
202
|
+
if (events["connection.update"]) {
|
|
203
|
+
const update = events["connection.update"];
|
|
204
|
+
const { connection, lastDisconnect } = update;
|
|
205
|
+
if (update.qr) {
|
|
206
|
+
(_a = callback.get(Defaults_1.CALLBACK_KEY.ON_QR)) === null || _a === void 0 ? void 0 : _a({
|
|
207
|
+
sessionId,
|
|
208
|
+
qr: update.qr,
|
|
209
|
+
});
|
|
210
|
+
(_b = options.onQRUpdated) === null || _b === void 0 ? void 0 : _b.call(options, update.qr);
|
|
211
|
+
}
|
|
212
|
+
if (connection == "connecting") {
|
|
213
|
+
(_c = callback.get(Defaults_1.CALLBACK_KEY.ON_CONNECTING)) === null || _c === void 0 ? void 0 : _c(sessionId);
|
|
214
|
+
(_d = options.onConnecting) === null || _d === void 0 ? void 0 : _d.call(options);
|
|
215
|
+
}
|
|
216
|
+
if (connection === "close") {
|
|
217
|
+
const code = (_f = (_e = lastDisconnect === null || lastDisconnect === void 0 ? void 0 : lastDisconnect.error) === null || _e === void 0 ? void 0 : _e.output) === null || _f === void 0 ? void 0 : _f.statusCode;
|
|
218
|
+
let retryAttempt = (_g = retryCount.get(sessionId)) !== null && _g !== void 0 ? _g : 0;
|
|
219
|
+
let shouldRetry;
|
|
220
|
+
if (code != baileys_1.DisconnectReason.loggedOut && retryAttempt < 10) {
|
|
221
|
+
shouldRetry = true;
|
|
222
|
+
}
|
|
223
|
+
if (shouldRetry) {
|
|
224
|
+
retryAttempt++;
|
|
225
|
+
retryCount.set(sessionId, retryAttempt);
|
|
226
|
+
startSocket();
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
retryCount.delete(sessionId);
|
|
230
|
+
(0, exports.deleteSession)(sessionId);
|
|
231
|
+
(_h = callback.get(Defaults_1.CALLBACK_KEY.ON_DISCONNECTED)) === null || _h === void 0 ? void 0 : _h(sessionId);
|
|
232
|
+
(_j = options.onDisconnected) === null || _j === void 0 ? void 0 : _j.call(options);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
if (connection == "open") {
|
|
236
|
+
retryCount.delete(sessionId);
|
|
237
|
+
(_k = callback.get(Defaults_1.CALLBACK_KEY.ON_CONNECTED)) === null || _k === void 0 ? void 0 : _k(sessionId);
|
|
238
|
+
(_l = options.onConnected) === null || _l === void 0 ? void 0 : _l.call(options);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
if (events["creds.update"]) {
|
|
242
|
+
yield saveCreds();
|
|
243
|
+
}
|
|
244
|
+
if (events["messages.update"]) {
|
|
245
|
+
const msg = events["messages.update"][0];
|
|
246
|
+
const mimeType = getMediaMimeType(msg);
|
|
247
|
+
const media = { mimeType, data: "" };
|
|
248
|
+
if (mimeType !== "") {
|
|
249
|
+
const mediaBuffer = yield (0, baileys_1.downloadMediaMessage)(msg, "buffer", {});
|
|
250
|
+
media.data = mediaBuffer.toString("base64");
|
|
251
|
+
}
|
|
252
|
+
const data = Object.assign(Object.assign({ sessionId: sessionId, messageStatus: (0, message_status_1.parseMessageStatusCodeToReadable)(msg.update.status) }, msg), media);
|
|
253
|
+
(_m = callback.get(Defaults_1.CALLBACK_KEY.ON_MESSAGE_UPDATED)) === null || _m === void 0 ? void 0 : _m(sessionId, data);
|
|
254
|
+
(_o = options.onMessageUpdated) === null || _o === void 0 ? void 0 : _o.call(options, data);
|
|
255
|
+
}
|
|
256
|
+
if (events["messages.upsert"]) {
|
|
257
|
+
let msg = (_p = events["messages.upsert"]
|
|
258
|
+
.messages) === null || _p === void 0 ? void 0 : _p[0];
|
|
259
|
+
const mimeType = getMediaMimeType(msg);
|
|
260
|
+
const media = { mimeType, data: "" };
|
|
261
|
+
if (mimeType !== "") {
|
|
262
|
+
const mediaBuffer = yield (0, baileys_1.downloadMediaMessage)(msg, "buffer", {});
|
|
263
|
+
media.data = mediaBuffer.toString("base64");
|
|
264
|
+
}
|
|
265
|
+
msg.media = media;
|
|
266
|
+
msg.sessionId = sessionId;
|
|
267
|
+
msg.saveImage = (path) => (0, save_media_1.saveImageHandler)(msg, path);
|
|
268
|
+
msg.saveVideo = (path) => (0, save_media_1.saveVideoHandler)(msg, path);
|
|
269
|
+
msg.saveDocument = (path) => (0, save_media_1.saveDocumentHandler)(msg, path);
|
|
270
|
+
(_q = callback.get(Defaults_1.CALLBACK_KEY.ON_MESSAGE_RECEIVED)) === null || _q === void 0 ? void 0 : _q(Object.assign({}, msg));
|
|
271
|
+
(_r = options.onMessageReceived) === null || _r === void 0 ? void 0 : _r.call(options, msg);
|
|
272
|
+
}
|
|
273
|
+
}));
|
|
274
|
+
return sock;
|
|
275
|
+
}
|
|
276
|
+
catch (error) {
|
|
277
|
+
// console.log("SOCKET ERROR", error);
|
|
278
|
+
return sock;
|
|
279
|
+
}
|
|
280
|
+
});
|
|
281
|
+
return startSocket();
|
|
282
|
+
});
|
|
283
|
+
exports.startSessionWithPairingCode = startSessionWithPairingCode;
|
|
284
|
+
/**
|
|
285
|
+
* start WhatsApp session
|
|
286
|
+
*/
|
|
287
|
+
const startWhatsapp = (sessionId, options = { printQR: true, pairCode: false }) => {
|
|
288
|
+
if (options.pairCode) {
|
|
289
|
+
return (0, exports.startSessionWithPairingCode)(sessionId, options);
|
|
290
|
+
}
|
|
291
|
+
return (0, exports.startSessionWithQR)(sessionId, options);
|
|
292
|
+
};
|
|
293
|
+
exports.startWhatsapp = startWhatsapp;
|
|
294
|
+
const deleteSession = (sessionId) => __awaiter(void 0, void 0, void 0, function* () {
|
|
295
|
+
const session = (0, exports.getSession)(sessionId);
|
|
296
|
+
try {
|
|
297
|
+
yield (session === null || session === void 0 ? void 0 : session.logout());
|
|
298
|
+
}
|
|
299
|
+
catch (error) { }
|
|
300
|
+
session === null || session === void 0 ? void 0 : session.end(undefined);
|
|
301
|
+
sessions.delete(sessionId);
|
|
302
|
+
const dir = path_1.default.resolve(Defaults_1.CREDENTIALS.DIR_NAME, sessionId + Defaults_1.CREDENTIALS.PREFIX);
|
|
303
|
+
if (fs_1.default.existsSync(dir)) {
|
|
304
|
+
fs_1.default.rmSync(dir, { force: true, recursive: true });
|
|
305
|
+
}
|
|
306
|
+
});
|
|
307
|
+
exports.deleteSession = deleteSession;
|
|
308
|
+
const getAllSession = () => Array.from(sessions.keys());
|
|
309
|
+
exports.getAllSession = getAllSession;
|
|
310
|
+
const getSession = (key) => sessions.get(key);
|
|
311
|
+
exports.getSession = getSession;
|
|
312
|
+
const isSessionExistAndRunning = (sessionId) => {
|
|
313
|
+
if (fs_1.default.existsSync(path_1.default.resolve(Defaults_1.CREDENTIALS.DIR_NAME)) &&
|
|
314
|
+
fs_1.default.existsSync(path_1.default.resolve(Defaults_1.CREDENTIALS.DIR_NAME, sessionId + Defaults_1.CREDENTIALS.PREFIX)) &&
|
|
315
|
+
fs_1.default.readdirSync(path_1.default.resolve(Defaults_1.CREDENTIALS.DIR_NAME, sessionId + Defaults_1.CREDENTIALS.PREFIX)).length &&
|
|
316
|
+
(0, exports.getSession)(sessionId)) {
|
|
317
|
+
return true;
|
|
318
|
+
}
|
|
319
|
+
return false;
|
|
320
|
+
};
|
|
321
|
+
const shouldLoadSession = (sessionId) => {
|
|
322
|
+
if (fs_1.default.existsSync(path_1.default.resolve(Defaults_1.CREDENTIALS.DIR_NAME)) &&
|
|
323
|
+
fs_1.default.existsSync(path_1.default.resolve(Defaults_1.CREDENTIALS.DIR_NAME, sessionId + Defaults_1.CREDENTIALS.PREFIX)) &&
|
|
324
|
+
fs_1.default.readdirSync(path_1.default.resolve(Defaults_1.CREDENTIALS.DIR_NAME, sessionId + Defaults_1.CREDENTIALS.PREFIX)).length &&
|
|
325
|
+
!(0, exports.getSession)(sessionId)) {
|
|
326
|
+
return true;
|
|
327
|
+
}
|
|
328
|
+
return false;
|
|
329
|
+
};
|
|
330
|
+
const loadSessionsFromStorage = () => {
|
|
331
|
+
if (!fs_1.default.existsSync(path_1.default.resolve(Defaults_1.CREDENTIALS.DIR_NAME))) {
|
|
332
|
+
fs_1.default.mkdirSync(path_1.default.resolve(Defaults_1.CREDENTIALS.DIR_NAME));
|
|
333
|
+
}
|
|
334
|
+
fs_1.default.readdir(path_1.default.resolve(Defaults_1.CREDENTIALS.DIR_NAME), (err, dirs) => __awaiter(void 0, void 0, void 0, function* () {
|
|
335
|
+
if (err) {
|
|
336
|
+
throw err;
|
|
337
|
+
}
|
|
338
|
+
for (const dir of dirs) {
|
|
339
|
+
const sessionId = dir.split("_")[0];
|
|
340
|
+
if (!shouldLoadSession(sessionId))
|
|
341
|
+
continue;
|
|
342
|
+
(0, exports.startSessionWithQR)(sessionId);
|
|
343
|
+
}
|
|
344
|
+
}));
|
|
345
|
+
};
|
|
346
|
+
exports.loadSessionsFromStorage = loadSessionsFromStorage;
|
|
347
|
+
const onMessageReceived = (listener) => {
|
|
348
|
+
callback.set(Defaults_1.CALLBACK_KEY.ON_MESSAGE_RECEIVED, listener);
|
|
349
|
+
};
|
|
350
|
+
exports.onMessageReceived = onMessageReceived;
|
|
351
|
+
const onQRUpdated = (listener) => {
|
|
352
|
+
callback.set(Defaults_1.CALLBACK_KEY.ON_QR, listener);
|
|
353
|
+
};
|
|
354
|
+
exports.onQRUpdated = onQRUpdated;
|
|
355
|
+
const onConnected = (listener) => {
|
|
356
|
+
callback.set(Defaults_1.CALLBACK_KEY.ON_CONNECTED, listener);
|
|
357
|
+
};
|
|
358
|
+
exports.onConnected = onConnected;
|
|
359
|
+
const onDisconnected = (listener) => {
|
|
360
|
+
callback.set(Defaults_1.CALLBACK_KEY.ON_DISCONNECTED, listener);
|
|
361
|
+
};
|
|
362
|
+
exports.onDisconnected = onDisconnected;
|
|
363
|
+
const onConnecting = (listener) => {
|
|
364
|
+
callback.set(Defaults_1.CALLBACK_KEY.ON_CONNECTING, listener);
|
|
365
|
+
};
|
|
366
|
+
exports.onConnecting = onConnecting;
|
|
367
|
+
const onMessageUpdate = (listener) => {
|
|
368
|
+
callback.set(Defaults_1.CALLBACK_KEY.ON_MESSAGE_UPDATED, listener);
|
|
369
|
+
};
|
|
370
|
+
exports.onMessageUpdate = onMessageUpdate;
|
|
371
|
+
const onPairingCode = (listener) => {
|
|
372
|
+
callback.set(Defaults_1.CALLBACK_KEY.ON_PAIRING_CODE, listener);
|
|
373
|
+
};
|
|
374
|
+
exports.onPairingCode = onPairingCode;
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { WAMessageUpdate, proto } from "@whiskeysockets/baileys";
|
|
2
|
+
export interface IWAutoSendMessage {
|
|
3
|
+
to: string | number;
|
|
4
|
+
text?: string;
|
|
5
|
+
isGroup?: boolean;
|
|
6
|
+
answering?: proto.IWebMessageInfo;
|
|
7
|
+
}
|
|
8
|
+
export interface IWAutoSendMedia extends IWAutoSendMessage {
|
|
9
|
+
/**
|
|
10
|
+
* Media you want to send
|
|
11
|
+
*/
|
|
12
|
+
media?: string | Buffer;
|
|
13
|
+
}
|
|
14
|
+
export interface IWAutoSendTyping extends IWAutoSendMessage {
|
|
15
|
+
/**
|
|
16
|
+
* Duration of your typing display
|
|
17
|
+
*/
|
|
18
|
+
duration: number;
|
|
19
|
+
}
|
|
20
|
+
export interface IWAutoSendRead {
|
|
21
|
+
/**
|
|
22
|
+
* The key of message you want to mark as read
|
|
23
|
+
*/
|
|
24
|
+
key: proto.IMessageKey;
|
|
25
|
+
}
|
|
26
|
+
export interface IWAutoMessage extends proto.IWebMessageInfo {
|
|
27
|
+
/**
|
|
28
|
+
* Your Session ID
|
|
29
|
+
*/
|
|
30
|
+
sessionId: string;
|
|
31
|
+
/**
|
|
32
|
+
* Message author Jid
|
|
33
|
+
*/
|
|
34
|
+
author: string;
|
|
35
|
+
/**
|
|
36
|
+
* Is this message have media?
|
|
37
|
+
*/
|
|
38
|
+
hasMedia: boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Media type of this message
|
|
41
|
+
*/
|
|
42
|
+
mediaType: string;
|
|
43
|
+
/**
|
|
44
|
+
* Text of this message
|
|
45
|
+
*/
|
|
46
|
+
text: string;
|
|
47
|
+
/**
|
|
48
|
+
* Quoted message by this message
|
|
49
|
+
*/
|
|
50
|
+
quotedMessage: IWAutoMessage;
|
|
51
|
+
/**
|
|
52
|
+
* @param path save media location path without extension
|
|
53
|
+
* @example "./my_media"
|
|
54
|
+
*/
|
|
55
|
+
downloadMedia: (path: string) => Promise<string>;
|
|
56
|
+
}
|
|
57
|
+
export interface IWAutoMessageReceived extends IWAutoMessage {
|
|
58
|
+
/**
|
|
59
|
+
* Message sender Jid
|
|
60
|
+
*/
|
|
61
|
+
from: string;
|
|
62
|
+
}
|
|
63
|
+
export interface IWAutoMessageSent extends IWAutoMessage {
|
|
64
|
+
/**
|
|
65
|
+
* Message sender Jid
|
|
66
|
+
*/
|
|
67
|
+
receiver: string;
|
|
68
|
+
}
|
|
69
|
+
export type WAutoMessageUpdated = WAMessageUpdate & {
|
|
70
|
+
/**
|
|
71
|
+
* Your Session ID
|
|
72
|
+
*/
|
|
73
|
+
sessionId: string;
|
|
74
|
+
/**
|
|
75
|
+
* Message Updated Status
|
|
76
|
+
*/
|
|
77
|
+
messageStatus: "error" | "pending" | "server" | "delivered" | "read" | "played";
|
|
78
|
+
};
|
|
79
|
+
export interface IWAutoSessionConfig {
|
|
80
|
+
/**
|
|
81
|
+
* Print QR Code into Terminal
|
|
82
|
+
*/
|
|
83
|
+
printQR?: boolean;
|
|
84
|
+
/**
|
|
85
|
+
* Phone number for session with pairing code
|
|
86
|
+
*/
|
|
87
|
+
phoneNumber?: string;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAEjE,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,KAAK,CAAC,eAAe,CAAC;CACnC;AAED,MAAM,WAAW,eAAgB,SAAQ,iBAAiB;IACxD;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACzB;AACD,MAAM,WAAW,gBAAiB,SAAQ,iBAAiB;IACzD;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;CAClB;AACD,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,GAAG,EAAE,KAAK,CAAC,WAAW,CAAC;CACxB;AAED,MAAM,WAAW,aAAc,SAAQ,KAAK,CAAC,eAAe;IAC1D;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,aAAa,EAAE,aAAa,CAAC;IAE7B;;;OAGG;IACH,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAClD;AAED,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IAC1D;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACtD;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,mBAAmB,GAAG,eAAe,GAAG;IAClD;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,aAAa,EAAE,OAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,GAAG,QAAQ,CAAC;CACjF,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-delay.d.ts","sourceRoot":"","sources":["../../src/Utils/create-delay.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,cAAoB,MAAM,qBAMjD,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.createDelay = void 0;
|
|
13
|
+
const createDelay = (...args_1) => __awaiter(void 0, [...args_1], void 0, function* (duration = 1000) {
|
|
14
|
+
return yield new Promise((resolve) => setTimeout(() => {
|
|
15
|
+
resolve(true);
|
|
16
|
+
}, duration));
|
|
17
|
+
});
|
|
18
|
+
exports.createDelay = createDelay;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/Utils/error.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,KAAK;gBACpC,OAAO,EAAE,MAAM;CAG5B"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { proto } from "@whiskeysockets/baileys";
|
|
2
|
+
import { IWAutoMessage, WAutoMessageUpdated } from "../Types";
|
|
3
|
+
export declare const getMediaMimeType: (msg: IWAutoMessage) => string;
|
|
4
|
+
export declare const parseMessageStatusCodeToReadable: (code: proto.WebMessageInfo.Status) => WAutoMessageUpdated["messageStatus"];
|
|
5
|
+
export declare const isPhoneNumberValidCountry: (phone: string) => boolean;
|
|
6
|
+
export declare const phoneToJid: ({ to, isGroup, }: {
|
|
7
|
+
to: string | number;
|
|
8
|
+
isGroup?: boolean;
|
|
9
|
+
}) => string;
|
|
10
|
+
export declare const createDelay: (duration?: number) => Promise<unknown>;
|
|
11
|
+
export declare const is: {
|
|
12
|
+
array: (array: any) => boolean;
|
|
13
|
+
undefined: (elem: any) => boolean;
|
|
14
|
+
file: (file: any) => boolean;
|
|
15
|
+
object: (object: any) => boolean;
|
|
16
|
+
string: (str: any) => boolean;
|
|
17
|
+
};
|
|
18
|
+
export declare const to: {
|
|
19
|
+
string: (str: any) => string;
|
|
20
|
+
undefined: (str: any, defaultValue?: any) => string | number | undefined;
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=helper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../../src/Utils/helper.ts"],"names":[],"mappings":"AAAA,OAAwB,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAG9D,eAAO,MAAM,gBAAgB,QAAS,aAAa,KAAG,MAsBrD,CAAC;AAEF,eAAO,MAAM,gCAAgC,SACrC,KAAK,CAAC,cAAc,CAAC,MAAM,KAChC,mBAAmB,CAAC,eAAe,CAQrC,CAAC;AAEF,eAAO,MAAM,yBAAyB,UAAW,MAAM,YAItD,CAAC;AAEF,eAAO,MAAM,UAAU,qBAGpB;IACD,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,KAAG,MAYH,CAAC;AAEF,eAAO,MAAM,WAAW,cAAoB,MAAM,qBAMjD,CAAC;AAEF,eAAO,MAAM,EAAE;mBACE,GAAG,KAAG,OAAO;sBAGV,GAAG,KAAG,OAAO;iBAGlB,GAAG,KAAG,OAAO;qBAGT,GAAG,KAAG,OAAO;kBAGhB,GAAG,KAAG,OAAO;CAG5B,CAAC;AAEF,eAAO,MAAM,EAAE;kBACC,GAAG,KAAG,MAAM;qBAIT,GAAG,iBAAgB,GAAG,KAAe,MAAM,GAAG,MAAM,GAAG,SAAS;CAIlF,CAAC"}
|