Compare commits

...

17 Commits

Author SHA1 Message Date
Pedro Lopez
8627fc3d71 chore: mark version v1.8.0 2020-08-25 23:06:36 -04:00
Pedro Lopez
502b22f6d7 feat: forward messages
close #316
2020-08-25 23:00:35 -04:00
Pedro Lopez
590ecc2351 chore: update supported WhatsApp Web version to 2.2035.12 2020-08-25 22:34:10 -04:00
Pedro Lopez
7da8345722 fix: upload media
As of WhatsApp Web v2.2035.12, the structure of the return value for  `uploadMedia()` now returns an object that contains the previously returned data in its `mediaEntry` property.

fix #318
2020-08-25 22:30:04 -04:00
Pedro Lopez
4344df6152 fix: properly detect successful authentication on dark mode 2020-08-25 21:40:57 -04:00
Pedro Lopez
382259488b feat(dev): Interactive shell for quick testing/exploration 2020-08-17 23:43:50 -04:00
Pedro Lopez
7180beda2e feat: Get corresponding Chat from Contact object and vice versa
close #269
2020-08-17 23:31:19 -04:00
Pedro Lopez
34aa136bf9 fix(docs): Correctly document Chat timestamp property
close #287
2020-08-17 22:36:32 -04:00
Pedro Lopez
2a58cfe8e2 fix(types): properly set optional arguments when sending / replying to messages
close #309
2020-08-17 22:28:27 -04:00
Pedro Lopez
9da553ecb9 feat: Set client's display name (pushname) 2020-08-17 22:19:29 -04:00
stefanfuchs
97705b1865 fix: MessageMedia interface to class (index.d.ts) (#301)
* fix: change MessageMedia to class

* fix: remove all references to MessageMediaInterface

* add MessageMedia constructor params docs
2020-08-08 15:03:09 -04:00
stefanfuchs
fbdfd2c4dd fix: Constants export in index.js (#285)
* fix: add Constants export in index.js
* fix: add missing constants export in index.d.ts


Co-authored-by: Pedro S. Lopez <pedroslopez@me.com>
2020-08-03 02:58:15 -04:00
stefanfuchs
5c84a1651d chore: add missing types in JSDoc/TSDoc (ClientOptions, ClientInfo, MessageSendOptions, Session) (#286)
* chore: add ClientOptions and ClientInfo in JSDoc

* chore: add MessageSendOptions type

* chore: add ClientSession type in JSDoc

* chore: remove @todo from createGroup (was already solved)

Co-authored-by: Pedro Lopez <pedroslopez@me.com>
2020-08-03 02:52:37 -04:00
stefanfuchs
bfea74f567 fix: add missing type definitions (#278)
* fix: @todo docs improvements

* fix: add ClientInfo to Client typings

* add ClientInfoPhone

* fix: set getBatteryStatus as async

* add ClientInfo comment

Co-authored-by: Pedro S. Lopez <pedroslopez@me.com>
2020-07-11 02:58:57 -04:00
YY
a10b458cd5 feat: custom user Agent in Client (#271)
* Added Option to Custom User Agent in Client

* Update Typescript Index

* Delete Variable UserAgent From Client

* Update Variable UserAgent to userAgent
2020-07-03 02:05:23 -04:00
Pedro Lopez
de2c441870 chore: update supported whatsapp web version 2.2025.6 2020-06-18 01:48:10 -04:00
Pedro Lopez
bff60bc9f6 chore: bump version v1.7.0-post 2020-06-18 01:47:46 -04:00
45 changed files with 1353 additions and 374 deletions

3
.gitignore vendored
View File

@@ -63,3 +63,6 @@ typings/
# next.js build output # next.js build output
.next .next
# macOS Thumbnails
._*

View File

@@ -1,4 +1,4 @@
[![npm](https://img.shields.io/npm/v/whatsapp-web.js.svg)](https://www.npmjs.com/package/whatsapp-web.js) [![Depfu](https://badges.depfu.com/badges/4a65a0de96ece65fdf39e294e0c8dcba/overview.svg)](https://depfu.com/github/pedroslopez/whatsapp-web.js?project_id=9765) ![WhatsApp_Web 2.2023.2](https://img.shields.io/badge/WhatsApp_Web-2.2023.2-brightgreen.svg) [![Discord Chat](https://img.shields.io/discord/698610475432411196.svg?logo=discord)](https://discord.gg/H7DqQs4) [![npm](https://img.shields.io/npm/v/whatsapp-web.js.svg)](https://www.npmjs.com/package/whatsapp-web.js) [![Depfu](https://badges.depfu.com/badges/4a65a0de96ece65fdf39e294e0c8dcba/overview.svg)](https://depfu.com/github/pedroslopez/whatsapp-web.js?project_id=9765) ![WhatsApp_Web 2.2035.12](https://img.shields.io/badge/WhatsApp_Web-2.2035.12-brightgreen.svg) [![Discord Chat](https://img.shields.io/discord/698610475432411196.svg?logo=discord)](https://discord.gg/H7DqQs4)
# whatsapp-web.js # whatsapp-web.js
A WhatsApp API client that connects through the WhatsApp Web browser app A WhatsApp API client that connects through the WhatsApp Web browser app

View File

@@ -4,7 +4,7 @@
<head> <head>
<meta name="generator" content="JSDoc 3.6.4"> <meta name="generator" content="JSDoc 3.6.4">
<meta charset="utf-8"> <meta charset="utf-8">
<title>whatsapp-web.js 1.7.0 &raquo; Class: Base</title> <title>whatsapp-web.js 1.8.0 &raquo; Class: Base</title>
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css">
@@ -15,7 +15,7 @@
<nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar"> <nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar">
<div id="jsdoc-navbar-container"> <div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content"> <div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>7.<wbr>0</a> <a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>8.<wbr>0</a>
</div> </div>
</div> </div>
</nav> </nav>
@@ -50,7 +50,7 @@
<footer id="jsdoc-footer" class="jsdoc-footer"> <footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container"> <div id="jsdoc-footer-container">
<p> <p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on June 18, 2020. Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on August 25, 2020.
</p> </p>
</div> </div>
</footer> </footer>

View File

@@ -4,7 +4,7 @@
<head> <head>
<meta name="generator" content="JSDoc 3.6.4"> <meta name="generator" content="JSDoc 3.6.4">
<meta charset="utf-8"> <meta charset="utf-8">
<title>whatsapp-web.js 1.7.0 &raquo; Class: BusinessContact</title> <title>whatsapp-web.js 1.8.0 &raquo; Class: BusinessContact</title>
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css">
@@ -15,7 +15,7 @@
<nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar"> <nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar">
<div id="jsdoc-navbar-container"> <div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content"> <div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>7.<wbr>0</a> <a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>8.<wbr>0</a>
</div> </div>
</div> </div>
</nav> </nav>
@@ -91,8 +91,15 @@
</div> </div>
</div> </div>
<div class="summary-callout"> <div class="summary-callout">
<h2 class="summary-callout-heading">Method</h2> <h2 class="summary-callout-heading">Methods</h2>
<div class="summary-content"> <div class="summary-content">
<div class="summary-column">
<dl class="dl-summary-callout">
<dt><a href="BusinessContact.html#getChat">getChat()</a></dt>
<dd>
</dd>
</dl>
</div>
<div class="summary-column"> <div class="summary-column">
<dl class="dl-summary-callout"> <dl class="dl-summary-callout">
<dt><a href="BusinessContact.html#getProfilePicUrl">getProfilePicUrl()</a></dt> <dt><a href="BusinessContact.html#getProfilePicUrl">getProfilePicUrl()</a></dt>
@@ -102,8 +109,6 @@
</div> </div>
<div class="summary-column"> <div class="summary-column">
</div> </div>
<div class="summary-column">
</div>
</div> </div>
</div> </div>
</section> </section>
@@ -206,8 +211,18 @@
<dd><a href="Contact.html#shortName">Contact#shortName</a></dd> <dd><a href="Contact.html#shortName">Contact#shortName</a></dd>
</dl> </dl>
</section> </section>
<h2>Method</h2> <h2>Methods</h2>
<section> <section>
<div class="symbol-detail-labels"><span class="label label-async">async</span></div>
<h3 id="getChat"><span class="symbol-name">getChat</span><span class="signature"><span class="signature-params">()</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing <a href="Chat.html">Chat</a></span></span></h3>
<p>Returns the Chat that corresponds to this Contact.
Will return null when getting chat for currently logged in user.</p>
<dl class="dl-compact">
<dt>Inherited from</dt>
<dd><a href="Contact.html#getChat">Contact#getChat</a></dd>
<dt>Returns</dt>
<dd></dd>
</dl>
<div class="symbol-detail-labels"><span class="label label-async">async</span></div> <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
<h3 id="getProfilePicUrl"><span class="symbol-name">getProfilePicUrl</span><span class="signature"><span class="signature-params">()</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing string</span></span></h3> <h3 id="getProfilePicUrl"><span class="symbol-name">getProfilePicUrl</span><span class="signature"><span class="signature-params">()</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing string</span></span></h3>
<p>Returns the contact's profile picture URL, if privacy settings allow it</p> <p>Returns the contact's profile picture URL, if privacy settings allow it</p>
@@ -227,7 +242,7 @@
<footer id="jsdoc-footer" class="jsdoc-footer"> <footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container"> <div id="jsdoc-footer-container">
<p> <p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on June 18, 2020. Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on August 25, 2020.
</p> </p>
</div> </div>
</footer> </footer>

View File

@@ -4,7 +4,7 @@
<head> <head>
<meta name="generator" content="JSDoc 3.6.4"> <meta name="generator" content="JSDoc 3.6.4">
<meta charset="utf-8"> <meta charset="utf-8">
<title>whatsapp-web.js 1.7.0 &raquo; Class: Chat</title> <title>whatsapp-web.js 1.8.0 &raquo; Class: Chat</title>
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css">
@@ -15,7 +15,7 @@
<nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar"> <nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar">
<div id="jsdoc-navbar-container"> <div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content"> <div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>7.<wbr>0</a> <a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>8.<wbr>0</a>
</div> </div>
</div> </div>
</nav> </nav>
@@ -89,29 +89,32 @@
<dt><a href="Chat.html#delete">delete()</a></dt> <dt><a href="Chat.html#delete">delete()</a></dt>
<dd> <dd>
</dd> </dd>
<dt><a href="Chat.html#fetchMessages">fetchMessages(searchOptions)</a></dt>
<dd>
</dd>
</dl> </dl>
</div> </div>
<div class="summary-column"> <div class="summary-column">
<dl class="dl-summary-callout"> <dl class="dl-summary-callout">
<dt><a href="Chat.html#fetchMessages">fetchMessages(searchOptions)</a></dt> <dt><a href="Chat.html#getContact">getContact()</a></dt>
<dd> <dd>
</dd> </dd>
<dt><a href="Chat.html#mute">mute(unmuteDate)</a></dt> <dt><a href="Chat.html#mute">mute(unmuteDate)</a></dt>
<dd> <dd>
</dd> </dd>
<dt><a href="Chat.html#sendMessage">sendMessage(content, options)</a></dt> <dt><a href="Chat.html#sendMessage">sendMessage(content[, options])</a></dt>
<dd> <dd>
</dd> </dd>
<dt><a href="Chat.html#sendSeen">sendSeen()</a></dt> <dt><a href="Chat.html#sendSeen">sendSeen()</a></dt>
<dd> <dd>
</dd> </dd>
<dt><a href="Chat.html#sendStateRecording">sendStateRecording()</a></dt>
<dd>
</dd>
</dl> </dl>
</div> </div>
<div class="summary-column"> <div class="summary-column">
<dl class="dl-summary-callout"> <dl class="dl-summary-callout">
<dt><a href="Chat.html#sendStateRecording">sendStateRecording()</a></dt>
<dd>
</dd>
<dt><a href="Chat.html#sendStateTyping">sendStateTyping()</a></dt> <dt><a href="Chat.html#sendStateTyping">sendStateTyping()</a></dt>
<dd> <dd>
</dd> </dd>
@@ -163,7 +166,7 @@
</dl> </dl>
<h3 id="timestamp"><span class="symbol-name">timestamp</span><small class="property-type"> <h3 id="timestamp"><span class="symbol-name">timestamp</span><small class="property-type">
&nbsp;number</small></h3> &nbsp;number</small></h3>
<p>Unix timestamp for when the chat was created</p> <p>Unix timestamp for when the last activity occurred</p>
<dl class="dl-compact"> <dl class="dl-compact">
</dl> </dl>
<h3 id="unreadCount"><span class="symbol-name">unreadCount</span><small class="property-type"> <h3 id="unreadCount"><span class="symbol-name">unreadCount</span><small class="property-type">
@@ -271,6 +274,15 @@
</dd> </dd>
</dl> </dl>
<div class="symbol-detail-labels"><span class="label label-async">async</span></div> <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
<h3 id="getContact"><span class="symbol-name">getContact</span><span class="signature"><span class="signature-params">()</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing <a href="Contact.html">Contact</a></span></span></h3>
<p>Returns the Contact that corresponds to this Chat.</p>
<dl class="dl-compact">
<dt>Returns</dt>
<dd>
<p><code>Promise containing <a href="Contact.html">Contact</a></code> </p>
</dd>
</dl>
<div class="symbol-detail-labels"><span class="label label-async">async</span></div>
<h3 id="mute"><span class="symbol-name">mute</span><span class="signature"><span class="signature-params">(unmuteDate)</span></span></h3> <h3 id="mute"><span class="symbol-name">mute</span><span class="signature"><span class="signature-params">(unmuteDate)</span></span></h3>
<p>Mutes this chat until a specified date</p> <p>Mutes this chat until a specified date</p>
<section> <section>
@@ -305,7 +317,7 @@
<dl class="dl-compact"> <dl class="dl-compact">
</dl> </dl>
<div class="symbol-detail-labels"><span class="label label-async">async</span></div> <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
<h3 id="sendMessage"><span class="symbol-name">sendMessage</span><span class="signature"><span class="signature-params">(content, options)</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing <a href="Message.html">Message</a></span></span></h3> <h3 id="sendMessage"><span class="symbol-name">sendMessage</span><span class="signature"><span class="signature-params">(content[, options])</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing <a href="Message.html">Message</a></span></span></h3>
<p>Send a message to this chat</p> <p>Send a message to this chat</p>
<section> <section>
<h4>Parameters</h4> <h4>Parameters</h4>
@@ -337,10 +349,10 @@
<p>options</p> <p>options</p>
</td> </td>
<td> <td>
<p>object</p> <p><a href="global.html#MessageSendOptions">MessageSendOptions</a></p>
</td> </td>
<td> <td>
<p>&nbsp;</p> <p>Yes</p>
</td> </td>
<td> <td>
</td> </td>
@@ -395,7 +407,7 @@
<footer id="jsdoc-footer" class="jsdoc-footer"> <footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container"> <div id="jsdoc-footer-container">
<p> <p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on June 18, 2020. Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on August 25, 2020.
</p> </p>
</div> </div>
</footer> </footer>

View File

@@ -4,7 +4,7 @@
<head> <head>
<meta name="generator" content="JSDoc 3.6.4"> <meta name="generator" content="JSDoc 3.6.4">
<meta charset="utf-8"> <meta charset="utf-8">
<title>whatsapp-web.js 1.7.0 &raquo; Class: Client</title> <title>whatsapp-web.js 1.8.0 &raquo; Class: Client</title>
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css">
@@ -15,7 +15,7 @@
<nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar"> <nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar">
<div id="jsdoc-navbar-container"> <div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content"> <div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>7.<wbr>0</a> <a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>8.<wbr>0</a>
</div> </div>
</div> </div>
</nav> </nav>
@@ -26,7 +26,7 @@
<header class="page-header"> <header class="page-header">
<div class="symbol-detail-labels"><span class="label label-kind">class</span></div> <div class="symbol-detail-labels"><span class="label label-kind">class</span></div>
<h1><small></small><span class="symbol-name">Client</span></h1> <h1><small></small><span class="symbol-name">Client</span></h1>
<p class="source-link">Source: <a href="Client.js.html#source-line-36">Client.<wbr>js:36</a></p> <p class="source-link">Source: <a href="Client.js.html#source-line-51">Client.<wbr>js:51</a></p>
<div class="symbol-classdesc"> <div class="symbol-classdesc">
<p>Starting point for interacting with the WhatsApp Web API</p> <p>Starting point for interacting with the WhatsApp Web API</p>
</div> </div>
@@ -34,6 +34,22 @@
</dl> </dl>
</header> </header>
<section id="summary"> <section id="summary">
<div class="summary-callout">
<h2 class="summary-callout-heading">Property</h2>
<div class="summary-content">
<div class="summary-column">
<dl class="dl-summary-callout">
<dt><a href="Client.html#info">info</a></dt>
<dd>
</dd>
</dl>
</div>
<div class="summary-column">
</div>
<div class="summary-column">
</div>
</div>
</div>
<div class="summary-callout"> <div class="summary-callout">
<h2 class="summary-callout-heading">Methods</h2> <h2 class="summary-callout-heading">Methods</h2>
<div class="summary-content"> <div class="summary-content">
@@ -82,7 +98,7 @@
<dt><a href="Client.html#initialize">initialize()</a></dt> <dt><a href="Client.html#initialize">initialize()</a></dt>
<dd> <dd>
</dd> </dd>
<dt><a href="Client.html#isRegisteredUser">isRegisteredUser()</a></dt> <dt><a href="Client.html#isRegisteredUser">isRegisteredUser(id)</a></dt>
<dd> <dd>
</dd> </dd>
<dt><a href="Client.html#logout">logout()</a></dt> <dt><a href="Client.html#logout">logout()</a></dt>
@@ -98,7 +114,7 @@
<dt><a href="Client.html#resetState">resetState()</a></dt> <dt><a href="Client.html#resetState">resetState()</a></dt>
<dd> <dd>
</dd> </dd>
<dt><a href="Client.html#sendMessage">sendMessage(chatId, content, options)</a></dt> <dt><a href="Client.html#sendMessage">sendMessage(chatId, content[, options])</a></dt>
<dd> <dd>
</dd> </dd>
<dt><a href="Client.html#sendPresenceAvailable">sendPresenceAvailable()</a></dt> <dt><a href="Client.html#sendPresenceAvailable">sendPresenceAvailable()</a></dt>
@@ -107,6 +123,9 @@
<dt><a href="Client.html#sendSeen">sendSeen(chatId)</a></dt> <dt><a href="Client.html#sendSeen">sendSeen(chatId)</a></dt>
<dd> <dd>
</dd> </dd>
<dt><a href="Client.html#setDisplayName">setDisplayName(displayName)</a></dt>
<dd>
</dd>
<dt><a href="Client.html#setStatus">setStatus(status)</a></dt> <dt><a href="Client.html#setStatus">setStatus(status)</a></dt>
<dd> <dd>
</dd> </dd>
@@ -187,7 +206,227 @@
</div> </div>
</section> </section>
<section> <section>
<h2 id="Client">new&nbsp;<span class="symbol-name">Client</span><span class="signature"><span class="signature-params">()</span></span></h2> <h2 id="Client">new&nbsp;<span class="symbol-name">Client</span><span class="signature"><span class="signature-params">(options)</span></span></h2>
<section>
<h3>Parameters</h3>
<table class="jsdoc-details-table">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Optional</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<p>options</p>
</td>
<td>
<p>&nbsp;</p>
</td>
<td>
<p>&nbsp;</p>
</td>
<td>
<p>Client options</p>
<p>Values in <code>options</code> have the following properties:</p>
<table class="jsdoc-details-table">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Optional</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<p>authTimeoutMs</p>
</td>
<td>
<p>&nbsp;</p>
</td>
<td>
<p>&nbsp;</p>
</td>
<td>
<p>Timeout for authentication selector in puppeteer</p>
</td>
</tr>
<tr>
<td>
<p>puppeteer</p>
</td>
<td>
<p>&nbsp;</p>
</td>
<td>
<p>&nbsp;</p>
</td>
<td>
<p>Puppeteer launch options. View docs here: https://github.com/puppeteer/puppeteer/</p>
</td>
</tr>
<tr>
<td>
<p>qrRefreshIntervalMs</p>
</td>
<td>
<p>&nbsp;</p>
</td>
<td>
<p>&nbsp;</p>
</td>
<td>
<p>Refresh interval for qr code (how much time to wait before checking if the qr code has changed)</p>
</td>
</tr>
<tr>
<td>
<p>qrTimeoutMs</p>
</td>
<td>
<p>&nbsp;</p>
</td>
<td>
<p>&nbsp;</p>
</td>
<td>
<p>Timeout for qr code selector in puppeteer</p>
</td>
</tr>
<tr>
<td>
<p>restartOnAuthFail</p>
</td>
<td>
<p>&nbsp;</p>
</td>
<td>
<p>&nbsp;</p>
</td>
<td>
<p>Restart client with a new session (i.e. use null 'session' var) if authentication fails</p>
</td>
</tr>
<tr>
<td>
<p>session</p>
</td>
<td>
<p>&nbsp;</p>
</td>
<td>
<p>&nbsp;</p>
</td>
<td>
<p>Whatsapp session to restore. If not set, will start a new session</p>
</td>
</tr>
<tr>
<td>
<p>session.WABrowserId</p>
</td>
<td>
<p>&nbsp;</p>
</td>
<td>
<p>&nbsp;</p>
</td>
<td>
</td>
</tr>
<tr>
<td>
<p>session.WASecretBundle</p>
</td>
<td>
<p>&nbsp;</p>
</td>
<td>
<p>&nbsp;</p>
</td>
<td>
</td>
</tr>
<tr>
<td>
<p>session.WAToken1</p>
</td>
<td>
<p>&nbsp;</p>
</td>
<td>
<p>&nbsp;</p>
</td>
<td>
</td>
</tr>
<tr>
<td>
<p>session.WAToken2</p>
</td>
<td>
<p>&nbsp;</p>
</td>
<td>
<p>&nbsp;</p>
</td>
<td>
</td>
</tr>
<tr>
<td>
<p>takeoverOnConflict</p>
</td>
<td>
<p>&nbsp;</p>
</td>
<td>
<p>&nbsp;</p>
</td>
<td>
<p>If another whatsapp web session is detected (another browser), take over the session in the current browser</p>
</td>
</tr>
<tr>
<td>
<p>takeoverTimeoutMs</p>
</td>
<td>
<p>&nbsp;</p>
</td>
<td>
<p>&nbsp;</p>
</td>
<td>
<p>How much time to wait before taking over the session</p>
</td>
</tr>
<tr>
<td>
<p>userAgent</p>
</td>
<td>
<p>&nbsp;</p>
</td>
<td>
<p>&nbsp;</p>
</td>
<td>
<p>User agent to use in puppeteer</p>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
</section>
<dl class="dl-compact"> <dl class="dl-compact">
<dt>Extends</dt> <dt>Extends</dt>
<dd>EventEmitter</dd> <dd>EventEmitter</dd>
@@ -211,6 +450,14 @@
</dl> </dl>
</section> </section>
<section> <section>
<h2>Property</h2>
<section>
<h3 id="info"><span class="symbol-name">info</span><small class="property-type">
&nbsp;<a href="ClientInfo.html">ClientInfo</a></small></h3>
<p>Current connection information</p>
<dl class="dl-compact">
</dl>
</section>
<h2>Methods</h2> <h2>Methods</h2>
<section> <section>
<div class="symbol-detail-labels"><span class="label label-async">async</span></div> <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
@@ -500,13 +747,12 @@
</dd> </dd>
</dl> </dl>
<div class="symbol-detail-labels"><span class="label label-async">async</span></div> <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
<h3 id="getWWebVersion"><span class="symbol-name">getWWebVersion</span><span class="signature"><span class="signature-params">()</span></span></h3> <h3 id="getWWebVersion"><span class="symbol-name">getWWebVersion</span><span class="signature"><span class="signature-params">()</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing string</span></span></h3>
<p>Returns the version of WhatsApp Web currently being run</p> <p>Returns the version of WhatsApp Web currently being run</p>
<dl class="dl-compact"> <dl class="dl-compact">
<dt>Returns</dt> <dt>Returns</dt>
<dd> <dd>
<p>Promise<string> <p><code>Promise containing string</code> </p>
</p>
</dd> </dd>
</dl> </dl>
<div class="symbol-detail-labels"><span class="label label-async">async</span></div> <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
@@ -515,8 +761,37 @@
<dl class="dl-compact"> <dl class="dl-compact">
</dl> </dl>
<div class="symbol-detail-labels"><span class="label label-async">async</span></div> <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
<h3 id="isRegisteredUser"><span class="symbol-name">isRegisteredUser</span><span class="signature"><span class="signature-params">()</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing Boolean</span></span></h3> <h3 id="isRegisteredUser"><span class="symbol-name">isRegisteredUser</span><span class="signature"><span class="signature-params">(id)</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing Boolean</span></span></h3>
<p>Check if a given ID is registered in whatsapp</p> <p>Check if a given ID is registered in whatsapp</p>
<section>
<h4>Parameter</h4>
<table class="jsdoc-details-table">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Optional</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<p>id</p>
</td>
<td>
<p>string</p>
</td>
<td>
<p>&nbsp;</p>
</td>
<td>
<p>the whatsapp user's ID</p>
</td>
</tr>
</tbody>
</table>
</section>
<dl class="dl-compact"> <dl class="dl-compact">
<dt>Returns</dt> <dt>Returns</dt>
<dd> <dd>
@@ -582,7 +857,7 @@
<dl class="dl-compact"> <dl class="dl-compact">
</dl> </dl>
<div class="symbol-detail-labels"><span class="label label-async">async</span></div> <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
<h3 id="sendMessage"><span class="symbol-name">sendMessage</span><span class="signature"><span class="signature-params">(chatId, content, options)</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing <a href="Message.html">Message</a></span></span></h3> <h3 id="sendMessage"><span class="symbol-name">sendMessage</span><span class="signature"><span class="signature-params">(chatId, content[, options])</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing <a href="Message.html">Message</a></span></span></h3>
<p>Send a message to a specific chatId</p> <p>Send a message to a specific chatId</p>
<section> <section>
<h4>Parameters</h4> <h4>Parameters</h4>
@@ -627,12 +902,13 @@
<p>options</p> <p>options</p>
</td> </td>
<td> <td>
<p>object</p> <p><a href="global.html#MessageSendOptions">MessageSendOptions</a></p>
</td> </td>
<td> <td>
<p>&nbsp;</p> <p>Yes</p>
</td> </td>
<td> <td>
<p>Options used when sending the message</p>
</td> </td>
</tr> </tr>
</tbody> </tbody>
@@ -689,6 +965,41 @@
</dd> </dd>
</dl> </dl>
<div class="symbol-detail-labels"><span class="label label-async">async</span></div> <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
<h3 id="setDisplayName"><span class="symbol-name">setDisplayName</span><span class="signature"><span class="signature-params">(displayName)</span></span></h3>
<p>Sets the current user's display name.
This is the name shown to WhatsApp users that have not added you as a contact beside your number in groups and in your profile.</p>
<section>
<h4>Parameter</h4>
<table class="jsdoc-details-table">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Optional</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<p>displayName</p>
</td>
<td>
<p>string</p>
</td>
<td>
<p>&nbsp;</p>
</td>
<td>
<p>New display name</p>
</td>
</tr>
</tbody>
</table>
</section>
<dl class="dl-compact">
</dl>
<div class="symbol-detail-labels"><span class="label label-async">async</span></div>
<h3 id="setStatus"><span class="symbol-name">setStatus</span><span class="signature"><span class="signature-params">(status)</span></span></h3> <h3 id="setStatus"><span class="symbol-name">setStatus</span><span class="signature"><span class="signature-params">(status)</span></span></h3>
<p>Sets the current user's status message</p> <p>Sets the current user's status message</p>
<section> <section>
@@ -803,7 +1114,7 @@
<h3 id="event:authenticated"><span class="symbol-name">authenticated</span></h3> <h3 id="event:authenticated"><span class="symbol-name">authenticated</span></h3>
<p>Emitted when authentication is successful</p> <p>Emitted when authentication is successful</p>
<section> <section>
<h4>Parameter</h4> <h4>Parameters</h4>
<table class="jsdoc-details-table"> <table class="jsdoc-details-table">
<thead> <thead>
<tr> <tr>
@@ -826,6 +1137,71 @@
</td> </td>
<td> <td>
<p>Object containing session information. Can be used to restore the session.</p> <p>Object containing session information. Can be used to restore the session.</p>
<p>Values in <code>session</code> have the following properties:</p>
<table class="jsdoc-details-table">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Optional</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<p>WABrowserId</p>
</td>
<td>
<p>string</p>
</td>
<td>
<p>&nbsp;</p>
</td>
<td>
</td>
</tr>
<tr>
<td>
<p>WASecretBundle</p>
</td>
<td>
<p>string</p>
</td>
<td>
<p>&nbsp;</p>
</td>
<td>
</td>
</tr>
<tr>
<td>
<p>WAToken1</p>
</td>
<td>
<p>string</p>
</td>
<td>
<p>&nbsp;</p>
</td>
<td>
</td>
</tr>
<tr>
<td>
<p>WAToken2</p>
</td>
<td>
<p>string</p>
</td>
<td>
<p>&nbsp;</p>
</td>
<td>
</td>
</tr>
</tbody>
</table>
</td> </td>
</tr> </tr>
</tbody> </tbody>
@@ -1346,7 +1722,7 @@
<footer id="jsdoc-footer" class="jsdoc-footer"> <footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container"> <div id="jsdoc-footer-container">
<p> <p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on June 18, 2020. Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on August 25, 2020.
</p> </p>
</div> </div>
</footer> </footer>

View File

@@ -4,7 +4,7 @@
<head> <head>
<meta name="generator" content="JSDoc 3.6.4"> <meta name="generator" content="JSDoc 3.6.4">
<meta charset="utf-8"> <meta charset="utf-8">
<title>whatsapp-web.js 1.7.0 &raquo; Source: Client.js</title> <title>whatsapp-web.js 1.8.0 &raquo; Source: Client.js</title>
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css">
@@ -15,7 +15,7 @@
<nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar"> <nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar">
<div id="jsdoc-navbar-container"> <div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content"> <div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>7.<wbr>0</a> <a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>8.<wbr>0</a>
</div> </div>
</div> </div>
</nav> </nav>
@@ -38,7 +38,7 @@ const jsQR &#x3D; require(&#x27;jsqr&#x27;);
const Util &#x3D; require(&#x27;./util/Util&#x27;); const Util &#x3D; require(&#x27;./util/Util&#x27;);
const InterfaceController &#x3D; require(&#x27;./util/InterfaceController&#x27;); const InterfaceController &#x3D; require(&#x27;./util/InterfaceController&#x27;);
const { WhatsWebURL, UserAgent, DefaultOptions, Events, WAState } &#x3D; require(&#x27;./util/Constants&#x27;); const { WhatsWebURL, DefaultOptions, Events, WAState } &#x3D; require(&#x27;./util/Constants&#x27;);
const { ExposeStore, LoadUtils } &#x3D; require(&#x27;./util/Injected&#x27;); const { ExposeStore, LoadUtils } &#x3D; require(&#x27;./util/Injected&#x27;);
const ChatFactory &#x3D; require(&#x27;./factories/ChatFactory&#x27;); const ChatFactory &#x3D; require(&#x27;./factories/ChatFactory&#x27;);
const ContactFactory &#x3D; require(&#x27;./factories/ContactFactory&#x27;); const ContactFactory &#x3D; require(&#x27;./factories/ContactFactory&#x27;);
@@ -46,6 +46,21 @@ const { ClientInfo, Message, MessageMedia, Contact, Location, GroupNotification
/** /**
* Starting point for interacting with the WhatsApp Web API * Starting point for interacting with the WhatsApp Web API
* @extends {EventEmitter} * @extends {EventEmitter}
* @param {object} options - Client options
* @param {number} options.authTimeoutMs - Timeout for authentication selector in puppeteer
* @param {object} options.puppeteer - Puppeteer launch options. View docs here: https://github.com/puppeteer/puppeteer/
* @param {number} options.qrRefreshIntervalMs - Refresh interval for qr code (how much time to wait before checking if the qr code has changed)
* @param {number} options.qrTimeoutMs - Timeout for qr code selector in puppeteer
* @param {string} options.restartOnAuthFail - Restart client with a new session (i.e. use null &#x27;session&#x27; var) if authentication fails
* @param {object} options.session - Whatsapp session to restore. If not set, will start a new session
* @param {string} options.session.WABrowserId
* @param {string} options.session.WASecretBundle
* @param {string} options.session.WAToken1
* @param {string} options.session.WAToken2
* @param {number} options.takeoverOnConflict - If another whatsapp web session is detected (another browser), take over the session in the current browser
* @param {number} options.takeoverTimeoutMs - How much time to wait before taking over the session
* @param {string} options.userAgent - User agent to use in puppeteer
*
* @fires Client#qr * @fires Client#qr
* @fires Client#authenticated * @fires Client#authenticated
* @fires Client#auth_failure * @fires Client#auth_failure
@@ -79,11 +94,11 @@ class Client extends EventEmitter {
async initialize() { async initialize() {
const browser &#x3D; await puppeteer.launch(this.options.puppeteer); const browser &#x3D; await puppeteer.launch(this.options.puppeteer);
const page &#x3D; (await browser.pages())[0]; const page &#x3D; (await browser.pages())[0];
page.setUserAgent(UserAgent); page.setUserAgent(this.options.userAgent);
this.pupBrowser &#x3D; browser; this.pupBrowser &#x3D; browser;
this.pupPage &#x3D; page; this.pupPage &#x3D; page;
if (this.options.session) { if (this.options.session) {
await page.evaluateOnNewDocument( await page.evaluateOnNewDocument(
session &#x3D;&gt; { session &#x3D;&gt; {
@@ -99,8 +114,8 @@ class Client extends EventEmitter {
waitUntil: &#x27;load&#x27;, waitUntil: &#x27;load&#x27;,
timeout: 0, timeout: 0,
}); });
const KEEP_PHONE_CONNECTED_IMG_SELECTOR &#x3D; &#x27;[data-asset-intro-image-light&#x3D;&quot;true&quot;]&#x27;; const KEEP_PHONE_CONNECTED_IMG_SELECTOR &#x3D; &#x27;[data-asset-intro-image-light&#x3D;&quot;true&quot;], [data-asset-intro-image-dark&#x3D;&quot;true&quot;]&#x27;;
if (this.options.session) { if (this.options.session) {
// Check if session restore was successfull // Check if session restore was successfull
@@ -176,6 +191,10 @@ class Client extends EventEmitter {
* Emitted when authentication is successful * Emitted when authentication is successful
* @event Client#authenticated * @event Client#authenticated
* @param {object} session Object containing session information. Can be used to restore the session. * @param {object} session Object containing session information. Can be used to restore the session.
* @param {string} session.WABrowserId
* @param {string} session.WASecretBundle
* @param {string} session.WAToken1
* @param {string} session.WAToken2
*/ */
this.emit(Events.AUTHENTICATED, session); this.emit(Events.AUTHENTICATED, session);
@@ -186,6 +205,10 @@ class Client extends EventEmitter {
await page.evaluate(LoadUtils); await page.evaluate(LoadUtils);
// Expose client info // Expose client info
/**
* Current connection information
* @type {ClientInfo}
*/
this.info &#x3D; new ClientInfo(this, await page.evaluate(() &#x3D;&gt; { this.info &#x3D; new ClientInfo(this, await page.evaluate(() &#x3D;&gt; {
return window.Store.Conn.serialize(); return window.Store.Conn.serialize();
})); }));
@@ -223,7 +246,7 @@ class Client extends EventEmitter {
} }
return; return;
} }
const message &#x3D; new Message(this, msg); const message &#x3D; new Message(this, msg);
/** /**
@@ -292,7 +315,7 @@ class Client extends EventEmitter {
await page.exposeFunction(&#x27;onMessageAckEvent&#x27;, (msg, ack) &#x3D;&gt; { await page.exposeFunction(&#x27;onMessageAckEvent&#x27;, (msg, ack) &#x3D;&gt; {
const message &#x3D; new Message(this, msg); const message &#x3D; new Message(this, msg);
/** /**
* Emitted when an ack event occurrs on message type. * Emitted when an ack event occurrs on message type.
* @event Client#message_ack * @event Client#message_ack
@@ -306,7 +329,7 @@ class Client extends EventEmitter {
await page.exposeFunction(&#x27;onMessageMediaUploadedEvent&#x27;, (msg) &#x3D;&gt; { await page.exposeFunction(&#x27;onMessageMediaUploadedEvent&#x27;, (msg) &#x3D;&gt; {
const message &#x3D; new Message(this, msg); const message &#x3D; new Message(this, msg);
/** /**
* Emitted when media has been uploaded for a message sent by the client. * Emitted when media has been uploaded for a message sent by the client.
* @event Client#media_uploaded * @event Client#media_uploaded
@@ -326,10 +349,10 @@ class Client extends EventEmitter {
const ACCEPTED_STATES &#x3D; [WAState.CONNECTED, WAState.OPENING, WAState.PAIRING, WAState.TIMEOUT]; const ACCEPTED_STATES &#x3D; [WAState.CONNECTED, WAState.OPENING, WAState.PAIRING, WAState.TIMEOUT];
if(this.options.takeoverOnConflict) { if (this.options.takeoverOnConflict) {
ACCEPTED_STATES.push(WAState.CONFLICT); ACCEPTED_STATES.push(WAState.CONFLICT);
if(state &#x3D;&#x3D;&#x3D; WAState.CONFLICT) { if (state &#x3D;&#x3D;&#x3D; WAState.CONFLICT) {
setTimeout(() &#x3D;&gt; { setTimeout(() &#x3D;&gt; {
this.pupPage.evaluate(() &#x3D;&gt; window.Store.AppState.takeover()); this.pupPage.evaluate(() &#x3D;&gt; window.Store.AppState.takeover());
}, this.options.takeoverTimeoutMs); }, this.options.takeoverTimeoutMs);
@@ -350,7 +373,7 @@ class Client extends EventEmitter {
await page.exposeFunction(&#x27;onBatteryStateChangedEvent&#x27;, (state) &#x3D;&gt; { await page.exposeFunction(&#x27;onBatteryStateChangedEvent&#x27;, (state) &#x3D;&gt; {
const { battery, plugged } &#x3D; state; const { battery, plugged } &#x3D; state;
if(battery &#x3D;&#x3D;&#x3D; undefined) return; if (battery &#x3D;&#x3D;&#x3D; undefined) return;
/** /**
* Emitted when the battery percentage for the attached device changes * Emitted when the battery percentage for the attached device changes
@@ -363,12 +386,12 @@ class Client extends EventEmitter {
}); });
await page.evaluate(() &#x3D;&gt; { await page.evaluate(() &#x3D;&gt; {
window.Store.Msg.on(&#x27;add&#x27;, (msg) &#x3D;&gt; { if(msg.isNewMsg) window.onAddMessageEvent(msg); }); window.Store.Msg.on(&#x27;add&#x27;, (msg) &#x3D;&gt; { if (msg.isNewMsg) window.onAddMessageEvent(msg); });
window.Store.Msg.on(&#x27;change&#x27;, (msg) &#x3D;&gt; { window.onChangeMessageEvent(msg); }); window.Store.Msg.on(&#x27;change&#x27;, (msg) &#x3D;&gt; { window.onChangeMessageEvent(msg); });
window.Store.Msg.on(&#x27;change:type&#x27;, (msg) &#x3D;&gt; { window.onChangeMessageTypeEvent(msg); }); window.Store.Msg.on(&#x27;change:type&#x27;, (msg) &#x3D;&gt; { window.onChangeMessageTypeEvent(msg); });
window.Store.Msg.on(&#x27;change:ack&#x27;, (msg, ack) &#x3D;&gt; { window.onMessageAckEvent(msg, ack); }); window.Store.Msg.on(&#x27;change:ack&#x27;, (msg, ack) &#x3D;&gt; { window.onMessageAckEvent(msg, ack); });
window.Store.Msg.on(&#x27;change:isUnsentMedia&#x27;, (msg, unsent) &#x3D;&gt; { if(msg.id.fromMe &amp;amp;&amp;amp; !unsent) window.onMessageMediaUploadedEvent(msg); }); window.Store.Msg.on(&#x27;change:isUnsentMedia&#x27;, (msg, unsent) &#x3D;&gt; { if (msg.id.fromMe &amp;amp;&amp;amp; !unsent) window.onMessageMediaUploadedEvent(msg); });
window.Store.Msg.on(&#x27;remove&#x27;, (msg) &#x3D;&gt; { if(msg.isNewMsg) window.onRemoveMessageEvent(msg); }); window.Store.Msg.on(&#x27;remove&#x27;, (msg) &#x3D;&gt; { if (msg.isNewMsg) window.onRemoveMessageEvent(msg); });
window.Store.AppState.on(&#x27;change:state&#x27;, (_AppState, state) &#x3D;&gt; { window.onAppStateChangedEvent(state); }); window.Store.AppState.on(&#x27;change:state&#x27;, (_AppState, state) &#x3D;&gt; { window.onAppStateChangedEvent(state); });
window.Store.Conn.on(&#x27;change:battery&#x27;, (state) &#x3D;&gt; { window.onBatteryStateChangedEvent(state); }); window.Store.Conn.on(&#x27;change:battery&#x27;, (state) &#x3D;&gt; { window.onBatteryStateChangedEvent(state); });
}); });
@@ -401,7 +424,7 @@ class Client extends EventEmitter {
/** /**
* Returns the version of WhatsApp Web currently being run * Returns the version of WhatsApp Web currently being run
* @returns Promise&amp;lt;string&gt; * @returns {Promise&amp;lt;string&gt;}
*/ */
async getWWebVersion() { async getWWebVersion() {
return await this.pupPage.evaluate(() &#x3D;&gt; { return await this.pupPage.evaluate(() &#x3D;&gt; {
@@ -423,11 +446,24 @@ class Client extends EventEmitter {
return result; return result;
} }
/**
* Message options.
* @typedef {Object} MessageSendOptions
* @property {boolean} [linkPreview&#x3D;true] - Show links preview
* @property {boolean} [sendAudioAsVoice&#x3D;false] - Send audio as voice message
* @property {string} [caption] - Image or video caption
* @property {string} [quotedMessageId] - Id of the message that is being quoted (or replied to)
* @property {Contact[]} [mentions] - Contacts that are being mentioned in the message
* @property {boolean} [sendSeen&#x3D;true] - Mark the conversation as seen after sending the message
* @property {boolean} [media] - Media to be sent
*/
/** /**
* Send a message to a specific chatId * Send a message to a specific chatId
* @param {string} chatId * @param {string} chatId
* @param {string|MessageMedia|Location} content * @param {string|MessageMedia|Location} content
* @param {object} options * @param {MessageSendOptions} [options] - Options used when sending the message
*
* @returns {Promise&amp;lt;Message&gt;} Message that was just sent * @returns {Promise&amp;lt;Message&gt;} Message that was just sent
*/ */
async sendMessage(chatId, content, options &#x3D; {}) { async sendMessage(chatId, content, options &#x3D; {}) {
@@ -438,7 +474,7 @@ class Client extends EventEmitter {
quotedMessageId: options.quotedMessageId, quotedMessageId: options.quotedMessageId,
mentionedJidList: Array.isArray(options.mentions) ? options.mentions.map(contact &#x3D;&gt; contact.id._serialized) : [] mentionedJidList: Array.isArray(options.mentions) ? options.mentions.map(contact &#x3D;&gt; contact.id._serialized) : []
}; };
const sendSeen &#x3D; typeof options.sendSeen &#x3D;&#x3D;&#x3D; &#x27;undefined&#x27; ? true : options.sendSeen; const sendSeen &#x3D; typeof options.sendSeen &#x3D;&#x3D;&#x3D; &#x27;undefined&#x27; ? true : options.sendSeen;
if (content instanceof MessageMedia) { if (content instanceof MessageMedia) {
@@ -457,7 +493,7 @@ class Client extends EventEmitter {
const chatWid &#x3D; window.Store.WidFactory.createWid(chatId); const chatWid &#x3D; window.Store.WidFactory.createWid(chatId);
const chat &#x3D; await window.Store.Chat.find(chatWid); const chat &#x3D; await window.Store.Chat.find(chatWid);
if(sendSeen) { if (sendSeen) {
window.WWebJS.sendSeen(chatId); window.WWebJS.sendSeen(chatId);
} }
@@ -551,6 +587,17 @@ class Client extends EventEmitter {
}, status); }, status);
} }
/**
* Sets the current user&#x27;s display name.
* This is the name shown to WhatsApp users that have not added you as a contact beside your number in groups and in your profile.
* @param {string} displayName New display name
*/
async setDisplayName(displayName) {
await this.pupPage.evaluate(async displayName &#x3D;&gt; {
return await window.Store.Wap.setPushname(displayName);
}, displayName);
}
/** /**
* Gets the current connection state for the client * Gets the current connection state for the client
* @returns {WAState} * @returns {WAState}
@@ -605,7 +652,7 @@ class Client extends EventEmitter {
await chat.mute.mute(timestamp, !0); await chat.mute.mute(timestamp, !0);
}, chatId, unmuteDate.getTime() / 1000); }, chatId, unmuteDate.getTime() / 1000);
} }
/** /**
* Unmutes the Chat * Unmutes the Chat
* @param {string} chatId ID of the chat that will be unmuted * @param {string} chatId ID of the chat that will be unmuted
@@ -616,7 +663,7 @@ class Client extends EventEmitter {
await window.Store.Cmd.muteChat(chat, false); await window.Store.Cmd.muteChat(chat, false);
}, chatId); }, chatId);
} }
/** /**
* Returns the contact ID&#x27;s profile picture URL, if privacy settings allow it * Returns the contact ID&#x27;s profile picture URL, if privacy settings allow it
* @param {string} contactId the whatsapp user&#x27;s ID * @param {string} contactId the whatsapp user&#x27;s ID
@@ -633,7 +680,7 @@ class Client extends EventEmitter {
/** /**
* Force reset of connection state for the client * Force reset of connection state for the client
*/ */
async resetState(){ async resetState() {
await this.pupPage.evaluate(() &#x3D;&gt; { await this.pupPage.evaluate(() &#x3D;&gt; {
window.Store.AppState.phoneWatchdog.shiftTimer.forceRunNow(); window.Store.AppState.phoneWatchdog.shiftTimer.forceRunNow();
}); });
@@ -641,6 +688,7 @@ class Client extends EventEmitter {
/** /**
* Check if a given ID is registered in whatsapp * Check if a given ID is registered in whatsapp
* @param {string} id the whatsapp user&#x27;s ID
* @returns {Promise&amp;lt;Boolean&gt;} * @returns {Promise&amp;lt;Boolean&gt;}
*/ */
async isRegisteredUser(id) { async isRegisteredUser(id) {
@@ -659,18 +707,18 @@ class Client extends EventEmitter {
* @returns {Object.&amp;lt;string,string&gt;} createRes.missingParticipants - participants that were not added to the group. Keys represent the ID for participant that was not added and its value is a status code that represents the reason why participant could not be added. This is usually 403 if the user&#x27;s privacy settings don&#x27;t allow you to add them to groups. * @returns {Object.&amp;lt;string,string&gt;} createRes.missingParticipants - participants that were not added to the group. Keys represent the ID for participant that was not added and its value is a status code that represents the reason why participant could not be added. This is usually 403 if the user&#x27;s privacy settings don&#x27;t allow you to add them to groups.
*/ */
async createGroup(name, participants) { async createGroup(name, participants) {
if(!Array.isArray(participants) || participants.length &#x3D;&#x3D; 0) { if (!Array.isArray(participants) || participants.length &#x3D;&#x3D; 0) {
throw &#x27;You need to add at least one other participant to the group&#x27;; throw &#x27;You need to add at least one other participant to the group&#x27;;
} }
if(participants.every(c &#x3D;&gt; c instanceof Contact)) { if (participants.every(c &#x3D;&gt; c instanceof Contact)) {
participants &#x3D; participants.map(c &#x3D;&gt; c.id._serialized); participants &#x3D; participants.map(c &#x3D;&gt; c.id._serialized);
} }
const createRes &#x3D; await this.pupPage.evaluate(async (name, participantIds) &#x3D;&gt; { const createRes &#x3D; await this.pupPage.evaluate(async (name, participantIds) &#x3D;&gt; {
const res &#x3D; await window.Store.Wap.createGroup(name, participantIds); const res &#x3D; await window.Store.Wap.createGroup(name, participantIds);
console.log(res); console.log(res);
if(!res.status &#x3D;&#x3D;&#x3D; 200) { if (!res.status &#x3D;&#x3D;&#x3D; 200) {
throw &#x27;An error occurred while creating the group!&#x27;; throw &#x27;An error occurred while creating the group!&#x27;;
} }
@@ -680,11 +728,11 @@ class Client extends EventEmitter {
const missingParticipants &#x3D; createRes.participants.reduce(((missing, c) &#x3D;&gt; { const missingParticipants &#x3D; createRes.participants.reduce(((missing, c) &#x3D;&gt; {
const id &#x3D; Object.keys(c)[0]; const id &#x3D; Object.keys(c)[0];
const statusCode &#x3D; c[id].code; const statusCode &#x3D; c[id].code;
if(statusCode !&#x3D; 200) return Object.assign(missing, {[id]: statusCode}); if (statusCode !&#x3D; 200) return Object.assign(missing, { [id]: statusCode });
return missing; return missing;
}), {}); }), {});
return { gid: createRes.gid, missingParticipants}; return { gid: createRes.gid, missingParticipants };
} }
} }
@@ -700,7 +748,7 @@ module.exports &#x3D; Client;
<footer id="jsdoc-footer" class="jsdoc-footer"> <footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container"> <div id="jsdoc-footer-container">
<p> <p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on June 18, 2020. Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on August 25, 2020.
</p> </p>
</div> </div>
</footer> </footer>

