-
-
Save sjcotto/41ab50ed18dd25c05b96fb3b30876713 to your computer and use it in GitHub Desktop.
function isChatMessage(message) { | |
if (message.__x_isSentByMe) { | |
return false; | |
} | |
if (message.__x_isNotification) { | |
return false; | |
} | |
if (!message.__x_isUserCreatedType) { | |
return false; | |
} | |
return true; | |
} | |
function getUnreadChats() { | |
var Chats = Store.Chat.models; | |
var Output = []; | |
for (chat in Chats) { | |
if (isNaN(chat)) { | |
continue; | |
}; | |
var temp = {}; | |
temp.contact = Chats[chat].__x_formattedTitle; | |
temp.id = Chats[chat].__x_id; | |
temp.messages = []; | |
var messages = Chats[chat].msgs.models; | |
for (var i = messages.length - 1; i >= 0; i--) { | |
if (!messages[i].__x_isNewMsg) { | |
break; | |
} else { | |
if (!isChatMessage(messages[i])) { | |
continue | |
} | |
messages[i].__x_isNewMsg = false; | |
temp.messages.push({ | |
message: messages[i].__x_body, | |
timestamp: messages[i].__x_t, | |
type : messages[i].__x_type, | |
e : messages[i] | |
}); | |
} | |
} | |
if(temp.messages.length > 0) { | |
Output.push(temp); | |
} | |
} | |
console.log("Unread messages: ", Output); | |
return Output; | |
} |
function sendMsg (id, text) { | |
var Chats = Store.Chat.models; | |
var contact = id; | |
var message = text; | |
for (chat in Chats) { | |
if (isNaN(chat)) { | |
continue; | |
}; | |
var temp = {}; | |
temp.contact = Chats[chat].__x__formattedTitle; | |
temp.id = Chats[chat].__x_id; | |
if(temp.id.search(contact)!=-1 && temp.id.search('g.us')==-1 ){ | |
Chats[chat].sendMessage(message); | |
return true | |
} | |
} | |
} |
New solution:
setTimeout(function() {
// Returns promise that resolves to all installed modules
function getAllModules() {
return new Promise((resolve) => {
const id = _.uniqueId("fakeModule_");
window["webpackJsonp"](
[],
{
[id]: function(module, exports, __webpack_require__) {
resolve(__webpack_require__.c);
}
},
[id]
);
});
}
var modules = getAllModules()._value;
// Automatically locate modules
for (var key in modules) {
if (modules[key].exports) {
if (modules[key].exports.default) {
if (modules[key].exports.default.Wap) {
store_id = modules[key].id.replace(/"/g, '"');
}
}
}
}
}, 5000);
function _requireById(id) {
return webpackJsonp([], null, [id]);
}
// Module IDs
var store_id = 0;
var Store = {};
function init() {
Store = _requireById(store_id).default;
console.log("Store is ready" + Store);
}
setTimeout(function() {
init();
}, 7000);
For send media like image this code working for me https://gist.github.com/phpRajat/a6422922efae32914f4dbd1082f3f412
Awesome this helps. I am using this to send web link, but the preview (og-image) and all is not loading up
It just goes as a simple link, without any preview. Is there a way we can handle that as well
Awesome. Good job.
But how do you integrate this code with an external service?
I wrote a python server that handles input messages and answers like a bot, later I wrote an ajax call in this code to make the remote call.
However, I keep having tons of problems regarding security.
I have already tried all possible workaround I can think of with no success yet.
How do you integrate this with external sources?
If anyone is having trouble trying to remove a message for everyone in a chat, I made a script for that:
Use: deleteMessage("5************-15********@g.us", "I will be deleted")
// The chat_id is in chat.__x_id._serialized;
window.deleteMessage = function(chat_id, msg_str) {
if (window.Store === undefined) {
try { // Often this cause the error "Cannot read property 'call' of undefined" but works anyway
webpackJsonp([], {"bcihgfbdeb": (x, y, z) => window.Store = z('"bcihgfbdeb"')}, "bcihgfbdeb");
webpackJsonp([], {"iaeeehaci": (x, y, z) => window.Store.Wap = z('"iaeeehaci"')}, "iaeeehaci");
} catch (e) {}
}
Chats = Store.Chat.models
for(chat in Chats) {
if (isNaN(chat)) {
continue;
};
temp_id = Chats[chat].__x_id._serialized;
if(temp_id.search(chat_id) != -1){
messages = Chats[chat].msgs.models
for(message in messages) {
temp_msg = messages[message]
if(temp_msg.__x_text == msg_str && temp_msg.canRevoke()) {
temp_msg.sendRevoke(temp_msg)
return true;
}
}
}
}
}
Temp.id.search is not a function
Here is a quick fix for Store is not defined
Just run
if (window.Store === undefined) {
webpackJsonp([], {"bcihgfbdeb": (x, y, z) => window.Store = z('"bcihgfbdeb"')}, "bcihgfbdeb");
webpackJsonp([], {"iaeeehaci": (x, y, z) => window.Store.Wap = z('"iaeeehaci"')}, "iaeeehaci");
}
Credit @schgressive
A little update:
if (window.Store === undefined) {
webpackJsonp([], { "bcihgfbdeb": (x, y, z) => window.Store = z('"bcihgfbdeb"') }, "bcihgfbdeb");
webpackJsonp([], { "cbagcefdge": (x, y, z) => window.Store.Wap = z('"cbagcefdge"') }, "cbagcefdge");
}
A better fix to find the Store Object:
https://github.com/Zibri/WhatsAppWebApi/blob/master/zstore.js
but the script errors out saying:
Uncaught TypeError: temp.id.search is not a function
Uncaught TypeError: temp.id.search is not a function
Change to temp.id = Chats[chat].__x_id.user;
And how to get received message event?
The sendMessage function in the Store.Chat.models[i].sendMessage has disappeared, has someone successfully fixed that?
The error
M433:1 Uncaught TypeError: Store.Chat.models[0].sendMessage is not a function
Store.Chat.models
Uncaught TypeError: Cannot read property 'models' of undefined
function sendMsg (id, text) {
if (window.Store === undefined) {
webpackJsonp([], {"bcihgfbdeb": (x, y, z) => window.Store = z('"bcihgfbdeb"')}, "bcihgfbdeb");
webpackJsonp([], {"iaeeehaci": (x, y, z) => window.Store.Wap = z('"iaeeehaci"')}, "iaeeehaci");
}
var Chats = Store.Chat.models;
var contact = id;
var message = text;
for (chat in Chats) {
if (isNaN(chat)) {
continue;
};
var temp = {};
temp.contact = Chats[chat].__x__formattedTitle;
temp.id = Chats[chat].__x_id;
if(temp.id.search(contact)!=-1 && temp.id.search('g.us')==-1 ){
Chats[chat].sendMessage(message);
return true
}
}
}
SendMsg(91**********,"test msg")
this above code working perfectly if i send message to existing chat contact number
But if i put new mobile number which is not exist in my whatsapp chat contact list then < SendMsg(new_number,"test msg") > not working
Please help, Thank You
Thank you for sharing above code :)