mukulhase / WebWhatsapp-Wrapper

An API for sending and receiving messages over web.whatsapp [Working as of 18th May 2018]
https://webwhatsapi.readthedocs.io/en/latest/
MIT License
2.02k stars 796 forks source link

SendMessage don't Work. File: WAPI.js on new number is not working for business whatsapp account #1073

Open mraakashjoshi opened 2 years ago

mraakashjoshi commented 2 years ago

When we are trying to send message on new number of which chat does not exist. then message is not sending. but when we are sending message for which chat already exist then message sending is working.

abdulaziz1999 commented 2 years ago

it's true that I also experienced this, do I have to move whatsapp?

mraakashjoshi commented 2 years ago

I found one solution. Use sendmessagetoid instead of sendmessage

abdulaziz1999 commented 2 years ago

how do you have to change it?

abdulaziz1999 commented 2 years ago

which part should be changed? in wapi.js ?

abdulaziz1999 commented 2 years ago

can you share the wapi.js?

mikelustosa commented 2 years ago

você pode compartilhar o wapi.js?

https://github.com/mikelustosa/Projeto-TInject/blob/master/Source/JS/js.abr

andlb commented 2 years ago

Bom dia.

Segue em anexo. Mudei para txt para conseguir te enviar. Se precisar, estou à disposição.

Obrigado.

On Sat, Sep 11, 2021 at 9:27 AM Mike W. Lustosa @.***> wrote:

você pode compartilhar o wapi.js?

https://github.com/mikelustosa/Projeto-TInject/blob/master/Source/JS/js.abr

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/mukulhase/WebWhatsapp-Wrapper/issues/1073#issuecomment-917399164, or unsubscribe https://github.com/notifications/unsubscribe-auth/AG4WZ4L2ULISMM4HB47WWFTUBNDMBANCNFSM5DSMVOEA . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

--

Andre Luis Fone: +55 (17) 982098889 LinkedIn: www.linkedin.com/in/andreborgespaula

/**

/**

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;

};

/**

/**

/**

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;

};

/**

/**

/**

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;
}
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;

};

/**

/**

/**

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(); };

/**

/**

};

/**

/**

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 {
    //alert('entrou ak1');
    window.getContact = (id) => {
        return Store.WapQuery.queryExist(id);
    }
    window.getContact(id).then(contact => {
        //alert('entrou ak3');
        if (contact.status === 404) {
            done(true);
        } else {
            //alert('entrou ak4');
            Store.FindChat.findChat(contact.jid).then(chat => {
                //alert('entrou ak5');
                chat.sendMessage(message);
            }).catch(reject => {
                //alert('entrou ak6');
                if (WAPI.sendMessage(id, message)) {
                    //alert('entrou ak7');
                    done(true);
                    return true;
                }else{
                    //alert('entrou ak8');
                    done(false);
                    return false;
                }
            });
        }
    });
} catch (e) {
    //alert('entrou ak9');
    if (window.Store.Chat.length === 0)
        return false;

    firstChat = Store.Chat.models[0];
    var originalID = firstChat.id;
    firstChat.id = typeof originalID === "string" ? id : new window.Store.UserConstructor(id, { intentionallyUsePrivateConstructor: true });
    if (done !== undefined) {
        firstChat.sendMessage(message).then(function () {
            firstChat.id = originalID;
            done(true);
        });
        return true;
    } else {
        firstChat.sendMessage(message);
        firstChat.id = originalID;
        return true;
    }
}
//alert('entrou ak10');
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.checkNumberStatus = function (id, done) { window.Store.WapQuery.queryExist(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.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 }); // create new chat return Store.FindChat.findChat(idUser).then((chat) => { var mediaBlob = window.WAPI.base64ImageToFile(imgBase64, filename); var mc = new Store.MediaCollection(chat); mc.processAttachments([{file: mediaBlob}, 1], chat, 1).then(() => { var 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});

};

/**

/**

/**

/**

/**

/**

tetradox commented 2 years ago

{ id: 'FindChat', conditions: (module) => (module && module.findChat)?module : null},

I added.

and

window.Store.Chat._find = e => { const target = window.Store.Chat.get(e) return target ? Promise.resolve(target) : Promise.resolve({ id: e }) }

added

I use Store.FindChat.findChat instead of Store.Chat.find

but it doesn't send to a new number again.

erm3nda commented 2 years ago

As far as I remember, you must create the chat user object using the private constructor.

Locate wapi.js, and around line 400, there's a function called getChatByID which is used by many functions. The key here, is that found will be never returned when there's no chat, so, you can create it internally and use it.

Add in the very first line of window.WAPI.getChatById: var id = new window.Store.UserConstructor(id, {intentionallyUserPrivateConstructor: true});

Doing that, the chat will be created internally, so, when let found = WAPI.getChat(id) runs, it will find it.

You're even better if patch directly the getChat function so when it's false, does the trick creating it.

erm3nda commented 2 years ago

Also want to clarify, that I am working with Beta with no problem... I can send as always.

duzaq commented 2 years ago

// use this code window.WAPI.sendMessageToID2 = function (id, message, done) { try { // Create user var idx = new window.Store.UserConstructor(id, {intentionallyUsePrivateConstructor: true}); // Get chat var chat = window.Store.Chat.find(idx); // Send message chat._value.sendMessage(message); } catch (e) { return false;

}
if (done !== undefined) done(false);
return false;

}; //window.WAPI.sendMessageToID2 ('0000000000@c.us','oi');

KhushalVariance commented 10 months ago

I want to get the selected contact from contact list. how can i know the details of selected number? can anyone have solution for this?