View File

@@ -4,7 +4,7 @@
<head> <head>
<meta name="generator" content="JSDoc 3.6.4"> <meta name="generator" content="JSDoc 3.6.4">
<meta charset="utf-8"> <meta charset="utf-8">
<title>whatsapp-web.js 1.7.0 &raquo; Class: ClientInfo</title> <title>whatsapp-web.js 1.8.0 &raquo; Class: ClientInfo</title>
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css">
@@ -15,7 +15,7 @@
<nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar"> <nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar">
<div id="jsdoc-navbar-container"> <div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content"> <div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>7.<wbr>0</a> <a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>8.<wbr>0</a>
</div> </div>
</div> </div>
</nav> </nav>
@@ -224,7 +224,7 @@
<footer id="jsdoc-footer" class="jsdoc-footer"> <footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container"> <div id="jsdoc-footer-container">
<p> <p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on June 18, 2020. Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on August 25, 2020.
</p> </p>
</div> </div>
</footer> </footer>

View File

@@ -4,7 +4,7 @@
<head> <head>
<meta name="generator" content="JSDoc 3.6.4"> <meta name="generator" content="JSDoc 3.6.4">
<meta charset="utf-8"> <meta charset="utf-8">
<title>whatsapp-web.js 1.7.0 &raquo; Class: Contact</title> <title>whatsapp-web.js 1.8.0 &raquo; Class: Contact</title>
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css">
@@ -15,7 +15,7 @@
<nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar"> <nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar">
<div id="jsdoc-navbar-container"> <div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content"> <div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>7.<wbr>0</a> <a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>8.<wbr>0</a>
</div> </div>
</div> </div>
</nav> </nav>
@@ -88,8 +88,15 @@
</div> </div>
</div> </div>
<div class="summary-callout"> <div class="summary-callout">
<h2 class="summary-callout-heading">Method</h2> <h2 class="summary-callout-heading">Methods</h2>
<div class="summary-content"> <div class="summary-content">
<div class="summary-column">
<dl class="dl-summary-callout">
<dt><a href="Contact.html#getChat">getChat()</a></dt>
<dd>
</dd>
</dl>
</div>
<div class="summary-column"> <div class="summary-column">
<dl class="dl-summary-callout"> <dl class="dl-summary-callout">
<dt><a href="Contact.html#getProfilePicUrl">getProfilePicUrl()</a></dt> <dt><a href="Contact.html#getProfilePicUrl">getProfilePicUrl()</a></dt>
@@ -99,8 +106,6 @@
</div> </div>
<div class="summary-column"> <div class="summary-column">
</div> </div>
<div class="summary-column">
</div>
</div> </div>
</div> </div>
</section> </section>
@@ -175,8 +180,18 @@
<dl class="dl-compact"> <dl class="dl-compact">
</dl> </dl>
</section> </section>
<h2>Method</h2> <h2>Methods</h2>
<section> <section>
<div class="symbol-detail-labels"><span class="label label-async">async</span></div>
<h3 id="getChat"><span class="symbol-name">getChat</span><span class="signature"><span class="signature-params">()</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing <a href="Chat.html">Chat</a></span></span></h3>
<p>Returns the Chat that corresponds to this Contact.
Will return null when getting chat for currently logged in user.</p>
<dl class="dl-compact">
<dt>Returns</dt>
<dd>
<p><code>Promise containing <a href="Chat.html">Chat</a></code> </p>
</dd>
</dl>
<div class="symbol-detail-labels"><span class="label label-async">async</span></div> <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
<h3 id="getProfilePicUrl"><span class="symbol-name">getProfilePicUrl</span><span class="signature"><span class="signature-params">()</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing string</span></span></h3> <h3 id="getProfilePicUrl"><span class="symbol-name">getProfilePicUrl</span><span class="signature"><span class="signature-params">()</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing string</span></span></h3>
<p>Returns the contact's profile picture URL, if privacy settings allow it</p> <p>Returns the contact's profile picture URL, if privacy settings allow it</p>
@@ -196,7 +211,7 @@
<footer id="jsdoc-footer" class="jsdoc-footer"> <footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container"> <div id="jsdoc-footer-container">
<p> <p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on June 18, 2020. Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on August 25, 2020.
</p> </p>
</div> </div>
</footer> </footer>

