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.
Files changed (87) hide show
  1. package/README.md +37 -0
  2. package/dist/Defaults/index.d.ts +32 -0
  3. package/dist/Defaults/index.d.ts.map +1 -0
  4. package/dist/Defaults/index.js +37 -0
  5. package/dist/Error/index.d.ts +9 -0
  6. package/dist/Error/index.d.ts.map +1 -0
  7. package/dist/Error/index.js +25 -0
  8. package/dist/Logger/index.d.ts +8 -0
  9. package/dist/Logger/index.d.ts.map +1 -0
  10. package/dist/Logger/index.js +17 -0
  11. package/dist/Messaging/index.d.ts +33 -0
  12. package/dist/Messaging/index.d.ts.map +1 -0
  13. package/dist/Messaging/index.js +245 -0
  14. package/dist/Socket/index.d.ts +29 -0
  15. package/dist/Socket/index.d.ts.map +1 -0
  16. package/dist/Socket/index.js +374 -0
  17. package/dist/Types/index.d.ts +89 -0
  18. package/dist/Types/index.d.ts.map +1 -0
  19. package/dist/Types/index.js +2 -0
  20. package/dist/Utils/create-delay.d.ts +2 -0
  21. package/dist/Utils/create-delay.d.ts.map +1 -0
  22. package/dist/Utils/create-delay.js +18 -0
  23. package/dist/Utils/error.d.ts +4 -0
  24. package/dist/Utils/error.d.ts.map +1 -0
  25. package/dist/Utils/error.js +8 -0
  26. package/dist/Utils/helper.d.ts +22 -0
  27. package/dist/Utils/helper.d.ts.map +1 -0
  28. package/dist/Utils/helper.js +129 -0
  29. package/dist/Utils/index.d.ts +3 -0
  30. package/dist/Utils/index.d.ts.map +1 -0
  31. package/dist/Utils/index.js +18 -0
  32. package/dist/Utils/is-exist.d.ts +3 -0
  33. package/dist/Utils/is-exist.d.ts.map +1 -0
  34. package/dist/Utils/is-exist.js +38 -0
  35. package/dist/Utils/message-status.d.ts +4 -0
  36. package/dist/Utils/message-status.d.ts.map +1 -0
  37. package/dist/Utils/message-status.js +18 -0
  38. package/dist/Utils/phone-to-jid.d.ts +5 -0
  39. package/dist/Utils/phone-to-jid.d.ts.map +1 -0
  40. package/dist/Utils/phone-to-jid.js +30 -0
  41. package/dist/Utils/save-media.d.ts +5 -0
  42. package/dist/Utils/save-media.d.ts.map +1 -0
  43. package/dist/Utils/save-media.js +49 -0
  44. package/dist/Utils/set-credentials-dir.d.ts +3 -0
  45. package/dist/Utils/set-credentials-dir.d.ts.map +1 -0
  46. package/dist/Utils/set-credentials-dir.js +14 -0
  47. package/dist/Utils/tools.d.ts +12 -0
  48. package/dist/Utils/tools.d.ts.map +1 -0
  49. package/dist/Utils/tools.js +34 -0
  50. package/dist/WhatsApp/AutoWA.d.ts +38 -0
  51. package/dist/WhatsApp/AutoWA.d.ts.map +1 -0
  52. package/dist/WhatsApp/AutoWA.js +545 -0
  53. package/dist/WhatsApp/AutoWAEvent.d.ts +28 -0
  54. package/dist/WhatsApp/AutoWAEvent.d.ts.map +1 -0
  55. package/dist/WhatsApp/AutoWAEvent.js +66 -0
  56. package/dist/WhatsApp/AutoWAManager.d.ts +12 -0
  57. package/dist/WhatsApp/AutoWAManager.d.ts.map +1 -0
  58. package/dist/WhatsApp/AutoWAManager.js +68 -0
  59. package/dist/WhatsApp/action.d.ts +1 -0
  60. package/dist/WhatsApp/action.d.ts.map +1 -0
  61. package/dist/WhatsApp/action.js +272 -0
  62. package/dist/WhatsApp/auto-wa-event.d.ts +26 -0
  63. package/dist/WhatsApp/auto-wa-event.d.ts.map +1 -0
  64. package/dist/WhatsApp/auto-wa-event.js +60 -0
  65. package/dist/WhatsApp/auto-wa-manager.d.ts +12 -0
  66. package/dist/WhatsApp/auto-wa-manager.d.ts.map +1 -0
  67. package/dist/WhatsApp/auto-wa-manager.js +68 -0
  68. package/dist/WhatsApp/auto-wa.d.ts +36 -0
  69. package/dist/WhatsApp/auto-wa.d.ts.map +1 -0
  70. package/dist/WhatsApp/auto-wa.js +497 -0
  71. package/dist/WhatsApp/event.d.ts +24 -0
  72. package/dist/WhatsApp/event.d.ts.map +1 -0
  73. package/dist/WhatsApp/event.js +54 -0
  74. package/dist/WhatsApp/index.d.ts +3 -0
  75. package/dist/WhatsApp/index.d.ts.map +1 -0
  76. package/dist/WhatsApp/index.js +18 -0
  77. package/dist/WhatsApp/multi-auto-wa.d.ts +14 -0
  78. package/dist/WhatsApp/multi-auto-wa.d.ts.map +1 -0
  79. package/dist/WhatsApp/multi-auto-wa.js +86 -0
  80. package/dist/WhatsApp/setup.d.ts +1 -0
  81. package/dist/WhatsApp/setup.d.ts.map +1 -0
  82. package/dist/WhatsApp/setup.js +221 -0
  83. package/dist/WhatsApp/undefined.jpeg +0 -0
  84. package/dist/index.d.ts +5 -0
  85. package/dist/index.d.ts.map +1 -0
  86. package/dist/index.js +20 -0
  87. 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,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ export declare const createDelay: (duration?: number) => Promise<unknown>;
2
+ //# sourceMappingURL=create-delay.d.ts.map
@@ -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,4 @@
1
+ export default class ValidationError extends Error {
2
+ constructor(message: string);
3
+ }
4
+ //# sourceMappingURL=error.d.ts.map
@@ -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,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class ValidationError extends Error {
4
+ constructor(message) {
5
+ super(message);
6
+ }
7
+ }
8
+ exports.default = ValidationError;
@@ -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"}