Open mohdsaeed7849 opened 3 months ago
same here
The problem is also happening here after version 2.3000.1012482514
I read about an workaround to get the older version while it is not possible to find a solution
https://github.com/pedroslopez/whatsapp-web.js/issues/2789#issuecomment-1972768458
How implement it in this resport?
El El mié, 3 abr 2024 a las 12:50, Andre Borges @.***> escribió:
I read about an workaround to get the older version while it is not possible to find a solution
pedroslopez/whatsapp-web.js#2789 (comment) https://github.com/pedroslopez/whatsapp-web.js/issues/2789#issuecomment-1972768458
— Reply to this email directly, view it on GitHub https://github.com/mukulhase/WebWhatsapp-Wrapper/issues/1191#issuecomment-2034233998, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAVMMGAWPZ7IFIMAOXIGPHLY3PNGFAVCNFSM6AAAAABFRMTD6WVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAMZUGIZTGOJZHA . You are receiving this because you are subscribed to this thread.Message ID: @.***>
Same error..
I'm working on the solution. The bug is in this part of the code:
`
let tag = new Date().getTime();
webpackChunkwhatsapp_web_client.push([
["parasite" + tag],
{
},
function (o, e, t) {
let modules = [];
for (let idx in o.m) {
let module = o(idx);
modules.push(module);
}
getStore(modules);
}
]);
}
` Is anybody working on the solution too?
can check this updated wapi.js file : https://github.com/mikelustosa/Projeto-TInject/blob/master/Source/JS/js.abr
Ok, it worked for me. Thanks a lot
can check this updated wapi.js file : https://github.com/mikelustosa/Projeto-TInject/blob/master/Source/JS/js.abr
javascript error: Unexpected token '<'\n (Session info: chrome=123.0.6312.106) getting this error
Work for me
El jue, 4 abr 2024 a las 12:33, mraakashjoshi @.***>) escribió:
can check this updated wapi.js file : https://github.com/mikelustosa/Projeto-TInject/blob/master/Source/JS/js.abr
javascript error: Unexpected token '<'\n (Session info: chrome=123.0.6312.106) getting this error
— Reply to this email directly, view it on GitHub https://github.com/mukulhase/WebWhatsapp-Wrapper/issues/1191#issuecomment-2036802851, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAVMMGE65ETEKD4DUDFKMQTY3UT77AVCNFSM6AAAAABFRMTD6WVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAMZWHAYDEOBVGE . You are receiving this because you commented.Message ID: @.***>
Work for me El jue, 4 abr 2024 a las 12:33, mraakashjoshi @.>) escribió: … can check this updated wapi.js file : https://github.com/mikelustosa/Projeto-TInject/blob/master/Source/JS/js.abr javascript error: Unexpected token '<'\n (Session info: chrome=123.0.6312.106) getting this error — Reply to this email directly, view it on GitHub <#1191 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAVMMGE65ETEKD4DUDFKMQTY3UT77AVCNFSM6AAAAABFRMTD6WVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAMZWHAYDEOBVGE . You are receiving this because you commented.Message ID: @.>
can you please give me your JS path? In which language are you using?
you have to replace the wapi.js
you have to replace the wapi.js
Solved my issue. Thanks you
Hi,
I'm sending some improvement. The API was slow and to solve that, I joined the previous code with the new one. Follow the code to test.
`//Version_JS;Version_TInjectMin;Version_CEF4Min; //3.0.0.0;1.0.0.9;78.3.0
const newMakeStore = () => { let modules = self.require('__debug').modulesMap; let keys = Object.keys(modules).filter(e => e.includes("WA")); let modulesFactory = {}; for (let key of keys) { if (!modules[key]) continue; let module = modules[key]; modulesFactory[key] = { default: module.defaultExport, factory: module.factory, ...module }; if (Object.keys(modulesFactory[key].default).length == 0) { try { self.ErrorGuard.skipGuardGlobal(true); Object.assign(modulesFactory[key], self.importNamespace(key)); } catch (e) { // } } }
function getStore(modules) {
let foundCount = 0;
let neededObjects = [
{ id: "Store", conditions: (module) => (module.default && module.default.Chat && module.default.Msg) ? module.default : null },
{ id: "MediaCollection", conditions: (module) => (module.default && module.default.prototype && (module.default.prototype.processFiles !== undefined || module.default.prototype.processAttachments !== undefined)) ? module.default : null },
{ id: "Conn", conditions: (module) => (module.default && module.default.ref && module.default.refTTL) ? module.default : (module.Conn ? module.Conn : null) },
{ id: "MediaProcess", conditions: (module) => (module.BLOB) ? module : null },
{ id: "Archive", conditions: (module) => (module.setArchive) ? module : null },
{ id: "Block", conditions: (module) => (module.blockContact && module.unblockContact) ? module : null },
{ id: "ChatUtil", conditions: (module) => (module.sendClear) ? module : null },
{ id: "GroupInvite", conditions: (module) => (module.sendQueryGroupInviteCode) ? module : null },
{ id: "Wap", conditions: (module) => (module.createGroup) ? module : null },
{ id: "ServiceWorker", conditions: (module) => (module.default && module.default.killServiceWorker) ? module : null },
{ id: "State", conditions: (module) => (module.STATE && module.STREAM) ? module : null },
{ id: "_Presence", conditions: (module) => (module.setPresenceAvailable && module.setPresenceUnavailable) ? module : null },
{ id: "WapDelete", conditions: (module) => (module.sendConversationDelete && module.sendConversationDelete.length == 2) ? module : null },
{ id: 'FindChat', conditions: (module) => (module && module.findChat) ? module : null },
{ id: "WapQuery", conditions: (module) => (module.queryExist) ? module : ((module.default && module.default.queryExist) ? module.default : null) },//Mike 28/10/2022
{ id: "WapQueryMD", conditions: (module) => (module.queryExists && module.queryPhoneExists) || (module.queryWidExists && module.queryPhoneExists) ? module : null }, //MD Mike 09/11/2021
{ id: 'Perfil', conditions: (module) => module.__esModule === true && module.setPushname && !module.getComposeContents ? module : null },
{ id: "CryptoLib", conditions: (module) => (module.decryptE2EMedia) ? module : null },
{ id: "OpenChat", conditions: (module) => (module.default && module.default.prototype && module.default.prototype.openChat) ? module.default : null },
{ id: "UserConstructor", conditions: (module) => (module.default && module.default.prototype && module.default.prototype.isServer && module.default.prototype.isUser) ? module.default : null },
{ id: "SendTextMsgToChat", conditions: (module) => (module.sendTextMsgToChat) ? module.sendTextMsgToChat : null },
{ id: "ReadSeen", conditions: (module) => (module.sendSeen) ? module : null },
{ id: "sendDelete", conditions: (module) => (module.sendDelete) ? module.sendDelete : null },
{ id: "addAndSendMsgToChat", conditions: (module) => (module.addAndSendMsgToChat) ? module.addAndSendMsgToChat : null },
{ id: "sendMsgToChat", conditions: (module) => (module.sendMsgToChat) ? module.sendMsgToChat : null },
{ id: "Catalog", conditions: (module) => (module.Catalog) ? module.Catalog : null },
{ id: "bp", conditions: (module) => (module.default && module.default.toString && module.default.toString().includes('bp_unknown_version')) ? module.default : null },
{ id: "MsgKey", conditions: (module) => (module.default && module.default.toString && module.default.toString().includes('MsgKey error: obj is null/undefined')) ? module.default : null },
{ id: "Parser", conditions: (module) => (module.convertToTextWithoutSpecialEmojis) ? module.default : null },
{ id: "Builders", conditions: (module) => (module.TemplateMessage && module.HydratedFourRowTemplate) ? module : null },
{ id: "Me", conditions: (module) => (module.PLATFORMS && module.Conn) ? module.default : null },
{ id: "CallUtils", conditions: (module) => (module.sendCallEnd && module.parseCall) ? module : null },
{ id: "Identity", conditions: (module) => (module.queryIdentity && module.updateIdentity) ? module : null },
{ id: "MyStatus", conditions: (module) => (module.getStatus && module.setMyStatus) ? module : null },
{ id: "GroupActions", conditions: (module) => (module.sendExitGroup && module.localExitGroup) ? module : null },
{ id: "Features", conditions: (module) => (module.FEATURE_CHANGE_EVENT && module.features) ? module : null },
{ id: "MessageUtils", conditions: (module) => (module.storeMessages && module.appendMessage) ? module : null },
{ id: "WebMessageInfo", conditions: (module) => (module.WebMessageInfo && module.WebFeatures) ? module.WebMessageInfo : null },
{ id: "createMessageKey", conditions: (module) => (module.createMessageKey && module.createDeviceSentMessage) ? module.createMessageKey : null },
{ id: "Participants", conditions: (module) => (module.addParticipants && module.removeParticipants && module.promoteParticipants && module.demoteParticipants) ? module : null },
{ id: "Base", conditions: (module) => (module.setSubProtocol && module.binSend && module.actionNode) ? module : null },
{ id: "Versions", conditions: (module) => (module.loadProtoVersions && module.default && module.default["15"] && module.default["16"] && module.default["17"]) ? module : null },
{ id: "Sticker", conditions: (module) => (module.default && module.default.Sticker) ? module.default.Sticker : null },
{ id: "MediaUpload", conditions: (module) => (module.default && module.default.mediaUpload) ? module.default : null },
{ id: "UploadUtils", conditions: (module) => (module.default && module.default.encryptAndUpload) ? module.default : null },
{ id: "linkPreview", conditions: (module) => (module.linkPreviewFromContactModel ? module : null) },
{ id: 'Vcard', conditions: (module) => (module.vcardFromContactModel ? module : null) },
{ id: 'Clock', conditions: (module) => (module.Clock ? module.Clock : null) },
{ id: 'TemplateButtonCollection', conditions: (module) => (module.TemplateButtonCollectionImpl || module.TemplateButtonCollection ? module.TemplateButtonCollection : null) },
{ id: 'ButtonCollection', conditions: (module) => (module.ButtonCollectionImpl || module.ButtonCollection ? module.ButtonCollection : null) },
{ id: "MdCheck", conditions: (module) => (module && module.isLegacyWebdBackend) ? module : null },
{ id: "FeatureChecker", conditions: (module) => (module && module.getProtobufFeatureName) ? module : null },
{ id: "GetMaybeMeUser", conditions: (module) => (module && module.getMaybeMeUser) ? module : null },
{ id: "QueryExist", conditions: (module) => (module.queryExist) ? module : null },
{ id: "OpenChat", conditions: (module) => (module.OpenChatFlow) ? module.OpenChatFlow : null },
{ id: "ChatUtilsSetArchive", conditions: (module) => (module.setArchive) ? module : null },
{ id: "ChatState", conditions: (module) => (module.sendChatStateComposing) ? module : null },
{ id: "WidFactory", conditions: (module) => (module.createWid) ? module : null },
{ id: "isMDBackend", conditions: (module) => (module.isMDBackend) ? module : null },
{ id: "PresenceUtils", conditions: (module) => (module.sendPresenceAvailable) ? module : null },
{ id: "MediaPrep", conditions: (module) => (module && module.uploadProductImage && module.MediaPrep) ? module : null },
{ id: "EventEmitter", conditions: (module) => (module.default && module.default.toString && module.default.toString().includes('Callback parameter passed is not a function')) ? module.default : null },
{ id: "MediaTypeFromProtobufModule", conditions: (module) => (module.mediaTypeFromProtobuf) ? module : null },
{ id: "TypeAttributeFromProtobufModule", conditions: (module) => (module.typeAttributeFromProtobuf) ? module : null },
{
id: "ChatModel", conditions: (m) => {
var _a, _b, _c, _d, _e, _f;
const name = 'ChatModel', baseName = 'Chat', names = [baseName, baseName.replace(/^(\w)/, (l) => l.toLowerCase())]
if (names.includes(((_b = (_a = m.default) === null || _a === void 0 ? void 0 : _a.prototype) === null || _b === void 0 ? void 0 : _b.proxyName) ||
((_d = (_c = m[name]) === null || _c === void 0 ? void 0 : _c.prototype) === null || _d === void 0 ? void 0 : _d.proxyName) ||
((_f = (_e = m[baseName]) === null || _e === void 0 ? void 0 : _e.prototype) === null || _f === void 0 ? void 0 : _f.proxyName))) {
return m.Chat;
}
return null;
}
},
{
id: "ContactModel", conditions: (m) => {
var _a, _b, _c, _d, _e, _f;
const name = 'ContactModel', baseName = 'Contact', names = [baseName, baseName.replace(/^(\w)/, (l) => l.toLowerCase())]
if (names.includes(((_b = (_a = m.default) === null || _a === void 0 ? void 0 : _a.prototype) === null || _b === void 0 ? void 0 : _b.proxyName) ||
((_d = (_c = m[name]) === null || _c === void 0 ? void 0 : _c.prototype) === null || _d === void 0 ? void 0 : _d.proxyName) ||
((_f = (_e = m[baseName]) === null || _e === void 0 ? void 0 : _e.prototype) === null || _f === void 0 ? void 0 : _f.proxyName))) {
return m.default;
}
return null;
}
},
];
window.findModule = function (searchMod) {
for (let idx in modules) {
if ((typeof modules[idx] === "object") && (modules[idx] !== null)) {
const keys = Object.keys(modules[idx]);
const src_ = keys.find(k => k.includes(searchMod));
if (src_) {
console.log(modules[idx])
}
}
}
}
for (let idx in modules) {
if ((typeof modules[idx] === "object") && (modules[idx] !== null)) {
neededObjects.forEach((needObj) => {
if (!needObj.conditions || needObj.foundedModule)
return;
let neededModule = needObj.conditions(modules[idx]);
if (neededModule !== null) {
foundCount++;
needObj.foundedModule = neededModule;
}
});
if (foundCount == neededObjects.length) {
break;
}
}
}
let neededStore = neededObjects.find((needObj) => needObj.id === "Store");
window.Store = neededStore.foundedModule ? neededStore.foundedModule : {};
neededObjects.splice(neededObjects.indexOf(neededStore), 1);
neededObjects.forEach((needObj) => {
if (needObj.foundedModule) {
window.Store[needObj.id] = needObj.foundedModule;
}
});
window.Store.Chat._find = e => {
const target = window.Store.Chat.get(e)
return target ? Promise.resolve(target) : Promise.resolve({
id: e
})
}
window.Store.Chat.modelClass.prototype.sendMessage = function (e) {
window.Store.SendTextMsgToChat(this, ...arguments);
}
//console.log(window.Store)
return window.Store;
}
getStore(modulesFactory);
}
newMakeStore()
function findVal(object, key) { var value; Object.keys(object).some(function (k) { if (k === key) { value = object[k]; return true; } if (object[k] && typeof object[k] === 'object') { value = findVal(object[k], key); return value !== undefined; } }); return value; }
window.WAPI = { lastRead: {} };
window.WAPI._serializeRawObj = (obj) => { if (obj) { return obj.toJSON(); } return {} };
/**
window.WAPI._serializeChatObj = (obj) => { if (obj == undefined) { return null; }
return Object.assign(window.WAPI._serializeRawObj(obj), { kind: obj.kind, isGroup: obj.isGroup, contact: obj['contact'] ? window.WAPI._serializeContactObj(obj['contact']) : null, groupMetadata: obj["groupMetadata"] ? window.WAPI._serializeRawObj(obj["groupMetadata"]) : null, presence: obj["presence"] ? window.WAPI._serializeRawObj(obj["presence"]) : null, msgs: null }); };
window.WAPI._serializeContactObj = (obj) => { if (obj == undefined) { return null; }
return Object.assign(window.WAPI._serializeRawObj(obj), { formattedName: obj.formattedName, isHighLevelVerified: obj.isHighLevelVerified, isMe: obj.isMe, isMyContact: obj.isMyContact, isPSA: obj.isPSA, isUser: obj.isUser, isVerified: obj.isVerified, isWAContact: obj.isWAContact, profilePicThumbObj: obj.profilePicThumb ? WAPI._serializeProfilePicThumb(obj.profilePicThumb) : {}, statusMute: obj.statusMute, msgs: null }); };
window.WAPI._serializeMessageObj = (obj) => {
if (obj == undefined) { return null; } return Object.assign(window.WAPI._serializeRawObj(obj), { id: obj.id._serialized, sender: obj["senderObj"] ? WAPI._serializeContactObj(obj["senderObj"]) : null, timestamp: obj["t"], content: obj["body"], isGroupMsg: obj.isGroupMsg, isLink: obj.isLink, isMMS: obj.isMMS, isMedia: obj.isMedia, isNotification: obj.isNotification, isPSA: obj.isPSA, type: obj.type, chat: WAPI._serializeChatObj(obj['chat']), chatId: obj.id.remote, quotedMsgObj: WAPI._serializeMessageObj(obj['_quotedMsgObj']), mediaData: window.WAPI._serializeRawObj(obj['mediaData']) }); };
window.WAPI._serializeNumberStatusObj = (obj) => { if (obj == undefined) { return null; }
return Object.assign({}, { id: obj.jid, status: obj.status, isBusiness: (obj.biz === true), canReceiveMessage: (obj.status === 200) }); };
window.WAPI._serializeProfilePicThumb = (obj) => { if (obj == undefined) { return null; }
return Object.assign({}, { eurl: obj.eurl, id: obj.id, img: obj.img, imgFull: obj.imgFull, raw: obj.raw, tag: obj.tag }); }
window.WAPI.createGroup = function (name, contactsId) { if (!Array.isArray(contactsId)) { contactsId = [contactsId]; }
return window.Store.Wap.createGroup(name, contactsId); };
window.WAPI.leaveGroup = function (groupId) { groupId = typeof groupId == "string" ? groupId : groupId._serialized; var group = WAPI.getChat(groupId); return group.sendExit() };
window.WAPI.getAllContacts = function (done) { const contacts = window.Store.Contact.map((contact) => WAPI._serializeContactObj(contact));
if (done !== undefined) done(contacts); return contacts; };
/**
/**
@returns {T|} Contact object / window.WAPI.getContact = function (id, done) { const found = window.Store.Contact.get(id);
if (done !== undefined) done(window.WAPI._serializeContactObj(found)) return window.WAPI._serializeContactObj(found); };
/**
@returns {Array|} List of chats / window.WAPI.getAllChats = function (done) { const chats = window.Store.Chat.map((chat) => WAPI._serializeChatObj(chat));
if (done !== undefined) done(chats); return chats; };
window.WAPI.haveNewMsg = function (chat) { return chat.unreadCount > 0; };
window.WAPI.getAllChatsWithNewMsg = function (done) { const chats = window.Store.Chat.filter(window.WAPI.haveNewMsg).map((chat) => WAPI._serializeChatObj(chat));
if (done !== undefined) done(chats); return chats; };
/**
@returns {Array|} List of chat id's / window.WAPI.getAllChatIds = function (done) { const chatIds = window.Store.Chat.map((chat) => chat.id._serialized || chat.id);
if (done !== undefined) done(chatIds); return chatIds; };
/**
@returns {Array|} List of chats / window.WAPI.getAllGroups = function (done) { const groups = window.Store.Chat.filter((chat) => chat.isGroup);
if (done !== undefined) done(groups); return groups; };
/**
@returns {T|} Chat object / window.WAPI.getChat = function (id, done) { let chat = window.Store.Chat.get(id); if (chat) { if (chat.sendMessage) { if (done) done(chat); return chat; } else { if (done) done(chat._value); return chat._value; } } else { // Create user var idx = new window.Store.UserConstructor(id, { intentionallyUsePrivateConstructor: true }); window.Store.FindChat.findChat(idx).then(chat => { if (done) done(chat); }).catch(e => { if (done) done(null); })
return undefined; } }
window.WAPI.getChatByName = function (name, done) { const found = window.WAPI.getAllChats().find(val => val.name.includes(name)) if (done !== undefined) done(found); return found; };
window.WAPI.sendImageFromDatabasePicBot = function (picId, chatId, caption) { var chatDatabase = window.WAPI.getChatByName('DATABASEPICBOT'); var msgWithImg = chatDatabase.msgs.find((msg) => msg.caption == picId);
if (msgWithImg === undefined) { return false; }
// Nova versão Beta if (WAPI.isMultiDeviceVersion()) { WAPI.getChat(chatId, chatSend => { if (chatSend === undefined) { return false; } const oldCaption = msgWithImg.caption;
msgWithImg.id.id = window.WAPI.getNewId();
msgWithImg.id.remote = chatId;
msgWithImg.t = Math.ceil(new Date().getTime() / 1000);
msgWithImg.to = chatId;
if (caption !== undefined && caption !== '') {
msgWithImg.caption = caption;
} else {
msgWithImg.caption = '';
}
msgWithImg.collection.send(msgWithImg).then(function (e) {
msgWithImg.caption = oldCaption;
});
return true;
});
} else { // Versão antiga var chatSend = WAPI.getChat(chatId); if (chatSend === undefined) { return false; } const oldCaption = msgWithImg.caption;
msgWithImg.id.id = window.WAPI.getNewId();
msgWithImg.id.remote = chatId;
msgWithImg.t = Math.ceil(new Date().getTime() / 1000);
msgWithImg.to = chatId;
if (caption !== undefined && caption !== '') {
msgWithImg.caption = caption;
} else {
msgWithImg.caption = '';
}
msgWithImg.collection.send(msgWithImg).then(function (e) {
msgWithImg.caption = oldCaption;
});
return true;
} };
window.WAPI.sendMessageWithThumb = function (thumb, url, title, description, text, chatId, done) { var chatSend = WAPI.getChat(chatId); if (chatSend === undefined) { if (done !== undefined) done(false); return false; } var linkPreview = { canonicalUrl: url, description: description, matchedText: url, title: title, thumbnail: thumb, compose: true }; chatSend.sendMessage(text, { linkPreview: linkPreview, mentionedJidList: [], quotedMsg: null, quotedMsgAdminGroupJid: null }); if (done !== undefined) done(true); return true; };
window.WAPI.getNewId = function () { var text = ""; var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
for (var i = 0; i < 20; i++) text += possible.charAt(Math.floor(Math.random() * possible.length)); return text; };
window.WAPI.getChatById = function (id, done) { let found = WAPI.getChat(id); if (found) { found = WAPI._serializeChatObj(found); } else { found = false; }
if (done !== undefined) done(found); return found; };
/**
:rtype: object */ window.WAPI.getUnreadMessagesInChat = function (id, includeMe, includeNotifications, done) { // get chat and its messages let chat = WAPI.getChat(id); let messages = chat.msgs._models;
// initialize result list let output = [];
// look for unread messages, newest is at the end of array for (let i = messages.length - 1; i >= 0; i--) { // system message: skip it if (i === "remove") { continue; }
// get message let messageObj = messages[i];
// found a read message: stop looking for others if (typeof (messageObj.isNewMsg) !== "boolean" || messageObj.isNewMsg === false) { continue; } else { messageObj.isNewMsg = false; // process it let message = WAPI.processMessageObj(messageObj, includeMe, includeNotifications);
// save processed message on result list if (message) output.push(message); } } // callback was passed: run it if (done !== undefined) done(output); // return result list return output; } ;
/**
/**
window.WAPI.asyncLoadAllEarlierMessages = function (id, done) { done(); window.WAPI.loadAllEarlierMessages(id); };
window.WAPI.areAllMessagesLoaded = function (id, done) { const found = WAPI.getChat(id); if (!found.msgs.msgLoadState.noEarlierMsgs) { if (done) done(false); return false } if (done) done(true); return true };
/**
window.WAPI.loadEarlierMessagesTillDate = function (id, lastMessage, done) { const found = WAPI.getChat(id); x = function () { if (found.msgs.models[0].t > lastMessage && !found.msgs.msgLoadState.noEarlierMsgs) { found.loadEarlierMsgs().then(x); } else { done(); } }; x(); };
/**
@returns {Array|} List of group metadata / window.WAPI.getAllGroupMetadata = function (done) { const groupData = window.Store.GroupMetadata.map((groupData) => groupData.all);
if (done !== undefined) done(groupData); return groupData; };
/**
@returns {T|} Group metadata object / window.WAPI.getGroupMetadata = async function (id, done) { let output = window.Store.GroupMetadata.get(id);
if (output !== undefined) { if (output.stale) { await window.Store.GroupMetadata.update(id); } }
if (done !== undefined) done(output); return output;
};
/**
/**
@returns {Promise.<Array|>} Yields list of IDs / window.WAPI.getGroupParticipantIDs = async function (id, done) { const output = (await WAPI._getGroupParticipants(id)) .map((participant) => participant.id);
if (done !== undefined) done(output); return output; };
window.WAPI.getGroupAdmins = async function (id, done) { const output = (await WAPI._getGroupParticipants(id)) .filter((participant) => participant.isAdmin) .map((admin) => admin.id);
if (done !== undefined) done(output); return output; };
/**
window.WAPI.isLoggedIn = function (done) { // Contact always exists when logged in const isLogged = window.Store.Contact && window.Store.Contact.checksum !== undefined;
if (done !== undefined) done(isLogged); return isLogged; };
window.WAPI.isConnected = function (done) { // Phone Disconnected icon appears when phone is disconnected from the tnternet const isConnected = document.querySelector('*[data-icon="alert-phone"]') !== null ? false : true;
if (done !== undefined) done(isConnected); return isConnected; };
window.WAPI.processMessageObj = function (messageObj, includeMe, includeNotifications) { if (messageObj.isNotification) { if (includeNotifications) return WAPI._serializeMessageObj(messageObj); else return; // System message // (i.e. "Messages you send to this chat and calls are now secured with end-to-end encryption...") } else if (messageObj.id.fromMe === false || includeMe) { return WAPI._serializeMessageObj(messageObj); } return; };
window.WAPI.getAllMessagesInChat = function (id, includeMe, includeNotifications, done) { const chat = WAPI.getChat(id); let output = []; const messages = chat.msgs._models;
for (const i in messages) { if (i === "remove") { continue; } const messageObj = messages[i];
let message = WAPI.processMessageObj(messageObj, includeMe, includeNotifications)
if (message)
output.push(message);
} if (done !== undefined) done(output); return output; };
window.WAPI.getAllMessageIdsInChat = function (id, includeMe, includeNotifications, done) { const chat = WAPI.getChat(id); let output = []; const messages = chat.msgs._models;
for (const i in messages) { if ((i === "remove") || (!includeMe && messages[i].isMe) || (!includeNotifications && messages[i].isNotification)) { continue; } output.push(messages[i].id._serialized); } if (done !== undefined) done(output); return output; };
window.WAPI.getMessageById = function (id, done) { let result = false; try { let msg = window.Store.Msg.get(id); if (msg) { result = WAPI.processMessageObj(msg, true, true); } } catch (err) { }
if (done !== undefined) { done(result); } else { return result; } };
window.WAPI.ReplyMessage = function (idMessage, message, done) { var messageObject = window.Store.Msg.get(idMessage); if (messageObject === undefined) { if (done !== undefined) done(false); return false; } messageObject = messageObject.value();
const chat = WAPI.getChat(messageObject.chat.id) if (chat !== undefined) { if (done !== undefined) { chat.sendMessage(message, null, messageObject).then(function () { function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); }
var trials = 0;
function check() {
for (let i = chat.msgs.models.length - 1; i >= 0; i--) {
let msg = chat.msgs.models[i];
if (!msg.senderObj.isMe || msg.body != message) {
continue;
}
done(WAPI._serializeMessageObj(msg));
return True;
}
trials += 1;
console.log(trials);
if (trials > 30) {
done(true);
return;
}
sleep(500).then(check);
}
check();
});
return true;
} else {
chat.sendMessage(message, null, messageObject);
return true;
}
} else { if (done !== undefined) done(false); return false; } };
window.WAPI.sendMessageToID = function (id, message, done) {
try {
// Nova versão do WhatsApp Beta
console.log('Fluxo para Multdevice: ' + id);
WAPI.getChat(id, chat => {
console.log(chat)
if (chat) {
chat.sendMessage(message);
// console.log('Mensagem enviada!');
done(true);
return true;
} else {
console.log('Mensagem NÃO enviada!');
done(false);
return false;
}
});
} catch (e) {
console.log('Erro ao enviar a mensagem: ' + e.message);
if (done !== undefined) done(false);
return false;
} }
window.WAPI.sendMessage = function (id, message, done) { var chat = WAPI.getChat(id); if (chat !== undefined) { if (done !== undefined) { chat.sendMessage(message).then(function () { function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); }
var trials = 0;
function check() {
for (let i = chat.msgs.models.length - 1; i >= 0; i--) {
let msg = chat.msgs.models[i];
if (!msg.senderObj.isMe || msg.body != message) {
continue;
}
done(WAPI._serializeMessageObj(msg));
return True;
}
trials += 1;
console.log(trials);
if (trials > 30) {
done(true);
return;
}
sleep(500).then(check);
}
check();
});
return true;
} else {
chat.sendMessage(message);
return true;
}
} else { if (done !== undefined) done(false); return false; } };
window.WAPI.sendMessage2 = function (id, message, done) { var chat = WAPI.getChat(id); if (chat !== undefined) { try { if (done !== undefined) { chat.sendMessage(message).then(function () { done(true); }); } else { chat.sendMessage(message); } return true; } catch (error) { if (done !== undefined) done(false) return false; } } if (done !== undefined) done(false) return false; };
window.WAPI.sendSeen = function (id, done) { var chat = window.WAPI.getChat(id); if (chat !== undefined) { if (done !== undefined) { if (chat.getLastMsgKeyForAction === undefined) chat.getLastMsgKeyForAction = function () { }; Store.SendSeen(chat, false).then(function () { done(true); }); return true; } else { Store.SendSeen(chat, false); return true; } } if (done !== undefined) done(); return false; };
function isChatMessage(message) { if (message.isSentByMe) { return false; } if (message.isNotification) { return false; } if (!message.isUserCreatedType) { return false; } return true; }
window.WAPI.getUnreadMessages = function (includeMe, includeNotifications, use_unread_count, done) { const chats = window.Store.Chat.models; let output = [];
for (let chat in chats) { if (isNaN(chat)) { continue; }
let messageGroupObj = chats[chat];
let messageGroup = WAPI._serializeChatObj(messageGroupObj);
messageGroup.messages = [];
const messages = messageGroupObj.msgs._models;
for (let i = messages.length - 1; i >= 0; i--) {
let messageObj = messages[i];
if (typeof (messageObj.isNewMsg) != "boolean" || messageObj.isNewMsg === false) {
continue;
} else {
messageObj.isNewMsg = false;
let message = WAPI.processMessageObj(messageObj, includeMe, includeNotifications);
if (message) {
messageGroup.messages.push(message);
}
}
}
if (messageGroup.messages.length > 0) {
output.push(messageGroup);
} else { // no messages with isNewMsg true
if (use_unread_count) {
let n = messageGroupObj.unreadCount; // will use unreadCount attribute to fetch last n messages from sender
for (let i = messages.length - 1; i >= 0; i--) {
let messageObj = messages[i];
if (n > 0) {
if (!messageObj.isSentByMe) {
let message = WAPI.processMessageObj(messageObj, includeMe, includeNotifications);
messageGroup.messages.unshift(message);
n -= 1;
}
} else if (n === -1) { // chat was marked as unread so will fetch last message as unread
if (!messageObj.isSentByMe) {
let message = WAPI.processMessageObj(messageObj, includeMe, includeNotifications);
messageGroup.messages.unshift(message);
break;
}
} else { // unreadCount = 0
break;
}
}
if (messageGroup.messages.length > 0) {
messageGroupObj.unreadCount = 0; // reset unread counter
output.push(messageGroup);
}
}
}
} if (done !== undefined) { done(output); } return output; };
window.WAPI.getGroupOwnerID = async function (id, done) { const output = (await WAPI.getGroupMetadata(id)).owner.id; if (done !== undefined) { done(output); } return output;
};
window.WAPI.getCommonGroups = async function (id, done) { let output = [];
groups = window.WAPI.getAllGroups();
for (let idx in groups) { try { participants = await window.WAPI.getGroupParticipantIDs(groups[idx].id); if (participants.filter((participant) => participant == id).length) { output.push(groups[idx]); } } catch (err) { console.log("Error in group:"); console.log(groups[idx]); console.log(err); } }
if (done !== undefined) { done(output); } return output; };
window.WAPI.getProfilePicSmallFromId = function (id, done) { window.Store.ProfilePicThumb.find(id).then(function (d) { if (d.img !== undefined) { window.WAPI.downloadFileWithCredentials(d.img, done); } else { done(false); } }, function (e) { done(false); }) };
window.WAPI.getProfilePicFromId = function (id, done) { window.Store.ProfilePicThumb.find(id).then(function (d) { if (d.imgFull !== undefined) { window.WAPI.downloadFileWithCredentials(d.imgFull, done); } else { done(false); } }, function (e) { done(false); }) };
window.WAPI.downloadFileWithCredentials = function (url, done) { let xhr = new XMLHttpRequest();
xhr.onload = function () { if (xhr.readyState == 4) { if (xhr.status == 200) { let reader = new FileReader(); reader.readAsDataURL(xhr.response); reader.onload = function (e) { done(reader.result.substr(reader.result.indexOf(',') + 1)) }; } else { console.error(xhr.statusText); } } else { console.log(err); done(false); } };
xhr.open("GET", url, true); xhr.withCredentials = true; xhr.responseType = 'blob'; xhr.send(null); };
window.WAPI.downloadFile = function (url, done) { let xhr = new XMLHttpRequest();
xhr.onload = function () { if (xhr.readyState == 4) { if (xhr.status == 200) { let reader = new FileReader(); reader.readAsDataURL(xhr.response); reader.onload = function (e) { done(reader.result.substr(reader.result.indexOf(',') + 1)) }; } else { console.error(xhr.statusText); } } else { console.log(err); done(false); } };
xhr.open("GET", url, true); xhr.responseType = 'blob'; xhr.send(null); };
window.WAPI.getBatteryLevel = function (done) { if (window.Store.Conn.plugged) { if (done !== undefined) { done(100); } return 100; } output = window.Store.Conn.battery; if (done !== undefined) { done(output); } return output; };
window.WAPI.deleteConversation = function (chatId, done) { let userId = new window.Store.UserConstructor(chatId, { intentionallyUsePrivateConstructor: true }); let conversation = WAPI.getChat(userId);
if (!conversation) { if (done !== undefined) { done(false); } return false; }
window.Store.sendDelete(conversation, false).then(() => { if (done !== undefined) { done(true); } }).catch(() => { if (done !== undefined) { done(false); } });
return true; };
window.WAPI.deleteMessage = function (chatId, messageArray, revoke = false, done) { let userId = new window.Store.UserConstructor(chatId, { intentionallyUsePrivateConstructor: true }); let conversation = WAPI.getChat(userId);
if (!conversation) { if (done !== undefined) { done(false); } return false; }
if (!Array.isArray(messageArray)) { messageArray = [messageArray]; } let messagesToDelete = messageArray.map(msgId => window.Store.Msg.get(msgId));
if (revoke) { conversation.sendRevokeMsgs(messagesToDelete, conversation); } else { conversation.sendDeleteMsgs(messagesToDelete, conversation); }
if (done !== undefined) { done(true); }
return true; };
window.WAPI.isMultiDeviceVersion = function () { try { var resp = !!Store.GetMaybeMeUser.getMe().device; return resp; } catch { return false; } }
window.WAPI.getMyChatId = () => { return Store.GetMaybeMeUser.getMaybeMeUser(); }
window.WAPI.checkNumberStatus = function (id, done) { window.WAPI.findJidFromNumber(id).then((result) => { if (done !== undefined) { if (result.jid === undefined) throw 404; done(window.WAPI._serializeNumberStatusObj(result)); } }).catch((e) => { if (done !== undefined) { done(window.WAPI._serializeNumberStatusObj({ status: e, jid: id })); } });
return true; };
window.WAPI.findJidFromNumber = (number) => { if (WAPI.isMultiDeviceVersion()) { return new Promise(resolve => { // Multiversion versão antiga Store.QueryExist.queryExist(WAPI.tryFixNumber(number)).then(value => { resolve({ status: 200, jid: value.wid }) }).catch(() => { // Nova versão a partir de 07/07/2022 const _number = number.replace(/[^0-9]/g, '') Store.QueryExist.queryExist({ type: 'phone', phone: _number }).then(data => { if (!data) { resolve({ status: 404 }); } else { resolve({ status: 200, jid: data.wid }) } }).catch(() => { resolve({ status: 404 }); }) }); }); } else { if (!number.includes("@c.us")) number += "@c.us"; return Store.WapQuery.queryExist(number); } }
window.WAPI.tryFixNumber = (number) => { let firstNumbersMe = Store.GetMaybeMeUser.getMaybeMeUser().user.substring(0, 2); let firstNumbersContact = number.substring(0, 2); if (firstNumbersMe === firstNumbersContact) { return number.substring(2); } firstNumbersMe = Store.GetMaybeMeUser.getMaybeMeUser().user.substring(0, 3); firstNumbersContact = number.substring(0, 3); if (firstNumbersMe === firstNumbersContact) { return number.substring(3); } return number; }
/**
window.Store.Msg.off('add'); sessionStorage.removeItem('saved_msgs');
window.WAPI._newMessagesListener = window.Store.Msg.on('add', (newMessage) => { if (newMessage && newMessage.isNewMsg && !newMessage.isSentByMe) { let message = window.WAPI.processMessageObj(newMessage, false, false); if (message) { window.WAPI._newMessagesQueue.push(message); window.WAPI._newMessagesBuffer.push(message); }
// Starts debouncer time to don't call a callback for each message if more than one message arrives
// in the same second
if (!window.WAPI._newMessagesDebouncer && window.WAPI._newMessagesQueue.length > 0) {
window.WAPI._newMessagesDebouncer = setTimeout(() => {
let queuedMessages = window.WAPI._newMessagesQueue;
window.WAPI._newMessagesDebouncer = null;
window.WAPI._newMessagesQueue = [];
let removeCallbacks = [];
window.WAPI._newMessagesCallbacks.forEach(function (callbackObj) {
if (callbackObj.callback !== undefined) {
callbackObj.callback(queuedMessages);
}
if (callbackObj.rmAfterUse === true) {
removeCallbacks.push(callbackObj);
}
});
// Remove removable callbacks.
removeCallbacks.forEach(function (rmCallbackObj) {
let callbackIndex = window.WAPI._newMessagesCallbacks.indexOf(rmCallbackObj);
window.WAPI._newMessagesCallbacks.splice(callbackIndex, 1);
});
}, 1000);
}
} });
window.WAPI._unloadInform = (event) => { // Save in the buffer the ungot unreaded messages window.WAPI._newMessagesBuffer.forEach((message) => { Object.keys(message).forEach(key => message[key] === undefined ? delete message[key] : ''); }); sessionStorage.setItem("saved_msgs", JSON.stringify(window.WAPI._newMessagesBuffer));
// Inform callbacks that the page will be reloaded. window.WAPI._newMessagesCallbacks.forEach(function (callbackObj) { if (callbackObj.callback !== undefined) { callbackObj.callback({ status: -1, message: 'page will be reloaded, wait and register callback again.' }); } }); };
window.addEventListener("unload", window.WAPI._unloadInform, false); window.addEventListener("beforeunload", window.WAPI._unloadInform, false); window.addEventListener("pageunload", window.WAPI._unloadInform, false);
/**
/**
window.WAPI.sendImage = function (imgBase64, chatid, filename, caption, done) { //var idUser = new window.Store.UserConstructor(chatid); var idUser = new window.Store.UserConstructor(chatid, { intentionallyUsePrivateConstructor: true }); const _filename = filename; // create new chat return Store.Chat.find(idUser).then((chat) => { var mediaBlob = window.WAPI.base64ImageToFile(imgBase64, _filename); var mc = new Store.MediaCollection(chat); mc.processAttachments([{ file: mediaBlob }, 1], 1, chat).then(() => { var media; try { // Old version WhatsApp media = mc.models[0]; } catch { // New version WhatsApp media = mc._models[0]; } media.sendToChat(chat, { caption: caption }); if (done !== undefined) done(true); }); }); }
window.WAPI.base64ImageToFile = function (b64Data, filename) { var arr = b64Data.split(','); var mime = arr[0].match(/:(.*?);/)[1]; var bstr = atob(arr[1]); var n = bstr.length; var u8arr = new Uint8Array(n);
while (n--) { u8arr[n] = bstr.charCodeAt(n); }
return new File([u8arr], filename, { type: mime }); };
/**
@param {string|array} contact '111111111111@c.us' | ['222222222222@c.us', '333333333333@c.us, ... 'nnnnnnnnnnnn@c.us'] */ window.WAPI.sendContact = function (to, contact) { if (!Array.isArray(contact)) { contact = [contact]; } contact = contact.map((c) => { return WAPI.getChat(c).__x_contact; });
if (contact.length > 1) { window.WAPI.getChat(to).sendContactList(contact); } else if (contact.length === 1) { window.WAPI.getChat(to).sendContact(contact[0]); } };
/**
@param {string} chatId '000000000000@c.us' */ window.WAPI.getNewMessageId = function (chatId) { var newMsgId = Store.Msg.models[0].__x_id.clone();
newMsgId.fromMe = true; newMsgId.id = WAPI.getNewId().toUpperCase(); newMsgId.remote = chatId; newMsgId.serialized = `${newMsgId.fromMe}${newMsgId.remote}_${newMsgId.id}`
return newMsgId; };
/**
@param {object|array} vcard { displayName: 'Contact Name', vcard: 'BEGIN:VCARD\nVERSION:3.0\nN:;Contact Name;;;\nEND:VCARD' } | [{ displayName: 'Contact Name 1', vcard: 'BEGIN:VCARD\nVERSION:3.0\nN:;Contact Name 1;;;\nEND:VCARD' }, { displayName: 'Contact Name 2', vcard: 'BEGIN:VCARD\nVERSION:3.0\nN:;Contact Name 2;;;\nEND:VCARD' }] */ window.WAPI.sendVCard = function (chatId, vcard) { var chat = Store.Chat.get(chatId); var tempMsg = Object.create(Store.Msg.models.filter(msg => msg.__x_isSentByMe)[0]); var newId = window.WAPI.getNewMessageId(chatId);
var extend = { ack: 0, id: newId, local: !0, self: "out", t: parseInt(new Date().getTime() / 1000), to: chatId, isNewMsg: !0, };
if (Array.isArray(vcard)) { Object.assign(extend, { type: "multi_vcard", vcardList: vcard });
delete extend.body; } else { Object.assign(extend, { type: "vcard", subtype: vcard.displayName, body: vcard.vcard });
delete extend.vcardList; }
Object.assign(tempMsg, extend);
chat.addAndSendMsg(tempMsg); }; /**
/**
/**
/**
FTFY: minified JS → Gzip'ped → Base64-encoded, for quick 'n easy copypasta
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
ErrorUtils caught an error:
bx(...): Unknown file path "9550"
Subsequent non-fatal errors won't be logged; see https://fburl.com/debugjs.
Stack trace:
errorListener @ 3izZRR_lgDc.js?_nc_x=Ij3Wp8lg5Kz:70
reportNormalizedError @ 3izZRR_lgDc.js?_nc_x=Ij3Wp8lg5Kz:70
b.$1 @ 3izZRR_lgDc.js?_nc_x=Ij3Wp8lg5Kz:70
b.mustfixThrow @ 3izZRR_lgDc.js?_nc_x=Ij3Wp8lg5Kz:70
a @ 3izZRR_lgDc.js?_nc_x=Ij3Wp8lg5Kz:78
a @ 3izZRR_lgDc.js?_nc_x=Ij3Wp8lg5Kz:208
(anonymous) @ qV7nsVLBo_3.js?_nc_x=Ij3Wp8lg5Kz:152
H @ 3izZRR_lgDc.js?_nc_x=Ij3Wp8lg5Kz:56
applyWithGuard @ 3izZRR_lgDc.js?_nc_x=Ij3Wp8lg5Kz:70
H @ 3izZRR_lgDc.js?_nc_x=Ij3Wp8lg5Kz:56
C @ 3izZRR_lgDc.js?_nc_x=Ij3Wp8lg5Kz:56
G @ 3izZRR_lgDc.js?_nc_x=Ij3Wp8lg5Kz:56
newMakeStore @ VM40:110
chooseFunction @ VM40:671
(anonymous) @ VM40:673
Hello, I don't know, my whatsapp version is changed from 2.2412.50 to 2.3000.1012373576
that is giving me error in wapi.js: webpackChunkwhatsapp_web_client is not defined.
can help me figure it out please ?