View File

@@ -4,7 +4,7 @@
<head> <head>
<meta name="generator" content="JSDoc 3.6.4"> <meta name="generator" content="JSDoc 3.6.4">
<meta charset="utf-8"> <meta charset="utf-8">
<title>whatsapp-web.js 1.7.0 &raquo; Class: GroupChat</title> <title>whatsapp-web.js 1.8.0 &raquo; Class: GroupChat</title>
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css">
@@ -15,7 +15,7 @@
<nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar"> <nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar">
<div id="jsdoc-navbar-container"> <div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content"> <div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>7.<wbr>0</a> <a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>8.<wbr>0</a>
</div> </div>
</div> </div>
</nav> </nav>
@@ -110,6 +110,9 @@
<dt><a href="GroupChat.html#fetchMessages">fetchMessages(searchOptions)</a></dt> <dt><a href="GroupChat.html#fetchMessages">fetchMessages(searchOptions)</a></dt>
<dd> <dd>
</dd> </dd>
<dt><a href="GroupChat.html#getContact">getContact()</a></dt>
<dd>
</dd>
</dl> </dl>
</div> </div>
<div class="summary-column"> <div class="summary-column">
@@ -132,16 +135,16 @@
<dt><a href="GroupChat.html#revokeInvite">revokeInvite()</a></dt> <dt><a href="GroupChat.html#revokeInvite">revokeInvite()</a></dt>
<dd> <dd>
</dd> </dd>
<dt><a href="GroupChat.html#sendMessage">sendMessage(content, options)</a></dt> <dt><a href="GroupChat.html#sendMessage">sendMessage(content[, options])</a></dt>
<dd>
</dd>
<dt><a href="GroupChat.html#sendSeen">sendSeen()</a></dt>
<dd> <dd>
</dd> </dd>
</dl> </dl>
</div> </div>
<div class="summary-column"> <div class="summary-column">
<dl class="dl-summary-callout"> <dl class="dl-summary-callout">
<dt><a href="GroupChat.html#sendSeen">sendSeen()</a></dt>
<dd>
</dd>
<dt><a href="GroupChat.html#sendStateRecording">sendStateRecording()</a></dt> <dt><a href="GroupChat.html#sendStateRecording">sendStateRecording()</a></dt>
<dd> <dd>
</dd> </dd>
@@ -231,7 +234,7 @@
</dl> </dl>
<h3 id="timestamp"><span class="symbol-name">timestamp</span><small class="property-type"> <h3 id="timestamp"><span class="symbol-name">timestamp</span><small class="property-type">
&nbsp;unknown</small></h3> &nbsp;unknown</small></h3>
<p>Unix timestamp for when the chat was created</p> <p>Unix timestamp for when the last activity occurred</p>
<dl class="dl-compact"> <dl class="dl-compact">
<dt>Inherited from</dt> <dt>Inherited from</dt>
<dd><a href="Chat.html#timestamp">Chat#timestamp</a></dd> <dd><a href="Chat.html#timestamp">Chat#timestamp</a></dd>
@@ -415,6 +418,15 @@
<dd></dd> <dd></dd>
</dl> </dl>
<div class="symbol-detail-labels"><span class="label label-async">async</span></div> <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
<h3 id="getContact"><span class="symbol-name">getContact</span><span class="signature"><span class="signature-params">()</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing <a href="Contact.html">Contact</a></span></span></h3>
<p>Returns the Contact that corresponds to this Chat.</p>
<dl class="dl-compact">
<dt>Inherited from</dt>
<dd><a href="Chat.html#getContact">Chat#getContact</a></dd>
<dt>Returns</dt>
<dd></dd>
</dl>
<div class="symbol-detail-labels"><span class="label label-async">async</span></div>
<h3 id="getInviteCode"><span class="symbol-name">getInviteCode</span><span class="signature"><span class="signature-params">()</span></span></h3> <h3 id="getInviteCode"><span class="symbol-name">getInviteCode</span><span class="signature"><span class="signature-params">()</span></span></h3>
<p>Gets the invite code for a specific group</p> <p>Gets the invite code for a specific group</p>
<dl class="dl-compact"> <dl class="dl-compact">
@@ -532,7 +544,7 @@
<dl class="dl-compact"> <dl class="dl-compact">
</dl> </dl>
<div class="symbol-detail-labels"><span class="label label-async">async</span></div> <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
<h3 id="sendMessage"><span class="symbol-name">sendMessage</span><span class="signature"><span class="signature-params">(content, options)</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing <a href="Message.html">Message</a></span></span></h3> <h3 id="sendMessage"><span class="symbol-name">sendMessage</span><span class="signature"><span class="signature-params">(content[, options])</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing <a href="Message.html">Message</a></span></span></h3>
<p>Send a message to this chat</p> <p>Send a message to this chat</p>
<section> <section>
<h4>Parameters</h4> <h4>Parameters</h4>
@@ -567,7 +579,7 @@
<p>&nbsp;</p> <p>&nbsp;</p>
</td> </td>
<td> <td>
<p>&nbsp;</p> <p>Yes</p>
</td> </td>
<td> <td>
</td> </td>
@@ -698,7 +710,7 @@
<footer id="jsdoc-footer" class="jsdoc-footer"> <footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container"> <div id="jsdoc-footer-container">
<p> <p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on June 18, 2020. Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on August 25, 2020.
</p> </p>
</div> </div>
</footer> </footer>

View File

@@ -4,7 +4,7 @@
<head> <head>
<meta name="generator" content="JSDoc 3.6.4"> <meta name="generator" content="JSDoc 3.6.4">
<meta charset="utf-8"> <meta charset="utf-8">
<title>whatsapp-web.js 1.7.0 &raquo; Class: GroupNotification</title> <title>whatsapp-web.js 1.8.0 &raquo; Class: GroupNotification</title>
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css">
@@ -15,7 +15,7 @@
<nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar"> <nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar">
<div id="jsdoc-navbar-container"> <div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content"> <div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>7.<wbr>0</a> <a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>8.<wbr>0</a>
</div> </div>
</div> </div>
</nav> </nav>
@@ -233,7 +233,7 @@
<footer id="jsdoc-footer" class="jsdoc-footer"> <footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container"> <div id="jsdoc-footer-container">
<p> <p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on June 18, 2020. Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on August 25, 2020.
</p> </p>
</div> </div>
</footer> </footer>

View File

@@ -4,7 +4,7 @@
<head> <head>
<meta name="generator" content="JSDoc 3.6.4"> <meta name="generator" content="JSDoc 3.6.4">
<meta charset="utf-8"> <meta charset="utf-8">
<title>whatsapp-web.js 1.7.0 &raquo; Class: InterfaceController</title> <title>whatsapp-web.js 1.8.0 &raquo; Class: InterfaceController</title>
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css">
@@ -15,7 +15,7 @@
<nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar"> <nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar">
<div id="jsdoc-navbar-container"> <div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content"> <div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>7.<wbr>0</a> <a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>8.<wbr>0</a>
</div> </div>
</div> </div>
</nav> </nav>
@@ -187,7 +187,7 @@
<footer id="jsdoc-footer" class="jsdoc-footer"> <footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container"> <div id="jsdoc-footer-container">
<p> <p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on June 18, 2020. Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on August 25, 2020.
</p> </p>
</div> </div>
</footer> </footer>

View File

@@ -4,7 +4,7 @@
<head> <head>
<meta name="generator" content="JSDoc 3.6.4"> <meta name="generator" content="JSDoc 3.6.4">
<meta charset="utf-8"> <meta charset="utf-8">
<title>whatsapp-web.js 1.7.0 &raquo; Class: Location</title> <title>whatsapp-web.js 1.8.0 &raquo; Class: Location</title>
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css">
@@ -15,7 +15,7 @@
<nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar"> <nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar">
<div id="jsdoc-navbar-container"> <div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content"> <div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>7.<wbr>0</a> <a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>8.<wbr>0</a>
</div> </div>
</div> </div>
</nav> </nav>
@@ -149,7 +149,7 @@
<footer id="jsdoc-footer" class="jsdoc-footer"> <footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container"> <div id="jsdoc-footer-container">
<p> <p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on June 18, 2020. Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on August 25, 2020.
</p> </p>
</div> </div>
</footer> </footer>

View File

