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,545 @@
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 __rest = (this && this.__rest) || function (s, e) {
45
+ var t = {};
46
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
47
+ t[p] = s[p];
48
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
49
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
50
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
51
+ t[p[i]] = s[p[i]];
52
+ }
53
+ return t;
54
+ };
55
+ var __importDefault = (this && this.__importDefault) || function (mod) {
56
+ return (mod && mod.__esModule) ? mod : { "default": mod };
57
+ };
58
+ Object.defineProperty(exports, "__esModule", { value: true });
59
+ exports.AutoWA = void 0;
60
+ const path_1 = __importDefault(require("path"));
61
+ const fs_1 = __importDefault(require("fs"));
62
+ const baileys_1 = __importStar(require("@whiskeysockets/baileys"));
63
+ const Defaults_1 = require("../Defaults");
64
+ const Error_1 = require("../Error");
65
+ const Utils_1 = require("../Utils");
66
+ const AutoWAEvent_1 = __importDefault(require("./AutoWAEvent"));
67
+ const AutoWAManager_1 = require("./AutoWAManager");
68
+ const mime_1 = __importDefault(require("mime"));
69
+ const wa_sticker_formatter_1 = __importStar(require("wa-sticker-formatter"));
70
+ const Logger_1 = __importDefault(require("../Logger"));
71
+ const P = require("pino")({
72
+ level: "fatal",
73
+ });
74
+ class AutoWA {
75
+ constructor(sessionId, options = { printQR: true }, manager) {
76
+ this.sessionId = sessionId;
77
+ this.options = options;
78
+ this.myManager = manager;
79
+ this.callback = new Map();
80
+ this.retryCount = 0;
81
+ this.event = new AutoWAEvent_1.default(this.callback);
82
+ this.logger = new Logger_1.default("AutoWA");
83
+ }
84
+ initialize() {
85
+ return __awaiter(this, void 0, void 0, function* () {
86
+ yield this.startWhatsApp(this.sessionId, this.options);
87
+ });
88
+ }
89
+ startWhatsApp() {
90
+ return __awaiter(this, arguments, void 0, function* (sessionId = "mySession", options = { printQR: true }) {
91
+ if (this.myManager instanceof AutoWAManager_1.AutoWAManager && this.myManager.isSessionExist(sessionId))
92
+ throw new Error_1.ValidationError(Defaults_1.Messages.sessionAlreadyExist(sessionId));
93
+ if (typeof options.phoneNumber == "string") {
94
+ if (options.phoneNumber === "")
95
+ throw new Error_1.ValidationError(Defaults_1.Messages.paremetersNotValid("phoneNumber"));
96
+ options.printQR = false;
97
+ options.phoneNumber = (0, Utils_1.phoneToJid)({
98
+ to: options.phoneNumber,
99
+ });
100
+ }
101
+ return this.startSocket(sessionId, options);
102
+ });
103
+ }
104
+ startSocket(sessionId, options) {
105
+ return __awaiter(this, void 0, void 0, function* () {
106
+ const { version } = yield (0, baileys_1.fetchLatestBaileysVersion)();
107
+ const { state, saveCreds } = yield (0, baileys_1.useMultiFileAuthState)(path_1.default.resolve(Defaults_1.CREDENTIALS.DIR_NAME, sessionId + Defaults_1.CREDENTIALS.PREFIX));
108
+ this.sock = (0, baileys_1.default)({
109
+ version,
110
+ printQRInTerminal: options.printQR,
111
+ auth: state,
112
+ logger: P,
113
+ markOnlineOnConnect: false,
114
+ browser: baileys_1.Browsers.windows("Desktop"),
115
+ });
116
+ return this.setupWASocket(saveCreds);
117
+ });
118
+ }
119
+ setupWASocket(saveCreds) {
120
+ return __awaiter(this, void 0, void 0, function* () {
121
+ var _a, _b, _c;
122
+ try {
123
+ if (typeof this.options.phoneNumber == "string" &&
124
+ !this.options.printQR &&
125
+ !this.sock.authState.creds.registered) {
126
+ let code = "";
127
+ try {
128
+ code = yield this.sock.requestPairingCode(this.options.phoneNumber);
129
+ }
130
+ catch (error) {
131
+ this.logger.error(`Request Pair Code: ${error}`);
132
+ let shouldRetry = false;
133
+ if (this.retryCount < 10) {
134
+ shouldRetry = true;
135
+ }
136
+ if (shouldRetry) {
137
+ this.retryCount++;
138
+ return this.startSocket(this.sessionId, this.options);
139
+ }
140
+ else {
141
+ this.retryCount = 0;
142
+ (_a = this.myManager) === null || _a === void 0 ? void 0 : _a.deleteSession(this.sessionId);
143
+ (_b = this.callback.get(Defaults_1.CALLBACK_KEY.ON_DISCONNECTED)) === null || _b === void 0 ? void 0 : _b();
144
+ return;
145
+ }
146
+ }
147
+ (_c = this.callback.get(Defaults_1.CALLBACK_KEY.ON_PAIRING_CODE)) === null || _c === void 0 ? void 0 : _c(code);
148
+ }
149
+ this.sock.ev.on("connection.update", (update) => __awaiter(this, void 0, void 0, function* () {
150
+ var _a, _b, _c, _d, _e, _f, _g;
151
+ const { connection, lastDisconnect, qr } = update;
152
+ if (this.options.printQR && qr) {
153
+ (_a = this.callback.get(Defaults_1.CALLBACK_KEY.ON_QR)) === null || _a === void 0 ? void 0 : _a(qr);
154
+ }
155
+ if (connection == "connecting") {
156
+ (_b = this.callback.get(Defaults_1.CALLBACK_KEY.ON_CONNECTING)) === null || _b === void 0 ? void 0 : _b();
157
+ }
158
+ if (connection === "close") {
159
+ const code = (_d = (_c = lastDisconnect === null || lastDisconnect === void 0 ? void 0 : lastDisconnect.error) === null || _c === void 0 ? void 0 : _c.output) === null || _d === void 0 ? void 0 : _d.statusCode;
160
+ let shouldRetry = false;
161
+ if (code != baileys_1.DisconnectReason.loggedOut && this.retryCount < 10) {
162
+ shouldRetry = true;
163
+ }
164
+ if (shouldRetry) {
165
+ this.retryCount++;
166
+ return this.startSocket(this.sessionId, this.options);
167
+ }
168
+ else {
169
+ this.retryCount = 0;
170
+ (_e = this.myManager) === null || _e === void 0 ? void 0 : _e.deleteSession(this.sessionId);
171
+ (_f = this.callback.get(Defaults_1.CALLBACK_KEY.ON_DISCONNECTED)) === null || _f === void 0 ? void 0 : _f();
172
+ return;
173
+ }
174
+ }
175
+ if (connection == "open") {
176
+ this.retryCount = 0;
177
+ (_g = this.callback.get(Defaults_1.CALLBACK_KEY.ON_CONNECTED)) === null || _g === void 0 ? void 0 : _g();
178
+ }
179
+ }));
180
+ this.sock.ev.on("creds.update", () => __awaiter(this, void 0, void 0, function* () {
181
+ yield saveCreds();
182
+ }));
183
+ this.sock.ev.on("messages.update", (message) => __awaiter(this, void 0, void 0, function* () {
184
+ var _a;
185
+ const msg = message[0];
186
+ const data = Object.assign({ sessionId: this.sessionId, messageStatus: (0, Utils_1.parseMessageStatusCodeToReadable)(msg.update.status) }, msg);
187
+ (_a = this.callback.get(Defaults_1.CALLBACK_KEY.ON_MESSAGE_UPDATED)) === null || _a === void 0 ? void 0 : _a(data);
188
+ }));
189
+ this.sock.ev.on("messages.upsert", (new_message) => __awaiter(this, void 0, void 0, function* () {
190
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15;
191
+ let msg = (_a = new_message.messages) === null || _a === void 0 ? void 0 : _a[0];
192
+ if ((_b = msg.message) === null || _b === void 0 ? void 0 : _b.documentWithCaptionMessage)
193
+ msg = Object.assign(Object.assign({}, msg), { message: msg.message.documentWithCaptionMessage.message });
194
+ msg.sessionId = this.sessionId;
195
+ let quotedMessage = null;
196
+ const msgContextInfo = ((_d = (_c = msg.message) === null || _c === void 0 ? void 0 : _c.extendedTextMessage) === null || _d === void 0 ? void 0 : _d.contextInfo) ||
197
+ ((_f = (_e = msg.message) === null || _e === void 0 ? void 0 : _e.imageMessage) === null || _f === void 0 ? void 0 : _f.contextInfo) ||
198
+ ((_h = (_g = msg.message) === null || _g === void 0 ? void 0 : _g.videoMessage) === null || _h === void 0 ? void 0 : _h.contextInfo) ||
199
+ ((_k = (_j = msg.message) === null || _j === void 0 ? void 0 : _j.stickerMessage) === null || _k === void 0 ? void 0 : _k.contextInfo) ||
200
+ ((_m = (_l = msg.message) === null || _l === void 0 ? void 0 : _l.documentMessage) === null || _m === void 0 ? void 0 : _m.contextInfo);
201
+ if (msgContextInfo === null || msgContextInfo === void 0 ? void 0 : msgContextInfo.quotedMessage) {
202
+ quotedMessage = {
203
+ key: {
204
+ remoteJid: msgContextInfo === null || msgContextInfo === void 0 ? void 0 : msgContextInfo.participant,
205
+ id: msgContextInfo === null || msgContextInfo === void 0 ? void 0 : msgContextInfo.stanzaId,
206
+ },
207
+ message: msgContextInfo === null || msgContextInfo === void 0 ? void 0 : msgContextInfo.quotedMessage,
208
+ };
209
+ }
210
+ if ((_o = quotedMessage === null || quotedMessage === void 0 ? void 0 : quotedMessage.message) === null || _o === void 0 ? void 0 : _o.documentWithCaptionMessage) {
211
+ quotedMessage = Object.assign(Object.assign({}, quotedMessage), { message: quotedMessage.message.documentWithCaptionMessage.message });
212
+ }
213
+ msg.quotedMessage = quotedMessage;
214
+ const text = ((_p = msg.message) === null || _p === void 0 ? void 0 : _p.conversation) ||
215
+ ((_r = (_q = msg.message) === null || _q === void 0 ? void 0 : _q.extendedTextMessage) === null || _r === void 0 ? void 0 : _r.text) ||
216
+ ((_t = (_s = msg.message) === null || _s === void 0 ? void 0 : _s.imageMessage) === null || _t === void 0 ? void 0 : _t.caption) ||
217
+ ((_v = (_u = msg.message) === null || _u === void 0 ? void 0 : _u.videoMessage) === null || _v === void 0 ? void 0 : _v.caption) ||
218
+ ((_x = (_w = msg.message) === null || _w === void 0 ? void 0 : _w.documentMessage) === null || _x === void 0 ? void 0 : _x.caption) ||
219
+ "";
220
+ msg.text = text;
221
+ const mediaTypes = ["image", "audio", "video", "document"];
222
+ const mimeType = (0, Utils_1.getMediaMimeType)(msg);
223
+ const ext = mime_1.default.getExtension(mimeType);
224
+ msg.hasMedia = mimeType !== "";
225
+ msg.mediaType = "";
226
+ if (mimeType)
227
+ msg.mediaType =
228
+ mediaTypes[mediaTypes.indexOf(mimeType.split("/")[0]) !== -1
229
+ ? mediaTypes.indexOf(mimeType.split("/")[0])
230
+ : 3];
231
+ msg.downloadMedia = (path) => ((path) => __awaiter(this, void 0, void 0, function* () { return (path = ""); }))(path);
232
+ if (msg.hasMedia)
233
+ msg.downloadMedia = (path = "my_media") => this.downloadMedia(msg, path + "." + ext);
234
+ if (msg.quotedMessage) {
235
+ const mimeType = (0, Utils_1.getMediaMimeType)(msg.quotedMessage);
236
+ const ext = mime_1.default.getExtension(mimeType);
237
+ msg.quotedMessage.hasMedia = mimeType !== "";
238
+ msg.quotedMessage.mediaType = "";
239
+ if (mimeType)
240
+ msg.quotedMessage.mediaType =
241
+ mediaTypes[mediaTypes.indexOf(mimeType.split("/")[0]) !== -1
242
+ ? mediaTypes.indexOf(mimeType.split("/")[0])
243
+ : 3];
244
+ msg.quotedMessage.downloadMedia = (path) => ((path) => __awaiter(this, void 0, void 0, function* () { return (path = ""); }))(path);
245
+ if (msg.quotedMessage.hasMedia)
246
+ msg.quotedMessage.downloadMedia = (path = "my_media") => this.downloadMedia(msg.quotedMessage, path + "." + ext);
247
+ }
248
+ const from = msg.key.remoteJid || "";
249
+ const participant = msg.key.participant || "";
250
+ const isGroup = from.includes("@g.us");
251
+ const isStory = from.includes("status@broadcast");
252
+ const isReaction = (_y = msg.message) === null || _y === void 0 ? void 0 : _y.reactionMessage;
253
+ const myJid = (0, Utils_1.phoneToJid)({ to: this.sock.user.id.split(":")[0] });
254
+ msg.author = from;
255
+ if (isStory || isGroup)
256
+ msg.author = participant;
257
+ (_z = this.callback.get(Defaults_1.CALLBACK_KEY.ON_MESSAGE)) === null || _z === void 0 ? void 0 : _z(msg);
258
+ if (isStory) {
259
+ if ((_0 = msg.key) === null || _0 === void 0 ? void 0 : _0.fromMe)
260
+ (_1 = this.callback.get(Defaults_1.CALLBACK_KEY.ON_STORY_SENT)) === null || _1 === void 0 ? void 0 : _1(msg);
261
+ else
262
+ (_2 = this.callback.get(Defaults_1.CALLBACK_KEY.ON_STORY_RECEIVED)) === null || _2 === void 0 ? void 0 : _2(msg);
263
+ return;
264
+ }
265
+ if (isReaction) {
266
+ msg.text = (_4 = (_3 = msg.message) === null || _3 === void 0 ? void 0 : _3.reactionMessage) === null || _4 === void 0 ? void 0 : _4.text;
267
+ if ((_5 = msg.key) === null || _5 === void 0 ? void 0 : _5.fromMe)
268
+ (_6 = this.callback.get(Defaults_1.CALLBACK_KEY.ON_REACTION_SENT)) === null || _6 === void 0 ? void 0 : _6(msg);
269
+ else
270
+ (_7 = this.callback.get(Defaults_1.CALLBACK_KEY.ON_REACTION_RECEIVED)) === null || _7 === void 0 ? void 0 : _7(msg);
271
+ return;
272
+ }
273
+ if (isGroup) {
274
+ (_8 = this.callback.get(Defaults_1.CALLBACK_KEY.ON_GROUP_MESSAGE)) === null || _8 === void 0 ? void 0 : _8(msg);
275
+ }
276
+ else {
277
+ (_9 = this.callback.get(Defaults_1.CALLBACK_KEY.ON_PRIVATE_MESSAGE)) === null || _9 === void 0 ? void 0 : _9(msg);
278
+ }
279
+ if (msg.key.fromMe) {
280
+ msg = Object.assign(Object.assign({}, msg), { receiver: from, author: myJid });
281
+ (_10 = this.callback.get(Defaults_1.CALLBACK_KEY.ON_MESSAGE_SENT)) === null || _10 === void 0 ? void 0 : _10(msg);
282
+ if (isGroup) {
283
+ (_11 = this.callback.get(Defaults_1.CALLBACK_KEY.ON_GROUP_MESSAGE_SENT)) === null || _11 === void 0 ? void 0 : _11(Object.assign({}, msg));
284
+ }
285
+ else {
286
+ (_12 = this.callback.get(Defaults_1.CALLBACK_KEY.ON_PRIVATE_MESSAGE_SENT)) === null || _12 === void 0 ? void 0 : _12(Object.assign({}, msg));
287
+ }
288
+ }
289
+ else {
290
+ msg = Object.assign(Object.assign({}, msg), { from });
291
+ if (isStory)
292
+ msg.from = participant;
293
+ (_13 = this.callback.get(Defaults_1.CALLBACK_KEY.ON_MESSAGE_RECEIVED)) === null || _13 === void 0 ? void 0 : _13(msg);
294
+ if (isGroup) {
295
+ (_14 = this.callback.get(Defaults_1.CALLBACK_KEY.ON_GROUP_MESSAGE_RECEIVED)) === null || _14 === void 0 ? void 0 : _14(Object.assign({}, msg));
296
+ }
297
+ else {
298
+ (_15 = this.callback.get(Defaults_1.CALLBACK_KEY.ON_PRIVATE_MESSAGE_RECEIVED)) === null || _15 === void 0 ? void 0 : _15(Object.assign({}, msg));
299
+ }
300
+ }
301
+ }));
302
+ return this.sock;
303
+ }
304
+ catch (error) {
305
+ throw error;
306
+ }
307
+ });
308
+ }
309
+ logout() {
310
+ return __awaiter(this, void 0, void 0, function* () {
311
+ return yield this.sock.logout();
312
+ });
313
+ }
314
+ end() {
315
+ return this.sock.end(undefined);
316
+ }
317
+ isExist(_a) {
318
+ return __awaiter(this, arguments, void 0, function* ({ to, isGroup = false }) {
319
+ var _b, _c;
320
+ try {
321
+ const receiver = (0, Utils_1.phoneToJid)({
322
+ to: to,
323
+ isGroup: isGroup,
324
+ });
325
+ if (!isGroup) {
326
+ const one = Boolean((_c = (_b = (yield this.sock.onWhatsApp(receiver))) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.exists);
327
+ return one;
328
+ }
329
+ else {
330
+ return Boolean((yield this.sock.groupMetadata(receiver)).id);
331
+ }
332
+ }
333
+ catch (error) {
334
+ throw error;
335
+ }
336
+ });
337
+ }
338
+ downloadMedia(msg, mediaPath) {
339
+ return __awaiter(this, void 0, void 0, function* () {
340
+ const filePath = path_1.default.join(process.cwd(), mediaPath);
341
+ const buf = yield (0, baileys_1.downloadMediaMessage)(msg, "buffer", {});
342
+ fs_1.default.writeFileSync(filePath, buf.toString("base64"), "base64");
343
+ return Promise.resolve(filePath);
344
+ });
345
+ }
346
+ validateReceiver(_a) {
347
+ return __awaiter(this, arguments, void 0, function* ({ to, isGroup = false }) {
348
+ const oldPhone = to;
349
+ to = (0, Utils_1.phoneToJid)({ to, isGroup });
350
+ const isRegistered = yield this.isExist({
351
+ to,
352
+ isGroup,
353
+ });
354
+ if (!isRegistered) {
355
+ return {
356
+ msg: `${oldPhone} is not registered on Whatsapp`,
357
+ };
358
+ }
359
+ return {
360
+ receiver: to,
361
+ };
362
+ });
363
+ }
364
+ sendText(_a) {
365
+ return __awaiter(this, void 0, void 0, function* () {
366
+ var { to, text = "", isGroup = false } = _a, props = __rest(_a, ["to", "text", "isGroup"]);
367
+ const { receiver, msg } = yield this.validateReceiver({
368
+ to,
369
+ isGroup,
370
+ });
371
+ if (msg)
372
+ throw new Error_1.WhatsAppError(msg);
373
+ return yield this.sock.sendMessage(receiver, {
374
+ text: text,
375
+ }, {
376
+ quoted: props.answering,
377
+ });
378
+ });
379
+ }
380
+ sendImage(_a) {
381
+ return __awaiter(this, void 0, void 0, function* () {
382
+ var { to, text = "", isGroup = false, media } = _a, props = __rest(_a, ["to", "text", "isGroup", "media"]);
383
+ if (!media)
384
+ throw new Error_1.WhatsAppError("parameter media must be Buffer or String URL");
385
+ const { receiver, msg } = yield this.validateReceiver({
386
+ to,
387
+ isGroup,
388
+ });
389
+ if (msg)
390
+ throw new Error_1.WhatsAppError(msg);
391
+ return yield this.sock.sendMessage(receiver, {
392
+ image: typeof media == "string"
393
+ ? {
394
+ url: media,
395
+ }
396
+ : media,
397
+ caption: text,
398
+ }, {
399
+ quoted: props.answering,
400
+ });
401
+ });
402
+ }
403
+ sendVideo(_a) {
404
+ return __awaiter(this, void 0, void 0, function* () {
405
+ var { to, text = "", isGroup = false, media } = _a, props = __rest(_a, ["to", "text", "isGroup", "media"]);
406
+ if (!media)
407
+ throw new Error_1.WhatsAppError("parameter media must be Buffer or String URL");
408
+ const { receiver, msg } = yield this.validateReceiver({
409
+ to,
410
+ isGroup,
411
+ });
412
+ if (msg)
413
+ throw new Error_1.WhatsAppError(msg);
414
+ return yield this.sock.sendMessage(receiver, {
415
+ video: typeof media == "string"
416
+ ? {
417
+ url: media,
418
+ }
419
+ : media,
420
+ caption: text,
421
+ }, {
422
+ quoted: props.answering,
423
+ });
424
+ });
425
+ }
426
+ sendDocument(_a) {
427
+ return __awaiter(this, void 0, void 0, function* () {
428
+ var { to, text = "", isGroup = false, media, filename } = _a, props = __rest(_a, ["to", "text", "isGroup", "media", "filename"]);
429
+ if (!media)
430
+ throw new Error_1.WhatsAppError("parameter media must be Buffer or String URL");
431
+ const mimetype = mime_1.default.getType(filename);
432
+ if (!mimetype)
433
+ throw new Error_1.WhatsAppError(`Filename must include valid extension`);
434
+ const { receiver, msg } = yield this.validateReceiver({
435
+ to,
436
+ isGroup,
437
+ });
438
+ if (msg)
439
+ throw new Error_1.WhatsAppError(msg);
440
+ return yield this.sock.sendMessage(receiver, {
441
+ fileName: filename,
442
+ document: typeof media == "string"
443
+ ? {
444
+ url: media,
445
+ }
446
+ : media,
447
+ mimetype: mimetype,
448
+ caption: text,
449
+ }, {
450
+ quoted: props.answering,
451
+ });
452
+ });
453
+ }
454
+ sendVoiceNote(_a) {
455
+ return __awaiter(this, void 0, void 0, function* () {
456
+ var { to, isGroup = false, media } = _a, props = __rest(_a, ["to", "isGroup", "media"]);
457
+ if (!media)
458
+ throw new Error_1.WhatsAppError("parameter media must be Buffer or String URL");
459
+ const { receiver, msg } = yield this.validateReceiver({
460
+ to,
461
+ isGroup,
462
+ });
463
+ if (msg)
464
+ throw new Error_1.WhatsAppError(msg);
465
+ return yield this.sock.sendMessage(receiver, {
466
+ audio: typeof media == "string"
467
+ ? {
468
+ url: media,
469
+ }
470
+ : media,
471
+ ptt: true,
472
+ }, {
473
+ quoted: props.answering,
474
+ });
475
+ });
476
+ }
477
+ sendSticker(_a) {
478
+ return __awaiter(this, void 0, void 0, function* () {
479
+ var { to, isGroup, media, pack = "WhatsAuto.js", author = "freack21", type = wa_sticker_formatter_1.StickerTypes.DEFAULT, categories = ["❤️"], quality = 100 } = _a, props = __rest(_a, ["to", "isGroup", "media", "pack", "author", "type", "categories", "quality"]);
480
+ if (!media)
481
+ throw new Error_1.WhatsAppError("parameter media must be Buffer or String URL");
482
+ const { receiver, msg } = yield this.validateReceiver({
483
+ to,
484
+ isGroup,
485
+ });
486
+ if (msg)
487
+ throw new Error_1.WhatsAppError(msg);
488
+ const sticker = new wa_sticker_formatter_1.default(media, Object.assign({ pack,
489
+ author,
490
+ type,
491
+ categories }, props));
492
+ return yield this.sock.sendMessage(receiver, yield sticker.toMessage(), {
493
+ quoted: props.answering,
494
+ });
495
+ });
496
+ }
497
+ sendReaction(_a) {
498
+ return __awaiter(this, arguments, void 0, function* ({ to, text, isGroup = false, answering }) {
499
+ const { receiver, msg } = yield this.validateReceiver({
500
+ to,
501
+ isGroup,
502
+ });
503
+ if (msg)
504
+ throw new Error_1.WhatsAppError(msg);
505
+ return yield this.sock.sendMessage(receiver, {
506
+ react: {
507
+ text,
508
+ key: answering.key,
509
+ },
510
+ });
511
+ });
512
+ }
513
+ sendTyping(_a) {
514
+ return __awaiter(this, arguments, void 0, function* ({ to, duration = 1000, isGroup = false }) {
515
+ const { receiver, msg } = yield this.validateReceiver({
516
+ to,
517
+ isGroup,
518
+ });
519
+ if (msg)
520
+ throw new Error_1.WhatsAppError(msg);
521
+ yield this.sock.sendPresenceUpdate("composing", receiver);
522
+ yield (0, Utils_1.createDelay)(duration);
523
+ yield this.sock.sendPresenceUpdate("available", receiver);
524
+ });
525
+ }
526
+ sendRecording(_a) {
527
+ return __awaiter(this, arguments, void 0, function* ({ to, duration = 1000, isGroup = false }) {
528
+ const { receiver, msg } = yield this.validateReceiver({
529
+ to,
530
+ isGroup,
531
+ });
532
+ if (msg)
533
+ throw new Error_1.WhatsAppError(msg);
534
+ yield this.sock.sendPresenceUpdate("recording", receiver);
535
+ yield (0, Utils_1.createDelay)(duration);
536
+ yield this.sock.sendPresenceUpdate("available", receiver);
537
+ });
538
+ }
539
+ readMessage(_a) {
540
+ return __awaiter(this, arguments, void 0, function* ({ key }) {
541
+ yield this.sock.readMessages([key]);
542
+ });
543
+ }
544
+ }
545
+ exports.AutoWA = AutoWA;
@@ -0,0 +1,28 @@
1
+ import { IWAutoMessageReceived, IWAutoMessageSent, WAutoMessageUpdated } from "../Types";
2
+ export default class AutoWAEvent {
3
+ private callback;
4
+ constructor(callback: Map<string, Function>);
5
+ onQRUpdated: (listener: ({ sessionId, qr }: {
6
+ sessionId: string;
7
+ qr: string;
8
+ }) => any) => void;
9
+ onConnected: (listener: (sessionId: string) => any) => void;
10
+ onDisconnected: (listener: (sessionId: string) => any) => void;
11
+ onConnecting: (listener: (sessionId: string) => any) => void;
12
+ onMessageUpdate: (listener: (data: WAutoMessageUpdated) => any) => void;
13
+ onPairingCode: (listener: (sessionId: string, code: string) => any) => void;
14
+ onMessage: (listener: (msg: IWAutoMessageReceived) => any) => void;
15
+ onGroupMessage: (listener: (msg: IWAutoMessageReceived) => any) => void;
16
+ onPrivateMessage: (listener: (msg: IWAutoMessageReceived) => any) => void;
17
+ onMessageReceived: (listener: (msg: IWAutoMessageReceived) => any) => void;
18
+ onGroupMessageReceived: (listener: (msg: IWAutoMessageReceived) => any) => void;
19
+ onPrivateMessageReceived: (listener: (msg: IWAutoMessageReceived) => any) => void;
20
+ onMessageSent: (listener: (msg: IWAutoMessageSent) => any) => void;
21
+ onGroupMessageSent: (listener: (msg: IWAutoMessageSent) => any) => void;
22
+ onPrivateMessageSent: (listener: (msg: IWAutoMessageSent) => any) => void;
23
+ onStoryReceived: (listener: (msg: IWAutoMessageReceived) => any) => void;
24
+ onStorySent: (listener: (msg: IWAutoMessageSent) => any) => void;
25
+ onReactionReceived: (listener: (msg: IWAutoMessageReceived) => any) => void;
26
+ onReactionSent: (listener: (msg: IWAutoMessageSent) => any) => void;
27
+ }
28
+ //# sourceMappingURL=AutoWAEvent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutoWAEvent.d.ts","sourceRoot":"","sources":["../../src/WhatsApp/AutoWAEvent.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAEzF,MAAM,CAAC,OAAO,OAAO,WAAW;IAC9B,OAAO,CAAC,QAAQ,CAAwB;gBAE5B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC;IAI3C,WAAW,aAAc,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,KAAK,GAAG,UAEpF;IAEF,WAAW,aAAc,CAAC,SAAS,EAAE,MAAM,KAAK,GAAG,UAEjD;IAEF,cAAc,aAAc,CAAC,SAAS,EAAE,MAAM,KAAK,GAAG,UAEpD;IAEF,YAAY,aAAc,CAAC,SAAS,EAAE,MAAM,KAAK,GAAG,UAElD;IAEF,eAAe,aAAc,CAAC,IAAI,EAAE,mBAAmB,KAAK,GAAG,UAE7D;IAEF,aAAa,aAAc,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,GAAG,UAEjE;IAEF,SAAS,aAAc,CAAC,GAAG,EAAE,qBAAqB,KAAK,GAAG,UAExD;IAEF,cAAc,aAAc,CAAC,GAAG,EAAE,qBAAqB,KAAK,GAAG,UAE7D;IAEF,gBAAgB,aAAc,CAAC,GAAG,EAAE,qBAAqB,KAAK,GAAG,UAE/D;IAEF,iBAAiB,aAAc,CAAC,GAAG,EAAE,qBAAqB,KAAK,GAAG,UAEhE;IAEF,sBAAsB,aAAc,CAAC,GAAG,EAAE,qBAAqB,KAAK,GAAG,UAErE;IAEF,wBAAwB,aAAc,CAAC,GAAG,EAAE,qBAAqB,KAAK,GAAG,UAEvE;IAEF,aAAa,aAAc,CAAC,GAAG,EAAE,iBAAiB,KAAK,GAAG,UAExD;IAEF,kBAAkB,aAAc,CAAC,GAAG,EAAE,iBAAiB,KAAK,GAAG,UAE7D;IAEF,oBAAoB,aAAc,CAAC,GAAG,EAAE,iBAAiB,KAAK,GAAG,UAE/D;IAEF,eAAe,aAAc,CAAC,GAAG,EAAE,qBAAqB,KAAK,GAAG,UAE9D;IAEF,WAAW,aAAc,CAAC,GAAG,EAAE,iBAAiB,KAAK,GAAG,UAEtD;IAEF,kBAAkB,aAAc,CAAC,GAAG,EAAE,qBAAqB,KAAK,GAAG,UAEjE;IAEF,cAAc,aAAc,CAAC,GAAG,EAAE,iBAAiB,KAAK,GAAG,UAEzD;CACH"}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const Defaults_1 = require("../Defaults");
4
+ class AutoWAEvent {
5
+ constructor(callback) {
6
+ this.onQRUpdated = (listener) => {
7
+ this.callback.set(Defaults_1.CALLBACK_KEY.ON_QR, listener);
8
+ };
9
+ this.onConnected = (listener) => {
10
+ this.callback.set(Defaults_1.CALLBACK_KEY.ON_CONNECTED, listener);
11
+ };
12
+ this.onDisconnected = (listener) => {
13
+ this.callback.set(Defaults_1.CALLBACK_KEY.ON_DISCONNECTED, listener);
14
+ };
15
+ this.onConnecting = (listener) => {
16
+ this.callback.set(Defaults_1.CALLBACK_KEY.ON_CONNECTING, listener);
17
+ };
18
+ this.onMessageUpdate = (listener) => {
19
+ this.callback.set(Defaults_1.CALLBACK_KEY.ON_MESSAGE_UPDATED, listener);
20
+ };
21
+ this.onPairingCode = (listener) => {
22
+ this.callback.set(Defaults_1.CALLBACK_KEY.ON_PAIRING_CODE, listener);
23
+ };
24
+ this.onMessage = (listener) => {
25
+ this.callback.set(Defaults_1.CALLBACK_KEY.ON_MESSAGE, listener);
26
+ };
27
+ this.onGroupMessage = (listener) => {
28
+ this.callback.set(Defaults_1.CALLBACK_KEY.ON_GROUP_MESSAGE, listener);
29
+ };
30
+ this.onPrivateMessage = (listener) => {
31
+ this.callback.set(Defaults_1.CALLBACK_KEY.ON_PRIVATE_MESSAGE, listener);
32
+ };
33
+ this.onMessageReceived = (listener) => {
34
+ this.callback.set(Defaults_1.CALLBACK_KEY.ON_MESSAGE_RECEIVED, listener);
35
+ };
36
+ this.onGroupMessageReceived = (listener) => {
37
+ this.callback.set(Defaults_1.CALLBACK_KEY.ON_GROUP_MESSAGE_RECEIVED, listener);
38
+ };
39
+ this.onPrivateMessageReceived = (listener) => {
40
+ this.callback.set(Defaults_1.CALLBACK_KEY.ON_PRIVATE_MESSAGE_RECEIVED, listener);
41
+ };
42
+ this.onMessageSent = (listener) => {
43
+ this.callback.set(Defaults_1.CALLBACK_KEY.ON_MESSAGE_SENT, listener);
44
+ };
45
+ this.onGroupMessageSent = (listener) => {
46
+ this.callback.set(Defaults_1.CALLBACK_KEY.ON_GROUP_MESSAGE_SENT, listener);
47
+ };
48
+ this.onPrivateMessageSent = (listener) => {
49
+ this.callback.set(Defaults_1.CALLBACK_KEY.ON_PRIVATE_MESSAGE_SENT, listener);
50
+ };
51
+ this.onStoryReceived = (listener) => {
52
+ this.callback.set(Defaults_1.CALLBACK_KEY.ON_STORY_RECEIVED, listener);
53
+ };
54
+ this.onStorySent = (listener) => {
55
+ this.callback.set(Defaults_1.CALLBACK_KEY.ON_STORY_SENT, listener);
56
+ };
57
+ this.onReactionReceived = (listener) => {
58
+ this.callback.set(Defaults_1.CALLBACK_KEY.ON_REACTION_RECEIVED, listener);
59
+ };
60
+ this.onReactionSent = (listener) => {
61
+ this.callback.set(Defaults_1.CALLBACK_KEY.ON_REACTION_SENT, listener);
62
+ };
63
+ this.callback = callback;
64
+ }
65
+ }
66
+ exports.default = AutoWAEvent;
@@ -0,0 +1,12 @@
1
+ import { AutoWA } from "./AutoWA";
2
+ export declare class AutoWAManager {
3
+ private sessions;
4
+ addSessions(autoWAs: AutoWA[]): void;
5
+ addSession(autoWA: AutoWA): void;
6
+ isSessionExist(sessionId: string): boolean;
7
+ startSessions(): Promise<void>;
8
+ deleteSession(sessionId: string): Promise<void>;
9
+ getSessions(): string[];
10
+ getSession(sessionId: string): AutoWA;
11
+ }
12
+ //# sourceMappingURL=AutoWAManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutoWAManager.d.ts","sourceRoot":"","sources":["../../src/WhatsApp/AutoWAManager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAsB;IAE/B,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE;IAM7B,UAAU,CAAC,MAAM,EAAE,MAAM;IAIzB,cAAc,CAAC,SAAS,EAAE,MAAM;IAW1B,aAAa;IASb,aAAa,CAAC,SAAS,EAAE,MAAM;IAarC,WAAW;IAIX,UAAU,CAAC,SAAS,EAAE,MAAM;CAGpC"}