@@ -4,7 +4,7 @@
<head> <head>
<meta name="generator" content="JSDoc 3.6.4"> <meta name="generator" content="JSDoc 3.6.4">
<meta charset="utf-8"> <meta charset="utf-8">
<title>whatsapp-web.js 1.7.0 &raquo; Class: Message</title> <title>whatsapp-web.js 1.8.0 &raquo; Class: Message</title>
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css">
@@ -15,7 +15,7 @@
<nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar"> <nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar">
<div id="jsdoc-navbar-container"> <div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content"> <div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>7.<wbr>0</a> <a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>8.<wbr>0</a>
</div> </div>
</div> </div>
</nav> </nav>
@@ -110,27 +110,30 @@
<dt><a href="Message.html#downloadMedia">downloadMedia()</a></dt> <dt><a href="Message.html#downloadMedia">downloadMedia()</a></dt>
<dd> <dd>
</dd> </dd>
<dt><a href="Message.html#getChat">getChat()</a></dt> <dt><a href="Message.html#forward">forward(chat)</a></dt>
<dd> <dd>
</dd> </dd>
</dl> </dl>
</div> </div>
<div class="summary-column"> <div class="summary-column">
<dl class="dl-summary-callout"> <dl class="dl-summary-callout">
<dt><a href="Message.html#getChat">getChat()</a></dt>
<dd>
</dd>
<dt><a href="Message.html#getContact">getContact()</a></dt> <dt><a href="Message.html#getContact">getContact()</a></dt>
<dd> <dd>
</dd> </dd>
<dt><a href="Message.html#getMentions">getMentions()</a></dt> <dt><a href="Message.html#getMentions">getMentions()</a></dt>
<dd> <dd>
</dd> </dd>
<dt><a href="Message.html#getQuotedMessage">getQuotedMessage()</a></dt>
<dd>
</dd>
</dl> </dl>
</div> </div>
<div class="summary-column"> <div class="summary-column">
<dl class="dl-summary-callout"> <dl class="dl-summary-callout">
<dt><a href="Message.html#reply">reply(content, chatId, options)</a></dt> <dt><a href="Message.html#getQuotedMessage">getQuotedMessage()</a></dt>
<dd>
</dd>
<dt><a href="Message.html#reply">reply(content[, chatId][, options])</a></dt>
<dd> <dd>
</dd> </dd>
</dl> </dl>
@@ -277,6 +280,44 @@
<p><code>Promise containing <a href="MessageMedia.html">MessageMedia</a></code> </p> <p><code>Promise containing <a href="MessageMedia.html">MessageMedia</a></code> </p>
</dd> </dd>
</dl> </dl>
<div class="symbol-detail-labels"><span class="label label-async">async</span></div>
<h3 id="forward"><span class="symbol-name">forward</span><span class="signature"><span class="signature-params">(chat)</span>&nbsp;&rarr; <span class="signature-returns"> Promise</span></span></h3>
<p>Forwards this message to another chat</p>
<section>
<h4>Parameter</h4>
<table class="jsdoc-details-table">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Optional</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<p>chat</p>
</td>
<td>
<p>(string or <a href="Chat.html">Chat</a>)</p>
</td>
<td>
<p>&nbsp;</p>
</td>
<td>
<p>Chat model or chat ID to which the message will be forwarded</p>
</td>
</tr>
</tbody>
</table>
</section>
<dl class="dl-compact">
<dt>Returns</dt>
<dd>
<p><code>Promise</code> </p>
</dd>
</dl>
<h3 id="getChat"><span class="symbol-name">getChat</span><span class="signature"><span class="signature-params">()</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing <a href="Chat.html">Chat</a></span></span></h3> <h3 id="getChat"><span class="symbol-name">getChat</span><span class="signature"><span class="signature-params">()</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing <a href="Chat.html">Chat</a></span></span></h3>
<p>Returns the Chat this message was sent in</p> <p>Returns the Chat this message was sent in</p>
<dl class="dl-compact"> <dl class="dl-compact">
@@ -312,7 +353,7 @@
</dd> </dd>
</dl> </dl>
<div class="symbol-detail-labels"><span class="label label-async">async</span></div> <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
<h3 id="reply"><span class="symbol-name">reply</span><span class="signature"><span class="signature-params">(content, chatId, options)</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing <a href="Message.html">Message</a></span></span></h3> <h3 id="reply"><span class="symbol-name">reply</span><span class="signature"><span class="signature-params">(content[, chatId][, options])</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing <a href="Message.html">Message</a></span></span></h3>
<p>Sends a message as a reply to this message. If chatId is specified, it will be sent <p>Sends a message as a reply to this message. If chatId is specified, it will be sent
through the specified Chat. If not, it will send the message through the specified Chat. If not, it will send the message
in the same Chat as the original message was sent.</p> in the same Chat as the original message was sent.</p>
@@ -349,10 +390,9 @@
<p>string</p> <p>string</p>
</td> </td>
<td> <td>
<p>&nbsp;</p> <p>Yes</p>
</td> </td>
<td> <td>
<p>Value can be null.</p>
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -360,10 +400,10 @@
<p>options</p> <p>options</p>
</td> </td>
<td> <td>
<p>object</p> <p><a href="global.html#MessageSendOptions">MessageSendOptions</a></p>
</td> </td>
<td> <td>
<p>&nbsp;</p> <p>Yes</p>
</td> </td>
<td> <td>
</td> </td>
@@ -387,7 +427,7 @@
<footer id="jsdoc-footer" class="jsdoc-footer"> <footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container"> <div id="jsdoc-footer-container">
<p> <p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on June 18, 2020. Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on August 25, 2020.
</p> </p>
</div> </div>
</footer> </footer>

View File

@@ -4,7 +4,7 @@
<head> <head>
<meta name="generator" content="JSDoc 3.6.4"> <meta name="generator" content="JSDoc 3.6.4">
<meta charset="utf-8"> <meta charset="utf-8">
<title>whatsapp-web.js 1.7.0 &raquo; Class: MessageMedia</title> <title>whatsapp-web.js 1.8.0 &raquo; Class: MessageMedia</title>
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css">
@@ -15,7 +15,7 @@
<nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar"> <nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar">
<div id="jsdoc-navbar-container"> <div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content"> <div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>7.<wbr>0</a> <a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>8.<wbr>0</a>
</div> </div>
</div> </div>
</nav> </nav>
@@ -208,7 +208,7 @@
<footer id="jsdoc-footer" class="jsdoc-footer"> <footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container"> <div id="jsdoc-footer-container">
<p> <p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on June 18, 2020. Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on August 25, 2020.
</p> </p>
</div> </div>
</footer> </footer>

View File

@@ -4,7 +4,7 @@
<head> <head>
<meta name="generator" content="JSDoc 3.6.4"> <meta name="generator" content="JSDoc 3.6.4">
<meta charset="utf-8"> <meta charset="utf-8">
<title>whatsapp-web.js 1.7.0 &raquo; Class: PrivateChat</title> <title>whatsapp-web.js 1.8.0 &raquo; Class: PrivateChat</title>
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css">
@@ -15,7 +15,7 @@
<nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar"> <nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar">
<div id="jsdoc-navbar-container"> <div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content"> <div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>7.<wbr>0</a> <a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>8.<wbr>0</a>
</div> </div>
</div> </div>
</nav> </nav>
@@ -89,29 +89,32 @@
<dt><a href="PrivateChat.html#delete">delete()</a></dt> <dt><a href="PrivateChat.html#delete">delete()</a></dt>
<dd> <dd>
</dd> </dd>
<dt><a href="PrivateChat.html#fetchMessages">fetchMessages(searchOptions)</a></dt>
<dd>
</dd>
</dl> </dl>
</div> </div>
<div class="summary-column"> <div class="summary-column">
<dl class="dl-summary-callout"> <dl class="dl-summary-callout">
<dt><a href="PrivateChat.html#fetchMessages">fetchMessages(searchOptions)</a></dt> <dt><a href="PrivateChat.html#getContact">getContact()</a></dt>
<dd> <dd>
</dd> </dd>
<dt><a href="PrivateChat.html#mute">mute(unmuteDate)</a></dt> <dt><a href="PrivateChat.html#mute">mute(unmuteDate)</a></dt>
<dd> <dd>
</dd> </dd>
<dt><a href="PrivateChat.html#sendMessage">sendMessage(content, options)</a></dt> <dt><a href="PrivateChat.html#sendMessage">sendMessage(content[, options])</a></dt>
<dd> <dd>
</dd> </dd>
<dt><a href="PrivateChat.html#sendSeen">sendSeen()</a></dt> <dt><a href="PrivateChat.html#sendSeen">sendSeen()</a></dt>
<dd> <dd>
</dd> </dd>
<dt><a href="PrivateChat.html#sendStateRecording">sendStateRecording()</a></dt>
<dd>
</dd>
</dl> </dl>
</div> </div>
<div class="summary-column"> <div class="summary-column">
<dl class="dl-summary-callout"> <dl class="dl-summary-callout">
<dt><a href="PrivateChat.html#sendStateRecording">sendStateRecording()</a></dt>
<dd>
</dd>
<dt><a href="PrivateChat.html#sendStateTyping">sendStateTyping()</a></dt> <dt><a href="PrivateChat.html#sendStateTyping">sendStateTyping()</a></dt>
<dd> <dd>
</dd> </dd>
@@ -173,7 +176,7 @@
</dl> </dl>
<h3 id="timestamp"><span class="symbol-name">timestamp</span><small class="property-type"> <h3 id="timestamp"><span class="symbol-name">timestamp</span><small class="property-type">
&nbsp;unknown</small></h3> &nbsp;unknown</small></h3>
<p>Unix timestamp for when the chat was created</p> <p>Unix timestamp for when the last activity occurred</p>
<dl class="dl-compact"> <dl class="dl-compact">
<dt>Inherited from</dt> <dt>Inherited from</dt>
<dd><a href="Chat.html#timestamp">Chat#timestamp</a></dd> <dd><a href="Chat.html#timestamp">Chat#timestamp</a></dd>
@@ -291,6 +294,15 @@
<dd></dd> <dd></dd>
</dl> </dl>
<div class="symbol-detail-labels"><span class="label label-async">async</span></div> <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
<h3 id="getContact"><span class="symbol-name">getContact</span><span class="signature"><span class="signature-params">()</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing <a href="Contact.html">Contact</a></span></span></h3>
<p>Returns the Contact that corresponds to this Chat.</p>
<dl class="dl-compact">
<dt>Inherited from</dt>
<dd><a href="Chat.html#getContact">Chat#getContact</a></dd>
<dt>Returns</dt>
<dd></dd>
</dl>
<div class="symbol-detail-labels"><span class="label label-async">async</span></div>
<h3 id="mute"><span class="symbol-name">mute</span><span class="signature"><span class="signature-params">(unmuteDate)</span></span></h3> <h3 id="mute"><span class="symbol-name">mute</span><span class="signature"><span class="signature-params">(unmuteDate)</span></span></h3>
<p>Mutes this chat until a specified date</p> <p>Mutes this chat until a specified date</p>
<section> <section>
@@ -327,7 +339,7 @@
<dd><a href="Chat.html#mute">Chat#mute</a></dd> <dd><a href="Chat.html#mute">Chat#mute</a></dd>
</dl> </dl>
<div class="symbol-detail-labels"><span class="label label-async">async</span></div> <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
<h3 id="sendMessage"><span class="symbol-name">sendMessage</span><span class="signature"><span class="signature-params">(content, options)</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing <a href="Message.html">Message</a></span></span></h3> <h3 id="sendMessage"><span class="symbol-name">sendMessage</span><span class="signature"><span class="signature-params">(content[, options])</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing <a href="Message.html">Message</a></span></span></h3>
<p>Send a message to this chat</p> <p>Send a message to this chat</p>
<section> <section>
<h4>Parameters</h4> <h4>Parameters</h4>
@@ -362,7 +374,7 @@
<p>&nbsp;</p> <p>&nbsp;</p>
</td> </td>
<td> <td>
<p>&nbsp;</p> <p>Yes</p>
</td> </td>
<td> <td>
</td> </td>
@@ -427,7 +439,7 @@
<footer id="jsdoc-footer" class="jsdoc-footer"> <footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container"> <div id="jsdoc-footer-container">
<p> <p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on June 18, 2020. Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on August 25, 2020.
</p> </p>
</div> </div>
</footer> </footer>

View File

@@ -4,7 +4,7 @@
<head> <head>
<meta name="generator" content="JSDoc 3.6.4"> <meta name="generator" content="JSDoc 3.6.4">
<meta charset="utf-8"> <meta charset="utf-8">
<title>whatsapp-web.js 1.7.0 &raquo; Class: PrivateContact</title> <title>whatsapp-web.js 1.8.0 &raquo; Class: PrivateContact</title>
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css">
@@ -15,7 +15,7 @@
<nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar"> <nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar">
<div id="jsdoc-navbar-container"> <div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content"> <div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>7.<wbr>0</a> <a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>8.<wbr>0</a>
</div> </div>
</div> </div>
</nav> </nav>
@@ -88,8 +88,15 @@
</div> </div>
</div> </div>
<div class="summary-callout"> <div class="summary-callout">
<h2 class="summary-callout-heading">Method</h2> <h2 class="summary-callout-heading">Methods</h2>
<div class="summary-content"> <div class="summary-content">
<div class="summary-column">
<dl class="dl-summary-callout">
<dt><a href="PrivateContact.html#getChat">getChat()</a></dt>
<dd>
</dd>
</dl>
</div>
<div class="summary-column"> <div class="summary-column">
<dl class="dl-summary-callout"> <dl class="dl-summary-callout">
<dt><a href="PrivateContact.html#getProfilePicUrl">getProfilePicUrl()</a></dt> <dt><a href="PrivateContact.html#getProfilePicUrl">getProfilePicUrl()</a></dt>
@@ -99,8 +106,6 @@
</div> </div>
<div class="summary-column"> <div class="summary-column">
</div> </div>
<div class="summary-column">
</div>
</div> </div>
</div> </div>
</section> </section>
@@ -199,8 +204,18 @@
<dd><a href="Contact.html#shortName">Contact#shortName</a></dd> <dd><a href="Contact.html#shortName">Contact#shortName</a></dd>
</dl> </dl>
</section> </section>
<h2>Method</h2> <h2>Methods</h2>
<section> <section>
<div class="symbol-detail-labels"><span class="label label-async">async</span></div>
<h3 id="getChat"><span class="symbol-name">getChat</span><span class="signature"><span class="signature-params">()</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing <a href="Chat.html">Chat</a></span></span></h3>
<p>Returns the Chat that corresponds to this Contact.
Will return null when getting chat for currently logged in user.</p>
<dl class="dl-compact">
<dt>Inherited from</dt>
<dd><a href="Contact.html#getChat">Contact#getChat</a></dd>
<dt>Returns</dt>
<dd></dd>
</dl>
<div class="symbol-detail-labels"><span class="label label-async">async</span></div> <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
<h3 id="getProfilePicUrl"><span class="symbol-name">getProfilePicUrl</span><span class="signature"><span class="signature-params">()</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing string</span></span></h3> <h3 id="getProfilePicUrl"><span class="symbol-name">getProfilePicUrl</span><span class="signature"><span class="signature-params">()</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing string</span></span></h3>
<p>Returns the contact's profile picture URL, if privacy settings allow it</p> <p>Returns the contact's profile picture URL, if privacy settings allow it</p>
@@ -220,7 +235,7 @@
<footer id="jsdoc-footer" class="jsdoc-footer"> <footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container"> <div id="jsdoc-footer-container">
<p> <p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on June 18, 2020. Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on August 25, 2020.
</p> </p>
</div> </div>
</footer> </footer>

View File

@@ -4,7 +4,7 @@
<head> <head>
<meta name="generator" content="JSDoc 3.6.4"> <meta name="generator" content="JSDoc 3.6.4">
<meta charset="utf-8"> <meta charset="utf-8">
<title>whatsapp-web.js 1.7.0 &raquo; Class: Util</title> <title>whatsapp-web.js 1.8.0 &raquo; Class: Util</title>
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css">
@@ -15,7 +15,7 @@
<nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar"> <nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar">
<div id="jsdoc-navbar-container"> <div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content"> <div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>7.<wbr>0</a> <a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>8.<wbr>0</a>
</div> </div>
</div> </div>
</nav> </nav>
@@ -50,7 +50,7 @@
<footer id="jsdoc-footer" class="jsdoc-footer"> <footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container"> <div id="jsdoc-footer-container">
<p> <p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on June 18, 2020. Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on August 25, 2020.
</p> </p>
</div> </div>
</footer> </footer>

View File

@@ -4,7 +4,7 @@
<head> <head>
<meta name="generator" content="JSDoc 3.6.4"> <meta name="generator" content="JSDoc 3.6.4">
<meta charset="utf-8"> <meta charset="utf-8">
<title>whatsapp-web.js 1.7.0 &raquo; Globals</title> <title>whatsapp-web.js 1.8.0 &raquo; Globals</title>
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css">
@@ -15,7 +15,7 @@
<nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar"> <nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar">
<div id="jsdoc-navbar-container"> <div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content"> <div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>7.<wbr>0</a> <a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>8.<wbr>0</a>
</div> </div>
</div> </div>
</nav> </nav>
@@ -63,6 +63,22 @@
</div> </div>
</div> </div>
</div> </div>
<div class="summary-callout">
<h2 class="summary-callout-heading">Abstract type</h2>
<div class="summary-content">
<div class="summary-column">
<dl class="dl-summary-callout">
<dt><a href="global.html#MessageSendOptions">MessageSendOptions</a></dt>
<dd>
</dd>
</dl>
</div>
<div class="summary-column">
</div>
<div class="summary-column">
</div>
</div>
</div>
</section> </section>
<section> <section>
<h2>Properties</h2> <h2>Properties</h2>
@@ -1008,6 +1024,130 @@
<dl class="dl-compact"> <dl class="dl-compact">
</dl> </dl>
</section> </section>
<h2>Abstract type</h2>
<section>
<h3 id="MessageSendOptions"><span class="symbol-name">MessageSendOptions</span><small class="property-type">
&nbsp;Object</small></h3>
<p>Message options.</p>
<section>
<h4>Properties</h4>
<table class="jsdoc-details-table">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Optional</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<p>linkPreview</p>
</td>
<td>
<p>boolean</p>
</td>
<td>
<p>Yes</p>
</td>
<td>
<p>Show links preview</p>
<p>Defaults to <code>true</code>.</p>
</td>
</tr>
<tr>
<td>
<p>sendAudioAsVoice</p>
</td>
<td>
<p>boolean</p>
</td>
<td>
<p>Yes</p>
</td>
<td>
<p>Send audio as voice message</p>
<p>Defaults to <code>false</code>.</p>
</td>
</tr>
<tr>
<td>
<p>caption</p>
</td>
<td>
<p>string</p>
</td>
<td>
<p>Yes</p>
</td>
<td>
<p>Image or video caption</p>
</td>
</tr>
<tr>
<td>
<p>quotedMessageId</p>
</td>
<td>
<p>string</p>
</td>
<td>
<p>Yes</p>
</td>
<td>
<p>Id of the message that is being quoted (or replied to)</p>
</td>
</tr>
<tr>
<td>
<p>mentions</p>
</td>
<td>
<p>Array of <a href="Contact.html">Contact</a></p>
</td>
<td>
<p>Yes</p>
</td>
<td>
<p>Contacts that are being mentioned in the message</p>
</td>
</tr>
<tr>
<td>
<p>sendSeen</p>
</td>
<td>
<p>boolean</p>
</td>
<td>
<p>Yes</p>
</td>
<td>
<p>Mark the conversation as seen after sending the message</p>
<p>Defaults to <code>true</code>.</p>
</td>
</tr>
<tr>
<td>
<p>media</p>
</td>
<td>
<p>boolean</p>
</td>
<td>
<p>Yes</p>
</td>
<td>
<p>Media to be sent</p>
</td>
</tr>
</tbody>
</table>
</section>
<dl class="dl-compact">
</dl>
</section>
</section> </section>
</div> </div>
</div> </div>
@@ -1017,7 +1157,7 @@
<footer id="jsdoc-footer" class="jsdoc-footer"> <footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container"> <div id="jsdoc-footer-container">
<p> <p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on June 18, 2020. Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on August 25, 2020.
</p> </p>
</div> </div>
</footer> </footer>

View File

@@ -4,7 +4,7 @@
<head> <head>
<meta name="generator" content="JSDoc 3.6.4"> <meta name="generator" content="JSDoc 3.6.4">
<meta charset="utf-8"> <meta charset="utf-8">
<title>whatsapp-web.js 1.7.0 &raquo; Home</title> <title>whatsapp-web.js 1.8.0 &raquo; Home</title>
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css">
@@ -15,7 +15,7 @@
<nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar"> <nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar">
<div id="jsdoc-navbar-container"> <div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content"> <div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>7.<wbr>0</a> <a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>8.<wbr>0</a>
</div> </div>
</div> </div>
</nav> </nav>
@@ -27,11 +27,11 @@
<div id="jsdoc-main" role="main"> <div id="jsdoc-main" role="main">
<header class="page-header"> <header class="page-header">
<h1> <h1>
whatsapp-web.js 1.7.0 whatsapp-web.js 1.8.0
</h1> </h1>
</header> </header>
<article> <article>
<p><a href="https://www.npmjs.com/package/whatsapp-web.js"><img src="https://img.shields.io/npm/v/whatsapp-web.js.svg" alt="npm"></a> <a href="https://depfu.com/github/pedroslopez/whatsapp-web.js?project_id=9765"><img src="https://badges.depfu.com/badges/4a65a0de96ece65fdf39e294e0c8dcba/overview.svg" alt="Depfu"></a> <img src="https://img.shields.io/badge/WhatsApp_Web-2.2023.2-brightgreen.svg" alt="WhatsApp_Web 2.2023.2"> <a href="https://discord.gg/H7DqQs4"><img src="https://img.shields.io/discord/698610475432411196.svg?logo=discord" alt="Discord Chat"></a></p> <p><a href="https://www.npmjs.com/package/whatsapp-web.js"><img src="https://img.shields.io/npm/v/whatsapp-web.js.svg" alt="npm"></a> <a href="https://depfu.com/github/pedroslopez/whatsapp-web.js?project_id=9765"><img src="https://badges.depfu.com/badges/4a65a0de96ece65fdf39e294e0c8dcba/overview.svg" alt="Depfu"></a> <img src="https://img.shields.io/badge/WhatsApp_Web-2.2035.12-brightgreen.svg" alt="WhatsApp_Web 2.2035.12"> <a href="https://discord.gg/H7DqQs4"><img src="https://img.shields.io/discord/698610475432411196.svg?logo=discord" alt="Discord Chat"></a></p>
<h1>whatsapp-web.js</h1> <h1>whatsapp-web.js</h1>
<p>A WhatsApp API client that connects through the WhatsApp Web browser app</p> <p>A WhatsApp API client that connects through the WhatsApp Web browser app</p>
<p>It uses Puppeteer to run a real instance of Whatsapp Web to avoid getting blocked.</p> <p>It uses Puppeteer to run a real instance of Whatsapp Web to avoid getting blocked.</p>
@@ -222,6 +222,11 @@ client.initialize();
</dt> </dt>
<dd> <dd>
</dd> </dd>
<dt class="symbol-index-name">
<a href="BusinessContact.html#getChat" class="!symbol-index-name">BusinessContact#<wbr>getChat()</a>
</dt>
<dd>
</dd>
<dt class="symbol-index-name"> <dt class="symbol-index-name">
<a href="BusinessContact.html#getProfilePicUrl" class="!symbol-index-name">BusinessContact#<wbr>getProfilePicUrl()</a> <a href="BusinessContact.html#getProfilePicUrl" class="!symbol-index-name">BusinessContact#<wbr>getProfilePicUrl()</a>
</dt> </dt>
@@ -266,15 +271,15 @@ client.initialize();
</dt> </dt>
<dd> <dd>
</dd> </dd>
</dl>
</div>
<div class="symbol-index-column">
<dl class="symbol-index-list">
<dt class="symbol-index-name"> <dt class="symbol-index-name">
<a href="BusinessContact.html#isWAContact" class="!symbol-index-name">BusinessContact#<wbr>isWAContact</a> <a href="BusinessContact.html#isWAContact" class="!symbol-index-name">BusinessContact#<wbr>isWAContact</a>
</dt> </dt>
<dd> <dd>
</dd> </dd>
</dl>
</div>
<div class="symbol-index-column">
<dl class="symbol-index-list">
<dt class="symbol-index-name"> <dt class="symbol-index-name">
<a href="BusinessContact.html#name" class="!symbol-index-name">BusinessContact#<wbr>name</a> <a href="BusinessContact.html#name" class="!symbol-index-name">BusinessContact#<wbr>name</a>
</dt> </dt>
@@ -345,6 +350,11 @@ client.initialize();
</div> </div>
<div class="symbol-index-column"> <div class="symbol-index-column">
<dl class="symbol-index-list"> <dl class="symbol-index-list">
<dt class="symbol-index-name">
<a href="Chat.html#getContact" class="!symbol-index-name">Chat#<wbr>getContact()</a>
</dt>
<dd>
</dd>
<dt class="symbol-index-name"> <dt class="symbol-index-name">
<a href="Chat.html#id" class="!symbol-index-name">Chat#<wbr>id</a> <a href="Chat.html#id" class="!symbol-index-name">Chat#<wbr>id</a>
</dt> </dt>
@@ -371,12 +381,7 @@ client.initialize();
<dd> <dd>
</dd> </dd>
<dt class="symbol-index-name"> <dt class="symbol-index-name">
<a href="Chat.html#sendMessage" class="!symbol-index-name">Chat#<wbr>sendMessage(content, options)</a> <a href="Chat.html#sendMessage" class="!symbol-index-name">Chat#<wbr>sendMessage(content[, options])</a>
</dt>
<dd>
</dd>
<dt class="symbol-index-name">
<a href="Chat.html#sendSeen" class="!symbol-index-name">Chat#<wbr>sendSeen()</a>
</dt> </dt>
<dd> <dd>
</dd> </dd>
@@ -384,6 +389,11 @@ client.initialize();
</div> </div>
<div class="symbol-index-column"> <div class="symbol-index-column">
<dl class="symbol-index-list"> <dl class="symbol-index-list">
<dt class="symbol-index-name">
<a href="Chat.html#sendSeen" class="!symbol-index-name">Chat#<wbr>sendSeen()</a>
</dt>
<dd>
</dd>
<dt class="symbol-index-name"> <dt class="symbol-index-name">
<a href="Chat.html#sendStateRecording" class="!symbol-index-name">Chat#<wbr>sendStateRecording()</a> <a href="Chat.html#sendStateRecording" class="!symbol-index-name">Chat#<wbr>sendStateRecording()</a>
</dt> </dt>
@@ -460,7 +470,7 @@ client.initialize();
<div class="symbol-index-column"> <div class="symbol-index-column">
<dl class="symbol-index-list"> <dl class="symbol-index-list">
<dt class="symbol-index-name"> <dt class="symbol-index-name">
<a href="Client.html" class="!symbol-index-name">Client()</a> <a href="Client.html" class="!symbol-index-name">Client(options)</a>
</dt> </dt>
<dd> <dd>
</dd> </dd>
@@ -612,13 +622,18 @@ client.initialize();
</dt> </dt>
<dd> <dd>
</dd> </dd>
<dt class="symbol-index-name">
<a href="Client.html#info" class="!symbol-index-name">Client#<wbr>info</a>
</dt>
<dd>
</dd>
<dt class="symbol-index-name"> <dt class="symbol-index-name">
<a href="Client.html#initialize" class="!symbol-index-name">Client#<wbr>initialize()</a> <a href="Client.html#initialize" class="!symbol-index-name">Client#<wbr>initialize()</a>
</dt> </dt>
<dd> <dd>
</dd> </dd>
<dt class="symbol-index-name"> <dt class="symbol-index-name">
<a href="Client.html#isRegisteredUser" class="!symbol-index-name">Client#<wbr>isRegisteredUser()</a> <a href="Client.html#isRegisteredUser" class="!symbol-index-name">Client#<wbr>isRegisteredUser(id)</a>
</dt> </dt>
<dd> <dd>
</dd> </dd>
@@ -638,7 +653,7 @@ client.initialize();
<dd> <dd>
</dd> </dd>
<dt class="symbol-index-name"> <dt class="symbol-index-name">
<a href="Client.html#sendMessage" class="!symbol-index-name">Client#<wbr>sendMessage(chatId, content, options)</a> <a href="Client.html#sendMessage" class="!symbol-index-name">Client#<wbr>sendMessage(chatId, content[, options])</a>
</dt> </dt>
<dd> <dd>
</dd> </dd>
@@ -652,6 +667,11 @@ client.initialize();
</dt> </dt>
<dd> <dd>
</dd> </dd>
<dt class="symbol-index-name">
<a href="Client.html#setDisplayName" class="!symbol-index-name">Client#<wbr>setDisplayName(displayName)</a>
</dt>
<dd>
</dd>
<dt class="symbol-index-name"> <dt class="symbol-index-name">
<a href="Client.html#setStatus" class="!symbol-index-name">Client#<wbr>setStatus(status)</a> <a href="Client.html#setStatus" class="!symbol-index-name">Client#<wbr>setStatus(status)</a>
</dt> </dt>
@@ -732,6 +752,11 @@ client.initialize();
</dt> </dt>
<dd> <dd>
</dd> </dd>
<dt class="symbol-index-name">
<a href="Contact.html#getChat" class="!symbol-index-name">Contact#<wbr>getChat()</a>
</dt>
<dd>
</dd>
<dt class="symbol-index-name"> <dt class="symbol-index-name">
<a href="Contact.html#getProfilePicUrl" class="!symbol-index-name">Contact#<wbr>getProfilePicUrl()</a> <a href="Contact.html#getProfilePicUrl" class="!symbol-index-name">Contact#<wbr>getProfilePicUrl()</a>
</dt> </dt>
@@ -747,15 +772,15 @@ client.initialize();
</dt> </dt>
<dd> <dd>
</dd> </dd>
</dl>
</div>
<div class="symbol-index-column">
<dl class="symbol-index-list">
<dt class="symbol-index-name"> <dt class="symbol-index-name">
<a href="Contact.html#isEnterprise" class="!symbol-index-name">Contact#<wbr>isEnterprise</a> <a href="Contact.html#isEnterprise" class="!symbol-index-name">Contact#<wbr>isEnterprise</a>
</dt> </dt>
<dd> <dd>
</dd> </dd>
</dl>
</div>
<div class="symbol-index-column">
<dl class="symbol-index-list">
<dt class="symbol-index-name"> <dt class="symbol-index-name">
<a href="Contact.html#isGroup" class="!symbol-index-name">Contact#<wbr>isGroup</a> <a href="Contact.html#isGroup" class="!symbol-index-name">Contact#<wbr>isGroup</a>
</dt> </dt>
@@ -776,15 +801,15 @@ client.initialize();
</dt> </dt>
<dd> <dd>
</dd> </dd>
</dl>
</div>
<div class="symbol-index-column">
<dl class="symbol-index-list">
<dt class="symbol-index-name"> <dt class="symbol-index-name">
<a href="Contact.html#isWAContact" class="!symbol-index-name">Contact#<wbr>isWAContact</a> <a href="Contact.html#isWAContact" class="!symbol-index-name">Contact#<wbr>isWAContact</a>
</dt> </dt>
<dd> <dd>
</dd> </dd>
</dl>
</div>
<div class="symbol-index-column">
<dl class="symbol-index-list">
<dt class="symbol-index-name"> <dt class="symbol-index-name">
<a href="Contact.html#name" class="!symbol-index-name">Contact#<wbr>name</a> <a href="Contact.html#name" class="!symbol-index-name">Contact#<wbr>name</a>
</dt> </dt>
@@ -970,6 +995,11 @@ client.initialize();
</dt> </dt>
<dd> <dd>
</dd> </dd>
<dt class="symbol-index-name">
<a href="GroupChat.html#getContact" class="!symbol-index-name">GroupChat#<wbr>getContact()</a>
</dt>
<dd>
</dd>
</dl> </dl>
</div> </div>
<div class="symbol-index-column"> <div class="symbol-index-column">
@@ -1029,17 +1059,17 @@ client.initialize();
</dt> </dt>
<dd> <dd>
</dd> </dd>
</dl>
</div>
<div class="symbol-index-column">
<dl class="symbol-index-list">
<dt class="symbol-index-name"> <dt class="symbol-index-name">
<a href="GroupChat.html#revokeInvite" class="!symbol-index-name">GroupChat#<wbr>revokeInvite()</a> <a href="GroupChat.html#revokeInvite" class="!symbol-index-name">GroupChat#<wbr>revokeInvite()</a>
</dt> </dt>
<dd> <dd>
</dd> </dd>
</dl>
</div>
<div class="symbol-index-column">
<dl class="symbol-index-list">
<dt class="symbol-index-name"> <dt class="symbol-index-name">
<a href="GroupChat.html#sendMessage" class="!symbol-index-name">GroupChat#<wbr>sendMessage(content, options)</a> <a href="GroupChat.html#sendMessage" class="!symbol-index-name">GroupChat#<wbr>sendMessage(content[, options])</a>
</dt> </dt>
<dd> <dd>
</dd> </dd>
@@ -1360,6 +1390,11 @@ client.initialize();
</dt> </dt>
<dd> <dd>
</dd> </dd>
<dt class="symbol-index-name">
<a href="Message.html#forward" class="!symbol-index-name">Message#<wbr>forward(chat)</a>
</dt>
<dd>
</dd>
<dt class="symbol-index-name"> <dt class="symbol-index-name">
<a href="Message.html#from" class="!symbol-index-name">Message#<wbr>from</a> <a href="Message.html#from" class="!symbol-index-name">Message#<wbr>from</a>
</dt> </dt>
@@ -1409,15 +1444,15 @@ client.initialize();
</dt> </dt>
<dd> <dd>
</dd> </dd>
</dl>
</div>
<div class="symbol-index-column">
<dl class="symbol-index-list">
<dt class="symbol-index-name"> <dt class="symbol-index-name">
<a href="Message.html#isForwarded" class="!symbol-index-name">Message#<wbr>isForwarded</a> <a href="Message.html#isForwarded" class="!symbol-index-name">Message#<wbr>isForwarded</a>
</dt> </dt>
<dd> <dd>
</dd> </dd>
</dl>
</div>
<div class="symbol-index-column">
<dl class="symbol-index-list">
<dt class="symbol-index-name"> <dt class="symbol-index-name">
<a href="Message.html#location" class="!symbol-index-name">Message#<wbr>location</a> <a href="Message.html#location" class="!symbol-index-name">Message#<wbr>location</a>
</dt> </dt>
@@ -1434,7 +1469,7 @@ client.initialize();
<dd> <dd>
</dd> </dd>
<dt class="symbol-index-name"> <dt class="symbol-index-name">
<a href="Message.html#reply" class="!symbol-index-name">Message#<wbr>reply(content, chatId, options)</a> <a href="Message.html#reply" class="!symbol-index-name">Message#<wbr>reply(content[, chatId][, options])</a>
</dt> </dt>
<dd> <dd>
</dd> </dd>
@@ -1675,6 +1710,11 @@ client.initialize();
</div> </div>
<div class="symbol-index-column"> <div class="symbol-index-column">
<dl class="symbol-index-list"> <dl class="symbol-index-list">
<dt class="symbol-index-name">
<a href="PrivateChat.html#getContact" class="!symbol-index-name">PrivateChat#<wbr>getContact()</a>
</dt>
<dd>
</dd>
<dt class="symbol-index-name"> <dt class="symbol-index-name">
<a href="PrivateChat.html#id" class="!symbol-index-name">PrivateChat#<wbr>id</a> <a href="PrivateChat.html#id" class="!symbol-index-name">PrivateChat#<wbr>id</a>
</dt> </dt>
@@ -1701,12 +1741,7 @@ client.initialize();
<dd> <dd>
</dd> </dd>
<dt class="symbol-index-name"> <dt class="symbol-index-name">
<a href="PrivateChat.html#sendMessage" class="!symbol-index-name">PrivateChat#<wbr>sendMessage(content, options)</a> <a href="PrivateChat.html#sendMessage" class="!symbol-index-name">PrivateChat#<wbr>sendMessage(content[, options])</a>
</dt>
<dd>
</dd>
<dt class="symbol-index-name">
<a href="PrivateChat.html#sendSeen" class="!symbol-index-name">PrivateChat#<wbr>sendSeen()</a>
</dt> </dt>
<dd> <dd>
</dd> </dd>
@@ -1714,6 +1749,11 @@ client.initialize();
</div> </div>
<div class="symbol-index-column"> <div class="symbol-index-column">
<dl class="symbol-index-list"> <dl class="symbol-index-list">
<dt class="symbol-index-name">
<a href="PrivateChat.html#sendSeen" class="!symbol-index-name">PrivateChat#<wbr>sendSeen()</a>
</dt>
<dd>
</dd>
<dt class="symbol-index-name"> <dt class="symbol-index-name">
<a href="PrivateChat.html#sendStateRecording" class="!symbol-index-name">PrivateChat#<wbr>sendStateRecording()</a> <a href="PrivateChat.html#sendStateRecording" class="!symbol-index-name">PrivateChat#<wbr>sendStateRecording()</a>
</dt> </dt>
@@ -1760,6 +1800,11 @@ client.initialize();
</dt> </dt>
<dd> <dd>
</dd> </dd>
<dt class="symbol-index-name">
<a href="PrivateContact.html#getChat" class="!symbol-index-name">PrivateContact#<wbr>getChat()</a>
</dt>
<dd>
</dd>
<dt class="symbol-index-name"> <dt class="symbol-index-name">
<a href="PrivateContact.html#getProfilePicUrl" class="!symbol-index-name">PrivateContact#<wbr>getProfilePicUrl()</a> <a href="PrivateContact.html#getProfilePicUrl" class="!symbol-index-name">PrivateContact#<wbr>getProfilePicUrl()</a>
</dt> </dt>
@@ -1775,15 +1820,15 @@ client.initialize();
</dt> </dt>
<dd> <dd>
</dd> </dd>
</dl>
</div>
<div class="symbol-index-column">
<dl class="symbol-index-list">
<dt class="symbol-index-name"> <dt class="symbol-index-name">
<a href="PrivateContact.html#isEnterprise" class="!symbol-index-name">PrivateContact#<wbr>isEnterprise</a> <a href="PrivateContact.html#isEnterprise" class="!symbol-index-name">PrivateContact#<wbr>isEnterprise</a>
</dt> </dt>
<dd> <dd>
</dd> </dd>
</dl>
</div>
<div class="symbol-index-column">
<dl class="symbol-index-list">
<dt class="symbol-index-name"> <dt class="symbol-index-name">
<a href="PrivateContact.html#isGroup" class="!symbol-index-name">PrivateContact#<wbr>isGroup</a> <a href="PrivateContact.html#isGroup" class="!symbol-index-name">PrivateContact#<wbr>isGroup</a>
</dt> </dt>
@@ -1804,15 +1849,15 @@ client.initialize();
</dt> </dt>
<dd> <dd>
</dd> </dd>
</dl>
</div>
<div class="symbol-index-column">
<dl class="symbol-index-list">
<dt class="symbol-index-name"> <dt class="symbol-index-name">
<a href="PrivateContact.html#isWAContact" class="!symbol-index-name">PrivateContact#<wbr>isWAContact</a> <a href="PrivateContact.html#isWAContact" class="!symbol-index-name">PrivateContact#<wbr>isWAContact</a>
</dt> </dt>
<dd> <dd>
</dd> </dd>
</dl>
</div>
<div class="symbol-index-column">
<dl class="symbol-index-list">
<dt class="symbol-index-name"> <dt class="symbol-index-name">
<a href="PrivateContact.html#name" class="!symbol-index-name">PrivateContact#<wbr>name</a> <a href="PrivateContact.html#name" class="!symbol-index-name">PrivateContact#<wbr>name</a>
</dt> </dt>
@@ -1984,7 +2029,7 @@ client.initialize();
<footer id="jsdoc-footer" class="jsdoc-footer"> <footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container"> <div id="jsdoc-footer-container">
<p> <p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on June 18, 2020. Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on August 25, 2020.
</p> </p>
</div> </div>
</footer> </footer>

View File

@@ -4,7 +4,7 @@
<head> <head>
<meta name="generator" content="JSDoc 3.6.4"> <meta name="generator" content="JSDoc 3.6.4">
<meta charset="utf-8"> <meta charset="utf-8">
<title>whatsapp-web.js 1.7.0 &raquo; Source: structures/Base.js</title> <title>whatsapp-web.js 1.8.0 &raquo; Source: structures/Base.js</title>
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css">
@@ -15,7 +15,7 @@
<nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar"> <nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar">
<div id="jsdoc-navbar-container"> <div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content"> <div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>7.<wbr>0</a> <a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>8.<wbr>0</a>
</div> </div>
</div> </div>
</nav> </nav>
@@ -60,7 +60,7 @@ module.exports &#x3D; Base;</code></pre>
<footer id="jsdoc-footer" class="jsdoc-footer"> <footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container"> <div id="jsdoc-footer-container">
<p> <p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on June 18, 2020. Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on August 25, 2020.
</p> </p>
</div> </div>
</footer> </footer>

View File

@@ -4,7 +4,7 @@
<head> <head>
<meta name="generator" content="JSDoc 3.6.4"> <meta name="generator" content="JSDoc 3.6.4">
<meta charset="utf-8"> <meta charset="utf-8">
<title>whatsapp-web.js 1.7.0 &raquo; Source: structures/BusinessContact.js</title> <title>whatsapp-web.js 1.8.0 &raquo; Source: structures/BusinessContact.js</title>
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css">
@@ -15,7 +15,7 @@
<nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar"> <nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar">
<div id="jsdoc-navbar-container"> <div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content"> <div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>7.<wbr>0</a> <a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>8.<wbr>0</a>
</div> </div>
</div> </div>
</nav> </nav>
@@ -59,7 +59,7 @@ module.exports &#x3D; BusinessContact;</code></pre>
<footer id="jsdoc-footer" class="jsdoc-footer"> <footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container"> <div id="jsdoc-footer-container">
<p> <p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on June 18, 2020. Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on August 25, 2020.
</p> </p>
</div> </div>
</footer> </footer>

View File

@@ -4,7 +4,7 @@
<head> <head>
<meta name="generator" content="JSDoc 3.6.4"> <meta name="generator" content="JSDoc 3.6.4">
<meta charset="utf-8"> <meta charset="utf-8">
<title>whatsapp-web.js 1.7.0 &raquo; Source: structures/Chat.js</title> <title>whatsapp-web.js 1.8.0 &raquo; Source: structures/Chat.js</title>
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css">
@@ -15,7 +15,7 @@
<nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar"> <nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar">
<div id="jsdoc-navbar-container"> <div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content"> <div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>7.<wbr>0</a> <a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>8.<wbr>0</a>
</div> </div>
</div> </div>
</nav> </nav>
@@ -77,7 +77,7 @@ class Chat extends Base {
this.unreadCount &#x3D; data.unreadCount; this.unreadCount &#x3D; data.unreadCount;
/** /**
* Unix timestamp for when the chat was created * Unix timestamp for when the last activity occurred
* @type {number} * @type {number}
*/ */
this.timestamp &#x3D; data.t; this.timestamp &#x3D; data.t;
@@ -94,7 +94,7 @@ class Chat extends Base {
/** /**
* Send a message to this chat * Send a message to this chat
* @param {string|MessageMedia|Location} content * @param {string|MessageMedia|Location} content
* @param {object} options * @param {MessageSendOptions} [options]
* @returns {Promise&amp;lt;Message&gt;} Message that was just sent * @returns {Promise&amp;lt;Message&gt;} Message that was just sent
*/ */
async sendMessage(content, options) { async sendMessage(content, options) {
@@ -150,7 +150,7 @@ class Chat extends Base {
async mute(unmuteDate) { async mute(unmuteDate) {
return this.client.muteChat(this.id._serialized, unmuteDate); return this.client.muteChat(this.id._serialized, unmuteDate);
} }
/** /**
* Unmutes this chat * Unmutes this chat
*/ */
@@ -165,18 +165,18 @@ class Chat extends Base {
* @returns {Promise&amp;lt;Array&amp;lt;Message&gt;&gt;} * @returns {Promise&amp;lt;Array&amp;lt;Message&gt;&gt;}
*/ */
async fetchMessages(searchOptions) { async fetchMessages(searchOptions) {
if(!searchOptions || !searchOptions.limit) { if (!searchOptions || !searchOptions.limit) {
searchOptions &#x3D; {limit: 50}; searchOptions &#x3D; { limit: 50 };
} }
let messages &#x3D; await this.client.pupPage.evaluate(async (chatId, limit) &#x3D;&gt; { let messages &#x3D; await this.client.pupPage.evaluate(async (chatId, limit) &#x3D;&gt; {
const msgFilter &#x3D; m &#x3D;&gt; !m.isNotification; // dont include notification messages const msgFilter &#x3D; m &#x3D;&gt; !m.isNotification; // dont include notification messages
const chat &#x3D; window.Store.Chat.get(chatId); const chat &#x3D; window.Store.Chat.get(chatId);
let msgs &#x3D; chat.msgs.models.filter(msgFilter); let msgs &#x3D; chat.msgs.models.filter(msgFilter);
while(msgs.length &amp;lt; limit) { while (msgs.length &amp;lt; limit) {
const loadedMessages &#x3D; await chat.loadEarlierMsgs(); const loadedMessages &#x3D; await chat.loadEarlierMsgs();
if(!loadedMessages) break; if (!loadedMessages) break;
msgs &#x3D; [...loadedMessages.filter(msgFilter), ...msgs]; msgs &#x3D; [...loadedMessages.filter(msgFilter), ...msgs];
} }
@@ -187,7 +187,7 @@ class Chat extends Base {
return messages.map(m &#x3D;&gt; new Message(this.client, m)); return messages.map(m &#x3D;&gt; new Message(this.client, m));
} }
/** /**
* Simulate typing in chat. This will last for 25 seconds. * Simulate typing in chat. This will last for 25 seconds.
*/ */
@@ -197,7 +197,7 @@ class Chat extends Base {
return true; return true;
}, this.id._serialized); }, this.id._serialized);
} }
/** /**
* Simulate recording audio in chat. This will last for 25 seconds. * Simulate recording audio in chat. This will last for 25 seconds.
*/ */
@@ -207,7 +207,7 @@ class Chat extends Base {
return true; return true;
}, this.id._serialized); }, this.id._serialized);
} }
/** /**
* Stops typing or recording in chat immediately. * Stops typing or recording in chat immediately.
*/ */
@@ -217,6 +217,14 @@ class Chat extends Base {
return true; return true;
}, this.id._serialized); }, this.id._serialized);
} }
/**
* Returns the Contact that corresponds to this Chat.
* @returns {Promise&amp;lt;Contact&gt;}
*/
async getContact() {
return await this.client.getContactById(this.id._serialized);
}
} }
module.exports &#x3D; Chat; module.exports &#x3D; Chat;
@@ -230,7 +238,7 @@ module.exports &#x3D; Chat;
<footer id="jsdoc-footer" class="jsdoc-footer"> <footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container"> <div id="jsdoc-footer-container">
<p> <p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on June 18, 2020. Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on August 25, 2020.
</p> </p>
</div> </div>
</footer> </footer>

View File

@@ -4,7 +4,7 @@
<head> <head>
<meta name="generator" content="JSDoc 3.6.4"> <meta name="generator" content="JSDoc 3.6.4">
<meta charset="utf-8"> <meta charset="utf-8">
<title>whatsapp-web.js 1.7.0 &raquo; Source: structures/ClientInfo.js</title> <title>whatsapp-web.js 1.8.0 &raquo; Source: structures/ClientInfo.js</title>
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css">
@@ -15,7 +15,7 @@
<nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar"> <nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar">
<div id="jsdoc-navbar-container"> <div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content"> <div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>7.<wbr>0</a> <a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>8.<wbr>0</a>
</div> </div>
</div> </div>
</nav> </nav>
@@ -102,7 +102,7 @@ module.exports &#x3D; ClientInfo;</code></pre>
<footer id="jsdoc-footer" class="jsdoc-footer"> <footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container"> <div id="jsdoc-footer-container">
<p> <p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on June 18, 2020. Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on August 25, 2020.
</p> </p>
</div> </div>
</footer> </footer>

View File

@@ -4,7 +4,7 @@
<head> <head>
<meta name="generator" content="JSDoc 3.6.4"> <meta name="generator" content="JSDoc 3.6.4">
<meta charset="utf-8"> <meta charset="utf-8">
<title>whatsapp-web.js 1.7.0 &raquo; Source: structures/Contact.js</title> <title>whatsapp-web.js 1.8.0 &raquo; Source: structures/Contact.js</title>
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css">
@@ -15,7 +15,7 @@
<nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar"> <nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar">
<div id="jsdoc-navbar-container"> <div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content"> <div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>7.<wbr>0</a> <a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>8.<wbr>0</a>
</div> </div>
</div> </div>
</nav> </nav>
@@ -136,6 +136,17 @@ class Contact extends Base {
async getProfilePicUrl() { async getProfilePicUrl() {
return await this.client.getProfilePicUrl(this.id._serialized); return await this.client.getProfilePicUrl(this.id._serialized);
} }
/**
* Returns the Chat that corresponds to this Contact.
* Will return null when getting chat for currently logged in user.
* @returns {Promise&amp;lt;Chat&gt;}
*/
async getChat() {
if(this.isMe) return null;
return await this.client.getChatById(this.id._serialized);
}
} }
@@ -149,7 +160,7 @@ module.exports &#x3D; Contact;</code></pre>
<footer id="jsdoc-footer" class="jsdoc-footer"> <footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container"> <div id="jsdoc-footer-container">
<p> <p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on June 18, 2020. Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on August 25, 2020.
</p> </p>
</div> </div>
</footer> </footer>

View File

@@ -4,7 +4,7 @@
<head> <head>
<meta name="generator" content="JSDoc 3.6.4"> <meta name="generator" content="JSDoc 3.6.4">
<meta charset="utf-8"> <meta charset="utf-8">
<title>whatsapp-web.js 1.7.0 &raquo; Source: structures/GroupChat.js</title> <title>whatsapp-web.js 1.8.0 &raquo; Source: structures/GroupChat.js</title>
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css">
@@ -15,7 +15,7 @@
<nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar"> <nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar">
<div id="jsdoc-navbar-container"> <div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content"> <div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>7.<wbr>0</a> <a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>8.<wbr>0</a>
</div> </div>
</div> </div>
</nav> </nav>
@@ -188,7 +188,7 @@ module.exports &#x3D; GroupChat;</code></pre>
<footer id="jsdoc-footer" class="jsdoc-footer"> <footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container"> <div id="jsdoc-footer-container">
<p> <p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on June 18, 2020. Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on August 25, 2020.
</p> </p>
</div> </div>
</footer> </footer>

View File

@@ -4,7 +4,7 @@
<head> <head>
<meta name="generator" content="JSDoc 3.6.4"> <meta name="generator" content="JSDoc 3.6.4">
<meta charset="utf-8"> <meta charset="utf-8">
<title>whatsapp-web.js 1.7.0 &raquo; Source: structures/GroupNotification.js</title> <title>whatsapp-web.js 1.8.0 &raquo; Source: structures/GroupNotification.js</title>
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css">
@@ -15,7 +15,7 @@
<nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar"> <nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar">
<div id="jsdoc-navbar-container"> <div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content"> <div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>7.<wbr>0</a> <a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>8.<wbr>0</a>
</div> </div>
</div> </div>
</nav> </nav>
@@ -143,7 +143,7 @@ module.exports &#x3D; GroupNotification;
<footer id="jsdoc-footer" class="jsdoc-footer"> <footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container"> <div id="jsdoc-footer-container">
<p> <p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on June 18, 2020. Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on August 25, 2020.
</p> </p>
</div> </div>
</footer> </footer>

View File

@@ -4,7 +4,7 @@
<head> <head>
<meta name="generator" content="JSDoc 3.6.4"> <meta name="generator" content="JSDoc 3.6.4">
<meta charset="utf-8"> <meta charset="utf-8">
<title>whatsapp-web.js 1.7.0 &raquo; Source: structures/Location.js</title> <title>whatsapp-web.js 1.8.0 &raquo; Source: structures/Location.js</title>
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css">
@@ -15,7 +15,7 @@
<nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar"> <nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar">
<div id="jsdoc-navbar-container"> <div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content"> <div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>7.<wbr>0</a> <a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>8.<wbr>0</a>
</div> </div>
</div> </div>
</nav> </nav>
@@ -71,7 +71,7 @@ module.exports &#x3D; Location;</code></pre>
<footer id="jsdoc-footer" class="jsdoc-footer"> <footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container"> <div id="jsdoc-footer-container">
<p> <p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on June 18, 2020. Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on August 25, 2020.
</p> </p>
</div> </div>
</footer> </footer>

View File

@@ -4,7 +4,7 @@
<head> <head>
<meta name="generator" content="JSDoc 3.6.4"> <meta name="generator" content="JSDoc 3.6.4">
<meta charset="utf-8"> <meta charset="utf-8">
<title>whatsapp-web.js 1.7.0 &raquo; Source: structures/Message.js</title> <title>whatsapp-web.js 1.8.0 &raquo; Source: structures/Message.js</title>
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css">
@@ -15,7 +15,7 @@
<nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar"> <nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar">
<div id="jsdoc-navbar-container"> <div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content"> <div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>7.<wbr>0</a> <a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>8.<wbr>0</a>
</div> </div>
</div> </div>
</nav> </nav>
@@ -44,7 +44,7 @@ class Message extends Base {
constructor(client, data) { constructor(client, data) {
super(client); super(client);
if(data) this._patch(data); if (data) this._patch(data);
} }
_patch(data) { _patch(data) {
@@ -129,7 +129,7 @@ class Message extends Base {
* @type {boolean} * @type {boolean}
*/ */
this.fromMe &#x3D; data.id.fromMe; this.fromMe &#x3D; data.id.fromMe;
/** /**
* Indicates if the message was sent as a reply to another message. * Indicates if the message was sent as a reply to another message.
* @type {boolean} * @type {boolean}
@@ -204,11 +204,11 @@ class Message extends Base {
* in the same Chat as the original message was sent. * in the same Chat as the original message was sent.
* *
* @param {string|MessageMedia|Location} content * @param {string|MessageMedia|Location} content
* @param {?string} chatId * @param {string} [chatId]
* @param {object} options * @param {MessageSendOptions} [options]
* @returns {Promise&amp;lt;Message&gt;} * @returns {Promise&amp;lt;Message&gt;}
*/ */
async reply(content, chatId, options&#x3D;{}) { async reply(content, chatId, options &#x3D; {}) {
if (!chatId) { if (!chatId) {
chatId &#x3D; this._getChatId(); chatId &#x3D; this._getChatId();
} }
@@ -221,6 +221,23 @@ class Message extends Base {
return this.client.sendMessage(chatId, content, options); return this.client.sendMessage(chatId, content, options);
} }
/**
* Forwards this message to another chat
*
* @param {string|Chat} chat Chat model or chat ID to which the message will be forwarded
* @returns {Promise}
*/
async forward(chat) {
const chatId &#x3D; typeof chat &#x3D;&#x3D;&#x3D; &#x27;string&#x27; ? chat : chat.id._serialized;
await this.client.pupPage.evaluate(async (msgId, chatId) &#x3D;&gt; {
let msg &#x3D; window.Store.Msg.get(msgId);
let chat &#x3D; window.Store.Chat.get(chatId);
return await chat.forwardMessages([msg]);
}, this.id._serialized, chatId);
}
/** /**
* Downloads and returns the attatched message media * Downloads and returns the attatched message media
* @returns {Promise&amp;lt;MessageMedia&gt;} * @returns {Promise&amp;lt;MessageMedia&gt;}
@@ -232,13 +249,13 @@ class Message extends Base {
const result &#x3D; await this.client.pupPage.evaluate(async (msgId) &#x3D;&gt; { const result &#x3D; await this.client.pupPage.evaluate(async (msgId) &#x3D;&gt; {
const msg &#x3D; window.Store.Msg.get(msgId); const msg &#x3D; window.Store.Msg.get(msgId);
if(msg.mediaData.mediaStage !&#x3D; &#x27;RESOLVED&#x27;) { if (msg.mediaData.mediaStage !&#x3D; &#x27;RESOLVED&#x27;) {
// try to resolve media // try to resolve media
await msg.downloadMedia(true, 1); await msg.downloadMedia(true, 1);
} }
if(msg.mediaData.mediaStage.includes(&#x27;ERROR&#x27;)) { if (msg.mediaData.mediaStage.includes(&#x27;ERROR&#x27;)) {
// media could not be downloaded // media could not be downloaded
return undefined; return undefined;
} }
@@ -246,7 +263,7 @@ class Message extends Base {
const buffer &#x3D; await window.WWebJS.downloadBuffer(msg.clientUrl); const buffer &#x3D; await window.WWebJS.downloadBuffer(msg.clientUrl);
const decrypted &#x3D; await window.Store.CryptoLib.decryptE2EMedia(msg.type, buffer, msg.mediaKey, msg.mimetype); const decrypted &#x3D; await window.Store.CryptoLib.decryptE2EMedia(msg.type, buffer, msg.mediaKey, msg.mimetype);
const data &#x3D; await window.WWebJS.readBlobAsync(decrypted._blob); const data &#x3D; await window.WWebJS.readBlobAsync(decrypted._blob);
return { return {
data: data.split(&#x27;,&#x27;)[1], data: data.split(&#x27;,&#x27;)[1],
mimetype: msg.mimetype, mimetype: msg.mimetype,
@@ -255,7 +272,7 @@ class Message extends Base {
}, this.id._serialized); }, this.id._serialized);
if(!result) return undefined; if (!result) return undefined;
return new MessageMedia(result.mimetype, result.data, result.filename); return new MessageMedia(result.mimetype, result.data, result.filename);
} }
@@ -267,10 +284,10 @@ class Message extends Base {
await this.client.pupPage.evaluate((msgId, everyone) &#x3D;&gt; { await this.client.pupPage.evaluate((msgId, everyone) &#x3D;&gt; {
let msg &#x3D; window.Store.Msg.get(msgId); let msg &#x3D; window.Store.Msg.get(msgId);
if(everyone &amp;amp;&amp;amp; msg.id.fromMe &amp;amp;&amp;amp; msg.canRevoke()) { if (everyone &amp;amp;&amp;amp; msg.id.fromMe &amp;amp;&amp;amp; msg.canRevoke()) {
return window.Store.Cmd.sendRevokeMsgs(msg.chat, [msg], true); return window.Store.Cmd.sendRevokeMsgs(msg.chat, [msg], true);
} }
return window.Store.Cmd.sendDeleteMsgs(msg.chat, [msg], true); return window.Store.Cmd.sendDeleteMsgs(msg.chat, [msg], true);
}, this.id._serialized, everyone); }, this.id._serialized, everyone);
} }
@@ -287,7 +304,7 @@ module.exports &#x3D; Message;
<footer id="jsdoc-footer" class="jsdoc-footer"> <footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container"> <div id="jsdoc-footer-container">
<p> <p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on June 18, 2020. Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on August 25, 2020.
</p> </p>
</div> </div>
</footer> </footer>

View File

@@ -4,7 +4,7 @@
<head> <head>
<meta name="generator" content="JSDoc 3.6.4"> <meta name="generator" content="JSDoc 3.6.4">
<meta charset="utf-8"> <meta charset="utf-8">
<title>whatsapp-web.js 1.7.0 &raquo; Source: structures/MessageMedia.js</title> <title>whatsapp-web.js 1.8.0 &raquo; Source: structures/MessageMedia.js</title>
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css">
@@ -15,7 +15,7 @@
<nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar"> <nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar">
<div id="jsdoc-navbar-container"> <div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content"> <div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>7.<wbr>0</a> <a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>8.<wbr>0</a>
</div> </div>
</div> </div>
</nav> </nav>
@@ -86,7 +86,7 @@ module.exports &#x3D; MessageMedia;</code></pre>
<footer id="jsdoc-footer" class="jsdoc-footer"> <footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container"> <div id="jsdoc-footer-container">
<p> <p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on June 18, 2020. Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on August 25, 2020.
</p> </p>
</div> </div>
</footer> </footer>

View File

@@ -4,7 +4,7 @@
<head> <head>
<meta name="generator" content="JSDoc 3.6.4"> <meta name="generator" content="JSDoc 3.6.4">
<meta charset="utf-8"> <meta charset="utf-8">
<title>whatsapp-web.js 1.7.0 &raquo; Source: structures/PrivateChat.js</title> <title>whatsapp-web.js 1.8.0 &raquo; Source: structures/PrivateChat.js</title>
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css">
@@ -15,7 +15,7 @@
<nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar"> <nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar">
<div id="jsdoc-navbar-container"> <div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content"> <div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>7.<wbr>0</a> <a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>8.<wbr>0</a>
</div> </div>
</div> </div>
</nav> </nav>
@@ -51,7 +51,7 @@ module.exports &#x3D; PrivateChat;</code></pre>
<footer id="jsdoc-footer" class="jsdoc-footer"> <footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container"> <div id="jsdoc-footer-container">
<p> <p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on June 18, 2020. Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on August 25, 2020.
</p> </p>
</div> </div>
</footer> </footer>

View File

@@ -4,7 +4,7 @@
<head> <head>
<meta name="generator" content="JSDoc 3.6.4"> <meta name="generator" content="JSDoc 3.6.4">
<meta charset="utf-8"> <meta charset="utf-8">
<title>whatsapp-web.js 1.7.0 &raquo; Source: structures/PrivateContact.js</title> <title>whatsapp-web.js 1.8.0 &raquo; Source: structures/PrivateContact.js</title>
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css">
@@ -15,7 +15,7 @@
<nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar"> <nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar">
<div id="jsdoc-navbar-container"> <div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content"> <div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>7.<wbr>0</a> <a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>8.<wbr>0</a>
</div> </div>
</div> </div>
</nav> </nav>
@@ -51,7 +51,7 @@ module.exports &#x3D; PrivateContact;</code></pre>
<footer id="jsdoc-footer" class="jsdoc-footer"> <footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container"> <div id="jsdoc-footer-container">
<p> <p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on June 18, 2020. Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on August 25, 2020.
</p> </p>
</div> </div>
</footer> </footer>

View File

@@ -4,7 +4,7 @@
<head> <head>
<meta name="generator" content="JSDoc 3.6.4"> <meta name="generator" content="JSDoc 3.6.4">
<meta charset="utf-8"> <meta charset="utf-8">
<title>whatsapp-web.js 1.7.0 &raquo; Source: util/Constants.js</title> <title>whatsapp-web.js 1.8.0 &raquo; Source: util/Constants.js</title>
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css">
@@ -15,7 +15,7 @@
<nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar"> <nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar">
<div id="jsdoc-navbar-container"> <div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content"> <div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>7.<wbr>0</a> <a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>8.<wbr>0</a>
</div> </div>
</div> </div>
</nav> </nav>
@@ -33,8 +33,6 @@
exports.WhatsWebURL &#x3D; &#x27;https://web.whatsapp.com/&#x27;; exports.WhatsWebURL &#x3D; &#x27;https://web.whatsapp.com/&#x27;;
exports.UserAgent &#x3D; &#x27;Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36&#x27;;
exports.DefaultOptions &#x3D; { exports.DefaultOptions &#x3D; {
puppeteer: { puppeteer: {
headless: true, headless: true,
@@ -45,7 +43,8 @@ exports.DefaultOptions &#x3D; {
qrRefreshIntervalMs: 20000, qrRefreshIntervalMs: 20000,
authTimeoutMs: 45000, authTimeoutMs: 45000,
takeoverOnConflict: false, takeoverOnConflict: false,
takeoverTimeoutMs: 0 takeoverTimeoutMs: 0,
userAgent: &#x27;Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36&#x27;
}; };
/** /**
@@ -174,7 +173,7 @@ exports.MessageAck &#x3D; {
<footer id="jsdoc-footer" class="jsdoc-footer"> <footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container"> <div id="jsdoc-footer-container">
<p> <p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on June 18, 2020. Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on August 25, 2020.
</p> </p>
</div> </div>
</footer> </footer>

View File

@@ -4,7 +4,7 @@
<head> <head>
<meta name="generator" content="JSDoc 3.6.4"> <meta name="generator" content="JSDoc 3.6.4">
<meta charset="utf-8"> <meta charset="utf-8">
<title>whatsapp-web.js 1.7.0 &raquo; Source: util/InterfaceController.js</title> <title>whatsapp-web.js 1.8.0 &raquo; Source: util/InterfaceController.js</title>
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css">
@@ -15,7 +15,7 @@
<nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar"> <nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar">
<div id="jsdoc-navbar-container"> <div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content"> <div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>7.<wbr>0</a> <a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>8.<wbr>0</a>
</div> </div>
</div> </div>
</nav> </nav>
@@ -94,7 +94,7 @@ module.exports &#x3D; InterfaceController;</code></pre>
<footer id="jsdoc-footer" class="jsdoc-footer"> <footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container"> <div id="jsdoc-footer-container">
<p> <p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on June 18, 2020. Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on August 25, 2020.
</p> </p>
</div> </div>
</footer> </footer>

View File

@@ -4,7 +4,7 @@
<head> <head>
<meta name="generator" content="JSDoc 3.6.4"> <meta name="generator" content="JSDoc 3.6.4">
<meta charset="utf-8"> <meta charset="utf-8">
<title>whatsapp-web.js 1.7.0 &raquo; Source: util/Util.js</title> <title>whatsapp-web.js 1.8.0 &raquo; Source: util/Util.js</title>
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css"> <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css">
@@ -15,7 +15,7 @@
<nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar"> <nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar">
<div id="jsdoc-navbar-container"> <div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content"> <div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>7.<wbr>0</a> <a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>8.<wbr>0</a>
</div> </div>
</div> </div>
</nav> </nav>
@@ -73,7 +73,7 @@ module.exports &#x3D; Util;</code></pre>
<footer id="jsdoc-footer" class="jsdoc-footer"> <footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container"> <div id="jsdoc-footer-container">
<p> <p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on June 18, 2020. Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.4 on August 25, 2020.
</p> </p>
</div> </div>
</footer> </footer>

162
index.d.ts vendored
View File

@@ -7,6 +7,9 @@ declare namespace WAWebJS {
export class Client extends EventEmitter { export class Client extends EventEmitter {
constructor(options: ClientOptions) constructor(options: ClientOptions)
/** Current connection information */
public info: ClientInfo
/**Accepts an invitation to join a group */ /**Accepts an invitation to join a group */
acceptInvite(inviteCode: string): Promise<void> acceptInvite(inviteCode: string): Promise<void>
@@ -20,8 +23,6 @@ declare namespace WAWebJS {
* Create a new group * Create a new group
* @param name group title * @param name group title
* @param participants an array of Contacts or contact IDs to add to the group * @param participants an array of Contacts or contact IDs to add to the group
*
* @todo improve return type in the official docs
*/ */
createGroup(name: string, participants: Contact[] | string[]): Promise<CreateGroupResult> createGroup(name: string, participants: Contact[] | string[]): Promise<CreateGroupResult>
@@ -49,19 +50,13 @@ declare namespace WAWebJS {
/** Gets the current connection state for the client */ /** Gets the current connection state for the client */
getState(): Promise<WAState> getState(): Promise<WAState>
/** /** Returns the version of WhatsApp Web currently being run */
* Returns the version of WhatsApp Web currently being run
* @todo fix the return value in the official docs
*/
getWWebVersion(): Promise<string> getWWebVersion(): Promise<string>
/** Sets up events and requirements, kicks off authentication request */ /** Sets up events and requirements, kicks off authentication request */
initialize(): Promise<void> initialize(): Promise<void>
/** /** Check if a given ID is registered in whatsapp */
* Check if a given ID is registered in whatsapp
* @todo add contactId param in the official docs
*/
isRegisteredUser(contactId: string): Promise<boolean> isRegisteredUser(contactId: string): Promise<boolean>
/** /**
@@ -75,7 +70,7 @@ declare namespace WAWebJS {
resetState(): Promise<void> resetState(): Promise<void>
/** Send a message to a specific chatId */ /** Send a message to a specific chatId */
sendMessage(chatId: string, content: MessageContent, options: MessageSendOptions): Promise<Message> sendMessage(chatId: string, content: MessageContent, options?: MessageSendOptions): Promise<Message>
/** Marks the client as online */ /** Marks the client as online */
sendPresenceAvailable(): Promise<void> sendPresenceAvailable(): Promise<void>
@@ -89,13 +84,16 @@ declare namespace WAWebJS {
*/ */
setStatus(status: string): Promise<void> setStatus(status: string): Promise<void>
/**
* Sets the current user's display name
* @param displayName New display name
*/
setDisplayName(displayName: string): Promise<void>
/** Changes and returns the archive state of the Chat */ /** Changes and returns the archive state of the Chat */
unarchiveChat(chatId: string): Promise<boolean> unarchiveChat(chatId: string): Promise<boolean>
/** /** Unmutes the Chat */
* Unmutes the Chat
* @todo add chatId param in the official docs
*/
unmuteChat(chatId: string): Promise<void> unmuteChat(chatId: string): Promise<void>
/** Generic event */ /** Generic event */
@@ -197,24 +195,62 @@ declare namespace WAWebJS {
on(event: 'ready', listener: () => void): this on(event: 'ready', listener: () => void): this
} }
/** /** Current connection information */
* Options for initializing the whatsapp client export interface ClientInfo {
* @todo add these in the official docs /** Current user ID */
*/ me: ContactId
/** Information about the phone this client is connected to */
phone: ClientInfoPhone
/** Platform the phone is running on */
platform: string
/** Name configured to be shown in push notifications */
pushname: string
/** Get current battery percentage and charging status for the attached device */
getBatteryStatus: () => Promise<BatteryInfo>
}
/** Information about the phone this client is connected to */
export interface ClientInfoPhone {
/** WhatsApp Version running on the phone */
wa_version: string
/** OS Version running on the phone (iOS or Android version) */
os_version: string
/** Device manufacturer */
device_manufacturer: string
/** Device model */
device_model: string
/** OS build number */
os_build_number: string
}
/** Options for initializing the whatsapp client */
export interface ClientOptions { export interface ClientOptions {
puppeteer?: puppeteer.LaunchOptions /** Timeout for authentication selector in puppeteer
/** Whatsapp session to restore. If not set, will start a new session */ * @default 45000 */
session?: ClientSession,
/** @default 45000 */
qrTimeoutMs?: number,
/** @default 20000 */
qrRefreshIntervalMs?: number,
/** @default 45000 */
authTimeoutMs?: number, authTimeoutMs?: number,
/** @default false */ /** Puppeteer launch options. View docs here: https://github.com/puppeteer/puppeteer/ */
puppeteer?: puppeteer.LaunchOptions
/** Refresh interval for qr code (how much time to wait before checking if the qr code has changed)
* @default 20000 */
qrRefreshIntervalMs?: number
/** Timeout for qr code selector in puppeteer
* @default 45000 */
qrTimeoutMs?: number,
/** Restart client with a new session (i.e. use null 'session' var) if authentication fails
* @default false */
restartOnAuthFail?: boolean
/** Whatsapp session to restore. If not set, will start a new session */
session?: ClientSession
/** If another whatsapp web session is detected (another browser), take over the session in the current browser
* @default false */
takeoverOnConflict?: boolean, takeoverOnConflict?: boolean,
/** @default 0 */ /** How much time to wait before taking over the session
* @default 0 */
takeoverTimeoutMs?: number, takeoverTimeoutMs?: number,
/** User agent to use in puppeteer.
* @default 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36' */
userAgent?: string
} }
/** Represents a Whatsapp client session */ /** Represents a Whatsapp client session */
@@ -266,10 +302,16 @@ declare namespace WAWebJS {
/** Returns the Contacts affected by this GroupNotification */ /** Returns the Contacts affected by this GroupNotification */
getRecipients: () => Promise<Contact[]>, getRecipients: () => Promise<Contact[]>,
/** Sends a message to the same chat this GroupNotification was produced in */ /** Sends a message to the same chat this GroupNotification was produced in */
reply: (content: MessageContent, options: MessageSendOptions) => Promise<Message>, reply: (content: MessageContent, options?: MessageSendOptions) => Promise<Message>,
} }
/** whatsapp web url */
export const WhatsWebURL: string
/** default client options */
export const DefaultOptions: ClientOptions
/** Chat types */ /** Chat types */
export enum ChatTypes { export enum ChatTypes {
SOLO = 'solo', SOLO = 'solo',
@@ -423,7 +465,7 @@ declare namespace WAWebJS {
*/ */
to: string, to: string,
/** Message type */ /** Message type */
type: string, type: MessageTypes,
/** Deletes the message from the chat */ /** Deletes the message from the chat */
delete: (everyone?: boolean) => Promise<void>, delete: (everyone?: boolean) => Promise<void>,
@@ -442,7 +484,11 @@ declare namespace WAWebJS {
* If chatId is specified, it will be sent through the specified Chat. * If chatId is specified, it will be sent through the specified Chat.
* If not, it will send the message in the same Chat as the original message was sent. * If not, it will send the message in the same Chat as the original message was sent.
*/ */
reply: (content: MessageContent, chatId: string, options: MessageSendOptions) => Promise<Message>, reply: (content: MessageContent, chatId?: string, options?: MessageSendOptions) => Promise<Message>,
/**
* Forwards this message to another chat
*/
forward: (chat: Chat | string) => Promise,
} }
/** ID that represents a message */ /** ID that represents a message */
@@ -459,17 +505,42 @@ declare namespace WAWebJS {
longitude: string, longitude: string,
} }
/** /** Options for sending a message */
* Options for sending a message export interface MessageSendOptions {
* @todo add more specific type for the object */ /** Show links preview */
export type MessageSendOptions = object linkPreview?: boolean
/** Send audio as voice message */
sendAudioAsVoice?: boolean
/** Image or videos caption */
caption?: string
/** Id of the message that is being quoted (or replied to) */
quotedMessageId?: string
/** Contacts that are being mentioned in the message */
mentions?: Contact[]
/** Send 'seen' status */
sendSeen?: boolean
/** Media to be sent */
media?: MessageMedia
}
export interface MessageMedia { /** Media attached to a message */
data: string, export class MessageMedia {
mimetype: string, /** MIME type of the attachment */
filename?: string | null, mimetype: string
/** Base64-encoded data of the file */
data: string
/** Document file name. Value can be null */
filename?: string | null
fromFilePath: (filePath: string) => MessageMedia, /**
* @param {string} mimetype MIME type of the attachment
* @param {string} data Base64-encoded data of the file
* @param {?string} filename Document file name. Value can be null
*/
constructor(mimetype: string, data: string, filename?: string | null)
/** Creates a MessageMedia instance from a local file path */
static fromFilePath: (filePath: string) => MessageMedia
} }
export type MessageContent = string | MessageMedia | Location export type MessageContent = string | MessageMedia | Location
@@ -543,6 +614,11 @@ declare namespace WAWebJS {
/** Returns the contact's profile picture URL, if privacy settings allow it */ /** Returns the contact's profile picture URL, if privacy settings allow it */
getProfilePicUrl: () => Promise<string>, getProfilePicUrl: () => Promise<string>,
/** Returns the Chat that corresponds to this Contact.
* Will return null when getting chat for currently logged in user.
*/
getChat: () => Promise<Chat>,
} }
export interface ContactId { export interface ContactId {
@@ -592,7 +668,7 @@ declare namespace WAWebJS {
isReadOnly: boolean, isReadOnly: boolean,
/** Title of the chat */ /** Title of the chat */
name: string, name: string,
/** Unix timestamp for when the chat was created */ /** Unix timestamp for when the last activity occurred */
timestamp: number, timestamp: number,
/** Amount of messages unread */ /** Amount of messages unread */
unreadCount: number, unreadCount: number,
@@ -621,6 +697,8 @@ declare namespace WAWebJS {
unarchive: () => Promise<void>, unarchive: () => Promise<void>,
/** Unmutes this chat */ /** Unmutes this chat */
unmute: () => Promise<void>, unmute: () => Promise<void>,
/** Returns the Contact that corresponds to this Chat. */
getContact: () => Promise<Contact>,
} }
export interface MessageSearchOptions { export interface MessageSearchOptions {

View File

@@ -1,5 +1,7 @@
'use strict'; 'use strict';
const Constants = require('./src/util/Constants');
module.exports = { module.exports = {
Client: require('./src/Client'), Client: require('./src/Client'),
@@ -15,5 +17,7 @@ module.exports = {
PrivateContact: require('./src/structures/PrivateContact'), PrivateContact: require('./src/structures/PrivateContact'),
BusinessContact: require('./src/structures/BusinessContact'), BusinessContact: require('./src/structures/BusinessContact'),
ClientInfo: require('./src/structures/ClientInfo'), ClientInfo: require('./src/structures/ClientInfo'),
Location: require('./src/structures/Location') Location: require('./src/structures/Location'),
};
...Constants
};

View File

@@ -1,11 +1,12 @@
{ {
"name": "whatsapp-web.js", "name": "whatsapp-web.js",
"version": "1.7.0", "version": "1.8.0",
"description": "Library for interacting with the WhatsApp Web API ", "description": "Library for interacting with the WhatsApp Web API ",
"main": "./index.js", "main": "./index.js",
"typings": "./index.d.ts", "typings": "./index.d.ts",
"scripts": { "scripts": {
"test": "echo \"Error: no test specified\" && exit 1", "test": "echo \"Error: no test specified\" && exit 1",
"shell": "node --experimental-repl-await ./shell.js",
"generate-docs": "node_modules/.bin/jsdoc --configure .jsdoc.json --verbose" "generate-docs": "node_modules/.bin/jsdoc --configure .jsdoc.json --verbose"
}, },
"repository": { "repository": {

39
shell.js Normal file
View File

@@ -0,0 +1,39 @@
/**
* ==== wwebjs-shell ====
* Used for quickly testing library features
*
* Running `npm run shell` will start WhatsApp Web in headless mode
* and then drop you into Node REPL with `client` in its context.
*/
const repl = require('repl');
const fs = require('fs');
const { Client } = require('./index');
const SESSION_FILE_PATH = './session.json';
let sessionCfg;
if (fs.existsSync(SESSION_FILE_PATH)) {
sessionCfg = require(SESSION_FILE_PATH);
}
const client = new Client({
puppeteer: { headless: false },
session: sessionCfg
});
console.log('Initializing...');
client.initialize();
client.on('qr', () => {
console.log('Please scan the QR code on the browser.');
});
client.on('ready', () => {
const shell = repl.start('wwebjs> ');
shell.context.client = client;
shell.on('exit', async () => {
await client.destroy();
});
});

View File

@@ -7,7 +7,7 @@ const jsQR = require('jsqr');
const Util = require('./util/Util'); const Util = require('./util/Util');
const InterfaceController = require('./util/InterfaceController'); const InterfaceController = require('./util/InterfaceController');
const { WhatsWebURL, UserAgent, DefaultOptions, Events, WAState } = require('./util/Constants'); const { WhatsWebURL, DefaultOptions, Events, WAState } = require('./util/Constants');
const { ExposeStore, LoadUtils } = require('./util/Injected'); const { ExposeStore, LoadUtils } = require('./util/Injected');
const ChatFactory = require('./factories/ChatFactory'); const ChatFactory = require('./factories/ChatFactory');
const ContactFactory = require('./factories/ContactFactory'); const ContactFactory = require('./factories/ContactFactory');
@@ -15,6 +15,21 @@ const { ClientInfo, Message, MessageMedia, Contact, Location, GroupNotification
/** /**
* Starting point for interacting with the WhatsApp Web API * Starting point for interacting with the WhatsApp Web API
* @extends {EventEmitter} * @extends {EventEmitter}
* @param {object} options - Client options
* @param {number} options.authTimeoutMs - Timeout for authentication selector in puppeteer
* @param {object} options.puppeteer - Puppeteer launch options. View docs here: https://github.com/puppeteer/puppeteer/
* @param {number} options.qrRefreshIntervalMs - Refresh interval for qr code (how much time to wait before checking if the qr code has changed)
* @param {number} options.qrTimeoutMs - Timeout for qr code selector in puppeteer
* @param {string} options.restartOnAuthFail - Restart client with a new session (i.e. use null 'session' var) if authentication fails
* @param {object} options.session - Whatsapp session to restore. If not set, will start a new session
* @param {string} options.session.WABrowserId
* @param {string} options.session.WASecretBundle
* @param {string} options.session.WAToken1
* @param {string} options.session.WAToken2
* @param {number} options.takeoverOnConflict - If another whatsapp web session is detected (another browser), take over the session in the current browser
* @param {number} options.takeoverTimeoutMs - How much time to wait before taking over the session
* @param {string} options.userAgent - User agent to use in puppeteer
*
* @fires Client#qr * @fires Client#qr
* @fires Client#authenticated * @fires Client#authenticated
* @fires Client#auth_failure * @fires Client#auth_failure
@@ -48,11 +63,11 @@ class Client extends EventEmitter {
async initialize() { async initialize() {
const browser = await puppeteer.launch(this.options.puppeteer); const browser = await puppeteer.launch(this.options.puppeteer);
const page = (await browser.pages())[0]; const page = (await browser.pages())[0];
page.setUserAgent(UserAgent); page.setUserAgent(this.options.userAgent);
this.pupBrowser = browser; this.pupBrowser = browser;
this.pupPage = page; this.pupPage = page;
if (this.options.session) { if (this.options.session) {
await page.evaluateOnNewDocument( await page.evaluateOnNewDocument(
session => { session => {
@@ -68,8 +83,8 @@ class Client extends EventEmitter {
waitUntil: 'load', waitUntil: 'load',
timeout: 0, timeout: 0,
}); });
const KEEP_PHONE_CONNECTED_IMG_SELECTOR = '[data-asset-intro-image-light="true"]'; const KEEP_PHONE_CONNECTED_IMG_SELECTOR = '[data-asset-intro-image-light="true"], [data-asset-intro-image-dark="true"]';
if (this.options.session) { if (this.options.session) {
// Check if session restore was successfull // Check if session restore was successfull
@@ -145,6 +160,10 @@ class Client extends EventEmitter {
* Emitted when authentication is successful * Emitted when authentication is successful
* @event Client#authenticated * @event Client#authenticated
* @param {object} session Object containing session information. Can be used to restore the session. * @param {object} session Object containing session information. Can be used to restore the session.
* @param {string} session.WABrowserId
* @param {string} session.WASecretBundle
* @param {string} session.WAToken1
* @param {string} session.WAToken2
*/ */
this.emit(Events.AUTHENTICATED, session); this.emit(Events.AUTHENTICATED, session);
@@ -155,6 +174,10 @@ class Client extends EventEmitter {
await page.evaluate(LoadUtils); await page.evaluate(LoadUtils);
// Expose client info // Expose client info
/**
* Current connection information
* @type {ClientInfo}
*/
this.info = new ClientInfo(this, await page.evaluate(() => { this.info = new ClientInfo(this, await page.evaluate(() => {
return window.Store.Conn.serialize(); return window.Store.Conn.serialize();
})); }));
@@ -192,7 +215,7 @@ class Client extends EventEmitter {
} }
return; return;
} }
const message = new Message(this, msg); const message = new Message(this, msg);
/** /**
@@ -261,7 +284,7 @@ class Client extends EventEmitter {
await page.exposeFunction('onMessageAckEvent', (msg, ack) => { await page.exposeFunction('onMessageAckEvent', (msg, ack) => {
const message = new Message(this, msg); const message = new Message(this, msg);
/** /**
* Emitted when an ack event occurrs on message type. * Emitted when an ack event occurrs on message type.
* @event Client#message_ack * @event Client#message_ack
@@ -275,7 +298,7 @@ class Client extends EventEmitter {
await page.exposeFunction('onMessageMediaUploadedEvent', (msg) => { await page.exposeFunction('onMessageMediaUploadedEvent', (msg) => {
const message = new Message(this, msg); const message = new Message(this, msg);
/** /**
* Emitted when media has been uploaded for a message sent by the client. * Emitted when media has been uploaded for a message sent by the client.
* @event Client#media_uploaded * @event Client#media_uploaded
@@ -295,10 +318,10 @@ class Client extends EventEmitter {
const ACCEPTED_STATES = [WAState.CONNECTED, WAState.OPENING, WAState.PAIRING, WAState.TIMEOUT]; const ACCEPTED_STATES = [WAState.CONNECTED, WAState.OPENING, WAState.PAIRING, WAState.TIMEOUT];
if(this.options.takeoverOnConflict) { if (this.options.takeoverOnConflict) {
ACCEPTED_STATES.push(WAState.CONFLICT); ACCEPTED_STATES.push(WAState.CONFLICT);
if(state === WAState.CONFLICT) { if (state === WAState.CONFLICT) {
setTimeout(() => { setTimeout(() => {
this.pupPage.evaluate(() => window.Store.AppState.takeover()); this.pupPage.evaluate(() => window.Store.AppState.takeover());
}, this.options.takeoverTimeoutMs); }, this.options.takeoverTimeoutMs);
@@ -319,7 +342,7 @@ class Client extends EventEmitter {
await page.exposeFunction('onBatteryStateChangedEvent', (state) => { await page.exposeFunction('onBatteryStateChangedEvent', (state) => {
const { battery, plugged } = state; const { battery, plugged } = state;
if(battery === undefined) return; if (battery === undefined) return;
/** /**
* Emitted when the battery percentage for the attached device changes * Emitted when the battery percentage for the attached device changes
@@ -332,12 +355,12 @@ class Client extends EventEmitter {
}); });
await page.evaluate(() => { await page.evaluate(() => {
window.Store.Msg.on('add', (msg) => { if(msg.isNewMsg) window.onAddMessageEvent(msg); }); window.Store.Msg.on('add', (msg) => { if (msg.isNewMsg) window.onAddMessageEvent(msg); });
window.Store.Msg.on('change', (msg) => { window.onChangeMessageEvent(msg); }); window.Store.Msg.on('change', (msg) => { window.onChangeMessageEvent(msg); });
window.Store.Msg.on('change:type', (msg) => { window.onChangeMessageTypeEvent(msg); }); window.Store.Msg.on('change:type', (msg) => { window.onChangeMessageTypeEvent(msg); });
window.Store.Msg.on('change:ack', (msg, ack) => { window.onMessageAckEvent(msg, ack); }); window.Store.Msg.on('change:ack', (msg, ack) => { window.onMessageAckEvent(msg, ack); });
window.Store.Msg.on('change:isUnsentMedia', (msg, unsent) => { if(msg.id.fromMe && !unsent) window.onMessageMediaUploadedEvent(msg); }); window.Store.Msg.on('change:isUnsentMedia', (msg, unsent) => { if (msg.id.fromMe && !unsent) window.onMessageMediaUploadedEvent(msg); });
window.Store.Msg.on('remove', (msg) => { if(msg.isNewMsg) window.onRemoveMessageEvent(msg); }); window.Store.Msg.on('remove', (msg) => { if (msg.isNewMsg) window.onRemoveMessageEvent(msg); });
window.Store.AppState.on('change:state', (_AppState, state) => { window.onAppStateChangedEvent(state); }); window.Store.AppState.on('change:state', (_AppState, state) => { window.onAppStateChangedEvent(state); });
window.Store.Conn.on('change:battery', (state) => { window.onBatteryStateChangedEvent(state); }); window.Store.Conn.on('change:battery', (state) => { window.onBatteryStateChangedEvent(state); });
}); });
@@ -370,7 +393,7 @@ class Client extends EventEmitter {
/** /**
* Returns the version of WhatsApp Web currently being run * Returns the version of WhatsApp Web currently being run
* @returns Promise<string> * @returns {Promise<string>}
*/ */
async getWWebVersion() { async getWWebVersion() {
return await this.pupPage.evaluate(() => { return await this.pupPage.evaluate(() => {
@@ -392,11 +415,24 @@ class Client extends EventEmitter {
return result; return result;
} }
/**
* Message options.
* @typedef {Object} MessageSendOptions
* @property {boolean} [linkPreview=true] - Show links preview
* @property {boolean} [sendAudioAsVoice=false] - Send audio as voice message
* @property {string} [caption] - Image or video caption
* @property {string} [quotedMessageId] - Id of the message that is being quoted (or replied to)
* @property {Contact[]} [mentions] - Contacts that are being mentioned in the message
* @property {boolean} [sendSeen=true] - Mark the conversation as seen after sending the message
* @property {boolean} [media] - Media to be sent
*/
/** /**
* Send a message to a specific chatId * Send a message to a specific chatId
* @param {string} chatId * @param {string} chatId
* @param {string|MessageMedia|Location} content * @param {string|MessageMedia|Location} content
* @param {object} options * @param {MessageSendOptions} [options] - Options used when sending the message
*
* @returns {Promise<Message>} Message that was just sent * @returns {Promise<Message>} Message that was just sent
*/ */
async sendMessage(chatId, content, options = {}) { async sendMessage(chatId, content, options = {}) {
@@ -407,7 +443,7 @@ class Client extends EventEmitter {
quotedMessageId: options.quotedMessageId, quotedMessageId: options.quotedMessageId,
mentionedJidList: Array.isArray(options.mentions) ? options.mentions.map(contact => contact.id._serialized) : [] mentionedJidList: Array.isArray(options.mentions) ? options.mentions.map(contact => contact.id._serialized) : []
}; };
const sendSeen = typeof options.sendSeen === 'undefined' ? true : options.sendSeen; const sendSeen = typeof options.sendSeen === 'undefined' ? true : options.sendSeen;
if (content instanceof MessageMedia) { if (content instanceof MessageMedia) {
@@ -426,7 +462,7 @@ class Client extends EventEmitter {
const chatWid = window.Store.WidFactory.createWid(chatId); const chatWid = window.Store.WidFactory.createWid(chatId);
const chat = await window.Store.Chat.find(chatWid); const chat = await window.Store.Chat.find(chatWid);
if(sendSeen) { if (sendSeen) {
window.WWebJS.sendSeen(chatId); window.WWebJS.sendSeen(chatId);
} }
@@ -520,6 +556,17 @@ class Client extends EventEmitter {
}, status); }, status);
} }
/**
* Sets the current user's display name.
* This is the name shown to WhatsApp users that have not added you as a contact beside your number in groups and in your profile.
* @param {string} displayName New display name
*/
async setDisplayName(displayName) {
await this.pupPage.evaluate(async displayName => {
return await window.Store.Wap.setPushname(displayName);
}, displayName);
}
/** /**
* Gets the current connection state for the client * Gets the current connection state for the client
* @returns {WAState} * @returns {WAState}
@@ -574,7 +621,7 @@ class Client extends EventEmitter {
await chat.mute.mute(timestamp, !0); await chat.mute.mute(timestamp, !0);
}, chatId, unmuteDate.getTime() / 1000); }, chatId, unmuteDate.getTime() / 1000);
} }
/** /**
* Unmutes the Chat * Unmutes the Chat
* @param {string} chatId ID of the chat that will be unmuted * @param {string} chatId ID of the chat that will be unmuted
@@ -585,7 +632,7 @@ class Client extends EventEmitter {
await window.Store.Cmd.muteChat(chat, false); await window.Store.Cmd.muteChat(chat, false);
}, chatId); }, chatId);
} }
/** /**
* Returns the contact ID's profile picture URL, if privacy settings allow it * Returns the contact ID's profile picture URL, if privacy settings allow it
* @param {string} contactId the whatsapp user's ID * @param {string} contactId the whatsapp user's ID
@@ -602,7 +649,7 @@ class Client extends EventEmitter {
/** /**
* Force reset of connection state for the client * Force reset of connection state for the client
*/ */
async resetState(){ async resetState() {
await this.pupPage.evaluate(() => { await this.pupPage.evaluate(() => {
window.Store.AppState.phoneWatchdog.shiftTimer.forceRunNow(); window.Store.AppState.phoneWatchdog.shiftTimer.forceRunNow();
}); });
@@ -610,6 +657,7 @@ class Client extends EventEmitter {
/** /**
* Check if a given ID is registered in whatsapp * Check if a given ID is registered in whatsapp
* @param {string} id the whatsapp user's ID
* @returns {Promise<Boolean>} * @returns {Promise<Boolean>}
*/ */
async isRegisteredUser(id) { async isRegisteredUser(id) {
@@ -628,18 +676,18 @@ class Client extends EventEmitter {
* @returns {Object.<string,string>} createRes.missingParticipants - participants that were not added to the group. Keys represent the ID for participant that was not added and its value is a status code that represents the reason why participant could not be added. This is usually 403 if the user's privacy settings don't allow you to add them to groups. * @returns {Object.<string,string>} createRes.missingParticipants - participants that were not added to the group. Keys represent the ID for participant that was not added and its value is a status code that represents the reason why participant could not be added. This is usually 403 if the user's privacy settings don't allow you to add them to groups.
*/ */
async createGroup(name, participants) { async createGroup(name, participants) {
if(!Array.isArray(participants) || participants.length == 0) { if (!Array.isArray(participants) || participants.length == 0) {
throw 'You need to add at least one other participant to the group'; throw 'You need to add at least one other participant to the group';
} }
if(participants.every(c => c instanceof Contact)) { if (participants.every(c => c instanceof Contact)) {
participants = participants.map(c => c.id._serialized); participants = participants.map(c => c.id._serialized);
} }
const createRes = await this.pupPage.evaluate(async (name, participantIds) => { const createRes = await this.pupPage.evaluate(async (name, participantIds) => {
const res = await window.Store.Wap.createGroup(name, participantIds); const res = await window.Store.Wap.createGroup(name, participantIds);
console.log(res); console.log(res);
if(!res.status === 200) { if (!res.status === 200) {
throw 'An error occurred while creating the group!'; throw 'An error occurred while creating the group!';
} }
@@ -649,11 +697,11 @@ class Client extends EventEmitter {
const missingParticipants = createRes.participants.reduce(((missing, c) => { const missingParticipants = createRes.participants.reduce(((missing, c) => {
const id = Object.keys(c)[0]; const id = Object.keys(c)[0];
const statusCode = c[id].code; const statusCode = c[id].code;
if(statusCode != 200) return Object.assign(missing, {[id]: statusCode}); if (statusCode != 200) return Object.assign(missing, { [id]: statusCode });
return missing; return missing;
}), {}); }), {});
return { gid: createRes.gid, missingParticipants}; return { gid: createRes.gid, missingParticipants };
} }
} }

View File

@@ -46,7 +46,7 @@ class Chat extends Base {
this.unreadCount = data.unreadCount; this.unreadCount = data.unreadCount;
/** /**
* Unix timestamp for when the chat was created * Unix timestamp for when the last activity occurred
* @type {number} * @type {number}
*/ */
this.timestamp = data.t; this.timestamp = data.t;
@@ -63,7 +63,7 @@ class Chat extends Base {
/** /**
* Send a message to this chat * Send a message to this chat
* @param {string|MessageMedia|Location} content * @param {string|MessageMedia|Location} content
* @param {object} options * @param {MessageSendOptions} [options]
* @returns {Promise<Message>} Message that was just sent * @returns {Promise<Message>} Message that was just sent
*/ */
async sendMessage(content, options) { async sendMessage(content, options) {
@@ -119,7 +119,7 @@ class Chat extends Base {
async mute(unmuteDate) { async mute(unmuteDate) {
return this.client.muteChat(this.id._serialized, unmuteDate); return this.client.muteChat(this.id._serialized, unmuteDate);
} }
/** /**
* Unmutes this chat * Unmutes this chat
*/ */
@@ -134,18 +134,18 @@ class Chat extends Base {
* @returns {Promise<Array<Message>>} * @returns {Promise<Array<Message>>}
*/ */
async fetchMessages(searchOptions) { async fetchMessages(searchOptions) {
if(!searchOptions || !searchOptions.limit) { if (!searchOptions || !searchOptions.limit) {
searchOptions = {limit: 50}; searchOptions = { limit: 50 };
} }
let messages = await this.client.pupPage.evaluate(async (chatId, limit) => { let messages = await this.client.pupPage.evaluate(async (chatId, limit) => {
const msgFilter = m => !m.isNotification; // dont include notification messages const msgFilter = m => !m.isNotification; // dont include notification messages
const chat = window.Store.Chat.get(chatId); const chat = window.Store.Chat.get(chatId);
let msgs = chat.msgs.models.filter(msgFilter); let msgs = chat.msgs.models.filter(msgFilter);
while(msgs.length < limit) { while (msgs.length < limit) {
const loadedMessages = await chat.loadEarlierMsgs(); const loadedMessages = await chat.loadEarlierMsgs();
if(!loadedMessages) break; if (!loadedMessages) break;
msgs = [...loadedMessages.filter(msgFilter), ...msgs]; msgs = [...loadedMessages.filter(msgFilter), ...msgs];
} }
@@ -156,7 +156,7 @@ class Chat extends Base {
return messages.map(m => new Message(this.client, m)); return messages.map(m => new Message(this.client, m));
} }
/** /**
* Simulate typing in chat. This will last for 25 seconds. * Simulate typing in chat. This will last for 25 seconds.
*/ */
@@ -166,7 +166,7 @@ class Chat extends Base {
return true; return true;
}, this.id._serialized); }, this.id._serialized);
} }
/** /**
* Simulate recording audio in chat. This will last for 25 seconds. * Simulate recording audio in chat. This will last for 25 seconds.
*/ */
@@ -176,7 +176,7 @@ class Chat extends Base {
return true; return true;
}, this.id._serialized); }, this.id._serialized);
} }
/** /**
* Stops typing or recording in chat immediately. * Stops typing or recording in chat immediately.
*/ */
@@ -186,6 +186,14 @@ class Chat extends Base {
return true; return true;
}, this.id._serialized); }, this.id._serialized);
} }
/**
* Returns the Contact that corresponds to this Chat.
* @returns {Promise<Contact>}
*/
async getContact() {
return await this.client.getContactById(this.id._serialized);
}
} }
module.exports = Chat; module.exports = Chat;

View File

@@ -105,6 +105,17 @@ class Contact extends Base {
async getProfilePicUrl() { async getProfilePicUrl() {
return await this.client.getProfilePicUrl(this.id._serialized); return await this.client.getProfilePicUrl(this.id._serialized);
} }
/**
* Returns the Chat that corresponds to this Contact.
* Will return null when getting chat for currently logged in user.
* @returns {Promise<Chat>}
*/
async getChat() {
if(this.isMe) return null;
return await this.client.getChatById(this.id._serialized);
}
} }

View File

@@ -13,7 +13,7 @@ class Message extends Base {
constructor(client, data) { constructor(client, data) {
super(client); super(client);
if(data) this._patch(data); if (data) this._patch(data);
} }
_patch(data) { _patch(data) {
@@ -98,7 +98,7 @@ class Message extends Base {
* @type {boolean} * @type {boolean}
*/ */
this.fromMe = data.id.fromMe; this.fromMe = data.id.fromMe;
/** /**
* Indicates if the message was sent as a reply to another message. * Indicates if the message was sent as a reply to another message.
* @type {boolean} * @type {boolean}
@@ -173,11 +173,11 @@ class Message extends Base {
* in the same Chat as the original message was sent. * in the same Chat as the original message was sent.
* *
* @param {string|MessageMedia|Location} content * @param {string|MessageMedia|Location} content
* @param {?string} chatId * @param {string} [chatId]
* @param {object} options * @param {MessageSendOptions} [options]
* @returns {Promise<Message>} * @returns {Promise<Message>}
*/ */
async reply(content, chatId, options={}) { async reply(content, chatId, options = {}) {
if (!chatId) { if (!chatId) {
chatId = this._getChatId(); chatId = this._getChatId();
} }
@@ -190,6 +190,23 @@ class Message extends Base {
return this.client.sendMessage(chatId, content, options); return this.client.sendMessage(chatId, content, options);
} }
/**
* Forwards this message to another chat
*
* @param {string|Chat} chat Chat model or chat ID to which the message will be forwarded
* @returns {Promise}
*/
async forward(chat) {
const chatId = typeof chat === 'string' ? chat : chat.id._serialized;
await this.client.pupPage.evaluate(async (msgId, chatId) => {
let msg = window.Store.Msg.get(msgId);
let chat = window.Store.Chat.get(chatId);
return await chat.forwardMessages([msg]);
}, this.id._serialized, chatId);
}
/** /**
* Downloads and returns the attatched message media * Downloads and returns the attatched message media
* @returns {Promise<MessageMedia>} * @returns {Promise<MessageMedia>}
@@ -201,13 +218,13 @@ class Message extends Base {
const result = await this.client.pupPage.evaluate(async (msgId) => { const result = await this.client.pupPage.evaluate(async (msgId) => {
const msg = window.Store.Msg.get(msgId); const msg = window.Store.Msg.get(msgId);
if(msg.mediaData.mediaStage != 'RESOLVED') { if (msg.mediaData.mediaStage != 'RESOLVED') {
// try to resolve media // try to resolve media
await msg.downloadMedia(true, 1); await msg.downloadMedia(true, 1);
} }
if(msg.mediaData.mediaStage.includes('ERROR')) { if (msg.mediaData.mediaStage.includes('ERROR')) {
// media could not be downloaded // media could not be downloaded
return undefined; return undefined;
} }
@@ -215,7 +232,7 @@ class Message extends Base {
const buffer = await window.WWebJS.downloadBuffer(msg.clientUrl); const buffer = await window.WWebJS.downloadBuffer(msg.clientUrl);
const decrypted = await window.Store.CryptoLib.decryptE2EMedia(msg.type, buffer, msg.mediaKey, msg.mimetype); const decrypted = await window.Store.CryptoLib.decryptE2EMedia(msg.type, buffer, msg.mediaKey, msg.mimetype);
const data = await window.WWebJS.readBlobAsync(decrypted._blob); const data = await window.WWebJS.readBlobAsync(decrypted._blob);
return { return {
data: data.split(',')[1], data: data.split(',')[1],
mimetype: msg.mimetype, mimetype: msg.mimetype,
@@ -224,7 +241,7 @@ class Message extends Base {
}, this.id._serialized); }, this.id._serialized);
if(!result) return undefined; if (!result) return undefined;
return new MessageMedia(result.mimetype, result.data, result.filename); return new MessageMedia(result.mimetype, result.data, result.filename);
} }
@@ -236,10 +253,10 @@ class Message extends Base {
await this.client.pupPage.evaluate((msgId, everyone) => { await this.client.pupPage.evaluate((msgId, everyone) => {
let msg = window.Store.Msg.get(msgId); let msg = window.Store.Msg.get(msgId);
if(everyone && msg.id.fromMe && msg.canRevoke()) { if (everyone && msg.id.fromMe && msg.canRevoke()) {
return window.Store.Cmd.sendRevokeMsgs(msg.chat, [msg], true); return window.Store.Cmd.sendRevokeMsgs(msg.chat, [msg], true);
} }
return window.Store.Cmd.sendDeleteMsgs(msg.chat, [msg], true); return window.Store.Cmd.sendDeleteMsgs(msg.chat, [msg], true);
}, this.id._serialized, everyone); }, this.id._serialized, everyone);
} }

View File

@@ -2,8 +2,6 @@
exports.WhatsWebURL = 'https://web.whatsapp.com/'; exports.WhatsWebURL = 'https://web.whatsapp.com/';
exports.UserAgent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36';
exports.DefaultOptions = { exports.DefaultOptions = {
puppeteer: { puppeteer: {
headless: true, headless: true,
@@ -14,7 +12,8 @@ exports.DefaultOptions = {
qrRefreshIntervalMs: 20000, qrRefreshIntervalMs: 20000,
authTimeoutMs: 45000, authTimeoutMs: 45000,
takeoverOnConflict: false, takeoverOnConflict: false,
takeoverTimeoutMs: 0 takeoverTimeoutMs: 0,
userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36'
}; };
/** /**

View File

@@ -128,7 +128,7 @@ exports.LoadUtils = () => {
isGif: mediaData.isGif isGif: mediaData.isGif
}); });
if(forceVoice && mediaData.type === 'audio') { if (forceVoice && mediaData.type === 'audio') {
mediaData.type = 'ptt'; mediaData.type = 'ptt';
} }
@@ -140,21 +140,27 @@ exports.LoadUtils = () => {
mediaObject.consolidate(mediaData.toJSON()); mediaObject.consolidate(mediaData.toJSON());
mediaData.mediaBlob.autorelease(); mediaData.mediaBlob.autorelease();
const uploadedMedia = await window.Store.MediaUpload.uploadMedia({ mimetype: mediaData.mimetype, mediaObject, mediaType }); const uploadedMedia = await window.Store.MediaUpload.uploadMedia({
if (!uploadedMedia) { mimetype: mediaData.mimetype,
mediaObject,
mediaType
});
const mediaEntry = uploadedMedia.mediaEntry;
if (!mediaEntry) {
throw new Error('upload failed: media entry was not created'); throw new Error('upload failed: media entry was not created');
} }
mediaData.set({ mediaData.set({
clientUrl: uploadedMedia.mmsUrl, clientUrl: mediaEntry.mmsUrl,
directPath: uploadedMedia.directPath, directPath: mediaEntry.directPath,
mediaKey: uploadedMedia.mediaKey, mediaKey: mediaEntry.mediaKey,
mediaKeyTimestamp: uploadedMedia.mediaKeyTimestamp, mediaKeyTimestamp: mediaEntry.mediaKeyTimestamp,
filehash: mediaObject.filehash, filehash: mediaObject.filehash,
uploadhash: uploadedMedia.uploadHash, uploadhash: mediaEntry.uploadHash,
size: mediaObject.size, size: mediaObject.size,
streamingSidecar: uploadedMedia.sidecar, streamingSidecar: mediaEntry.sidecar,
firstFrameSidecar: uploadedMedia.firstFrameSidecar firstFrameSidecar: mediaEntry.firstFrameSidecar
}); });
return mediaData; return mediaData;
@@ -284,7 +290,7 @@ exports.LoadUtils = () => {
}; };
window.WWebJS.sendChatstate = async (state, chatId) => { window.WWebJS.sendChatstate = async (state, chatId) => {
switch(state) { switch (state) {
case 'typing': case 'typing':
await window.Store.Wap.sendChatstateComposing(chatId); await window.Store.Wap.sendChatstateComposing(chatId);
break; break;
@@ -297,10 +303,10 @@ exports.LoadUtils = () => {
default: default:
throw 'Invalid chatstate'; throw 'Invalid chatstate';
} }
return true; return true;
}; };
}; };
exports.MarkAllRead = () => { exports.MarkAllRead = () => {