chore(v1.34.7): bump version and generate docs

This commit is contained in:
WWebJS Bot 2026-04-24 20:10:36 +00:00
commit f935b50011
77 changed files with 5207 additions and 2669 deletions

6
docs/Base.html generated
View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Class: Base</title>
<title>whatsapp-web.js 1.34.7 &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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -50,7 +50,7 @@
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Class: BaseAuthStrategy</title>
<title>whatsapp-web.js 1.34.7 &raquo; Class: BaseAuthStrategy</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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -50,7 +50,7 @@
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

6
docs/Broadcast.html generated
View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Class: Broadcast</title>
<title>whatsapp-web.js 1.34.7 &raquo; Class: Broadcast</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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -152,7 +152,7 @@
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Class: BusinessContact</title>
<title>whatsapp-web.js 1.34.7 &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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -338,7 +338,7 @@
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

6
docs/Buttons.html generated
View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Class: Buttons</title>
<title>whatsapp-web.js 1.34.7 &raquo; Class: Buttons</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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -234,7 +234,7 @@ Returns: [{ buttonId:&#x27;customId&#x27;,buttonText:{&#x27;displayText&#x27;:&#
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

6
docs/Call.html generated
View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Class: Call</title>
<title>whatsapp-web.js 1.34.7 &raquo; Class: Call</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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -168,7 +168,7 @@
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

6
docs/Channel.html generated
View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Class: Channel</title>
<title>whatsapp-web.js 1.34.7 &raquo; Class: Channel</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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -900,7 +900,7 @@
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

22
docs/Chat.html generated
View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Class: Chat</title>
<title>whatsapp-web.js 1.34.7 &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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -48,13 +48,16 @@
<dt><a href="Chat.html#isGroup">isGroup</a></dt>
<dd>
</dd>
<dt><a href="Chat.html#isMuted">isMuted</a></dt>
<dt><a href="Chat.html#isLocked">isLocked</a></dt>
<dd>
</dd>
</dl>
</div>
<div class="summary-column">
<dl class="dl-summary-callout">
<dt><a href="Chat.html#isMuted">isMuted</a></dt>
<dd>
</dd>
<dt><a href="Chat.html#isReadOnly">isReadOnly</a></dt>
<dd>
</dd>
@ -64,13 +67,13 @@
<dt><a href="Chat.html#muteExpiration">muteExpiration</a></dt>
<dd>
</dd>
<dt><a href="Chat.html#name">name</a></dt>
<dd>
</dd>
</dl>
</div>
<div class="summary-column">
<dl class="dl-summary-callout">
<dt><a href="Chat.html#name">name</a></dt>
<dd>
</dd>
<dt><a href="Chat.html#pinned">pinned</a></dt>
<dd>
</dd>
@ -193,6 +196,11 @@
<p>Indicates if the Chat is a Group Chat</p>
<dl class="dl-compact">
</dl>
<h3 id="isLocked"><span class="symbol-name">isLocked</span><small class="property-type">
&nbsp;boolean</small></h3>
<p>Indicates if the Chat is locked</p>
<dl class="dl-compact">
</dl>
<h3 id="isMuted"><span class="symbol-name">isMuted</span><small class="property-type">
&nbsp;boolean</small></h3>
<p>Indicates if the chat is muted or not</p>
@ -636,7 +644,7 @@
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

243
docs/Client.html generated
View file

@ -3,7 +3,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Class: Client</title>
<title>whatsapp-web.js 1.34.7 &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/Noto+Serif:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css">
@ -13,7 +13,7 @@
<nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -23,7 +23,7 @@
<div id="jsdoc-content-container">
<div id="jsdoc-main" role="main">
<header class="page-header">
<div class="symbol-detail-labels"><span class="label label-kind">class</span></div><h1><small></small><span class="symbol-name">Client</span></h1> <p class="source-link">Source: <a href="Client.js.html#source-line-66">Client.<wbr>js:66</a></p>
<div class="symbol-detail-labels"><span class="label label-kind">class</span></div><h1><small></small><span class="symbol-name">Client</span></h1> <p class="source-link">Source: <a href="Client.js.html#source-line-82">Client.<wbr>js:82</a></p>
<div class="symbol-classdesc">
<p>Starting point for interacting with the WhatsApp Web API</p>
</div>
@ -107,6 +107,9 @@
<dt><a href="Client.html#attachEventListeners">attachEventListeners()</a></dt>
<dd>
</dd>
<dt><a href="Client.html#cancelPairingCode">cancelPairingCode()</a></dt>
<dd>
</dd>
<dt><a href="Client.html#createCallLink">createCallLink(startTime, callType)</a></dt>
<dd>
</dd>
@ -247,14 +250,14 @@
<dt><a href="Client.html#requestPairingCode">requestPairingCode(phoneNumber[, showNotification][, intervalMs])</a></dt>
<dd>
</dd>
<dt><a href="Client.html#resetState">resetState()</a></dt>
<dd>
</dd>
</dl>
</div>
<div class="summary-column">
<dl class="dl-summary-callout">
<dt><a href="Client.html#resetState">resetState()</a></dt>
<dd>
</dd>
<dt><a href="Client.html#revokeChannelAdminInvite">revokeChannelAdminInvite(channelId, userId)</a></dt>
<dd>
</dd>
@ -282,6 +285,9 @@
<dt><a href="Client.html#sendPresenceUnavailable">sendPresenceUnavailable()</a></dt>
<dd>
</dd>
<dt><a href="Client.html#sendReaction">sendReaction(messageId, reaction)</a></dt>
<dd>
</dd>
<dt><a href="Client.html#sendResponseToScheduledEvent">sendResponseToScheduledEvent(response, eventMessageId)</a></dt>
<dd>
</dd>
@ -374,14 +380,14 @@
<dt><a href="Client.html#event:disconnected">disconnected</a></dt>
<dd>
</dd>
<dt><a href="Client.html#event:group_admin_changed">group_admin_changed</a></dt>
<dd>
</dd>
</dl>
</div>
<div class="summary-column">
<dl class="dl-summary-callout">
<dt><a href="Client.html#event:group_admin_changed">group_admin_changed</a></dt>
<dd>
</dd>
<dt><a href="Client.html#event:group_join">group_join</a></dt>
<dd>
</dd>
@ -406,14 +412,17 @@
<dt><a href="Client.html#event:message_ack">message_ack</a></dt>
<dd>
</dd>
<dt><a href="Client.html#event:message_ciphertext">message_ciphertext</a></dt>
<dd>
</dd>
<dt><a href="Client.html#event:message_ciphertext_failed">message_ciphertext_failed</a></dt>
<dd>
</dd>
</dl>
</div>
<div class="summary-column">
<dl class="dl-summary-callout">
<dt><a href="Client.html#event:message_ciphertext">message_ciphertext</a></dt>
<dd>
</dd>
<dt><a href="Client.html#event:message_create">message_create</a></dt>
<dd>
</dd>
@ -497,7 +506,7 @@
<p>&nbsp;</p>
</td>
<td>
<p>Determines how to save and restore sessions. Will use LegacySessionAuth if options.session is set. Otherwise, NoAuth will be used.</p>
<p>Determines how to save and restore sessions. If not set, NoAuth will be used.</p>
</td>
</tr>
@ -593,36 +602,6 @@
<tr>
<td>
<p>restartOnAuthFail</p>
</td>
<td>
<p>&nbsp;</p>
</td>
<td>
<p>&nbsp;</p>
</td>
<td>
<p>@deprecated This option should be set directly on the LegacySessionAuth.</p>
</td>
</tr>
<tr>
<td>
<p>session</p>
</td>
<td>
<p>&nbsp;</p>
</td>
<td>
<p>&nbsp;</p>
</td>
<td>
<p>@deprecated Only here for backwards-compatibility. You should move to using LocalAuth, or set the authStrategy to LegacySessionAuth explicitly.</p>
</td>
</tr>
<tr>
<td>
<p>takeoverOnConflict</p>
</td>
<td>
@ -1540,6 +1519,38 @@ Private function</p>
</dl>
<div class="symbol-detail-labels"><span class="label label-async">async</span></div><h3 id="cancelPairingCode"><span class="symbol-name">cancelPairingCode</span><span class="signature"><span class="signature-params">()</span></span></h3> <p>Cancels an active pairing code session and returns to QR code mode</p>
<dl class="dl-compact">
@ -4996,6 +5007,86 @@ the lastMessage property of a found channel will be 'null'</li>
</dl>
<div class="symbol-detail-labels"><span class="label label-async">async</span></div><h3 id="sendReaction"><span class="symbol-name">sendReaction</span><span class="signature"><span class="signature-params">(messageId, reaction)</span>&nbsp;&rarr; <span class="signature-returns"> Promise</span></span></h3> <p>Send an emoji reaction to a specific message</p>
<section>
<h4>Parameters</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>messageId</p>
</td>
<td>
<p>string</p>
</td>
<td>
<p>&nbsp;</p>
</td>
<td>
<p>Id of the message to add the reaction.</p>
</td>
</tr>
<tr>
<td>
<p>reaction</p>
</td>
<td>
<p>string</p>
</td>
<td>
<p>&nbsp;</p>
</td>
<td>
<p>Emoji to react with. Send an empty string to remove the reaction.</p>
</td>
</tr>
</tbody>
</table>
</section>
<dl class="dl-compact">
<dt>Returns</dt>
<dd><p><code>Promise</code> </p></dd>
@ -7526,7 +7617,69 @@ that has the membership approval mode turned on</p>
</dl>
<h3 id="event:message_ciphertext"><span class="symbol-name">message_ciphertext</span></h3> <p>Emitted when messages are edited</p>
<h3 id="event:message_ciphertext"><span class="symbol-name">message_ciphertext</span></h3> <p>Emitted when a message is received as ciphertext (not yet decrypted)</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>message</p>
</td>
<td>
<p><a href="Message.html">Message</a></p>
</td>
<td>
<p>&nbsp;</p>
</td>
<td>
</td>
</tr>
</tbody>
</table>
</section>
<dl class="dl-compact">
</dl>
<h3 id="event:message_ciphertext_failed"><span class="symbol-name">message_ciphertext_failed</span></h3> <p>Emitted when a ciphertext message failed to decrypt after recovery attempt</p>
<section>
@ -8237,7 +8390,7 @@ shows a user's current selected option(s) on the poll</p>
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

2022
docs/Client.js.html generated

File diff suppressed because it is too large Load diff

6
docs/ClientInfo.html generated
View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Class: ClientInfo</title>
<title>whatsapp-web.js 1.34.7 &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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -242,7 +242,7 @@
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

6
docs/Contact.html generated
View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Class: Contact</title>
<title>whatsapp-web.js 1.34.7 &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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -305,7 +305,7 @@
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

22
docs/GroupChat.html generated
View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Class: GroupChat</title>
<title>whatsapp-web.js 1.34.7 &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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -54,6 +54,9 @@
<dt><a href="GroupChat.html#isGroup">isGroup</a></dt>
<dd>
</dd>
<dt><a href="GroupChat.html#isLocked">isLocked</a></dt>
<dd>
</dd>
</dl>
</div>
<div class="summary-column">
@ -73,13 +76,13 @@
<dt><a href="GroupChat.html#name">name</a></dt>
<dd>
</dd>
<dt><a href="GroupChat.html#owner">owner</a></dt>
<dd>
</dd>
</dl>
</div>
<div class="summary-column">
<dl class="dl-summary-callout">
<dt><a href="GroupChat.html#owner">owner</a></dt>
<dd>
</dd>
<dt><a href="GroupChat.html#participants">participants</a></dt>
<dd>
</dd>
@ -272,6 +275,13 @@
<dt>Inherited from</dt>
<dd><a href="Chat.html#isGroup">Chat#isGroup</a></dd>
</dl>
<h3 id="isLocked"><span class="symbol-name">isLocked</span><small class="property-type">
&nbsp;unknown</small></h3>
<p>Indicates if the Chat is locked</p>
<dl class="dl-compact">
<dt>Inherited from</dt>
<dd><a href="Chat.html#isLocked">Chat#isLocked</a></dd>
</dl>
<h3 id="isMuted"><span class="symbol-name">isMuted</span><small class="property-type">
&nbsp;unknown</small></h3>
<p>Indicates if the chat is muted or not</p>
@ -1294,7 +1304,7 @@
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Class: GroupNotification</title>
<title>whatsapp-web.js 1.34.7 &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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -233,7 +233,7 @@
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Class: InterfaceController</title>
<title>whatsapp-web.js 1.34.7 &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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -382,7 +382,7 @@
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

6
docs/Label.html generated
View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Class: Label</title>
<title>whatsapp-web.js 1.34.7 &raquo; Class: Label</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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -163,7 +163,7 @@
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

6
docs/List.html generated
View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Class: List</title>
<title>whatsapp-web.js 1.34.7 &raquo; Class: List</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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -256,7 +256,7 @@ Returns: [{&#x27;title&#x27;:&#x27;sectionTitle&#x27;,&#x27;rows&#x27;:[{&#x27;r
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

6
docs/LocalAuth.html generated
View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Class: LocalAuth</title>
<title>whatsapp-web.js 1.34.7 &raquo; Class: LocalAuth</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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -134,7 +134,7 @@
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Class: LocalWebCache</title>
<title>whatsapp-web.js 1.34.7 &raquo; Class: LocalWebCache</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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -120,7 +120,7 @@
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

6
docs/Location.html generated
View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Class: Location</title>
<title>whatsapp-web.js 1.34.7 &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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -173,7 +173,7 @@
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

6
docs/Message.html generated
View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Class: Message</title>
<title>whatsapp-web.js 1.34.7 &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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -911,7 +911,7 @@
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Class: MessageMedia</title>
<title>whatsapp-web.js 1.34.7 &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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -364,7 +364,7 @@
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

6
docs/NoAuth.html generated
View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Class: NoAuth</title>
<title>whatsapp-web.js 1.34.7 &raquo; Class: NoAuth</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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -51,7 +51,7 @@
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

6
docs/Order.html generated
View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Class: Order</title>
<title>whatsapp-web.js 1.34.7 &raquo; Class: Order</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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -102,7 +102,7 @@
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

6
docs/Poll.html generated
View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Class: Poll</title>
<title>whatsapp-web.js 1.34.7 &raquo; Class: Poll</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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -148,7 +148,7 @@
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

6
docs/PollVote.html generated
View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Class: PollVote</title>
<title>whatsapp-web.js 1.34.7 &raquo; Class: PollVote</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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -102,7 +102,7 @@
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

24
docs/PrivateChat.html generated
View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Class: PrivateChat</title>
<title>whatsapp-web.js 1.34.7 &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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -48,13 +48,16 @@
<dt><a href="PrivateChat.html#isGroup">isGroup</a></dt>
<dd>
</dd>
<dt><a href="PrivateChat.html#isMuted">isMuted</a></dt>
<dt><a href="PrivateChat.html#isLocked">isLocked</a></dt>
<dd>
</dd>
</dl>
</div>
<div class="summary-column">
<dl class="dl-summary-callout">
<dt><a href="PrivateChat.html#isMuted">isMuted</a></dt>
<dd>
</dd>
<dt><a href="PrivateChat.html#isReadOnly">isReadOnly</a></dt>
<dd>
</dd>
@ -64,13 +67,13 @@
<dt><a href="PrivateChat.html#muteExpiration">muteExpiration</a></dt>
<dd>
</dd>
<dt><a href="PrivateChat.html#name">name</a></dt>
<dd>
</dd>
</dl>
</div>
<div class="summary-column">
<dl class="dl-summary-callout">
<dt><a href="PrivateChat.html#name">name</a></dt>
<dd>
</dd>
<dt><a href="PrivateChat.html#pinned">pinned</a></dt>
<dd>
</dd>
@ -199,6 +202,13 @@
<dt>Inherited from</dt>
<dd><a href="Chat.html#isGroup">Chat#isGroup</a></dd>
</dl>
<h3 id="isLocked"><span class="symbol-name">isLocked</span><small class="property-type">
&nbsp;unknown</small></h3>
<p>Indicates if the Chat is locked</p>
<dl class="dl-compact">
<dt>Inherited from</dt>
<dd><a href="Chat.html#isLocked">Chat#isLocked</a></dd>
</dl>
<h3 id="isMuted"><span class="symbol-name">isMuted</span><small class="property-type">
&nbsp;unknown</small></h3>
<p>Indicates if the chat is muted or not</p>
@ -670,7 +680,7 @@
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Class: PrivateContact</title>
<title>whatsapp-web.js 1.34.7 &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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -331,7 +331,7 @@
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

6
docs/Product.html generated
View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Class: Product</title>
<title>whatsapp-web.js 1.34.7 &raquo; Class: Product</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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -127,7 +127,7 @@
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

6
docs/Reaction.html generated
View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Class: Reaction</title>
<title>whatsapp-web.js 1.34.7 &raquo; Class: Reaction</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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -144,7 +144,7 @@
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

6
docs/RemoteAuth.html generated
View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Class: RemoteAuth</title>
<title>whatsapp-web.js 1.34.7 &raquo; Class: RemoteAuth</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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -162,7 +162,7 @@
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Class: RemoteWebCache</title>
<title>whatsapp-web.js 1.34.7 &raquo; Class: RemoteWebCache</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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -120,7 +120,7 @@
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Class: ScheduledEvent</title>
<title>whatsapp-web.js 1.34.7 &raquo; Class: ScheduledEvent</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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -220,7 +220,7 @@
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

6
docs/Util.html generated
View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Class: Util</title>
<title>whatsapp-web.js 1.34.7 &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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -243,7 +243,7 @@
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

6
docs/WebCache.html generated
View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Class: WebCache</title>
<title>whatsapp-web.js 1.34.7 &raquo; Class: WebCache</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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -50,7 +50,7 @@
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Source: authStrategies/BaseAuthStrategy.js</title>
<title>whatsapp-web.js 1.34.7 &raquo; Source: authStrategies/BaseAuthStrategy.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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -39,15 +39,17 @@ class BaseAuthStrategy {
setup(client) {
this.client &#x3D; client;
}
async beforeBrowserInitialized() {}
async afterBrowserInitialized() {}
async onAuthenticationNeeded() {
return {
failed: false,
restart: false,
failureEventPayload: undefined
failureEventPayload: undefined,
};
}
async getAuthEventPayload() {}
async afterAuthReady() {}
async disconnect() {}
@ -55,7 +57,8 @@ class BaseAuthStrategy {
async logout() {}
}
module.exports &#x3D; BaseAuthStrategy;</code></pre>
module.exports &#x3D; BaseAuthStrategy;
</code></pre>
</article>
</div>
</div>
@ -65,7 +68,7 @@ module.exports &#x3D; BaseAuthStrategy;</code></pre>
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Source: authStrategies/LocalAuth.js</title>
<title>whatsapp-web.js 1.34.7 &raquo; Source: authStrategies/LocalAuth.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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -48,7 +48,9 @@ class LocalAuth extends BaseAuthStrategy {
const idRegex &#x3D; /^[-_\w]+$/i;
if (clientId &amp;amp;&amp;amp; !idRegex.test(clientId)) {
throw new Error(&#x27;Invalid clientId. Only alphanumeric characters, underscores and hyphens are allowed.&#x27;);
throw new Error(
&#x27;Invalid clientId. Only alphanumeric characters, underscores and hyphens are allowed.&#x27;,
);
}
this.dataPath &#x3D; path.resolve(dataPath || &#x27;./.wwebjs_auth/&#x27;);
@ -58,18 +60,25 @@ class LocalAuth extends BaseAuthStrategy {
async beforeBrowserInitialized() {
const puppeteerOpts &#x3D; this.client.options.puppeteer;
const sessionDirName &#x3D; this.clientId ? &#x60;session-${this.clientId}&#x60; : &#x27;session&#x27;;
const sessionDirName &#x3D; this.clientId
? &#x60;session-${this.clientId}&#x60;
: &#x27;session&#x27;;
const dirPath &#x3D; path.join(this.dataPath, sessionDirName);
if(puppeteerOpts.userDataDir &amp;amp;&amp;amp; puppeteerOpts.userDataDir !&#x3D;&#x3D; dirPath) {
throw new Error(&#x27;LocalAuth is not compatible with a user-supplied userDataDir.&#x27;);
if (
puppeteerOpts.userDataDir &amp;amp;&amp;amp;
puppeteerOpts.userDataDir !&#x3D;&#x3D; dirPath
) {
throw new Error(
&#x27;LocalAuth is not compatible with a user-supplied userDataDir.&#x27;,
);
}
fs.mkdirSync(dirPath, { recursive: true });
this.client.options.puppeteer &#x3D; {
...puppeteerOpts,
userDataDir: dirPath
userDataDir: dirPath,
};
this.userDataDir &#x3D; dirPath;
@ -77,13 +86,17 @@ class LocalAuth extends BaseAuthStrategy {
async logout() {
if (this.userDataDir) {
await fs.promises.rm(this.userDataDir, { recursive: true, force: true, maxRetries: this.rmMaxRetries })
await fs.promises
.rm(this.userDataDir, {
recursive: true,
force: true,
maxRetries: this.rmMaxRetries,
})
.catch((e) &#x3D;&gt; {
throw new Error(e);
});
}
}
}
module.exports &#x3D; LocalAuth;
@ -97,7 +110,7 @@ module.exports &#x3D; LocalAuth;
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Source: authStrategies/NoAuth.js</title>
<title>whatsapp-web.js 1.34.7 &raquo; Source: authStrategies/NoAuth.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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -39,8 +39,8 @@ const BaseAuthStrategy &#x3D; require(&#x27;./BaseAuthStrategy&#x27;);
*/
class NoAuth extends BaseAuthStrategy {}
module.exports &#x3D; NoAuth;</code></pre>
module.exports &#x3D; NoAuth;
</code></pre>
</article>
</div>
</div>
@ -50,7 +50,7 @@ module.exports &#x3D; NoAuth;</code></pre>
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Source: authStrategies/RemoteAuth.js</title>
<title>whatsapp-web.js 1.34.7 &raquo; Source: authStrategies/RemoteAuth.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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -56,16 +56,29 @@ const BaseAuthStrategy &#x3D; require(&#x27;./BaseAuthStrategy&#x27;);
* @param {number} options.rmMaxRetries - Sets the maximum number of retries for removing the session directory
*/
class RemoteAuth extends BaseAuthStrategy {
constructor({ clientId, dataPath, store, backupSyncIntervalMs, rmMaxRetries } &#x3D; {}) {
if (!fs &amp;amp;&amp;amp; !unzipper &amp;amp;&amp;amp; !archiver) throw new Error(&#x27;Optional Dependencies [fs-extra, unzipper, archiver] are required to use RemoteAuth. Make sure to run npm install correctly and remove the --no-optional flag&#x27;);
constructor({
clientId,
dataPath,
store,
backupSyncIntervalMs,
rmMaxRetries,
} &#x3D; {}) {
if (!fs &amp;amp;&amp;amp; !unzipper &amp;amp;&amp;amp; !archiver)
throw new Error(
&#x27;Optional Dependencies [fs-extra, unzipper, archiver] are required to use RemoteAuth. Make sure to run npm install correctly and remove the --no-optional flag&#x27;,
);
super();
const idRegex &#x3D; /^[-_\w]+$/i;
if (clientId &amp;amp;&amp;amp; !idRegex.test(clientId)) {
throw new Error(&#x27;Invalid clientId. Only alphanumeric characters, underscores and hyphens are allowed.&#x27;);
throw new Error(
&#x27;Invalid clientId. Only alphanumeric characters, underscores and hyphens are allowed.&#x27;,
);
}
if (!backupSyncIntervalMs || backupSyncIntervalMs &amp;lt; 60000) {
throw new Error(&#x27;Invalid backupSyncIntervalMs. Accepts values starting from 60000ms {1 minute}.&#x27;);
throw new Error(
&#x27;Invalid backupSyncIntervalMs. Accepts values starting from 60000ms {1 minute}.&#x27;,
);
}
if (!store) throw new Error(&#x27;Remote database store is required.&#x27;);
@ -74,17 +87,28 @@ class RemoteAuth extends BaseAuthStrategy {
this.backupSyncIntervalMs &#x3D; backupSyncIntervalMs;
this.dataPath &#x3D; path.resolve(dataPath || &#x27;./.wwebjs_auth/&#x27;);
this.tempDir &#x3D; &#x60;${this.dataPath}/wwebjs_temp_session_${this.clientId}&#x60;;
this.requiredDirs &#x3D; [&#x27;Default&#x27;, &#x27;IndexedDB&#x27;, &#x27;Local Storage&#x27;]; /* &#x3D;&gt; Required Files &amp;amp; Dirs in WWebJS to restore session */
this.requiredDirs &#x3D; [
&#x27;Default&#x27;,
&#x27;IndexedDB&#x27;,
&#x27;Local Storage&#x27;,
]; /* &#x3D;&gt; Required Files &amp;amp; Dirs in WWebJS to restore session */
this.rmMaxRetries &#x3D; rmMaxRetries ?? 4;
}
async beforeBrowserInitialized() {
const puppeteerOpts &#x3D; this.client.options.puppeteer;
const sessionDirName &#x3D; this.clientId ? &#x60;RemoteAuth-${this.clientId}&#x60; : &#x27;RemoteAuth&#x27;;
const sessionDirName &#x3D; this.clientId
? &#x60;RemoteAuth-${this.clientId}&#x60;
: &#x27;RemoteAuth&#x27;;
const dirPath &#x3D; path.join(this.dataPath, sessionDirName);
if (puppeteerOpts.userDataDir &amp;amp;&amp;amp; puppeteerOpts.userDataDir !&#x3D;&#x3D; dirPath) {
throw new Error(&#x27;RemoteAuth is not compatible with a user-supplied userDataDir.&#x27;);
if (
puppeteerOpts.userDataDir &amp;amp;&amp;amp;
puppeteerOpts.userDataDir !&#x3D;&#x3D; dirPath
) {
throw new Error(
&#x27;RemoteAuth is not compatible with a user-supplied userDataDir.&#x27;,
);
}
this.userDataDir &#x3D; dirPath;
@ -94,7 +118,7 @@ class RemoteAuth extends BaseAuthStrategy {
this.client.options.puppeteer &#x3D; {
...puppeteerOpts,
userDataDir: dirPath
userDataDir: dirPath,
};
}
@ -111,19 +135,25 @@ class RemoteAuth extends BaseAuthStrategy {
let pathExists &#x3D; await this.isValidPath(this.userDataDir);
if (pathExists) {
await fs.promises.rm(this.userDataDir, {
await fs.promises
.rm(this.userDataDir, {
recursive: true,
force: true,
maxRetries: this.rmMaxRetries,
}).catch(() &#x3D;&gt; {});
})
.catch(() &#x3D;&gt; {});
}
clearInterval(this.backupSync);
}
async afterAuthReady() {
const sessionExists &#x3D; await this.store.sessionExists({session: this.sessionName});
const sessionExists &#x3D; await this.store.sessionExists({
session: this.sessionName,
});
if (!sessionExists) {
await this.delay(60000); /* Initial delay sync required for session to be stable enough to recover */
await this.delay(
60000,
); /* Initial delay sync required for session to be stable enough to recover */
await this.storeRemoteSession({ emit: true });
}
var self &#x3D; this;
@ -133,34 +163,57 @@ class RemoteAuth extends BaseAuthStrategy {
}
async storeRemoteSession(options) {
/* Compress &amp;amp; Store Session */
const pathExists &#x3D; await this.isValidPath(this.userDataDir);
if (pathExists) {
await this.compressSession();
await this.store.save({session: path.join(this.dataPath, this.sessionName)});
await fs.promises.unlink(path.join(this.dataPath, &#x60;${this.sessionName}.zip&#x60;));
await fs.promises.rm(&#x60;${this.tempDir}&#x60;, {
if (!pathExists) return;
let compressedSessionPath;
try {
compressedSessionPath &#x3D; await this.compressSession();
await this.store.save({
session: this.sessionName,
});
if (options &amp;amp;&amp;amp; options.emit)
this.client.emit(Events.REMOTE_SESSION_SAVED);
} finally {
const paths &#x3D; [
this.tempDir,
...(compressedSessionPath ? [compressedSessionPath] : []),
];
await Promise.allSettled(
paths.map((p) &#x3D;&gt;
fs.promises.rm(p, {
recursive: true,
force: true,
maxRetries: this.rmMaxRetries,
}).catch(() &#x3D;&gt; {});
if(options &amp;amp;&amp;amp; options.emit) this.client.emit(Events.REMOTE_SESSION_SAVED);
}),
),
);
}
}
async extractRemoteSession() {
const pathExists &#x3D; await this.isValidPath(this.userDataDir);
const compressedSessionPath &#x3D; path.join(this.dataPath, &#x60;${this.sessionName}.zip&#x60;);
const sessionExists &#x3D; await this.store.sessionExists({session: this.sessionName});
const compressedSessionPath &#x3D; path.join(
this.dataPath,
&#x60;${this.sessionName}.zip&#x60;,
);
const sessionExists &#x3D; await this.store.sessionExists({
session: this.sessionName,
});
if (pathExists) {
await fs.promises.rm(this.userDataDir, {
await fs.promises
.rm(this.userDataDir, {
recursive: true,
force: true,
maxRetries: this.rmMaxRetries,
}).catch(() &#x3D;&gt; {});
})
.catch(() &#x3D;&gt; {});
}
if (sessionExists) {
await this.store.extract({session: this.sessionName, path: compressedSessionPath});
await this.store.extract({
session: this.sessionName,
path: compressedSessionPath,
});
await this.unCompressSession(compressedSessionPath);
} else {
fs.mkdirSync(this.userDataDir, { recursive: true });
@ -168,59 +221,62 @@ class RemoteAuth extends BaseAuthStrategy {
}
async deleteRemoteSession() {
const sessionExists &#x3D; await this.store.sessionExists({session: this.sessionName});
if (sessionExists) await this.store.delete({session: this.sessionName});
const sessionExists &#x3D; await this.store.sessionExists({
session: this.sessionName,
});
if (sessionExists)
await this.store.delete({ session: this.sessionName });
}
async compressSession() {
const stageDefaultPath &#x3D; path.join(this.tempDir, &#x27;Default&#x27;);
const userDataDefaultPath &#x3D; path.join(this.userDataDir, &#x27;Default&#x27;);
await fs.emptyDir(stageDefaultPath);
await this.copyByRequiredDirs(userDataDefaultPath, stageDefaultPath);
const archive &#x3D; archiver(&#x27;zip&#x27;);
const stream &#x3D; fs.createWriteStream(path.join(this.dataPath, &#x60;${this.sessionName}.zip&#x60;));
const outPath &#x3D; path.join(this.dataPath, &#x60;${this.sessionName}.zip&#x60;);
const out &#x3D; fs.createWriteStream(outPath);
await fs.copy(this.userDataDir, this.tempDir).catch(() &#x3D;&gt; {});
await this.deleteMetadata();
return new Promise((resolve, reject) &#x3D;&gt; {
archive
.directory(this.tempDir, false)
.on(&#x27;error&#x27;, err &#x3D;&gt; reject(err))
.pipe(stream);
await new Promise((resolve, reject) &#x3D;&gt; {
out.once(&#x27;close&#x27;, resolve);
out.once(&#x27;error&#x27;, reject);
archive.once(&#x27;error&#x27;, reject);
stream.on(&#x27;close&#x27;, () &#x3D;&gt; resolve());
archive.pipe(out);
archive.directory(this.tempDir, false);
archive.finalize();
});
return outPath;
}
async unCompressSession(compressedSessionPath) {
var stream &#x3D; fs.createReadStream(compressedSessionPath);
await new Promise((resolve, reject) &#x3D;&gt; {
stream.pipe(unzipper.Extract({
stream
.pipe(
unzipper.Extract({
path: this.userDataDir,
concurrency: 10
}))
.on(&#x27;error&#x27;, err &#x3D;&gt; reject(err))
concurrency: 10,
}),
)
.on(&#x27;error&#x27;, (err) &#x3D;&gt; reject(err))
.on(&#x27;finish&#x27;, () &#x3D;&gt; resolve());
});
await fs.promises.unlink(compressedSessionPath);
}
async deleteMetadata() {
const sessionDirs &#x3D; [this.tempDir, path.join(this.tempDir, &#x27;Default&#x27;)];
for (const dir of sessionDirs) {
const sessionFiles &#x3D; await fs.promises.readdir(dir);
for (const element of sessionFiles) {
if (!this.requiredDirs.includes(element)) {
const dirElement &#x3D; path.join(dir, element);
const stats &#x3D; await fs.promises.lstat(dirElement);
if (stats.isDirectory()) {
await fs.promises.rm(dirElement, {
async copyByRequiredDirs(from, to) {
for (const d of this.requiredDirs) {
const src &#x3D; path.join(from, d);
if (await this.isValidPath(src)) {
const dest &#x3D; path.join(to, path.basename(src));
await fs.promises.cp(src, dest, {
recursive: true,
force: true,
maxRetries: this.rmMaxRetries,
}).catch(() &#x3D;&gt; {});
} else {
await fs.promises.unlink(dirElement).catch(() &#x3D;&gt; {});
}
}
errorOnExist: false,
});
}
}
}
@ -235,7 +291,7 @@ class RemoteAuth extends BaseAuthStrategy {
}
async delay(ms) {
return new Promise(resolve &#x3D;&gt; setTimeout(resolve, ms));
return new Promise((resolve) &#x3D;&gt; setTimeout(resolve, ms));
}
}
@ -250,7 +306,7 @@ module.exports &#x3D; RemoteAuth;
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

84
docs/global.html generated
View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Globals</title>
<title>whatsapp-web.js 1.34.7 &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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -188,9 +188,6 @@
<dt><a href="global.html#TargetOptions">TargetOptions</a></dt>
<dd>
</dd>
<dt><a href="global.html#TargetOptions">TargetOptions</a></dt>
<dd>
</dd>
<dt><a href="global.html#TransferChannelOwnershipOptions">TransferChannelOwnershipOptions</a></dt>
<dd>
</dd>
@ -375,6 +372,19 @@
<td>
</td>
</tr>
<tr>
<td>
<p>MESSAGE_CIPHERTEXT_FAILED</p>
</td>
<td>
<p>&nbsp;</p>
</td>
<td>
<p>&nbsp;</p>
</td>
<td>
</td>
</tr>
<tr>
<td>
<p>MESSAGE_CREATE</p>
@ -4163,68 +4173,6 @@
<h3 id="TargetOptions"><span class="symbol-name">TargetOptions</span><small class="property-type">
&nbsp;Object</small></h3>
<p>Target options object description</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>module</p>
</td>
<td>
<p>(string or number)</p>
</td>
<td>
<p>&nbsp;</p>
</td>
<td>
<p>The name or a key of the target module to search</p>
</td>
</tr>
<tr>
<td>
<p>index</p>
</td>
<td>
<p>number</p>
</td>
<td>
<p>&nbsp;</p>
</td>
<td>
<p>The index value of the target module</p>
</td>
</tr>
<tr>
<td>
<p>function</p>
</td>
<td>
<p>string</p>
</td>
<td>
<p>&nbsp;</p>
</td>
<td>
<p>The function name to get from a module</p>
</td>
</tr>
</tbody>
</table>
</section>
<dl class="dl-compact">
</dl>
<h3 id="TargetOptions"><span class="symbol-name">TargetOptions</span><small class="property-type">
&nbsp;Object</small></h3>
<p>Target options object description</p>
<section>
<h4>Properties</h4>
<table class="jsdoc-details-table">
@ -4385,7 +4333,7 @@
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

169
docs/index.html generated
View file

@ -3,7 +3,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Home</title>
<title>whatsapp-web.js 1.34.7 &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/Noto+Serif:400,400i,700,700i" type="text/css">
<link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css">
@ -13,7 +13,7 @@
<nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -26,61 +26,62 @@
<div id="jsdoc-main" role="main">
<header class="page-header">
<h1>
whatsapp-web.js 1.34.6
whatsapp-web.js 1.34.7
</h1>
</header>
<article><div align="center">
<br />
<p>
<a href="https://wwebjs.dev"><img src="https://github.com/wwebjs/assets/blob/main/Collection/GitHub/wwebjs.png?raw=true" title="whatsapp-web.js" alt="WWebJS Website" width="500" /></a>
<a href="https://wwebjs.dev">
<img src="https://github.com/wwebjs/Assets/blob/main/Collection/GitHub/whatsapp-web.js.png?raw=true"
title="whatsapp-web.js" alt="WWebJS Website" />
</a>
</p>
<br />
<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.3000.1017054665-brightgreen.svg" alt="WhatsApp_Web 2.2346.52" />
<a href="https://discord.gg/H7DqQs4"><img src="https://img.shields.io/discord/698610475432411196.svg?logo=discord" alt="Discord server" /></a>
<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://www.npmjs.com/package/whatsapp-web.js"><img alt="NPM Downloads"
src="https://img.shields.io/npm/d18m/whatsapp-web.js" /></a>
<a href="https://github.com/wwebjs/whatsapp-web.js/graphs/contributors"><img alt="GitHub contributors"
src="https://img.shields.io/github/contributors-anon/wwebjs/whatsapp-web.js" /></a>
<a href="https://depfu.com/github/wwebjs/whatsapp-web.js?project_id=9765"><img
src="https://badges.depfu.com/badges/4a65a0de96ece65fdf39e294e0c8dcba/overview.svg" alt="Depfu" /></a>
<a href="https://discord.wwebjs.dev"><img
src="https://img.shields.io/discord/698610475432411196.svg?logo=discord" alt="Discord server" /></a>
</p>
<br />
</div>
<h2>About</h2>
<p><strong>A WhatsApp API client that operates via the WhatsApp Web browser.</strong></p>
<p>The library launches the WhatsApp Web browser app via Puppeteer, accessing its internal functions and creating a managed instance to reduce the risk of being blocked. This gives the API client nearly all WhatsApp Web features for dynamic use in a Node.js application.</p>
<blockquote>
<p>[!IMPORTANT]
<strong>It is not guaranteed you will not be blocked by using this method. WhatsApp does not allow bots or unofficial clients on their platform, so this shouldn't be considered totally safe.</strong></p>
</blockquote>
<p>whatsapp‑web.js is a powerful <a href="https://nodejs.org/en/download/">Node.js</a> library that lets you interact with WhatsApp Web, making it easy to build a dynamic WhatsApp API with nearly all features of the web client. It uses <a href="https://pptr.dev/">Puppeteer</a> to access WhatsApp Web’s internal functions and runs them in a managed browser instance to reduce the risk of being blocked.</p>
<h2>Links</h2>
<ul>
<li><a href="https://github.com/pedroslopez/whatsapp-web.js">GitHub</a></li>
<li><a href="https://github.com/wwebjs/whatsapp-web.js">GitHub</a></li>
<li><a href="https://guide.wwebjs.dev/guide">Guide</a> (<a href="https://github.com/wwebjs/wwebjs.dev/tree/main">source</a>)</li>
<li><a href="https://docs.wwebjs.dev/">Documentation</a> (<a href="https://github.com/pedroslopez/whatsapp-web.js/tree/main/docs">source</a>)</li>
<li><a href="https://discord.gg/H7DqQs4">Discord Server</a></li>
<li><a href="https://docs.wwebjs.dev/">Documentation</a> (<a href="https://github.com/wwebjs/whatsapp-web.js/tree/main/docs">source</a>)</li>
<li><a href="https://discord.wwebjs.dev">Discord Server</a></li>
<li><a href="https://npmjs.org/package/whatsapp-web.js">npm</a></li>
</ul>
<h2>Installation</h2>
<p>The module is available on <a href="https://npmjs.org/package/whatsapp-web.js">npm</a> via <code>npm i whatsapp-web.js</code>!</p>
<blockquote>
<p>[!NOTE]
<strong>Node <code>v18</code> or higher, is required.</strong><br>
See the <a href="https://guide.wwebjs.dev/guide">Guide</a> for quick upgrade instructions.</p>
</blockquote>
<p><strong>Node.js <code>v18.0.0</code> or higher, is required.</strong></p>
<pre class="prettyprint source lang-sh"><code>npm install whatsapp-web.js
yarn add whatsapp-web.js
pnpm add whatsapp-web.js
</code></pre>
<p>Having trouble installing? Take a peak at the <a href="https://guide.wwebjs.dev/guide">Guide</a> for more detailed instructions.</p>
<h2>Example usage</h2>
<pre class="prettyprint source lang-js"><code>const { Client } = require('whatsapp-web.js');
const qrcode = require('qrcode-terminal');
const client = new Client();
client.on('qr', (qr) => {
// Generate and scan this code with your phone
console.log('QR RECEIVED', qr);
qrcode.generate(qr, { small: true });
});
client.on('ready', () => {
console.log('Client is ready!');
});
client.on('message', msg => {
client.on('message', (msg) => {
if (msg.body == '!ping') {
msg.reply('pong');
}
@ -88,8 +89,8 @@ client.on('message', msg => {
client.initialize();
</code></pre>
<p>Take a look at <a href="https://github.com/pedroslopez/whatsapp-web.js/blob/master/example.js">example.js</a> for another examples with additional use cases.<br>
For further details on saving and restoring sessions, explore the provided <a href="https://wwebjs.dev/guide/creating-your-bot/authentication.html">Authentication Strategies</a>.</p>
<p>Take a look at <a href="https://github.com/wwebjs/whatsapp-web.js/blob/main/example.js">example.js</a> for additional examples and use cases.<br>
For more details on saving and restoring sessions, check out the <a href="https://wwebjs.dev/guide/creating-your-bot/authentication.html">Authentication Strategies</a>.</p>
<h2>Supported features</h2>
<table>
<thead>
@ -221,7 +222,7 @@ For further details on saving and restoring sessions, explore the provided <a hr
</tr>
<tr>
<td>Vote in polls</td>
<td>🔜</td>
<td>✅</td>
</tr>
<tr>
<td>Communities</td>
@ -230,22 +231,21 @@ For further details on saving and restoring sessions, explore the provided <a hr
</tbody>
</table>
<p>Something missing? Make an issue and let us know!</p>
<h2>Contributing</h2>
<p>Feel free to open pull requests; we welcome contributions! However, for significant changes, it's best to open an issue beforehand. Make sure to review our <a href="https://github.com/pedroslopez/whatsapp-web.js/blob/main/CODE_OF_CONDUCT.md">contribution guidelines</a> before creating a pull request. Before creating your own issue or pull request, always check to see if one already exists!</p>
<h2>Supporting the project</h2>
<p>You can support the maintainer of this project through the links below</p>
<p>You can support the maintainer of this project through the links below:</p>
<ul>
<li><a href="https://github.com/sponsors/pedroslopez">Support via GitHub Sponsors</a></li>
<li><a href="https://github.com/sponsors/wwebjs">Support via GitHub Sponsors</a></li>
<li><a href="https://www.paypal.me/psla/">Support via PayPal</a></li>
<li><a href="https://m.do.co/c/73f906a36ed4">Sign up for DigitalOcean</a> and get $200 in credit when you sign up (Referral)</li>
</ul>
<h2>Contributing</h2>
<p>Feel free to open pull requests; we welcome contributions! However, for significant changes, it's best to open an issue beforehand. Make sure to review our <a href=".github/CONTRIBUTING.md">contribution guidelines</a> before creating a pull request. Before creating your own issue or pull request, always check to see if one already exists!</p>
<h2>Disclaimer</h2>
<p>This project is not affiliated, associated, authorized, endorsed by, or in any way officially connected with WhatsApp or any of its subsidiaries or its affiliates. The official WhatsApp website can be found at <a href="https://whatsapp.com">whatsapp.com</a>. &quot;WhatsApp&quot; as well as related names, marks, emblems and images are registered trademarks of their respective owners. Also it is not guaranteed you will not be blocked by using this method. WhatsApp does not allow bots or unofficial clients on their platform, so this shouldn't be considered totally safe.</p>
<h2>License</h2>
<p>Copyright 2019 Pedro S Lopez</p>
<p>Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);<br>
you may not use this project except in compliance with the License.<br>
You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.</p>
You may obtain a copy of the License at <a href="https:%5C/%5C/www.apache.org/licenses/LICENSE-2.0">https://www.apache.org/licenses/LICENSE-2.0</a>.</p>
<p>Unless required by applicable law or agreed to in writing, software<br>
distributed under the License is distributed on an &quot;AS IS&quot; BASIS,<br>
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<br>
@ -898,6 +898,11 @@ limitations under the License.</p></article>
</dt>
<dd>
</dd>
<dt class="symbol-index-name">
<a href="Chat.html#isLocked" class="!symbol-index-name">Chat#<wbr>isLocked</a>
</dt>
<dd>
</dd>
<dt class="symbol-index-name">
<a href="Chat.html#isMuted" class="!symbol-index-name">Chat#<wbr>isMuted</a>
</dt>
@ -938,16 +943,16 @@ limitations under the License.</p></article>
</dt>
<dd>
</dd>
<dt class="symbol-index-name">
<a href="Chat.html#pinned" class="!symbol-index-name">Chat#<wbr>pinned</a>
</dt>
<dd>
</dd>
</dl>
</div>
<div class="symbol-index-column">
<dl class="symbol-index-list">
<dt class="symbol-index-name">
<a href="Chat.html#pinned" class="!symbol-index-name">Chat#<wbr>pinned</a>
</dt>
<dd>
</dd>
<dt class="symbol-index-name">
<a href="Chat.html#sendMessage" class="!symbol-index-name">Chat#<wbr>sendMessage(content[, options])</a>
</dt>
@ -1097,6 +1102,11 @@ limitations under the License.</p></article>
</dt>
<dd>
</dd>
<dt class="symbol-index-name">
<a href="Client.html#cancelPairingCode" class="!symbol-index-name">Client#<wbr>cancelPairingCode()</a>
</dt>
<dd>
</dd>
<dt class="symbol-index-name">
<a href="Client.html#createCallLink" class="!symbol-index-name">Client#<wbr>createCallLink(startTime, callType)</a>
</dt>
@ -1233,7 +1243,7 @@ limitations under the License.</p></article>
<dd>
</dd>
<dt class="symbol-index-name">
<a href="Client.html#event:message_create" class="!symbol-index-name">Client#<wbr>event:message_create</a>
<a href="Client.html#event:message_ciphertext_failed" class="!symbol-index-name">Client#<wbr>event:message_ciphertext_failed</a>
</dt>
<dd>
</dd>
@ -1242,6 +1252,11 @@ limitations under the License.</p></article>
<div class="symbol-index-column">
<dl class="symbol-index-list">
<dt class="symbol-index-name">
<a href="Client.html#event:message_create" class="!symbol-index-name">Client#<wbr>event:message_create</a>
</dt>
<dd>
</dd>
<dt class="symbol-index-name">
<a href="Client.html#event:message_edit" class="!symbol-index-name">Client#<wbr>event:message_edit</a>
</dt>
@ -1532,6 +1547,11 @@ limitations under the License.</p></article>
</dt>
<dd>
</dd>
<dt class="symbol-index-name">
<a href="Client.html#sendReaction" class="!symbol-index-name">Client#<wbr>sendReaction(messageId, reaction)</a>
</dt>
<dd>
</dd>
<dt class="symbol-index-name">
<a href="Client.html#sendResponseToScheduledEvent" class="!symbol-index-name">Client#<wbr>sendResponseToScheduledEvent(response, eventMessageId)</a>
</dt>
@ -1873,16 +1893,16 @@ limitations under the License.</p></article>
</dt>
<dd>
</dd>
</dl>
</div>
<div class="symbol-index-column">
<dl class="symbol-index-list">
<dt class="symbol-index-name">
<a href="global.html#Events#.GROUP_LEAVE" class="!symbol-index-name">Events.<wbr>GROUP_LEAVE</a>
</dt>
<dd>
</dd>
</dl>
</div>
<div class="symbol-index-column">
<dl class="symbol-index-list">
<dt class="symbol-index-name">
<a href="global.html#Events#.GROUP_MEMBERSHIP_REQUEST" class="!symbol-index-name">Events.<wbr>GROUP_MEMBERSHIP_REQUEST</a>
</dt>
@ -1918,6 +1938,11 @@ limitations under the License.</p></article>
</dt>
<dd>
</dd>
<dt class="symbol-index-name">
<a href="global.html#Events#.MESSAGE_CIPHERTEXT_FAILED" class="!symbol-index-name">Events.<wbr>MESSAGE_CIPHERTEXT_FAILED</a>
</dt>
<dd>
</dd>
<dt class="symbol-index-name">
<a href="global.html#Events#.MESSAGE_CREATE" class="!symbol-index-name">Events.<wbr>MESSAGE_CREATE</a>
</dt>
@ -1928,16 +1953,16 @@ limitations under the License.</p></article>
</dt>
<dd>
</dd>
</dl>
</div>
<div class="symbol-index-column">
<dl class="symbol-index-list">
<dt class="symbol-index-name">
<a href="global.html#Events#.MESSAGE_REACTION" class="!symbol-index-name">Events.<wbr>MESSAGE_REACTION</a>
</dt>
<dd>
</dd>
</dl>
</div>
<div class="symbol-index-column">
<dl class="symbol-index-list">
<dt class="symbol-index-name">
<a href="global.html#Events#.MESSAGE_RECEIVED" class="!symbol-index-name">Events.<wbr>MESSAGE_RECEIVED</a>
</dt>
@ -2115,6 +2140,11 @@ limitations under the License.</p></article>
</dt>
<dd>
</dd>
<dt class="symbol-index-name">
<a href="GroupChat.html#isLocked" class="!symbol-index-name">GroupChat#<wbr>isLocked</a>
</dt>
<dd>
</dd>
<dt class="symbol-index-name">
<a href="GroupChat.html#isMuted" class="!symbol-index-name">GroupChat#<wbr>isMuted</a>
</dt>
@ -2185,16 +2215,16 @@ limitations under the License.</p></article>
</dt>
<dd>
</dd>
<dt class="symbol-index-name">
<a href="GroupChat.html#removeParticipants" class="!symbol-index-name">GroupChat#<wbr>removeParticipants(participantIds)</a>
</dt>
<dd>
</dd>
</dl>
</div>
<div class="symbol-index-column">
<dl class="symbol-index-list">
<dt class="symbol-index-name">
<a href="GroupChat.html#removeParticipants" class="!symbol-index-name">GroupChat#<wbr>removeParticipants(participantIds)</a>
</dt>
<dd>
</dd>
<dt class="symbol-index-name">
<a href="GroupChat.html#revokeInvite" class="!symbol-index-name">GroupChat#<wbr>revokeInvite()</a>
</dt>
@ -3671,6 +3701,11 @@ limitations under the License.</p></article>
</dt>
<dd>
</dd>
<dt class="symbol-index-name">
<a href="PrivateChat.html#isLocked" class="!symbol-index-name">PrivateChat#<wbr>isLocked</a>
</dt>
<dd>
</dd>
<dt class="symbol-index-name">
<a href="PrivateChat.html#isMuted" class="!symbol-index-name">PrivateChat#<wbr>isMuted</a>
</dt>
@ -3711,16 +3746,16 @@ limitations under the License.</p></article>
</dt>
<dd>
</dd>
<dt class="symbol-index-name">
<a href="PrivateChat.html#pinned" class="!symbol-index-name">PrivateChat#<wbr>pinned</a>
</dt>
<dd>
</dd>
</dl>
</div>
<div class="symbol-index-column">
<dl class="symbol-index-list">
<dt class="symbol-index-name">
<a href="PrivateChat.html#pinned" class="!symbol-index-name">PrivateChat#<wbr>pinned</a>
</dt>
<dd>
</dd>
<dt class="symbol-index-name">
<a href="PrivateChat.html#sendMessage" class="!symbol-index-name">PrivateChat#<wbr>sendMessage(content[, options])</a>
</dt>
@ -4391,7 +4426,7 @@ limitations under the License.</p></article>
<div class="symbol-index-column">
<dl class="symbol-index-list">
<dt class="symbol-index-name">
<a href="window.html#.compareWwebVersions" class="!symbol-index-name">window.<wbr>compareWwebVersions(lOperand, operator, rOperand)</a>
<a href="window.WWebJS.html#.compareWwebVersions" class="!symbol-index-name">window.<wbr>WWebJS.<wbr>compareWwebVersions(lOperand, operator, rOperand)</a>
</dt>
<dd>
</dd>
@ -4401,7 +4436,7 @@ limitations under the License.</p></article>
<div class="symbol-index-column">
<dl class="symbol-index-list">
<dt class="symbol-index-name">
<a href="window.html#.injectToFunction" class="!symbol-index-name">window.<wbr>injectToFunction(target, callback)</a>
<a href="window.WWebJS.html#.injectToFunction" class="!symbol-index-name">window.<wbr>WWebJS.<wbr>injectToFunction(target, callback)</a>
</dt>
<dd>
</dd>
@ -4426,7 +4461,7 @@ limitations under the License.</p></article>
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Source: structures/Base.js</title>
<title>whatsapp-web.js 1.34.7 &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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -47,10 +47,13 @@ class Base {
return Object.assign(Object.create(this), this);
}
_patch(data) { return data; }
_patch(data) {
return data;
}
}
module.exports &#x3D; Base;</code></pre>
module.exports &#x3D; Base;
</code></pre>
</article>
</div>
</div>
@ -60,7 +63,7 @@ module.exports &#x3D; Base;</code></pre>
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Source: structures/Broadcast.js</title>
<title>whatsapp-web.js 1.34.7 &raquo; Source: structures/Broadcast.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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -74,7 +74,7 @@ class Broadcast extends Base {
* Messages statuses
* @type {Message[]}
*/
this.msgs &#x3D; data.msgs?.map(msg &#x3D;&gt; new Message(this.client, msg));
this.msgs &#x3D; data.msgs?.map((msg) &#x3D;&gt; new Message(this.client, msg));
return super._patch(data);
}
@ -94,7 +94,6 @@ class Broadcast extends Base {
getContact() {
return this.client.getContactById(this.id._serialized);
}
}
module.exports &#x3D; Broadcast;
@ -108,7 +107,7 @@ module.exports &#x3D; Broadcast;
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Source: structures/BusinessContact.js</title>
<title>whatsapp-web.js 1.34.7 &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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -46,10 +46,10 @@ class BusinessContact extends Contact {
return super._patch(data);
}
}
module.exports &#x3D; BusinessContact;</code></pre>
module.exports &#x3D; BusinessContact;
</code></pre>
</article>
</div>
</div>
@ -59,7 +59,7 @@ module.exports &#x3D; BusinessContact;</code></pre>
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Source: structures/Buttons.js</title>
<title>whatsapp-web.js 1.34.7 &raquo; Source: structures/Buttons.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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -89,8 +89,9 @@ class Buttons {
* @type {FormattedButtonSpec[]}
*/
this.buttons &#x3D; this._format(buttons);
if(!this.buttons.length){ throw &#x27;[BT01] No buttons&#x27;;}
if (!this.buttons.length) {
throw &#x27;[BT01] No buttons&#x27;;
}
}
/**
@ -104,13 +105,17 @@ class Buttons {
_format(buttons) {
buttons &#x3D; buttons.slice(0, 3); // phone users can only see 3 buttons, so lets limit this
return buttons.map((btn) &#x3D;&gt; {
return {&#x27;buttonId&#x27;:btn.id ? String(btn.id) : Util.generateHash(6),&#x27;buttonText&#x27;:{&#x27;displayText&#x27;:btn.body},&#x27;type&#x27;:1};
return {
buttonId: btn.id ? String(btn.id) : Util.generateHash(6),
buttonText: { displayText: btn.body },
type: 1,
};
});
}
}
module.exports &#x3D; Buttons;</code></pre>
module.exports &#x3D; Buttons;
</code></pre>
</article>
</div>
</div>
@ -120,7 +125,7 @@ module.exports &#x3D; Buttons;</code></pre>
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Source: structures/Call.js</title>
<title>whatsapp-web.js 1.34.7 &raquo; Source: structures/Call.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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -98,13 +98,18 @@ class Call extends Base {
* Reject the call
*/
async reject() {
return this.client.pupPage.evaluate((peerJid, id) &#x3D;&gt; {
return this.client.pupPage.evaluate(
(peerJid, id) &#x3D;&gt; {
return window.WWebJS.rejectCall(peerJid, id);
}, this.from, this.id);
},
this.from,
this.id,
);
}
}
module.exports &#x3D; Call;</code></pre>
module.exports &#x3D; Call;
</code></pre>
</article>
</div>
</div>
@ -114,7 +119,7 @@ module.exports &#x3D; Call;</code></pre>
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Source: structures/Channel.js</title>
<title>whatsapp-web.js 1.34.7 &raquo; Source: structures/Channel.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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -72,7 +72,8 @@ class Channel extends Base {
* The channel description
* @type {string}
*/
this.description &#x3D; data.channelMetadata.description;
this.description &#x3D;
data.channelMetadata?.description ?? data.description ?? &#x27;&#x27;;
/**
* Indicates if it is a Channel
@ -120,7 +121,9 @@ class Channel extends Base {
* Last message in the channel
* @type {Message}
*/
this.lastMessage &#x3D; data.lastMessage ? new Message(super.client, data.lastMessage) : undefined;
this.lastMessage &#x3D; data.lastMessage
? new Message(super.client, data.lastMessage)
: undefined;
return super._patch(data);
}
@ -131,17 +134,32 @@ class Channel extends Base {
* @returns {Promise&amp;lt;Array&amp;lt;{contact: Contact, role: string}&gt;&gt;} Returns an array of objects that handle the subscribed contacts and their roles in the channel
*/
async getSubscribers(limit) {
return await this.client.pupPage.evaluate(async (channelId, limit) &#x3D;&gt; {
const channel &#x3D; await window.WWebJS.getChat(channelId, { getAsModel: false });
return await this.client.pupPage.evaluate(
async (channelId, limit) &#x3D;&gt; {
const channel &#x3D; await window.WWebJS.getChat(channelId, {
getAsModel: false,
});
if (!channel) return [];
!limit &amp;amp;&amp;amp; (limit &#x3D; window.Store.ChannelUtils.getMaxSubscriberNumber());
const response &#x3D; await window.Store.ChannelSubscribers.mexFetchNewsletterSubscribers(channelId, limit);
const contacts &#x3D; window.Store.ChannelSubscribers.getSubscribersInContacts(response.subscribers);
return Promise.all(contacts.map((obj) &#x3D;&gt; ({
!limit &amp;amp;&amp;amp;
(limit &#x3D; window
.require(&#x27;WAWebNewsletterGatingUtils&#x27;)
.getMaxSubscriberNumber());
const response &#x3D; await window
.require(&#x27;WAWebMexFetchNewsletterSubscribersJob&#x27;)
.mexFetchNewsletterSubscribers(channelId, limit);
const contacts &#x3D; window
.require(&#x27;WAWebNewsletterSubscriberListAction&#x27;)
.getSubscribersInContacts(response.subscribers);
return Promise.all(
contacts.map((obj) &#x3D;&gt; ({
...obj,
contact: window.WWebJS.getContactModel(obj.contact)
})));
}, this.id._serialized, limit);
contact: window.WWebJS.getContactModel(obj.contact),
})),
);
},
this.id._serialized,
limit,
);
}
/**
@ -150,7 +168,10 @@ class Channel extends Base {
* @returns {Promise&amp;lt;boolean&gt;} Returns true if the subject was properly updated. This can return false if the user does not have the necessary permissions.
*/
async setSubject(newSubject) {
const success &#x3D; await this._setChannelMetadata({ name: newSubject }, { editName: true });
const success &#x3D; await this._setChannelMetadata(
{ name: newSubject },
{ editName: true },
);
success &amp;amp;&amp;amp; (this.name &#x3D; newSubject);
return success;
}
@ -161,7 +182,10 @@ class Channel extends Base {
* @returns {Promise&amp;lt;boolean&gt;} Returns true if the operation completed successfully, false otherwise
*/
async setDescription(newDescription) {
const success &#x3D; await this._setChannelMetadata({ description: newDescription }, { editDescription: true });
const success &#x3D; await this._setChannelMetadata(
{ description: newDescription },
{ editDescription: true },
);
success &amp;amp;&amp;amp; (this.description &#x3D; newDescription);
return success;
}
@ -172,7 +196,10 @@ class Channel extends Base {
* @returns {Promise&amp;lt;boolean&gt;} Returns true if the operation completed successfully, false otherwise
*/
async setProfilePicture(newProfilePicture) {
return await this._setChannelMetadata({ picture: newProfilePicture }, { editPicture: true });
return await this._setChannelMetadata(
{ picture: newProfilePicture },
{ editPicture: true },
);
}
/**
@ -190,11 +217,11 @@ class Channel extends Base {
const reactionMapper &#x3D; {
0: 3,
1: 1,
2: 0
2: 0,
};
const success &#x3D; await this._setChannelMetadata(
{ reactionCodesSetting: reactionMapper[reactionCode] },
{ editReactionCodesSetting: true }
{ editReactionCodesSetting: true },
);
success &amp;amp;&amp;amp; (this.channelMetadata.reactionCodesSetting &#x3D; reactionCode);
return success;
@ -264,7 +291,11 @@ class Channel extends Base {
* @returns {Promise&amp;lt;boolean&gt;} Returns true if an invitation was sent successfully, false otherwise
*/
async sendChannelAdminInvite(chatId, options &#x3D; {}) {
return this.client.sendChannelAdminInvite(chatId, this.id._serialized, options);
return this.client.sendChannelAdminInvite(
chatId,
this.id._serialized,
options,
);
}
/**
@ -281,7 +312,10 @@ class Channel extends Base {
* @returns {Promise&amp;lt;boolean&gt;} Returns true if the operation completed successfully, false otherwise
*/
async revokeChannelAdminInvite(userId) {
return this.client.revokeChannelAdminInvite(this.id._serialized, userId);
return this.client.revokeChannelAdminInvite(
this.id._serialized,
userId,
);
}
/**
@ -307,7 +341,11 @@ class Channel extends Base {
* @returns {Promise&amp;lt;boolean&gt;} Returns true if the operation completed successfully, false otherwise
*/
async transferChannelOwnership(newOwnerId, options &#x3D; {}) {
return this.client.transferChannelOwnership(this.id._serialized, newOwnerId, options);
return this.client.transferChannelOwnership(
this.id._serialized,
newOwnerId,
options,
);
}
/**
@ -318,36 +356,50 @@ class Channel extends Base {
* @returns {Promise&amp;lt;Array&amp;lt;Message&gt;&gt;}
*/
async fetchMessages(searchOptions) {
let messages &#x3D; await this.client.pupPage.evaluate(async (channelId, searchOptions) &#x3D;&gt; {
let messages &#x3D; await this.client.pupPage.evaluate(
async (channelId, searchOptions) &#x3D;&gt; {
const msgFilter &#x3D; (m) &#x3D;&gt; {
if (m.isNotification || m.type &#x3D;&#x3D;&#x3D; &#x27;newsletter_notification&#x27;) {
if (
m.isNotification ||
m.type &#x3D;&#x3D;&#x3D; &#x27;newsletter_notification&#x27;
) {
return false; // dont include notification messages
}
if (searchOptions &amp;amp;&amp;amp; searchOptions.fromMe !&#x3D;&#x3D; undefined &amp;amp;&amp;amp; m.id.fromMe !&#x3D;&#x3D; searchOptions.fromMe) {
if (
searchOptions &amp;amp;&amp;amp;
searchOptions.fromMe !&#x3D;&#x3D; undefined &amp;amp;&amp;amp;
m.id.fromMe !&#x3D;&#x3D; searchOptions.fromMe
) {
return false;
}
return true;
};
const channel &#x3D; await window.WWebJS.getChat(channelId, { getAsModel: false });
const channel &#x3D; await window.WWebJS.getChat(channelId, {
getAsModel: false,
});
let msgs &#x3D; channel.msgs.getModelsArray().filter(msgFilter);
if (searchOptions &amp;amp;&amp;amp; searchOptions.limit &gt; 0) {
while (msgs.length &amp;lt; searchOptions.limit) {
const loadedMessages &#x3D; await window.Store.ConversationMsgs.loadEarlierMsgs(channel);
const loadedMessages &#x3D; await window
.require(&#x27;WAWebChatLoadMessages&#x27;)
.loadEarlierMsgs({ chat: channel });
if (!loadedMessages || !loadedMessages.length) break;
msgs &#x3D; [...loadedMessages.filter(msgFilter), ...msgs];
}
if (msgs.length &gt; searchOptions.limit) {
msgs.sort((a, b) &#x3D;&gt; (a.t &gt; b.t) ? 1 : -1);
msgs.sort((a, b) &#x3D;&gt; (a.t &gt; b.t ? 1 : -1));
msgs &#x3D; msgs.splice(msgs.length - searchOptions.limit);
}
}
return msgs.map(m &#x3D;&gt; window.WWebJS.getMessageModel(m));
}, this.id._serialized, searchOptions);
return msgs.map((m) &#x3D;&gt; window.WWebJS.getMessageModel(m));
},
this.id._serialized,
searchOptions,
);
return messages.map((msg) &#x3D;&gt; new Message(this.client, msg));
}
@ -367,27 +419,39 @@ class Channel extends Base {
* @returns {Promise&amp;lt;boolean&gt;} Returns true if the operation completed successfully, false otherwise
*/
async _setChannelMetadata(value, property) {
return await this.client.pupPage.evaluate(async (channelId, value, property) &#x3D;&gt; {
const channel &#x3D; await window.WWebJS.getChat(channelId, { getAsModel: false });
return await this.client.pupPage.evaluate(
async (channelId, value, property) &#x3D;&gt; {
const channel &#x3D; await window.WWebJS.getChat(channelId, {
getAsModel: false,
});
if (!channel) return false;
if (property.editPicture) {
value.picture &#x3D; value.picture
? await window.WWebJS.cropAndResizeImage(value.picture, {
? await window.WWebJS.cropAndResizeImage(
value.picture,
{
asDataUrl: true,
mimetype: &#x27;image/jpeg&#x27;,
size: 640,
quality: 1
})
quality: 1,
},
)
: null;
}
try {
await window.Store.ChannelUtils.editNewsletterMetadataAction(channel, property, value);
await window
.require(&#x27;WAWebEditNewsletterMetadataAction&#x27;)
.editNewsletterMetadataAction(channel, property, value);
return true;
} catch (err) {
if (err.name &#x3D;&#x3D;&#x3D; &#x27;ServerStatusCodeError&#x27;) return false;
throw err;
}
}, this.id._serialized, value, property);
},
this.id._serialized,
value,
property,
);
}
/**
@ -396,17 +460,35 @@ class Channel extends Base {
* @returns {Promise&amp;lt;boolean&gt;} Returns true if the operation completed successfully, false otherwise
*/
async _muteUnmuteChannel(action) {
return await this.client.pupPage.evaluate(async (channelId, action) &#x3D;&gt; {
return await this.client.pupPage.evaluate(
async (channelId, action) &#x3D;&gt; {
try {
await window
.require(&#x27;WAWebNewsletterUpdateUserSettingJob&#x27;)
.updateNewsletterUserSetting({
newsletterJid: window
.require(&#x27;WAJids&#x27;)
.toNewsletterJid(channelId),
type: window.require(&#x27;WAWebNewsletterModelUtils&#x27;)
.ADMIN_NOTIFICATIONS,
muteExpirationValue:
action &#x3D;&#x3D;&#x3D; &#x27;MUTE&#x27;
? await window.Store.ChannelUtils.muteNewsletter([channelId])
: await window.Store.ChannelUtils.unmuteNewsletter([channelId]);
? window.require(
&#x27;WAWebNewsletterModelUtils&#x27;,
).MUTED_STATE
: window.require(
&#x27;WAWebNewsletterModelUtils&#x27;,
).UNMUTED_STATE,
});
return true;
} catch (err) {
if (err.name &#x3D;&#x3D;&#x3D; &#x27;ServerStatusCodeError&#x27;) return false;
throw err;
}
}, this.id._serialized, action);
},
this.id._serialized,
action,
);
}
}
@ -421,7 +503,7 @@ module.exports &#x3D; Channel;
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Source: structures/Chat.js</title>
<title>whatsapp-web.js 1.34.7 &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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -94,6 +94,12 @@ class Chat extends Base {
*/
this.pinned &#x3D; !!data.pin;
/**
* Indicates if the Chat is locked
* @type {boolean}
*/
this.isLocked &#x3D; data.isLocked;
/**
* Indicates if the chat is muted or not
* @type {boolean}
@ -110,7 +116,9 @@ class Chat extends Base {
* Last message fo chat
* @type {Message}
*/
this.lastMessage &#x3D; data.lastMessage ? new Message(this.client, data.lastMessage) : undefined;
this.lastMessage &#x3D; data.lastMessage
? new Message(this.client, data.lastMessage)
: undefined;
return super._patch(data);
}
@ -138,7 +146,7 @@ class Chat extends Base {
* @returns {Promise&amp;lt;boolean&gt;} result
*/
async clearMessages() {
return this.client.pupPage.evaluate(chatId &#x3D;&gt; {
return this.client.pupPage.evaluate((chatId) &#x3D;&gt; {
return window.WWebJS.sendClearChat(chatId);
}, this.id._serialized);
}
@ -148,7 +156,7 @@ class Chat extends Base {
* @returns {Promise&amp;lt;Boolean&gt;} result
*/
async delete() {
return this.client.pupPage.evaluate(chatId &#x3D;&gt; {
return this.client.pupPage.evaluate((chatId) &#x3D;&gt; {
return window.WWebJS.sendDeleteChat(chatId);
}, this.id._serialized);
}
@ -189,7 +197,10 @@ class Chat extends Base {
* @returns {Promise&amp;lt;{isMuted: boolean, muteExpiration: number}&gt;}
*/
async mute(unmuteDate) {
const result &#x3D; await this.client.muteChat(this.id._serialized, unmuteDate);
const result &#x3D; await this.client.muteChat(
this.id._serialized,
unmuteDate,
);
this.isMuted &#x3D; result.isMuted;
this.muteExpiration &#x3D; result.muteExpiration;
return result;
@ -221,45 +232,56 @@ class Chat extends Base {
* @returns {Promise&amp;lt;Array&amp;lt;Message&gt;&gt;}
*/
async fetchMessages(searchOptions) {
let messages &#x3D; await this.client.pupPage.evaluate(async (chatId, searchOptions) &#x3D;&gt; {
let messages &#x3D; await this.client.pupPage.evaluate(
async (chatId, searchOptions) &#x3D;&gt; {
const msgFilter &#x3D; (m) &#x3D;&gt; {
if (m.isNotification) {
return false; // dont include notification messages
}
if (searchOptions &amp;amp;&amp;amp; searchOptions.fromMe !&#x3D;&#x3D; undefined &amp;amp;&amp;amp; m.id.fromMe !&#x3D;&#x3D; searchOptions.fromMe) {
if (
searchOptions &amp;amp;&amp;amp;
searchOptions.fromMe !&#x3D;&#x3D; undefined &amp;amp;&amp;amp;
m.id.fromMe !&#x3D;&#x3D; searchOptions.fromMe
) {
return false;
}
return true;
};
const chat &#x3D; await window.WWebJS.getChat(chatId, { getAsModel: false });
const chat &#x3D; await window.WWebJS.getChat(chatId, {
getAsModel: false,
});
let msgs &#x3D; chat.msgs.getModelsArray().filter(msgFilter);
if (searchOptions &amp;amp;&amp;amp; searchOptions.limit &gt; 0) {
while (msgs.length &amp;lt; searchOptions.limit) {
const loadedMessages &#x3D; await window.Store.ConversationMsgs.loadEarlierMsgs(chat,chat.msgs);
const loadedMessages &#x3D; await window
.require(&#x27;WAWebChatLoadMessages&#x27;)
.loadEarlierMsgs({ chat });
if (!loadedMessages || !loadedMessages.length) break;
msgs &#x3D; [...loadedMessages.filter(msgFilter), ...msgs];
}
if (msgs.length &gt; searchOptions.limit) {
msgs.sort((a, b) &#x3D;&gt; (a.t &gt; b.t) ? 1 : -1);
msgs.sort((a, b) &#x3D;&gt; (a.t &gt; b.t ? 1 : -1));
msgs &#x3D; msgs.splice(msgs.length - searchOptions.limit);
}
}
return msgs.map(m &#x3D;&gt; window.WWebJS.getMessageModel(m));
return msgs.map((m) &#x3D;&gt; window.WWebJS.getMessageModel(m));
},
this.id._serialized,
searchOptions,
);
}, this.id._serialized, searchOptions);
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.
*/
async sendStateTyping() {
return this.client.pupPage.evaluate(chatId &#x3D;&gt; {
return this.client.pupPage.evaluate((chatId) &#x3D;&gt; {
window.WWebJS.sendChatstate(&#x27;typing&#x27;, chatId);
return true;
}, this.id._serialized);
@ -269,7 +291,7 @@ class Chat extends Base {
* Simulate recording audio in chat. This will last for 25 seconds.
*/
async sendStateRecording() {
return this.client.pupPage.evaluate(chatId &#x3D;&gt; {
return this.client.pupPage.evaluate((chatId) &#x3D;&gt; {
window.WWebJS.sendChatstate(&#x27;recording&#x27;, chatId);
return true;
}, this.id._serialized);
@ -279,7 +301,7 @@ class Chat extends Base {
* Stops typing or recording in chat immediately.
*/
async clearState() {
return this.client.pupPage.evaluate(chatId &#x3D;&gt; {
return this.client.pupPage.evaluate((chatId) &#x3D;&gt; {
window.WWebJS.sendChatstate(&#x27;stop&#x27;, chatId);
return true;
}, this.id._serialized);
@ -368,7 +390,7 @@ module.exports &#x3D; Chat;
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Source: structures/ClientInfo.js</title>
<title>whatsapp-web.js 1.34.7 &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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -93,13 +93,14 @@ class ClientInfo extends Base {
*/
async getBatteryStatus() {
return await this.client.pupPage.evaluate(() &#x3D;&gt; {
const { battery, plugged } &#x3D; window.Store.Conn;
const { battery, plugged } &#x3D; window.require(&#x27;WAWebConnModel&#x27;).Conn;
return { battery, plugged };
});
}
}
module.exports &#x3D; ClientInfo;</code></pre>
module.exports &#x3D; ClientInfo;
</code></pre>
</article>
</div>
</div>
@ -109,7 +110,7 @@ module.exports &#x3D; ClientInfo;</code></pre>
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Source: structures/Contact.js</title>
<title>whatsapp-web.js 1.34.7 &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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -186,8 +186,18 @@ class Contact extends Base {
if (this.isGroup) return false;
await this.client.pupPage.evaluate(async (contactId) &#x3D;&gt; {
const contact &#x3D; window.Store.Contact.get(contactId);
await window.Store.BlockContact.blockContact({contact});
const contact &#x3D; await window
.require(&#x27;WAWebCollections&#x27;)
.Contact.find(contactId);
const resolved &#x3D; window
.require(&#x27;WAWebBlockContactUtils&#x27;)
.getContactToBlockOnlyUseIfNoAssociatedChat(
contact,
&#x27;ChatListBlock&#x27;,
);
await window
.require(&#x27;WAWebBlockContactAction&#x27;)
.blockContact({ contact: resolved });
}, this.id._serialized);
this.isBlocked &#x3D; true;
@ -202,8 +212,18 @@ class Contact extends Base {
if (this.isGroup) return false;
await this.client.pupPage.evaluate(async (contactId) &#x3D;&gt; {
const contact &#x3D; window.Store.Contact.get(contactId);
await window.Store.BlockContact.unblockContact(contact);
const contact &#x3D; await window
.require(&#x27;WAWebCollections&#x27;)
.Contact.find(contactId);
const resolved &#x3D; window
.require(&#x27;WAWebBlockContactUtils&#x27;)
.getContactToBlockOnlyUseIfNoAssociatedChat(
contact,
&#x27;ChatListBlock&#x27;,
);
await window
.require(&#x27;WAWebBlockContactAction&#x27;)
.unblockContact(resolved);
}, this.id._serialized);
this.isBlocked &#x3D; false;
@ -216,12 +236,13 @@ class Contact extends Base {
*/
async getAbout() {
const about &#x3D; await this.client.pupPage.evaluate(async (contactId) &#x3D;&gt; {
const wid &#x3D; window.Store.WidFactory.createWid(contactId);
return window.Store.StatusUtils.getStatus({&#x27;token&#x27;:&#x27;&#x27;, &#x27;wid&#x27;: wid});
const wid &#x3D; window.require(&#x27;WAWebWidFactory&#x27;).createWid(contactId);
return window
.require(&#x27;WAWebContactStatusBridge&#x27;)
.getStatus({ token: &#x27;&#x27;, wid: wid });
}, this.id._serialized);
if (typeof about.status !&#x3D;&#x3D; &#x27;string&#x27;)
return null;
if (typeof about.status !&#x3D;&#x3D; &#x27;string&#x27;) return null;
return about.status;
}
@ -254,7 +275,7 @@ module.exports &#x3D; Contact;
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Source: structures/GroupChat.js</title>
<title>whatsapp-web.js 1.34.7 &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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -107,31 +107,51 @@ class GroupChat extends Chat {
* @returns {Promise&amp;lt;Object.&amp;lt;string, AddParticipantsResult&gt;|string&gt;} Returns an object with the resulting data or an error message as a string
*/
async addParticipants(participantIds, options &#x3D; {}) {
return await this.client.pupPage.evaluate(async (groupId, participantIds, options) &#x3D;&gt; {
const { sleep &#x3D; [250, 500], autoSendInviteV4 &#x3D; true, comment &#x3D; &#x27;&#x27; } &#x3D; options;
return await this.client.pupPage.evaluate(
async (groupId, participantIds, options) &#x3D;&gt; {
const {
sleep &#x3D; [250, 500],
autoSendInviteV4 &#x3D; true,
comment &#x3D; &#x27;&#x27;,
} &#x3D; options;
const participantData &#x3D; {};
!Array.isArray(participantIds) &amp;amp;&amp;amp; (participantIds &#x3D; [participantIds]);
const groupWid &#x3D; window.Store.WidFactory.createWid(groupId);
const group &#x3D; window.Store.Chat.get(groupWid) || (await window.Store.Chat.find(groupWid));
const participantWids &#x3D; participantIds.map((p) &#x3D;&gt; window.Store.WidFactory.createWid(p));
!Array.isArray(participantIds) &amp;amp;&amp;amp;
(participantIds &#x3D; [participantIds]);
const groupWid &#x3D; window
.require(&#x27;WAWebWidFactory&#x27;)
.createWid(groupId);
const group &#x3D;
window.require(&#x27;WAWebCollections&#x27;).Chat.get(groupWid) ||
(await window
.require(&#x27;WAWebCollections&#x27;)
.Chat.find(groupWid));
const participantWids &#x3D; participantIds.map((p) &#x3D;&gt;
window.require(&#x27;WAWebWidFactory&#x27;).createWid(p),
);
const errorCodes &#x3D; {
default: &#x27;An unknown error occupied while adding a participant&#x27;,
isGroupEmpty: &#x27;AddParticipantsError: The participant can\&#x27;t be added to an empty group&#x27;,
iAmNotAdmin: &#x27;AddParticipantsError: You have no admin rights to add a participant to a group&#x27;,
default:
&#x27;An unknown error occupied while adding a participant&#x27;,
isGroupEmpty:
&quot;AddParticipantsError: The participant can&#x27;t be added to an empty group&quot;,
iAmNotAdmin:
&#x27;AddParticipantsError: You have no admin rights to add a participant to a group&#x27;,
200: &#x27;The participant was added successfully&#x27;,
403: &#x27;The participant can be added by sending private invitation only&#x27;,
404: &#x27;The phone number is not registered on WhatsApp&#x27;,
408: &#x27;You cannot add this participant because they recently left the group&#x27;,
409: &#x27;The participant is already a group member&#x27;,
417: &#x27;The participant can\&#x27;t be added to the community. You can invite them privately to join this group through its invite link&#x27;,
419: &#x27;The participant can\&#x27;t be added because the group is full&#x27;
417: &quot;The participant can&#x27;t be added to the community. You can invite them privately to join this group through its invite link&quot;,
419: &quot;The participant can&#x27;t be added because the group is full&quot;,
};
await window.Store.GroupQueryAndUpdate({ id: groupId });
await window
.require(&#x27;WAWebGroupQueryJob&#x27;)
.queryAndUpdateGroupMetadataById({ id: groupId });
let groupParticipants &#x3D; group.groupMetadata?.participants.serialize();
let groupParticipants &#x3D;
group.groupMetadata?.participants.serialize();
if (!groupParticipants) {
return errorCodes.isGroupEmpty;
@ -142,44 +162,68 @@ class GroupChat extends Chat {
}
groupParticipants.map(({ id }) &#x3D;&gt; {
return id.server &#x3D;&#x3D;&#x3D; &#x27;lid&#x27; ? window.Store.LidUtils.getPhoneNumber(id) : id;
return id.server &#x3D;&#x3D;&#x3D; &#x27;lid&#x27;
? window.require(&#x27;WAWebApiContact&#x27;).getPhoneNumber(id)
: id;
});
const _getSleepTime &#x3D; (sleep) &#x3D;&gt; {
if (!Array.isArray(sleep) || sleep.length &#x3D;&#x3D;&#x3D; 2 &amp;amp;&amp;amp; sleep[0] &#x3D;&#x3D;&#x3D; sleep[1]) {
if (
!Array.isArray(sleep) ||
(sleep.length &#x3D;&#x3D;&#x3D; 2 &amp;amp;&amp;amp; sleep[0] &#x3D;&#x3D;&#x3D; sleep[1])
) {
return sleep;
}
if (sleep.length &#x3D;&#x3D;&#x3D; 1) {
return sleep[0];
}
(sleep[1] - sleep[0]) &amp;lt; 100 &amp;amp;&amp;amp; (sleep[0] &#x3D; sleep[1]) &amp;amp;&amp;amp; (sleep[1] +&#x3D; 100);
return Math.floor(Math.random() * (sleep[1] - sleep[0] + 1)) + sleep[0];
sleep[1] - sleep[0] &amp;lt; 100 &amp;amp;&amp;amp;
(sleep[0] &#x3D; sleep[1]) &amp;amp;&amp;amp;
(sleep[1] +&#x3D; 100);
return (
Math.floor(Math.random() * (sleep[1] - sleep[0] + 1)) +
sleep[0]
);
};
for (let pWid of participantWids) {
const pId &#x3D; pWid._serialized;
pWid &#x3D; pWid.server &#x3D;&#x3D;&#x3D; &#x27;lid&#x27; ? window.Store.LidUtils.getPhoneNumber(pWid) : pWid;
pWid &#x3D;
pWid.server &#x3D;&#x3D;&#x3D; &#x27;lid&#x27;
? window
.require(&#x27;WAWebApiContact&#x27;)
.getPhoneNumber(pWid)
: pWid;
participantData[pId] &#x3D; {
code: undefined,
message: undefined,
isInviteV4Sent: false
isInviteV4Sent: false,
};
if (groupParticipants.some(p &#x3D;&gt; p._serialized &#x3D;&#x3D;&#x3D; pId)) {
if (groupParticipants.some((p) &#x3D;&gt; p._serialized &#x3D;&#x3D;&#x3D; pId)) {
participantData[pId].code &#x3D; 409;
participantData[pId].message &#x3D; errorCodes[409];
continue;
}
if (!(await window.Store.QueryExist(pWid))?.wid) {
if (
!(
await window
.require(&#x27;WAWebQueryExistsJob&#x27;)
.queryWidExists(pWid)
)?.wid
) {
participantData[pId].code &#x3D; 404;
participantData[pId].message &#x3D; errorCodes[404];
continue;
}
const rpcResult &#x3D;
await window.WWebJS.getAddParticipantsRpcResult(groupWid, pWid);
await window.WWebJS.getAddParticipantsRpcResult(
groupWid,
pWid,
);
const { code: rpcResultCode } &#x3D; rpcResult;
participantData[pId].code &#x3D; rpcResultCode;
@ -187,20 +231,37 @@ class GroupChat extends Chat {
errorCodes[rpcResultCode] || errorCodes.default;
if (autoSendInviteV4 &amp;amp;&amp;amp; rpcResultCode &#x3D;&#x3D;&#x3D; 403) {
let userChat, isInviteV4Sent &#x3D; false;
window.Store.Contact.gadd(pWid, { silent: true });
let userChat,
isInviteV4Sent &#x3D; false;
window
.require(&#x27;WAWebCollections&#x27;)
.Contact.gadd(pWid, { silent: true });
if (rpcResult.name &#x3D;&#x3D;&#x3D; &#x27;ParticipantRequestCodeCanBeSent&#x27; &amp;amp;&amp;amp;
(userChat &#x3D; window.Store.Chat.get(pWid) || (await window.Store.Chat.find(pWid)))) {
const groupName &#x3D; group.formattedTitle || group.name;
const res &#x3D; await window.Store.GroupInviteV4.sendGroupInviteMessage(
if (
rpcResult.name &#x3D;&#x3D;&#x3D;
&#x27;ParticipantRequestCodeCanBeSent&#x27; &amp;amp;&amp;amp;
(userChat &#x3D;
window
.require(&#x27;WAWebCollections&#x27;)
.Chat.get(pWid) ||
(await window
.require(&#x27;WAWebCollections&#x27;)
.Chat.find(pWid)))
) {
const groupName &#x3D;
group.formattedTitle || group.name;
const res &#x3D; await window
.require(&#x27;WAWebChatSendMessages&#x27;)
.sendGroupInviteMessage(
userChat,
group.id._serialized,
groupName,
rpcResult.inviteV4Code,
rpcResult.inviteV4CodeExp,
comment,
await window.WWebJS.getProfilePicThumbToBase64(groupWid)
await window.WWebJS.getProfilePicThumbToBase64(
groupWid,
),
);
isInviteV4Sent &#x3D; res.messageSendResult &#x3D;&#x3D;&#x3D; &#x27;OK&#x27;;
}
@ -210,12 +271,19 @@ class GroupChat extends Chat {
sleep &amp;amp;&amp;amp;
participantWids.length &gt; 1 &amp;amp;&amp;amp;
participantWids.indexOf(pWid) !&#x3D;&#x3D; participantWids.length - 1 &amp;amp;&amp;amp;
(await new Promise((resolve) &#x3D;&gt; setTimeout(resolve, _getSleepTime(sleep))));
participantWids.indexOf(pWid) !&#x3D;&#x3D;
participantWids.length - 1 &amp;amp;&amp;amp;
(await new Promise((resolve) &#x3D;&gt;
setTimeout(resolve, _getSleepTime(sleep)),
));
}
return participantData;
}, this.id._serialized, participantIds, options);
},
this.id._serialized,
participantIds,
options,
);
}
/**
@ -224,17 +292,36 @@ class GroupChat extends Chat {
* @returns {Promise&amp;lt;{ status: number }&gt;}
*/
async removeParticipants(participantIds) {
return await this.client.pupPage.evaluate(async (chatId, participantIds) &#x3D;&gt; {
const chat &#x3D; await window.WWebJS.getChat(chatId, { getAsModel: false });
const participants &#x3D; (await Promise.all(participantIds.map(async p &#x3D;&gt; {
const { lid, phone } &#x3D; await window.WWebJS.enforceLidAndPnRetrieval(p);
return await this.client.pupPage.evaluate(
async (chatId, participantIds) &#x3D;&gt; {
const chat &#x3D; await window.WWebJS.getChat(chatId, {
getAsModel: false,
});
const participants &#x3D; (
await Promise.all(
participantIds.map(async (p) &#x3D;&gt; {
const { lid, phone } &#x3D;
await window.WWebJS.enforceLidAndPnRetrieval(p);
return chat.groupMetadata.participants.get(lid?._serialized) ||
chat.groupMetadata.participants.get(phone?._serialized);
}))).filter(Boolean);
await window.Store.GroupParticipants.removeParticipants(chat, participants);
return (
chat.groupMetadata.participants.get(
lid?._serialized,
) ||
chat.groupMetadata.participants.get(
phone?._serialized,
)
);
}),
)
).filter(Boolean);
await window
.require(&#x27;WAWebModifyParticipantsGroupAction&#x27;)
.removeParticipants(chat, participants);
return { status: 200 };
}, this.id._serialized, participantIds);
},
this.id._serialized,
participantIds,
);
}
/**
@ -243,17 +330,36 @@ class GroupChat extends Chat {
* @returns {Promise&amp;lt;{ status: number }&gt;} Object with status code indicating if the operation was successful
*/
async promoteParticipants(participantIds) {
return await this.client.pupPage.evaluate(async (chatId, participantIds) &#x3D;&gt; {
const chat &#x3D; await window.WWebJS.getChat(chatId, { getAsModel: false });
const participants &#x3D; (await Promise.all(participantIds.map(async p &#x3D;&gt; {
const { lid, phone } &#x3D; await window.WWebJS.enforceLidAndPnRetrieval(p);
return await this.client.pupPage.evaluate(
async (chatId, participantIds) &#x3D;&gt; {
const chat &#x3D; await window.WWebJS.getChat(chatId, {
getAsModel: false,
});
const participants &#x3D; (
await Promise.all(
participantIds.map(async (p) &#x3D;&gt; {
const { lid, phone } &#x3D;
await window.WWebJS.enforceLidAndPnRetrieval(p);
return chat.groupMetadata.participants.get(lid?._serialized) ||
chat.groupMetadata.participants.get(phone?._serialized);
}))).filter(Boolean);
await window.Store.GroupParticipants.promoteParticipants(chat, participants);
return (
chat.groupMetadata.participants.get(
lid?._serialized,
) ||
chat.groupMetadata.participants.get(
phone?._serialized,
)
);
}),
)
).filter(Boolean);
await window
.require(&#x27;WAWebModifyParticipantsGroupAction&#x27;)
.promoteParticipants(chat, participants);
return { status: 200 };
}, this.id._serialized, participantIds);
},
this.id._serialized,
participantIds,
);
}
/**
@ -262,17 +368,36 @@ class GroupChat extends Chat {
* @returns {Promise&amp;lt;{ status: number }&gt;} Object with status code indicating if the operation was successful
*/
async demoteParticipants(participantIds) {
return await this.client.pupPage.evaluate(async (chatId, participantIds) &#x3D;&gt; {
const chat &#x3D; await window.WWebJS.getChat(chatId, { getAsModel: false });
const participants &#x3D; (await Promise.all(participantIds.map(async p &#x3D;&gt; {
const { lid, phone } &#x3D; await window.WWebJS.enforceLidAndPnRetrieval(p);
return await this.client.pupPage.evaluate(
async (chatId, participantIds) &#x3D;&gt; {
const chat &#x3D; await window.WWebJS.getChat(chatId, {
getAsModel: false,
});
const participants &#x3D; (
await Promise.all(
participantIds.map(async (p) &#x3D;&gt; {
const { lid, phone } &#x3D;
await window.WWebJS.enforceLidAndPnRetrieval(p);
return chat.groupMetadata.participants.get(lid?._serialized) ||
chat.groupMetadata.participants.get(phone?._serialized);
}))).filter(Boolean);
await window.Store.GroupParticipants.demoteParticipants(chat, participants);
return (
chat.groupMetadata.participants.get(
lid?._serialized,
) ||
chat.groupMetadata.participants.get(
phone?._serialized,
)
);
}),
)
).filter(Boolean);
await window
.require(&#x27;WAWebModifyParticipantsGroupAction&#x27;)
.demoteParticipants(chat, participants);
return { status: 200 };
}, this.id._serialized, participantIds);
},
this.id._serialized,
participantIds,
);
}
/**
@ -281,16 +406,24 @@ class GroupChat extends Chat {
* @returns {Promise&amp;lt;boolean&gt;} Returns true if the subject was properly updated. This can return false if the user does not have the necessary permissions.
*/
async setSubject(subject) {
const success &#x3D; await this.client.pupPage.evaluate(async (chatId, subject) &#x3D;&gt; {
const chatWid &#x3D; window.Store.WidFactory.createWid(chatId);
const success &#x3D; await this.client.pupPage.evaluate(
async (chatId, subject) &#x3D;&gt; {
const chatWid &#x3D; window
.require(&#x27;WAWebWidFactory&#x27;)
.createWid(chatId);
try {
await window.Store.GroupUtils.setGroupSubject(chatWid, subject);
await window
.require(&#x27;WAWebGroupModifyInfoJob&#x27;)
.setGroupSubject(chatWid, subject);
return true;
} catch (err) {
if (err.name &#x3D;&#x3D;&#x3D; &#x27;ServerStatusCodeError&#x27;) return false;
throw err;
}
}, this.id._serialized, subject);
},
this.id._serialized,
subject,
);
if (!success) return false;
this.name &#x3D; subject;
@ -303,18 +436,34 @@ class GroupChat extends Chat {
* @returns {Promise&amp;lt;boolean&gt;} Returns true if the description was properly updated. This can return false if the user does not have the necessary permissions.
*/
async setDescription(description) {
const success &#x3D; await this.client.pupPage.evaluate(async (chatId, description) &#x3D;&gt; {
const chatWid &#x3D; window.Store.WidFactory.createWid(chatId);
let descId &#x3D; window.Store.GroupMetadata.get(chatWid).descId;
let newId &#x3D; await window.Store.MsgKey.newId();
const success &#x3D; await this.client.pupPage.evaluate(
async (chatId, description) &#x3D;&gt; {
const chatWid &#x3D; window
.require(&#x27;WAWebWidFactory&#x27;)
.createWid(chatId);
const chat &#x3D; await window.WWebJS.getChat(chatId, {
getAsModel: false,
});
let descId &#x3D; chat.groupMetadata.descId;
let newId &#x3D; await window.require(&#x27;WAWebMsgKey&#x27;).newId();
try {
await window.Store.GroupUtils.setGroupDescription(chatWid, description, newId, descId);
await window
.require(&#x27;WAWebGroupModifyInfoJob&#x27;)
.setGroupDescription(
chatWid,
description,
newId,
descId,
);
return true;
} catch (err) {
if (err.name &#x3D;&#x3D;&#x3D; &#x27;ServerStatusCodeError&#x27;) return false;
throw err;
}
}, this.id._serialized, description);
},
this.id._serialized,
description,
);
if (!success) return false;
this.groupMetadata.desc &#x3D; description;
@ -327,18 +476,33 @@ class GroupChat extends Chat {
* @returns {Promise&amp;lt;boolean&gt;} Returns true if the setting was properly updated. This can return false if the user does not have the necessary permissions.
*/
async setAddMembersAdminsOnly(adminsOnly &#x3D; true) {
const success &#x3D; await this.client.pupPage.evaluate(async (groupId, adminsOnly) &#x3D;&gt; {
const chat &#x3D; await window.WWebJS.getChat(groupId, { getAsModel: false });
const success &#x3D; await this.client.pupPage.evaluate(
async (groupId, adminsOnly) &#x3D;&gt; {
const chat &#x3D; await window.WWebJS.getChat(groupId, {
getAsModel: false,
});
try {
await window.Store.GroupUtils.setGroupProperty(chat, &#x27;member_add_mode&#x27;, adminsOnly ? 0 : 1);
await window
.require(&#x27;WAWebSetPropertyGroupAction&#x27;)
.setGroupProperty(
chat,
&#x27;member_add_mode&#x27;,
adminsOnly ? 0 : 1,
);
return true;
} catch (err) {
if (err.name &#x3D;&#x3D;&#x3D; &#x27;ServerStatusCodeError&#x27;) return false;
throw err;
}
}, this.id._serialized, adminsOnly);
},
this.id._serialized,
adminsOnly,
);
success &amp;amp;&amp;amp; (this.groupMetadata.memberAddMode &#x3D; adminsOnly ? &#x27;admin_add&#x27; : &#x27;all_member_add&#x27;);
success &amp;amp;&amp;amp;
(this.groupMetadata.memberAddMode &#x3D; adminsOnly
? &#x27;admin_add&#x27;
: &#x27;all_member_add&#x27;);
return success;
}
@ -348,16 +512,28 @@ class GroupChat extends Chat {
* @returns {Promise&amp;lt;boolean&gt;} Returns true if the setting was properly updated. This can return false if the user does not have the necessary permissions.
*/
async setMessagesAdminsOnly(adminsOnly &#x3D; true) {
const success &#x3D; await this.client.pupPage.evaluate(async (chatId, adminsOnly) &#x3D;&gt; {
const chat &#x3D; await window.WWebJS.getChat(chatId, { getAsModel: false });
const success &#x3D; await this.client.pupPage.evaluate(
async (chatId, adminsOnly) &#x3D;&gt; {
const chat &#x3D; await window.WWebJS.getChat(chatId, {
getAsModel: false,
});
try {
await window.Store.GroupUtils.setGroupProperty(chat, &#x27;announcement&#x27;, adminsOnly ? 1 : 0);
await window
.require(&#x27;WAWebSetPropertyGroupAction&#x27;)
.setGroupProperty(
chat,
&#x27;announcement&#x27;,
adminsOnly ? 1 : 0,
);
return true;
} catch (err) {
if (err.name &#x3D;&#x3D;&#x3D; &#x27;ServerStatusCodeError&#x27;) return false;
throw err;
}
}, this.id._serialized, adminsOnly);
},
this.id._serialized,
adminsOnly,
);
if (!success) return false;
@ -371,16 +547,24 @@ class GroupChat extends Chat {
* @returns {Promise&amp;lt;boolean&gt;} Returns true if the setting was properly updated. This can return false if the user does not have the necessary permissions.
*/
async setInfoAdminsOnly(adminsOnly &#x3D; true) {
const success &#x3D; await this.client.pupPage.evaluate(async (chatId, adminsOnly) &#x3D;&gt; {
const chat &#x3D; await window.WWebJS.getChat(chatId, { getAsModel: false });
const success &#x3D; await this.client.pupPage.evaluate(
async (chatId, adminsOnly) &#x3D;&gt; {
const chat &#x3D; await window.WWebJS.getChat(chatId, {
getAsModel: false,
});
try {
await window.Store.GroupUtils.setGroupProperty(chat, &#x27;restrict&#x27;, adminsOnly ? 1 : 0);
await window
.require(&#x27;WAWebSetPropertyGroupAction&#x27;)
.setGroupProperty(chat, &#x27;restrict&#x27;, adminsOnly ? 1 : 0);
return true;
} catch (err) {
if (err.name &#x3D;&#x3D;&#x3D; &#x27;ServerStatusCodeError&#x27;) return false;
throw err;
}
}, this.id._serialized, adminsOnly);
},
this.id._serialized,
adminsOnly,
);
if (!success) return false;
@ -406,9 +590,13 @@ class GroupChat extends Chat {
* @returns {Promise&amp;lt;boolean&gt;} Returns true if the picture was properly updated. This can return false if the user does not have the necessary permissions.
*/
async setPicture(media) {
const success &#x3D; await this.client.pupPage.evaluate((chatid, media) &#x3D;&gt; {
const success &#x3D; await this.client.pupPage.evaluate(
(chatid, media) &#x3D;&gt; {
return window.WWebJS.setPicture(chatid, media);
}, this.id._serialized, media);
},
this.id._serialized,
media,
);
return success;
}
@ -418,22 +606,18 @@ class GroupChat extends Chat {
* @returns {Promise&amp;lt;string&gt;} Group&#x27;s invite code
*/
async getInviteCode() {
const codeRes &#x3D; await this.client.pupPage.evaluate(async chatId &#x3D;&gt; {
const chatWid &#x3D; window.Store.WidFactory.createWid(chatId);
const codeRes &#x3D; await this.client.pupPage.evaluate(async (chatId) &#x3D;&gt; {
try {
return window.compareWwebVersions(window.Debug.VERSION, &#x27;&gt;&#x3D;&#x27;, &#x27;2.3000.1020730154&#x27;)
? await window.Store.GroupInvite.fetchMexGroupInviteCode(chatId)
: await window.Store.GroupInvite.queryGroupInviteCode(chatWid, true);
}
catch (err) {
return await window
.require(&#x27;WAWebMexFetchGroupInviteCodeJob&#x27;)
.fetchMexGroupInviteCode(chatId);
} catch (err) {
if (err.name &#x3D;&#x3D;&#x3D; &#x27;ServerStatusCodeError&#x27;) return undefined;
throw err;
}
}, this.id._serialized);
return codeRes?.code
? codeRes?.code
: codeRes;
return codeRes?.code ? codeRes?.code : codeRes;
}
/**
@ -441,9 +625,11 @@ class GroupChat extends Chat {
* @returns {Promise&amp;lt;string&gt;} New invite code
*/
async revokeInvite() {
const codeRes &#x3D; await this.client.pupPage.evaluate(chatId &#x3D;&gt; {
const chatWid &#x3D; window.Store.WidFactory.createWid(chatId);
return window.Store.GroupInvite.resetGroupInviteCode(chatWid);
const codeRes &#x3D; await this.client.pupPage.evaluate((chatId) &#x3D;&gt; {
const chatWid &#x3D; window.require(&#x27;WAWebWidFactory&#x27;).createWid(chatId);
return window
.require(&#x27;WAWebGroupQueryJob&#x27;)
.resetGroupInviteCode(chatWid);
}, this.id._serialized);
return codeRes.code;
@ -464,7 +650,9 @@ class GroupChat extends Chat {
* @returns {Promise&amp;lt;Array&amp;lt;GroupMembershipRequest&gt;&gt;} An array of membership requests
*/
async getGroupMembershipRequests() {
return await this.client.getGroupMembershipRequests(this.id._serialized);
return await this.client.getGroupMembershipRequests(
this.id._serialized,
);
}
/**
@ -488,7 +676,10 @@ class GroupChat extends Chat {
* @returns {Promise&amp;lt;Array&amp;lt;MembershipRequestActionResult&gt;&gt;} Returns an array of requester IDs whose membership requests were approved and an error for each requester, if any occurred during the operation. If there are no requests, an empty array will be returned
*/
async approveGroupMembershipRequests(options &#x3D; {}) {
return await this.client.approveGroupMembershipRequests(this.id._serialized, options);
return await this.client.approveGroupMembershipRequests(
this.id._serialized,
options,
);
}
/**
@ -497,7 +688,10 @@ class GroupChat extends Chat {
* @returns {Promise&amp;lt;Array&amp;lt;MembershipRequestActionResult&gt;&gt;} Returns an array of requester IDs whose membership requests were rejected and an error for each requester, if any occurred during the operation. If there are no requests, an empty array will be returned
*/
async rejectGroupMembershipRequests(options &#x3D; {}) {
return await this.client.rejectGroupMembershipRequests(this.id._serialized, options);
return await this.client.rejectGroupMembershipRequests(
this.id._serialized,
options,
);
}
/**
@ -505,12 +699,13 @@ class GroupChat extends Chat {
* @returns {Promise}
*/
async leave() {
await this.client.pupPage.evaluate(async chatId &#x3D;&gt; {
const chat &#x3D; await window.WWebJS.getChat(chatId, { getAsModel: false });
return window.Store.GroupUtils.sendExitGroup(chat);
await this.client.pupPage.evaluate(async (chatId) &#x3D;&gt; {
const chat &#x3D; await window.WWebJS.getChat(chatId, {
getAsModel: false,
});
return window.require(&#x27;WAWebExitGroupAction&#x27;).sendExitGroup(chat);
}, this.id._serialized);
}
}
module.exports &#x3D; GroupChat;
@ -524,7 +719,7 @@ module.exports &#x3D; GroupChat;
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Source: structures/GroupNotification.js</title>
<title>whatsapp-web.js 1.34.7 &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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -74,13 +74,19 @@ class GroupNotification extends Base {
*
* @type {string}
*/
this.chatId &#x3D; typeof (data.id.remote) &#x3D;&#x3D;&#x3D; &#x27;object&#x27; ? data.id.remote._serialized : data.id.remote;
this.chatId &#x3D;
typeof data.id.remote &#x3D;&#x3D;&#x3D; &#x27;object&#x27;
? data.id.remote._serialized
: data.id.remote;
/**
* ContactId for the user that produced the GroupNotification.
* @type {string}
*/
this.author &#x3D; typeof (data.author) &#x3D;&#x3D;&#x3D; &#x27;object&#x27; ? data.author._serialized : data.author;
this.author &#x3D;
typeof data.author &#x3D;&#x3D;&#x3D; &#x27;object&#x27;
? data.author._serialized
: data.author;
/**
* Contact IDs for the users that were affected by this GroupNotification.
@ -116,7 +122,11 @@ class GroupNotification extends Base {
* @returns {Promise&amp;lt;Array&amp;lt;Contact&gt;&gt;}
*/
async getRecipients() {
return await Promise.all(this.recipientIds.map(async m &#x3D;&gt; await this.client.getContactById(m)));
return await Promise.all(
this.recipientIds.map(
async (m) &#x3D;&gt; await this.client.getContactById(m),
),
);
}
/**
@ -129,7 +139,6 @@ class GroupNotification extends Base {
async reply(content, options &#x3D; {}) {
return this.client.sendMessage(this.chatId, content, options);
}
}
module.exports &#x3D; GroupNotification;
@ -143,7 +152,7 @@ module.exports &#x3D; GroupNotification;
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Source: structures/Label.js</title>
<title>whatsapp-web.js 1.34.7 &raquo; Source: structures/Label.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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -68,6 +68,7 @@ class Label extends Base {
*/
this.hexColor &#x3D; labelData.hexColor;
}
/**
* Get all chats that have been assigned this Label
* @returns {Promise&amp;lt;Array&amp;lt;Chat&gt;&gt;}
@ -75,10 +76,10 @@ class Label extends Base {
async getChats() {
return this.client.getChatsByLabelId(this.id);
}
}
module.exports &#x3D; Label;</code></pre>
module.exports &#x3D; Label;
</code></pre>
</article>
</div>
</div>
@ -88,7 +89,7 @@ module.exports &#x3D; Label;</code></pre>
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Source: structures/List.js</title>
<title>whatsapp-web.js 1.34.7 &raquo; Source: structures/List.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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -63,7 +63,6 @@ class List {
*/
this.title &#x3D; title;
/**
* footer of message
* @type {string}
@ -75,7 +74,6 @@ class List {
* @type {Array&amp;lt;any&gt;}
*/
this.sections &#x3D; this._format(sections);
}
/**
@ -87,24 +85,34 @@ class List {
* Returns: [{&#x27;title&#x27;:&#x27;sectionTitle&#x27;,&#x27;rows&#x27;:[{&#x27;rowId&#x27;:&#x27;customId&#x27;,&#x27;title&#x27;:&#x27;ListItem1&#x27;,&#x27;description&#x27;:&#x27;desc&#x27;},{&#x27;rowId&#x27;:&#x27;oGSRoD&#x27;,&#x27;title&#x27;:&#x27;ListItem2&#x27;,&#x27;description&#x27;:&#x27;&#x27;}]}]
*/
_format(sections) {
if(!sections.length){throw &#x27;[LT02] List without sections&#x27;;}
if(sections.length &gt; 1 &amp;amp;&amp;amp; sections.filter(s &#x3D;&gt; typeof s.title &#x3D;&#x3D; &#x27;undefined&#x27;).length &gt; 1){throw &#x27;[LT05] You can\&#x27;t have more than one empty title.&#x27;;}
if (!sections.length) {
throw &#x27;[LT02] List without sections&#x27;;
}
if (
sections.length &gt; 1 &amp;amp;&amp;amp;
sections.filter((s) &#x3D;&gt; typeof s.title &#x3D;&#x3D; &#x27;undefined&#x27;).length &gt; 1
) {
throw &quot;[LT05] You can&#x27;t have more than one empty title.&quot;;
}
return sections.map((section) &#x3D;&gt; {
if(!section.rows.length){throw &#x27;[LT03] Section without rows&#x27;;}
if (!section.rows.length) {
throw &#x27;[LT03] Section without rows&#x27;;
}
return {
title: section.title ? section.title : undefined,
rows: section.rows.map((row) &#x3D;&gt; {
if(!row.title){throw &#x27;[LT04] Row without title&#x27;;}
if (!row.title) {
throw &#x27;[LT04] Row without title&#x27;;
}
return {
rowId: row.id ? row.id : Util.generateHash(6),
title: row.title,
description: row.description ? row.description : &#x27;&#x27;
description: row.description ? row.description : &#x27;&#x27;,
};
})
}),
};
});
}
}
module.exports &#x3D; List;
@ -118,7 +126,7 @@ module.exports &#x3D; List;
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Source: structures/Location.js</title>
<title>whatsapp-web.js 1.34.7 &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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -84,13 +84,15 @@ class Location {
* Location full description
* @type {string|undefined}
*/
this.description &#x3D; this.name &amp;amp;&amp;amp; this.address
this.description &#x3D;
this.name &amp;amp;&amp;amp; this.address
? &#x60;${this.name}\n${this.address}&#x60;
: this.name || this.address || &#x27;&#x27;;
}
}
module.exports &#x3D; Location;</code></pre>
module.exports &#x3D; Location;
</code></pre>
</article>
</div>
</div>
@ -100,7 +102,7 @@ module.exports &#x3D; Location;</code></pre>
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Source: structures/Message.js</title>
<title>whatsapp-web.js 1.34.7 &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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -83,7 +83,9 @@ class Message extends Base {
* Message content
* @type {string}
*/
this.body &#x3D; this.hasMedia ? data.caption || &#x27;&#x27; : data.body || data.pollName || data.eventName || &#x27;&#x27;;
this.body &#x3D; this.hasMedia
? data.caption || &#x27;&#x27;
: data.body || data.pollName || data.eventName || &#x27;&#x27;;
/**
* Message type
@ -101,7 +103,10 @@ class Message extends Base {
* ID for the Chat that this message was sent to, except if the message was sent by the current user.
* @type {string}
*/
this.from &#x3D; (typeof (data.from) &#x3D;&#x3D;&#x3D; &#x27;object&#x27; &amp;amp;&amp;amp; data.from !&#x3D;&#x3D; null) ? data.from._serialized : data.from;
this.from &#x3D;
typeof data.from &#x3D;&#x3D;&#x3D; &#x27;object&#x27; &amp;amp;&amp;amp; data.from !&#x3D;&#x3D; null
? data.from._serialized
: data.from;
/**
* ID for who this message is for.
@ -110,19 +115,31 @@ class Message extends Base {
* If the message is sent by another user, it will be the ID for the current user.
* @type {string}
*/
this.to &#x3D; (typeof (data.to) &#x3D;&#x3D;&#x3D; &#x27;object&#x27; &amp;amp;&amp;amp; data.to !&#x3D;&#x3D; null) ? data.to._serialized : data.to;
this.to &#x3D;
typeof data.to &#x3D;&#x3D;&#x3D; &#x27;object&#x27; &amp;amp;&amp;amp; data.to !&#x3D;&#x3D; null
? data.to._serialized
: data.to;
/**
* If the message was sent to a group, this field will contain the user that sent the message.
* @type {string}
*/
this.author &#x3D; (typeof (data.author) &#x3D;&#x3D;&#x3D; &#x27;object&#x27; &amp;amp;&amp;amp; data.author !&#x3D;&#x3D; null) ? data.author._serialized : data.author;
this.author &#x3D;
typeof data.author &#x3D;&#x3D;&#x3D; &#x27;object&#x27; &amp;amp;&amp;amp; data.author !&#x3D;&#x3D; null
? data.author._serialized
: data.author;
/**
* String that represents from which device type the message was sent
* @type {string}
*/
this.deviceType &#x3D; typeof data.id.id &#x3D;&#x3D;&#x3D; &#x27;string&#x27; &amp;amp;&amp;amp; data.id.id.length &gt; 21 ? &#x27;android&#x27; : typeof data.id.id &#x3D;&#x3D;&#x3D; &#x27;string&#x27; &amp;amp;&amp;amp; data.id.id.substring(0, 2) &#x3D;&#x3D;&#x3D; &#x27;3A&#x27; ? &#x27;ios&#x27; : &#x27;web&#x27;;
this.deviceType &#x3D;
typeof data.id.id &#x3D;&#x3D;&#x3D; &#x27;string&#x27; &amp;amp;&amp;amp; data.id.id.length &gt; 25
? &#x27;android&#x27;
: typeof data.id.id &#x3D;&#x3D;&#x3D; &#x27;string&#x27; &amp;amp;&amp;amp;
data.id.id.substring(0, 2) &#x3D;&#x3D;&#x3D; &#x27;3A&#x27;
? &#x27;ios&#x27;
: &#x27;web&#x27;;
/**
* Indicates if the message was forwarded
* @type {boolean}
@ -141,7 +158,8 @@ class Message extends Base {
* Indicates if the message is a status update
* @type {boolean}
*/
this.isStatus &#x3D; data.isStatusV3 || data.id.remote &#x3D;&#x3D;&#x3D; &#x27;status@broadcast&#x27;;
this.isStatus &#x3D;
data.isStatusV3 || data.id.remote &#x3D;&#x3D;&#x3D; &#x27;status@broadcast&#x27;;
/**
* Indicates if the message was starred
@ -193,7 +211,7 @@ class Message extends Base {
description &#x3D; {
name: splitted[0],
address: splitted[1],
url: data.clientUrl
url: data.clientUrl,
};
}
return new Location(data.lat, data.lng, description);
@ -203,20 +221,36 @@ class Message extends Base {
* List of vCards contained in the message.
* @type {Array&amp;lt;string&gt;}
*/
this.vCards &#x3D; data.type &#x3D;&#x3D;&#x3D; MessageTypes.CONTACT_CARD_MULTI ? data.vcardList.map((c) &#x3D;&gt; c.vcard) : data.type &#x3D;&#x3D;&#x3D; MessageTypes.CONTACT_CARD ? [data.body] : [];
this.vCards &#x3D;
data.type &#x3D;&#x3D;&#x3D; MessageTypes.CONTACT_CARD_MULTI
? data.vcardList.map((c) &#x3D;&gt; c.vcard)
: data.type &#x3D;&#x3D;&#x3D; MessageTypes.CONTACT_CARD
? [data.body]
: [];
/**
* Group Invite Data
* @type {object}
*/
this.inviteV4 &#x3D; data.type &#x3D;&#x3D;&#x3D; MessageTypes.GROUP_INVITE ? {
this.inviteV4 &#x3D;
data.type &#x3D;&#x3D;&#x3D; MessageTypes.GROUP_INVITE
? {
inviteCode: data.inviteCode,
inviteCodeExp: data.inviteCodeExp,
groupId: data.inviteGrp,
groupName: data.inviteGrpName,
fromId: typeof data.from &#x3D;&#x3D;&#x3D; &#x27;object&#x27; &amp;amp;&amp;amp; &#x27;_serialized&#x27; in data.from ? data.from._serialized : data.from,
toId: typeof data.to &#x3D;&#x3D;&#x3D; &#x27;object&#x27; &amp;amp;&amp;amp; &#x27;_serialized&#x27; in data.to ? data.to._serialized : data.to
} : undefined;
fromId:
typeof data.from &#x3D;&#x3D;&#x3D; &#x27;object&#x27; &amp;amp;&amp;amp;
&#x27;_serialized&#x27; in data.from
? data.from._serialized
: data.from,
toId:
typeof data.to &#x3D;&#x3D;&#x3D; &#x27;object&#x27; &amp;amp;&amp;amp;
&#x27;_serialized&#x27; in data.to
? data.to._serialized
: data.to,
}
: undefined;
/**
* Indicates the mentions in the message body.
@ -315,17 +349,27 @@ class Message extends Base {
}
/** Selected List row Id **/
if (data.listResponse &amp;amp;&amp;amp; data.listResponse.singleSelectReply.selectedRowId) {
this.selectedRowId &#x3D; data.listResponse.singleSelectReply.selectedRowId;
if (
data.listResponse &amp;amp;&amp;amp;
data.listResponse.singleSelectReply.selectedRowId
) {
this.selectedRowId &#x3D;
data.listResponse.singleSelectReply.selectedRowId;
}
if (this.type &#x3D;&#x3D;&#x3D; MessageTypes.POLL_CREATION) {
this.pollName &#x3D; data.pollName;
this.pollOptions &#x3D; data.pollOptions;
this.allowMultipleAnswers &#x3D; Boolean(!data.pollSelectableOptionsCount);
this.allowMultipleAnswers &#x3D; Boolean(
!data.pollSelectableOptionsCount,
);
this.pollInvalidated &#x3D; data.pollInvalidated;
this.isSentCagPollCreation &#x3D; data.isSentCagPollCreation;
this.messageSecret &#x3D; data.messageSecret ? Object.keys(data.messageSecret).map((key) &#x3D;&gt; data.messageSecret[key]) : [];
this.messageSecret &#x3D; data.messageSecret
? Object.keys(data.messageSecret).map(
(key) &#x3D;&gt; data.messageSecret[key],
)
: [];
}
return super._patch(data);
@ -342,7 +386,13 @@ class Message extends Base {
*/
async reload() {
const newData &#x3D; await this.client.pupPage.evaluate(async (msgId) &#x3D;&gt; {
const msg &#x3D; window.Store.Msg.get(msgId) || (await window.Store.Msg.getMessagesById([msgId]))?.messages?.[0];
const msg &#x3D;
window.require(&#x27;WAWebCollections&#x27;).Msg.get(msgId) ||
(
await window
.require(&#x27;WAWebCollections&#x27;)
.Msg.getMessagesById([msgId])
)?.messages?.[0];
if (!msg) return null;
return window.WWebJS.getMessageModel(msg);
}, this.id._serialized);
@ -382,7 +432,14 @@ class Message extends Base {
* @returns {Promise&amp;lt;Array&amp;lt;Contact&gt;&gt;}
*/
async getMentions() {
return await Promise.all(this.mentionedIds.map(async m &#x3D;&gt; await this.client.getContactById(m)));
return await Promise.all(
this.mentionedIds.map(
async (m) &#x3D;&gt;
await this.client.getContactById(
typeof m &#x3D;&#x3D;&#x3D; &#x27;string&#x27; ? m : m._serialized,
),
),
);
}
/**
@ -390,7 +447,12 @@ class Message extends Base {
* @returns {Promise&amp;lt;Array&amp;lt;GroupChat&gt;&gt;}
*/
async getGroupMentions() {
return await Promise.all(this.groupMentions.map(async (m) &#x3D;&gt; await this.client.getChatById(m.groupJid._serialized)));
return await Promise.all(
this.groupMentions.map(
async (m) &#x3D;&gt;
await this.client.getChatById(m.groupJid._serialized),
),
);
}
/**
@ -401,8 +463,16 @@ class Message extends Base {
if (!this.hasQuotedMsg) return undefined;
const quotedMsg &#x3D; await this.client.pupPage.evaluate(async (msgId) &#x3D;&gt; {
const msg &#x3D; window.Store.Msg.get(msgId) || (await window.Store.Msg.getMessagesById([msgId]))?.messages?.[0];
const quotedMsg &#x3D; window.Store.QuotedMsg.getQuotedMsgObj(msg);
const msg &#x3D;
window.require(&#x27;WAWebCollections&#x27;).Msg.get(msgId) ||
(
await window
.require(&#x27;WAWebCollections&#x27;)
.Msg.getMessagesById([msgId])
)?.messages?.[0];
const quotedMsg &#x3D; window
.require(&#x27;WAWebQuotedMsgModelUtils&#x27;)
.getQuotedMsgObj(msg);
return window.WWebJS.getMessageModel(quotedMsg);
}, this.id._serialized);
@ -426,7 +496,7 @@ class Message extends Base {
options &#x3D; {
...options,
quotedMessageId: this.id._serialized
quotedMessageId: this.id._serialized,
};
return this.client.sendMessage(chatId, content, options);
@ -438,13 +508,7 @@ class Message extends Base {
* @return {Promise}
*/
async react(reaction) {
await this.client.pupPage.evaluate(async (messageId, reaction) &#x3D;&gt; {
if (!messageId) return null;
const msg &#x3D;
window.Store.Msg.get(messageId) || (await window.Store.Msg.getMessagesById([messageId]))?.messages?.[0];
if(!msg) return null;
await window.Store.sendReactionToMsg(msg, reaction);
}, this.id._serialized, reaction);
return this.client.sendReaction(this.id._serialized, reaction);
}
/**
@ -464,9 +528,13 @@ class Message extends Base {
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; {
await this.client.pupPage.evaluate(
async (msgId, chatId) &#x3D;&gt; {
return window.WWebJS.forwardMessage(chatId, msgId);
}, this.id._serialized, chatId);
},
this.id._serialized,
chatId,
);
}
/**
@ -479,48 +547,70 @@ class Message extends Base {
}
const result &#x3D; await this.client.pupPage.evaluate(async (msgId) &#x3D;&gt; {
const msg &#x3D; window.Store.Msg.get(msgId) || (await window.Store.Msg.getMessagesById([msgId]))?.messages?.[0];
const msg &#x3D;
window.require(&#x27;WAWebCollections&#x27;).Msg.get(msgId) ||
(
await window
.require(&#x27;WAWebCollections&#x27;)
.Msg.getMessagesById([msgId])
)?.messages?.[0];
// REUPLOADING mediaStage means the media is expired and the download button is spinning, cannot be downloaded now
if (!msg || !msg.mediaData || msg.mediaData.mediaStage &#x3D;&#x3D;&#x3D; &#x27;REUPLOADING&#x27;) {
if (
!msg ||
!msg.mediaData ||
msg.mediaData.mediaStage &#x3D;&#x3D;&#x3D; &#x27;REUPLOADING&#x27;
) {
return null;
}
if (msg.mediaData.mediaStage !&#x3D; &#x27;RESOLVED&#x27;) {
// try to resolve media
await msg.downloadMedia({
downloadEvenIfExpensive: true,
rmrReason: 1
rmrReason: 1,
});
}
if (msg.mediaData.mediaStage.includes(&#x27;ERROR&#x27;) || msg.mediaData.mediaStage &#x3D;&#x3D;&#x3D; &#x27;FETCHING&#x27;) {
if (
msg.mediaData.mediaStage.includes(&#x27;ERROR&#x27;) ||
msg.mediaData.mediaStage &#x3D;&#x3D;&#x3D; &#x27;FETCHING&#x27;
) {
// media could not be downloaded
return undefined;
}
try {
const mockQpl &#x3D; {
addAnnotations: function() { return this; },
addPoint: function() { return this; }
addAnnotations: function () {
return this;
},
addPoint: function () {
return this;
},
};
const decryptedMedia &#x3D; await window.Store.DownloadManager.downloadAndMaybeDecrypt({
const decryptedMedia &#x3D; await window
.require(&#x27;WAWebDownloadManager&#x27;)
.downloadManager.downloadAndMaybeDecrypt({
directPath: msg.directPath,
encFilehash: msg.encFilehash,
filehash: msg.filehash,
mediaKey: msg.mediaKey,
mediaKeyTimestamp: msg.mediaKeyTimestamp,
type: msg.type,
signal: (new AbortController).signal,
downloadQpl: mockQpl
signal: new AbortController().signal,
downloadQpl: mockQpl,
});
const data &#x3D; await window.WWebJS.arrayBufferToBase64Async(decryptedMedia);
const data &#x3D;
await window.WWebJS.arrayBufferToBase64Async(
decryptedMedia,
);
return {
data,
mimetype: msg.mimetype,
filename: msg.filename,
filesize: msg.size
filesize: msg.size,
};
} catch (e) {
if (e.status &amp;amp;&amp;amp; e.status &#x3D;&#x3D;&#x3D; 404) return undefined;
@ -529,7 +619,12 @@ class Message extends Base {
}, this.id._serialized);
if (!result) return undefined;
return new MessageMedia(result.mimetype, result.data, result.filename, result.filesize);
return new MessageMedia(
result.mimetype,
result.data,
result.filename,
result.filesize,
);
}
/**
@ -538,23 +633,66 @@ class Message extends Base {
* @param {?boolean} [clearMedia &#x3D; true] If true, any associated media will also be deleted from a device.
*/
async delete(everyone, clearMedia &#x3D; true) {
await this.client.pupPage.evaluate(async (msgId, everyone, clearMedia) &#x3D;&gt; {
const msg &#x3D; window.Store.Msg.get(msgId) || (await window.Store.Msg.getMessagesById([msgId]))?.messages?.[0];
const chat &#x3D; window.Store.Chat.get(msg.id.remote) || (await window.Store.Chat.find(msg.id.remote));
await this.client.pupPage.evaluate(
async (msgId, everyone, clearMedia) &#x3D;&gt; {
const msg &#x3D;
window.require(&#x27;WAWebCollections&#x27;).Msg.get(msgId) ||
(
await window
.require(&#x27;WAWebCollections&#x27;)
.Msg.getMessagesById([msgId])
)?.messages?.[0];
const chat &#x3D;
window
.require(&#x27;WAWebCollections&#x27;)
.Chat.get(msg.id.remote) ||
(await window
.require(&#x27;WAWebCollections&#x27;)
.Chat.find(msg.id.remote));
const canRevoke &#x3D;
window.Store.MsgActionChecks.canSenderRevokeMsg(msg) || window.Store.MsgActionChecks.canAdminRevokeMsg(msg);
window
.require(&#x27;WAWebMsgActionCapability&#x27;)
.canSenderRevokeMsg(msg) ||
window
.require(&#x27;WAWebMsgActionCapability&#x27;)
.canAdminRevokeMsg(msg);
const { Cmd } &#x3D; window.require(&#x27;WAWebCmd&#x27;);
if (everyone &amp;amp;&amp;amp; canRevoke) {
return window.compareWwebVersions(window.Debug.VERSION, &#x27;&gt;&#x3D;&#x27;, &#x27;2.3000.0&#x27;)
? window.Store.Cmd.sendRevokeMsgs(chat, { list: [msg], type: &#x27;message&#x27; }, { clearMedia: clearMedia })
: window.Store.Cmd.sendRevokeMsgs(chat, [msg], { clearMedia: true, type: msg.id.fromMe ? &#x27;Sender&#x27; : &#x27;Admin&#x27; });
return window.WWebJS.compareWwebVersions(
window.Debug.VERSION,
&#x27;&gt;&#x3D;&#x27;,
&#x27;2.3000.0&#x27;,
)
? Cmd.sendRevokeMsgs(
chat,
{ list: [msg], type: &#x27;message&#x27; },
{ clearMedia: clearMedia },
)
: Cmd.sendRevokeMsgs(chat, [msg], {
clearMedia: true,
type: msg.id.fromMe ? &#x27;Sender&#x27; : &#x27;Admin&#x27;,
});
}
return window.compareWwebVersions(window.Debug.VERSION, &#x27;&gt;&#x3D;&#x27;, &#x27;2.3000.0&#x27;)
? window.Store.Cmd.sendDeleteMsgs(chat, { list: [msg], type: &#x27;message&#x27; }, clearMedia)
: window.Store.Cmd.sendDeleteMsgs(chat, [msg], clearMedia);
}, this.id._serialized, everyone, clearMedia);
return window.WWebJS.compareWwebVersions(
window.Debug.VERSION,
&#x27;&gt;&#x3D;&#x27;,
&#x27;2.3000.0&#x27;,
)
? Cmd.sendDeleteMsgs(
chat,
{ list: [msg], type: &#x27;message&#x27; },
clearMedia,
)
: Cmd.sendDeleteMsgs(chat, [msg], clearMedia);
},
this.id._serialized,
everyone,
clearMedia,
);
}
/**
@ -562,10 +700,20 @@ class Message extends Base {
*/
async star() {
await this.client.pupPage.evaluate(async (msgId) &#x3D;&gt; {
const msg &#x3D; window.Store.Msg.get(msgId) || (await window.Store.Msg.getMessagesById([msgId]))?.messages?.[0];
if (window.Store.MsgActionChecks.canStarMsg(msg)) {
let chat &#x3D; await window.Store.Chat.find(msg.id.remote);
return window.Store.Cmd.sendStarMsgs(chat, [msg], false);
const msg &#x3D;
window.require(&#x27;WAWebCollections&#x27;).Msg.get(msgId) ||
(
await window
.require(&#x27;WAWebCollections&#x27;)
.Msg.getMessagesById([msgId])
)?.messages?.[0];
if (window.require(&#x27;WAWebMsgActionCapability&#x27;).canStarMsg(msg)) {
let chat &#x3D; await window
.require(&#x27;WAWebCollections&#x27;)
.Chat.find(msg.id.remote);
return window
.require(&#x27;WAWebCmd&#x27;)
.Cmd.sendStarMsgs(chat, [msg], false);
}
}, this.id._serialized);
}
@ -575,10 +723,20 @@ class Message extends Base {
*/
async unstar() {
await this.client.pupPage.evaluate(async (msgId) &#x3D;&gt; {
const msg &#x3D; window.Store.Msg.get(msgId) || (await window.Store.Msg.getMessagesById([msgId]))?.messages?.[0];
if (window.Store.MsgActionChecks.canStarMsg(msg)) {
let chat &#x3D; await window.Store.Chat.find(msg.id.remote);
return window.Store.Cmd.sendUnstarMsgs(chat, [msg], false);
const msg &#x3D;
window.require(&#x27;WAWebCollections&#x27;).Msg.get(msgId) ||
(
await window
.require(&#x27;WAWebCollections&#x27;)
.Msg.getMessagesById([msgId])
)?.messages?.[0];
if (window.require(&#x27;WAWebMsgActionCapability&#x27;).canStarMsg(msg)) {
let chat &#x3D; await window
.require(&#x27;WAWebCollections&#x27;)
.Chat.find(msg.id.remote);
return window
.require(&#x27;WAWebCmd&#x27;)
.Cmd.sendUnstarMsgs(chat, [msg], false);
}
}, this.id._serialized);
}
@ -589,9 +747,17 @@ class Message extends Base {
* @returns {Promise&amp;lt;boolean&gt;} Returns true if the operation completed successfully, false otherwise
*/
async pin(duration) {
return await this.client.pupPage.evaluate(async (msgId, duration) &#x3D;&gt; {
return await window.WWebJS.pinUnpinMsgAction(msgId, 1, duration);
}, this.id._serialized, duration);
return await this.client.pupPage.evaluate(
async (msgId, duration) &#x3D;&gt; {
return await window.WWebJS.pinUnpinMsgAction(
msgId,
1,
duration,
);
},
this.id._serialized,
duration,
);
}
/**
@ -622,13 +788,28 @@ class Message extends Base {
*/
async getInfo() {
const info &#x3D; await this.client.pupPage.evaluate(async (msgId) &#x3D;&gt; {
const msg &#x3D; window.Store.Msg.get(msgId) || (await window.Store.Msg.getMessagesById([msgId]))?.messages?.[0];
const msg &#x3D;
window.require(&#x27;WAWebCollections&#x27;).Msg.get(msgId) ||
(
await window
.require(&#x27;WAWebCollections&#x27;)
.Msg.getMessagesById([msgId])
)?.messages?.[0];
if (!msg || !msg.id.fromMe) return null;
return new Promise((resolve) &#x3D;&gt; {
setTimeout(async () &#x3D;&gt; {
resolve(await window.Store.getMsgInfo(msg.id));
}, (Date.now() - msg.t * 1000 &amp;lt; 1250) &amp;amp;&amp;amp; Math.floor(Math.random() * (1200 - 1100 + 1)) + 1100 || 0);
setTimeout(
async () &#x3D;&gt; {
resolve(
await window
.require(&#x27;WAWebApiMessageInfoStore&#x27;)
.queryMsgInfo(msg.id),
);
},
(Date.now() - msg.t * 1000 &amp;lt; 1250 &amp;amp;&amp;amp;
Math.floor(Math.random() * (1200 - 1100 + 1)) + 1100) ||
0,
);
});
}, this.id._serialized);
@ -641,14 +822,20 @@ class Message extends Base {
*/
async getOrder() {
if (this.type &#x3D;&#x3D;&#x3D; MessageTypes.ORDER) {
const result &#x3D; await this.client.pupPage.evaluate((orderId, token, chatId) &#x3D;&gt; {
const result &#x3D; await this.client.pupPage.evaluate(
(orderId, token, chatId) &#x3D;&gt; {
return window.WWebJS.getOrderDetail(orderId, token, chatId);
}, this.orderId, this.token, this._getChatId());
},
this.orderId,
this.token,
this._getChatId(),
);
if (!result) return undefined;
return new Order(this.client, result);
}
return undefined;
}
/**
* Gets the payment details associated with a given message
* @return {Promise&amp;lt;Payment&gt;}
@ -656,7 +843,13 @@ class Message extends Base {
async getPayment() {
if (this.type &#x3D;&#x3D;&#x3D; MessageTypes.PAYMENT) {
const msg &#x3D; await this.client.pupPage.evaluate(async (msgId) &#x3D;&gt; {
const msg &#x3D; window.Store.Msg.get(msgId) || (await window.Store.Msg.getMessagesById([msgId]))?.messages?.[0];
const msg &#x3D;
window.require(&#x27;WAWebCollections&#x27;).Msg.get(msgId) ||
(
await window
.require(&#x27;WAWebCollections&#x27;)
.Msg.getMessagesById([msgId])
)?.messages?.[0];
if (!msg) return null;
return msg.serialize();
}, this.id._serialized);
@ -665,7 +858,6 @@ class Message extends Base {
return undefined;
}
/**
* Reaction List
* @typedef {Object} ReactionList
@ -685,7 +877,9 @@ class Message extends Base {
}
const reactions &#x3D; await this.client.pupPage.evaluate(async (msgId) &#x3D;&gt; {
const msgReactions &#x3D; await window.Store.Reactions.find(msgId);
const msgReactions &#x3D; await window
.require(&#x27;WAWebCollections&#x27;)
.Reactions.find(msgId);
if (!msgReactions || !msgReactions.reactions.length) return null;
return msgReactions.reactions.serialize();
}, this.id._serialized);
@ -694,8 +888,8 @@ class Message extends Base {
return undefined;
}
return reactions.map(reaction &#x3D;&gt; {
reaction.senders &#x3D; reaction.senders.map(sender &#x3D;&gt; {
return reactions.map((reaction) &#x3D;&gt; {
reaction.senders &#x3D; reaction.senders.map((sender) &#x3D;&gt; {
sender.timestamp &#x3D; Math.round(sender.timestamp / 1000);
return new Reaction(this.client, sender);
});
@ -711,36 +905,68 @@ class Message extends Base {
*/
async edit(content, options &#x3D; {}) {
if (options.mentions) {
!Array.isArray(options.mentions) &amp;amp;&amp;amp; (options.mentions &#x3D; [options.mentions]);
if (options.mentions.some((possiblyContact) &#x3D;&gt; possiblyContact instanceof Contact)) {
console.warn(&#x27;Mentions with an array of Contact are now deprecated. See more at https://github.com/pedroslopez/whatsapp-web.js/pull/2166.&#x27;);
options.mentions &#x3D; options.mentions.map((a) &#x3D;&gt; a.id._serialized);
!Array.isArray(options.mentions) &amp;amp;&amp;amp;
(options.mentions &#x3D; [options.mentions]);
if (
options.mentions.some(
(possiblyContact) &#x3D;&gt; possiblyContact instanceof Contact,
)
) {
console.warn(
&#x27;Mentions with an array of Contact are now deprecated. See more at https://github.com/wwebjs/whatsapp-web.js/pull/2166.&#x27;,
);
options.mentions &#x3D; options.mentions.map(
(a) &#x3D;&gt; a.id._serialized,
);
}
}
options.groupMentions &amp;amp;&amp;amp; !Array.isArray(options.groupMentions) &amp;amp;&amp;amp; (options.groupMentions &#x3D; [options.groupMentions]);
options.groupMentions &amp;amp;&amp;amp;
!Array.isArray(options.groupMentions) &amp;amp;&amp;amp;
(options.groupMentions &#x3D; [options.groupMentions]);
let internalOptions &#x3D; {
linkPreview: options.linkPreview &#x3D;&#x3D;&#x3D; false ? undefined : true,
mentionedJidList: options.mentions || [],
groupMentions: options.groupMentions,
extraOptions: options.extra
extraOptions: options.extra,
};
if (!this.fromMe) {
return null;
}
const messageEdit &#x3D; await this.client.pupPage.evaluate(async (msgId, message, options) &#x3D;&gt; {
const msg &#x3D; window.Store.Msg.get(msgId) || (await window.Store.Msg.getMessagesById([msgId]))?.messages?.[0];
const messageEdit &#x3D; await this.client.pupPage.evaluate(
async (msgId, message, options) &#x3D;&gt; {
const msg &#x3D;
window.require(&#x27;WAWebCollections&#x27;).Msg.get(msgId) ||
(
await window
.require(&#x27;WAWebCollections&#x27;)
.Msg.getMessagesById([msgId])
)?.messages?.[0];
if (!msg) return null;
let canEdit &#x3D; window.Store.MsgActionChecks.canEditText(msg) || window.Store.MsgActionChecks.canEditCaption(msg);
let canEdit &#x3D;
window
.require(&#x27;WAWebMsgActionCapability&#x27;)
.canEditText(msg) ||
window
.require(&#x27;WAWebMsgActionCapability&#x27;)
.canEditCaption(msg);
if (canEdit) {
const msgEdit &#x3D; await window.WWebJS.editMessage(msg, message, options);
const msgEdit &#x3D; await window.WWebJS.editMessage(
msg,
message,
options,
);
return msgEdit.serialize();
}
return null;
}, this.id._serialized, content, internalOptions);
},
this.id._serialized,
content,
internalOptions,
);
if (messageEdit) {
return new Message(this.client, messageEdit);
}
@ -758,11 +984,19 @@ class Message extends Base {
return null;
}
const edittedEventMsg &#x3D; await this.client.pupPage.evaluate(async (msgId, editedEventObject) &#x3D;&gt; {
const msg &#x3D; window.Store.Msg.get(msgId) || (await window.Store.Msg.getMessagesById([msgId]))?.messages?.[0];
const edittedEventMsg &#x3D; await this.client.pupPage.evaluate(
async (msgId, editedEventObject) &#x3D;&gt; {
const msg &#x3D;
window.require(&#x27;WAWebCollections&#x27;).Msg.get(msgId) ||
(
await window
.require(&#x27;WAWebCollections&#x27;)
.Msg.getMessagesById([msgId])
)?.messages?.[0];
if (!msg) return null;
const { name, startTimeTs, eventSendOptions } &#x3D; editedEventObject;
const { name, startTimeTs, eventSendOptions } &#x3D;
editedEventObject;
const eventOptions &#x3D; {
name: name,
description: eventSendOptions.description,
@ -773,13 +1007,21 @@ class Message extends Base {
isEventCanceled: eventSendOptions.isEventCanceled,
};
await window.Store.ScheduledEventMsgUtils.sendEventEditMessage(eventOptions, msg);
const editedMsg &#x3D; window.Store.Msg.get(msg.id._serialized);
await window
.require(&#x27;WAWebSendEventEditMsgAction&#x27;)
.sendEventEditMessage(eventOptions, msg);
const editedMsg &#x3D; window
.require(&#x27;WAWebCollections&#x27;)
.Msg.get(msg.id._serialized);
return editedMsg?.serialize();
}, this.id._serialized, editedEventObject);
},
this.id._serialized,
editedEventObject,
);
return edittedEventMsg &amp;amp;&amp;amp; new Message(this.client, edittedEventMsg);
}
/**
* Returns the PollVote this poll message
* @returns {Promise&amp;lt;PollVote[]&gt;}
@ -794,24 +1036,36 @@ class Message extends Base {
* @returns {Promise}
*/
async vote(selectedOptions) {
if (this.type !&#x3D; MessageTypes.POLL_CREATION) throw &#x27;Invalid usage! Can only be used with a pollCreation message&#x27;;
if (this.type !&#x3D; MessageTypes.POLL_CREATION)
throw &#x27;Invalid usage! Can only be used with a pollCreation message&#x27;;
await this.client.pupPage.evaluate(async (messageId, votes) &#x3D;&gt; {
await this.client.pupPage.evaluate(
async (messageId, votes) &#x3D;&gt; {
if (!messageId) return null;
if (!Array.isArray(votes)) votes &#x3D; [votes];
let localIdSet &#x3D; new Set();
const msg &#x3D;
window.Store.Msg.get(messageId) || (await window.Store.Msg.getMessagesById([messageId]))?.messages?.[0];
window.require(&#x27;WAWebCollections&#x27;).Msg.get(messageId) ||
(
await window
.require(&#x27;WAWebCollections&#x27;)
.Msg.getMessagesById([messageId])
)?.messages?.[0];
if (!msg) return null;
msg.pollOptions.forEach(a &#x3D;&gt; {
msg.pollOptions.forEach((a) &#x3D;&gt; {
for (const option of votes) {
if (a.name &#x3D;&#x3D;&#x3D; option) localIdSet.add(a.localId);
}
});
await window.Store.PollsSendVote.sendVote(msg, localIdSet);
}, this.id._serialized, selectedOptions);
await window
.require(&#x27;WAWebPollsSendVoteMsgAction&#x27;)
.sendVote(msg, localIdSet);
},
this.id._serialized,
selectedOptions,
);
}
}
@ -826,7 +1080,7 @@ module.exports &#x3D; Message;
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Source: structures/MessageMedia.js</title>
<title>whatsapp-web.js 1.34.7 &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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -100,16 +100,25 @@ class MessageMedia {
let mimetype &#x3D; mime.getType(pUrl.pathname);
if (!mimetype &amp;amp;&amp;amp; !options.unsafeMime)
throw new Error(&#x27;Unable to determine MIME type using URL. Set unsafeMime to true to download it anyway.&#x27;);
throw new Error(
&#x27;Unable to determine MIME type using URL. Set unsafeMime to true to download it anyway.&#x27;,
);
async function fetchData(url, options) {
const reqOptions &#x3D; Object.assign({ headers: { accept: &#x27;image/* video/* text/* audio/*&#x27; } }, options);
const reqOptions &#x3D; Object.assign(
{ headers: { accept: &#x27;image/* video/* text/* audio/*&#x27; } },
options,
);
const response &#x3D; await fetch(url, reqOptions);
const mime &#x3D; response.headers.get(&#x27;Content-Type&#x27;);
const size &#x3D; response.headers.get(&#x27;Content-Length&#x27;);
const contentDisposition &#x3D; response.headers.get(&#x27;Content-Disposition&#x27;);
const name &#x3D; contentDisposition ? contentDisposition.match(/((?&amp;lt;&#x3D;filename&#x3D;&quot;)(.*)(?&#x3D;&quot;))/) : null;
const contentDisposition &#x3D; response.headers.get(
&#x27;Content-Disposition&#x27;,
);
const name &#x3D; contentDisposition
? contentDisposition.match(/((?&amp;lt;&#x3D;filename&#x3D;&quot;)(.*)(?&#x3D;&quot;))/)
: null;
let data &#x3D; &#x27;&#x27;;
if (response.buffer) {
@ -126,14 +135,18 @@ class MessageMedia {
}
const res &#x3D; options.client
? (await options.client.pupPage.evaluate(fetchData, url, options.reqOptions))
: (await fetchData(url, options.reqOptions));
? await options.client.pupPage.evaluate(
fetchData,
url,
options.reqOptions,
)
: await fetchData(url, options.reqOptions);
const filename &#x3D; options.filename ||
(res.name ? res.name[0] : (pUrl.pathname.split(&#x27;/&#x27;).pop() || &#x27;file&#x27;));
const filename &#x3D;
options.filename ||
(res.name ? res.name[0] : pUrl.pathname.split(&#x27;/&#x27;).pop() || &#x27;file&#x27;);
if (!mimetype)
mimetype &#x3D; res.mime;
if (!mimetype) mimetype &#x3D; res.mime;
return new MessageMedia(mimetype, res.data, filename, res.size || null);
}
@ -150,7 +163,7 @@ module.exports &#x3D; MessageMedia;
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Source: structures/Order.js</title>
<title>whatsapp-web.js 1.34.7 &raquo; Source: structures/Order.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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -51,7 +51,9 @@ class Order extends Base {
* @type {Array&amp;lt;Product&gt;}
*/
if (data.products) {
this.products &#x3D; data.products.map(product &#x3D;&gt; new Product(this.client, product));
this.products &#x3D; data.products.map(
(product) &#x3D;&gt; new Product(this.client, product),
);
}
/**
* Order Subtotal
@ -76,11 +78,10 @@ class Order extends Base {
return super._patch(data);
}
}
module.exports &#x3D; Order;</code></pre>
module.exports &#x3D; Order;
</code></pre>
</article>
</div>
</div>
@ -90,7 +91,7 @@ module.exports &#x3D; Order;</code></pre>
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Source: structures/Payment.js</title>
<title>whatsapp-web.js 1.34.7 &raquo; Source: structures/Payment.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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -100,11 +100,14 @@ class Payment extends Base {
* The note sent with the payment
* @type {string}
*/
this.paymentNote &#x3D; !data.paymentNoteMsg ? undefined : data.paymentNoteMsg.body ? data.paymentNoteMsg.body : undefined ;
this.paymentNote &#x3D; !data.paymentNoteMsg
? undefined
: data.paymentNoteMsg.body
? data.paymentNoteMsg.body
: undefined;
return super._patch(data);
}
}
module.exports &#x3D; Payment;
@ -118,7 +121,7 @@ module.exports &#x3D; Payment;
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Source: structures/Poll.js</title>
<title>whatsapp-web.js 1.34.7 &raquo; Source: structures/Poll.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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -58,7 +58,7 @@ class Poll {
*/
this.pollOptions &#x3D; pollOptions.map((option, index) &#x3D;&gt; ({
name: option.trim(),
localId: index
localId: index,
}));
/**
@ -67,7 +67,7 @@ class Poll {
*/
this.options &#x3D; {
allowMultipleAnswers: options.allowMultipleAnswers &#x3D;&#x3D;&#x3D; true,
messageSecret: options.messageSecret
messageSecret: options.messageSecret,
};
}
}
@ -83,7 +83,7 @@ module.exports &#x3D; Poll;
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Source: structures/PollVote.js</title>
<title>whatsapp-web.js 1.34.7 &raquo; Source: structures/PollVote.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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -66,15 +66,18 @@ class PollVote extends Base {
* @type {SelectedPollOption[]}
*/
if (data.selectedOptionLocalIds.length &gt; 0) {
if(data.parentMessage) { // temporary failsafe
if (data.parentMessage) {
// temporary failsafe
this.selectedOptions &#x3D; data.selectedOptionLocalIds.map((e) &#x3D;&gt; ({
name: data.parentMessage.pollOptions.find((x) &#x3D;&gt; x.localId &#x3D;&#x3D;&#x3D; e).name,
localId: e
name: data.parentMessage.pollOptions.find(
(x) &#x3D;&gt; x.localId &#x3D;&#x3D;&#x3D; e,
).name,
localId: e,
}));
} else {
this.selectedOptions &#x3D; data.selectedOptionLocalIds.map((e) &#x3D;&gt; ({
name: undefined,
localId: e
localId: e,
}));
}
} else {
@ -114,7 +117,7 @@ module.exports &#x3D; PollVote;
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Source: structures/PrivateChat.js</title>
<title>whatsapp-web.js 1.34.7 &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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -37,11 +37,10 @@ const Chat &#x3D; require(&#x27;./Chat&#x27;);
* Represents a Private Chat on WhatsApp
* @extends {Chat}
*/
class PrivateChat extends Chat {
class PrivateChat extends Chat {}
}
module.exports &#x3D; PrivateChat;</code></pre>
module.exports &#x3D; PrivateChat;
</code></pre>
</article>
</div>
</div>
@ -51,7 +50,7 @@ module.exports &#x3D; PrivateChat;</code></pre>
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Source: structures/PrivateContact.js</title>
<title>whatsapp-web.js 1.34.7 &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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -37,11 +37,10 @@ const Contact &#x3D; require(&#x27;./Contact&#x27;);
* Represents a Private Contact on WhatsApp
* @extends {Contact}
*/
class PrivateContact extends Contact {
class PrivateContact extends Contact {}
}
module.exports &#x3D; PrivateContact;</code></pre>
module.exports &#x3D; PrivateContact;
</code></pre>
</article>
</div>
</div>
@ -51,7 +50,7 @@ module.exports &#x3D; PrivateContact;</code></pre>
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Source: structures/Product.js</title>
<title>whatsapp-web.js 1.34.7 &raquo; Source: structures/Product.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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -96,7 +96,8 @@ class Product extends Base {
}
}
module.exports &#x3D; Product;</code></pre>
module.exports &#x3D; Product;
</code></pre>
</article>
</div>
</div>
@ -106,7 +107,7 @@ module.exports &#x3D; Product;</code></pre>
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Source: structures/ProductMetadata.js</title>
<title>whatsapp-web.js 1.34.7 &raquo; Source: structures/ProductMetadata.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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -50,10 +50,10 @@ class ProductMetadata extends Base {
return super._patch(data);
}
}
module.exports &#x3D; ProductMetadata;</code></pre>
module.exports &#x3D; ProductMetadata;
</code></pre>
</article>
</div>
</div>
@ -63,7 +63,7 @@ module.exports &#x3D; ProductMetadata;</code></pre>
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Source: structures/Reaction.js</title>
<title>whatsapp-web.js 1.34.7 &raquo; Source: structures/Reaction.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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -91,13 +91,12 @@ class Reaction extends Base {
*/
this.ack &#x3D; data.ack;
return super._patch(data);
}
}
module.exports &#x3D; Reaction;</code></pre>
module.exports &#x3D; Reaction;
</code></pre>
</article>
</div>
</div>
@ -107,7 +106,7 @@ module.exports &#x3D; Reaction;</code></pre>
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Source: structures/ScheduledEvent.js</title>
<title>whatsapp-web.js 1.34.7 &raquo; Source: structures/ScheduledEvent.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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -68,11 +68,13 @@ class ScheduledEvent {
*/
this.eventSendOptions &#x3D; {
description: options.description?.trim(),
endTimeTs: options.endTime ? Math.floor(options.endTime.getTime() / 1000) : null,
endTimeTs: options.endTime
? Math.floor(options.endTime.getTime() / 1000)
: null,
location: options.location?.trim(),
callType: this._validateInputs(&#x27;callType&#x27;, options.callType),
isEventCanceled: options.isEventCanceled ?? false,
messageSecret: options.messageSecret
messageSecret: options.messageSecret,
};
}
@ -84,15 +86,25 @@ class ScheduledEvent {
*/
_validateInputs(propName, propValue) {
if (propName &#x3D;&#x3D;&#x3D; &#x27;name&#x27; &amp;amp;&amp;amp; !propValue) {
throw new class CreateScheduledEventError extends Error {
constructor(m) { super(m); }
}(&#x60;Empty &#x27;${propName}&#x27; parameter value is provided.&#x60;);
throw new (class CreateScheduledEventError extends Error {
constructor(m) {
super(m);
}
})(&#x60;Empty &#x27;${propName}&#x27; parameter value is provided.&#x60;);
}
if (propName &#x3D;&#x3D;&#x3D; &#x27;callType&#x27; &amp;amp;&amp;amp; propValue &amp;amp;&amp;amp; ![&#x27;video&#x27;, &#x27;voice&#x27;, &#x27;none&#x27;].includes(propValue)) {
throw new class CreateScheduledEventError extends Error {
constructor(m) { super(m); }
}(&#x60;Invalid &#x27;${propName}&#x27; parameter value is provided. Valid values are: &#x27;voice&#x27; | &#x27;video&#x27; | &#x27;none&#x27;.&#x60;);
if (
propName &#x3D;&#x3D;&#x3D; &#x27;callType&#x27; &amp;amp;&amp;amp;
propValue &amp;amp;&amp;amp;
![&#x27;video&#x27;, &#x27;voice&#x27;, &#x27;none&#x27;].includes(propValue)
) {
throw new (class CreateScheduledEventError extends Error {
constructor(m) {
super(m);
}
})(
&#x60;Invalid &#x27;${propName}&#x27; parameter value is provided. Valid values are: &#x27;voice&#x27; | &#x27;video&#x27; | &#x27;none&#x27;.&#x60;,
);
}
return propValue;
@ -110,7 +122,7 @@ module.exports &#x3D; ScheduledEvent;
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Source: util/Constants.js</title>
<title>whatsapp-web.js 1.34.7 &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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -36,7 +36,7 @@ exports.WhatsWebURL &#x3D; &#x27;https://web.whatsapp.com/&#x27;;
exports.DefaultOptions &#x3D; {
puppeteer: {
headless: true,
defaultViewport: null
defaultViewport: null,
},
webVersion: &#x27;2.3000.1017054665&#x27;,
webVersionCache: {
@ -46,7 +46,8 @@ exports.DefaultOptions &#x3D; {
qrMaxRetries: 0,
takeoverOnConflict: false,
takeoverTimeoutMs: 0,
userAgent: &#x27;Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.67 Safari/537.36&#x27;,
userAgent:
&#x27;Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.67 Safari/537.36&#x27;,
ffmpegPath: &#x27;ffmpeg&#x27;,
bypassCSP: false,
proxyAuthentication: undefined,
@ -65,7 +66,7 @@ exports.DefaultOptions &#x3D; {
exports.Status &#x3D; {
INITIALIZING: 0,
AUTHENTICATING: 1,
READY: 3
READY: 3,
};
/**
@ -81,6 +82,7 @@ exports.Events &#x3D; {
CHAT_ARCHIVED: &#x27;chat_archived&#x27;,
MESSAGE_RECEIVED: &#x27;message&#x27;,
MESSAGE_CIPHERTEXT: &#x27;message_ciphertext&#x27;,
MESSAGE_CIPHERTEXT_FAILED: &#x27;message_ciphertext_failed&#x27;,
MESSAGE_CREATE: &#x27;message_create&#x27;,
MESSAGE_REVOKED_EVERYONE: &#x27;message_revoke_everyone&#x27;,
MESSAGE_REVOKED_ME: &#x27;message_revoke_me&#x27;,
@ -103,7 +105,7 @@ exports.Events &#x3D; {
BATTERY_CHANGED: &#x27;change_battery&#x27;,
INCOMING_CALL: &#x27;call&#x27;,
REMOTE_SESSION_SAVED: &#x27;remote_session_saved&#x27;,
VOTE_UPDATE: &#x27;vote_update&#x27;
VOTE_UPDATE: &#x27;vote_update&#x27;,
};
/**
@ -179,7 +181,7 @@ exports.GroupNotificationTypes &#x3D; {
exports.ChatTypes &#x3D; {
SOLO: &#x27;solo&#x27;,
GROUP: &#x27;group&#x27;,
UNKNOWN: &#x27;unknown&#x27;
UNKNOWN: &#x27;unknown&#x27;,
};
/**
@ -199,7 +201,7 @@ exports.WAState &#x3D; {
TOS_BLOCK: &#x27;TOS_BLOCK&#x27;,
UNLAUNCHED: &#x27;UNLAUNCHED&#x27;,
UNPAIRED: &#x27;UNPAIRED&#x27;,
UNPAIRED_IDLE: &#x27;UNPAIRED_IDLE&#x27;
UNPAIRED_IDLE: &#x27;UNPAIRED_IDLE&#x27;,
};
/**
@ -225,7 +227,7 @@ exports.MessageAck &#x3D; {
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

File diff suppressed because it is too large Load diff

View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Source: util/InterfaceController.js</title>
<title>whatsapp-web.js 1.34.7 &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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -35,7 +35,6 @@
* Interface Controller
*/
class InterfaceController {
constructor(props) {
this.pupPage &#x3D; props.pupPage;
}
@ -46,8 +45,12 @@ class InterfaceController {
*/
async openChatWindow(chatId) {
return await this.pupPage.evaluate(async (chatId) &#x3D;&gt; {
const chat &#x3D; await window.WWebJS.getChat(chatId, { getAsModel: false });
return await window.Store.Cmd.openChatBottom({&#x27;chat&#x27;:chat});
const chat &#x3D; await window.WWebJS.getChat(chatId, {
getAsModel: false,
});
return await window
.require(&#x27;WAWebCmd&#x27;)
.Cmd.openChatBottom({ chat: chat });
}, chatId);
}
@ -56,9 +59,11 @@ class InterfaceController {
* @param {string} chatId ID of the chat drawer that will be opened
*/
async openChatDrawer(chatId) {
await this.pupPage.evaluate(async chatId &#x3D;&gt; {
let chat &#x3D; await window.WWebJS.getChat(chatId, { getAsModel: false });
await window.Store.Cmd.openDrawerMid(chat);
await this.pupPage.evaluate(async (chatId) &#x3D;&gt; {
let chat &#x3D; await window.WWebJS.getChat(chatId, {
getAsModel: false,
});
await window.require(&#x27;WAWebCmd&#x27;).Cmd.openDrawerMid(chat);
}, chatId);
}
@ -67,9 +72,11 @@ class InterfaceController {
* @param {string} chatId ID of the chat search that will be opened
*/
async openChatSearch(chatId) {
await this.pupPage.evaluate(async chatId &#x3D;&gt; {
let chat &#x3D; await window.WWebJS.getChat(chatId, { getAsModel: false });
await window.Store.Cmd.chatSearch(chat);
await this.pupPage.evaluate(async (chatId) &#x3D;&gt; {
let chat &#x3D; await window.WWebJS.getChat(chatId, {
getAsModel: false,
});
await window.require(&#x27;WAWebCmd&#x27;).Cmd.chatSearch(chat);
}, chatId);
}
@ -79,10 +86,24 @@ class InterfaceController {
*/
async openChatWindowAt(msgId) {
await this.pupPage.evaluate(async (msgId) &#x3D;&gt; {
const msg &#x3D; window.Store.Msg.get(msgId) || (await window.Store.Msg.getMessagesById([msgId]))?.messages?.[0];
const chat &#x3D; window.Store.Chat.get(msg.id.remote) ?? await window.Store.Chat.find(msg.id.remote);
const searchContext &#x3D; await window.Store.SearchContext.getSearchContext(chat, msg.id);
await window.Store.Cmd.openChatAt({ chat: chat, msgContext: searchContext });
const msg &#x3D;
window.require(&#x27;WAWebCollections&#x27;).Msg.get(msgId) ||
(
await window
.require(&#x27;WAWebCollections&#x27;)
.Msg.getMessagesById([msgId])
)?.messages?.[0];
const chat &#x3D;
window.require(&#x27;WAWebCollections&#x27;).Chat.get(msg.id.remote) ??
(await window
.require(&#x27;WAWebCollections&#x27;)
.Chat.find(msg.id.remote));
const searchContext &#x3D; await window
.require(&#x27;WAWebChatMessageSearch&#x27;)
.getSearchContext(chat, msg.id);
await window
.require(&#x27;WAWebCmd&#x27;)
.Cmd.openChatAt({ chat: chat, msgContext: searchContext });
}, msgId);
}
@ -91,9 +112,15 @@ class InterfaceController {
* @param {string} msgId ID of the message drawer that will be opened
*/
async openMessageDrawer(msgId) {
await this.pupPage.evaluate(async msgId &#x3D;&gt; {
const msg &#x3D; window.Store.Msg.get(msgId) || (await window.Store.Msg.getMessagesById([msgId]))?.messages?.[0];
await window.Store.Cmd.msgInfoDrawer(msg);
await this.pupPage.evaluate(async (msgId) &#x3D;&gt; {
const msg &#x3D;
window.require(&#x27;WAWebCollections&#x27;).Msg.get(msgId) ||
(
await window
.require(&#x27;WAWebCollections&#x27;)
.Msg.getMessagesById([msgId])
)?.messages?.[0];
await window.require(&#x27;WAWebCmd&#x27;).Cmd.msgInfoDrawer(msg);
}, msgId);
}
@ -102,7 +129,9 @@ class InterfaceController {
*/
async closeRightDrawer() {
await this.pupPage.evaluate(async () &#x3D;&gt; {
await window.Store.DrawerManager.closeDrawerRight();
await window
.require(&#x27;WAWebDrawerManager&#x27;)
.DrawerManager.closeDrawerRight();
});
}
@ -111,8 +140,11 @@ class InterfaceController {
*/
async getFeatures() {
return await this.pupPage.evaluate(() &#x3D;&gt; {
if(!window.Store.Features) throw new Error(&#x27;This version of Whatsapp Web does not support features&#x27;);
return window.Store.Features.F;
if (!window.require(&#x27;WAWebCollections&#x27;).Features)
throw new Error(
&#x27;This version of Whatsapp Web does not support features&#x27;,
);
return window.require(&#x27;WAWebCollections&#x27;).Features.F;
});
}
@ -122,8 +154,13 @@ class InterfaceController {
*/
async checkFeatureStatus(feature) {
return await this.pupPage.evaluate((feature) &#x3D;&gt; {
if(!window.Store.Features) throw new Error(&#x27;This version of Whatsapp Web does not support features&#x27;);
return window.Store.Features.supportsFeature(feature);
if (!window.require(&#x27;WAWebCollections&#x27;).Features)
throw new Error(
&#x27;This version of Whatsapp Web does not support features&#x27;,
);
return window
.require(&#x27;WAWebCollections&#x27;)
.Features.supportsFeature(feature);
}, feature);
}
@ -133,9 +170,14 @@ class InterfaceController {
*/
async enableFeatures(features) {
await this.pupPage.evaluate((features) &#x3D;&gt; {
if(!window.Store.Features) throw new Error(&#x27;This version of Whatsapp Web does not support features&#x27;);
if (!window.require(&#x27;WAWebCollections&#x27;).Features)
throw new Error(
&#x27;This version of Whatsapp Web does not support features&#x27;,
);
for (const feature in features) {
window.Store.Features.setFeature(features[feature], true);
window
.require(&#x27;WAWebCollections&#x27;)
.Features.setFeature(features[feature], true);
}
}, features);
}
@ -146,9 +188,14 @@ class InterfaceController {
*/
async disableFeatures(features) {
await this.pupPage.evaluate((features) &#x3D;&gt; {
if(!window.Store.Features) throw new Error(&#x27;This version of Whatsapp Web does not support features&#x27;);
if (!window.require(&#x27;WAWebCollections&#x27;).Features)
throw new Error(
&#x27;This version of Whatsapp Web does not support features&#x27;,
);
for (const feature in features) {
window.Store.Features.setFeature(features[feature], false);
window
.require(&#x27;WAWebCollections&#x27;)
.Features.setFeature(features[feature], false);
}
}, features);
}
@ -165,7 +212,7 @@ module.exports &#x3D; InterfaceController;
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Source: util/Puppeteer.js</title>
<title>whatsapp-web.js 1.34.7 &raquo; Source: util/Puppeteer.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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -62,7 +62,7 @@ module.exports &#x3D; {exposeFunctionIfAbsent};
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

39
docs/util_Util.js.html generated
View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Source: util/Util.js</title>
<title>whatsapp-web.js 1.34.7 &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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -44,15 +44,20 @@ const has &#x3D; (o, k) &#x3D;&gt; Object.prototype.hasOwnProperty.call(o, k);
*/
class Util {
constructor() {
throw new Error(&#x60;The ${this.constructor.name} class may not be instantiated.&#x60;);
throw new Error(
&#x60;The ${this.constructor.name} class may not be instantiated.&#x60;,
);
}
static generateHash(length) {
var result &#x3D; &#x27;&#x27;;
var characters &#x3D; &#x27;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789&#x27;;
var characters &#x3D;
&#x27;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789&#x27;;
var charactersLength &#x3D; characters.length;
for (var i &#x3D; 0; i &amp;lt; length; i++) {
result +&#x3D; characters.charAt(Math.floor(Math.random() * charactersLength));
result +&#x3D; characters.charAt(
Math.floor(Math.random() * charactersLength),
);
}
return result;
}
@ -110,13 +115,13 @@ class Util {
const tempFile &#x3D; path.join(
tmpdir(),
&#x60;${Crypto.randomBytes(6).readUIntLE(0, 6).toString(36)}.webp&#x60;
&#x60;${Crypto.randomBytes(6).readUIntLE(0, 6).toString(36)}.webp&#x60;,
);
const stream &#x3D; new (require(&#x27;stream&#x27;).Readable)();
const buffer &#x3D; Buffer.from(
media.data.replace(&#x60;data:${media.mimetype};base64,&#x60;, &#x27;&#x27;),
&#x27;base64&#x27;
&#x27;base64&#x27;,
);
stream.push(buffer);
stream.push(null);
@ -131,7 +136,7 @@ class Util {
&#x27;libwebp&#x27;,
&#x27;-vf&#x27;,
// eslint-disable-next-line no-useless-escape
&#x27;scale&#x3D;\&#x27;iw*min(300/iw\,300/ih)\&#x27;:\&#x27;ih*min(300/iw\,300/ih)\&#x27;,format&#x3D;rgba,pad&#x3D;300:300:\&#x27;(300-iw)/2\&#x27;:\&#x27;(300-ih)/2\&#x27;:\&#x27;#00000000\&#x27;,setsar&#x3D;1,fps&#x3D;10&#x27;,
&quot;scale&#x3D;&#x27;iw*min(300/iw\,300/ih)&#x27;:&#x27;ih*min(300/iw\,300/ih)&#x27;,format&#x3D;rgba,pad&#x3D;300:300:&#x27;(300-iw)/2&#x27;:&#x27;(300-ih)/2&#x27;:&#x27;#00000000&#x27;,setsar&#x3D;1,fps&#x3D;10&quot;,
&#x27;-loop&#x27;,
&#x27;0&#x27;,
&#x27;-ss&#x27;,
@ -182,8 +187,7 @@ class Util {
webpMedia &#x3D; await this.formatImageToWebpSticker(media, pupPage);
else if (media.mimetype.includes(&#x27;video&#x27;))
webpMedia &#x3D; await this.formatVideoToWebpSticker(media);
else
throw new Error(&#x27;Invalid media format&#x27;);
else throw new Error(&#x27;Invalid media format&#x27;);
if (metadata.name || metadata.author) {
const img &#x3D; new webp.Image();
@ -192,8 +196,17 @@ class Util {
const packname &#x3D; metadata.name;
const author &#x3D; metadata.author;
const categories &#x3D; metadata.categories || [&#x27;&#x27;];
const json &#x3D; { &#x27;sticker-pack-id&#x27;: stickerPackId, &#x27;sticker-pack-name&#x27;: packname, &#x27;sticker-pack-publisher&#x27;: author, &#x27;emojis&#x27;: categories };
let exifAttr &#x3D; Buffer.from([0x49, 0x49, 0x2A, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x41, 0x57, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00]);
const json &#x3D; {
&#x27;sticker-pack-id&#x27;: stickerPackId,
&#x27;sticker-pack-name&#x27;: packname,
&#x27;sticker-pack-publisher&#x27;: author,
emojis: categories,
};
let exifAttr &#x3D; Buffer.from([
0x49, 0x49, 0x2a, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00,
0x41, 0x57, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00,
0x00, 0x00,
]);
let jsonBuffer &#x3D; Buffer.from(JSON.stringify(json), &#x27;utf8&#x27;);
let exif &#x3D; Buffer.concat([exifAttr, jsonBuffer]);
exif.writeUIntLE(jsonBuffer.length, 14, 4);
@ -225,7 +238,7 @@ module.exports &#x3D; Util;
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Source: webCache/LocalWebCache.js</title>
<title>whatsapp-web.js 1.34.7 &raquo; Source: webCache/LocalWebCache.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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -53,9 +53,11 @@ class LocalWebCache extends WebCache {
try {
return fs.readFileSync(filePath, &#x27;utf-8&#x27;);
}
catch (err) {
if (this.strict) throw new VersionResolveError(&#x60;Couldn&#x27;t load version ${version} from the cache&#x60;);
} catch (ignoredError) {
if (this.strict)
throw new VersionResolveError(
&#x60;Couldn&#x27;t load version ${version} from the cache&#x60;,
);
return null;
}
}
@ -79,7 +81,7 @@ module.exports &#x3D; LocalWebCache;
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Source: webCache/RemoteWebCache.js</title>
<title>whatsapp-web.js 1.34.7 &raquo; Source: webCache/RemoteWebCache.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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -42,7 +42,10 @@ class RemoteWebCache extends WebCache {
constructor(options &#x3D; {}) {
super();
if (!options.remotePath) throw new Error(&#x27;webVersionCache.remotePath is required when using the remote cache&#x27;);
if (!options.remotePath)
throw new Error(
&#x27;webVersionCache.remotePath is required when using the remote cache&#x27;,
);
this.remotePath &#x3D; options.remotePath;
this.strict &#x3D; options.strict || false;
}
@ -59,7 +62,10 @@ class RemoteWebCache extends WebCache {
console.error(&#x60;Error fetching version ${version} from remote&#x60;, err);
}
if (this.strict) throw new VersionResolveError(&#x60;Couldn&#x27;t load version ${version} from the archive&#x60;);
if (this.strict)
throw new VersionResolveError(
&#x60;Couldn&#x27;t load version ${version} from the archive&#x60;,
);
return null;
}
@ -68,7 +74,8 @@ class RemoteWebCache extends WebCache {
}
}
module.exports &#x3D; RemoteWebCache;</code></pre>
module.exports &#x3D; RemoteWebCache;
</code></pre>
</article>
</div>
</div>
@ -78,7 +85,7 @@ module.exports &#x3D; RemoteWebCache;</code></pre>
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

View file

@ -4,7 +4,7 @@
<head>
<meta name="generator" content="JSDoc 3.6.11">
<meta charset="utf-8">
<title>whatsapp-web.js 1.34.6 &raquo; Source: webCache/WebCache.js</title>
<title>whatsapp-web.js 1.34.7 &raquo; Source: webCache/WebCache.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/Noto+Serif:400,400i,700,700i" 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">
<div id="jsdoc-navbar-container">
<div id="jsdoc-navbar-content">
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>6</a>
<a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>34.<wbr>7</a>
</div>
</div>
</nav>
@ -33,7 +33,10 @@
* Default implementation of a web version cache that does nothing.
*/
class WebCache {
async resolve() { return null; }
async resolve() {
return null;
}
async persist() {}
}
@ -41,8 +44,9 @@ class VersionResolveError extends Error { }
module.exports &#x3D; {
WebCache,
VersionResolveError
};</code></pre>
VersionResolveError,
};
</code></pre>
</article>
</div>
</div>
@ -52,7 +56,7 @@ module.exports &#x3D; {
<footer id="jsdoc-footer" class="jsdoc-footer">
<div id="jsdoc-footer-container">
<p>
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on January 30, 2026.
Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on April 24, 2026.
</p>
</div>
</footer>

24
package-lock.json generated
View file

@ -1,12 +1,12 @@
{
"name": "whatsapp-web.js",
"version": "1.34.6",
"version": "1.34.7",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "whatsapp-web.js",
"version": "1.34.6",
"version": "1.34.7",
"license": "Apache-2.0",
"dependencies": {
"fluent-ffmpeg": "2.1.3",
@ -925,7 +925,6 @@
"integrity": "sha512-Rs1bVAIdBs5gbTIKza/tgpMuG1k3U/UMJLWecIMxNdJFDMzcM5LOiLVRYh3PilWEYDIeUDv7bpiHPLPsbydGcw==",
"devOptional": true,
"license": "MIT",
"peer": true,
"dependencies": {
"undici-types": "~6.21.0"
}
@ -980,7 +979,6 @@
"integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==",
"dev": true,
"license": "MIT",
"peer": true,
"bin": {
"acorn": "bin/acorn"
},
@ -1177,7 +1175,6 @@
"resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz",
"integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==",
"license": "Apache-2.0",
"peer": true,
"peerDependencies": {
"bare-abort-controller": "*"
},
@ -1409,7 +1406,6 @@
"integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"assertion-error": "^1.1.0",
"check-error": "^1.0.3",
@ -1753,7 +1749,6 @@
"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.1.tgz",
"integrity": "sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ==",
"license": "MIT",
"peer": true,
"dependencies": {
"env-paths": "^2.2.1",
"import-fresh": "^3.3.0",
@ -1932,8 +1927,7 @@
"version": "0.0.1581282",
"resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1581282.tgz",
"integrity": "sha512-nv7iKtNZQshSW2hKzYNr46nM/Cfh5SEvE2oV0/SEGgc9XupIY5ggf84Cz8eJIkBce7S3bmTAauFD6aysMpnqsQ==",
"license": "BSD-3-Clause",
"peer": true
"license": "BSD-3-Clause"
},
"node_modules/diff": {
"version": "7.0.0",
@ -2102,6 +2096,7 @@
"integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
"dev": true,
"license": "BSD-2-Clause",
"peer": true,
"engines": {
"node": ">=0.12"
},
@ -2238,7 +2233,6 @@
"integrity": "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.8.0",
"@eslint-community/regexpp": "^4.12.1",
@ -2299,7 +2293,6 @@
"integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==",
"dev": true,
"license": "MIT",
"peer": true,
"bin": {
"eslint-config-prettier": "bin/cli.js"
},
@ -3749,6 +3742,7 @@
"integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"uc.micro": "^2.0.0"
}
@ -4174,7 +4168,8 @@
"resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz",
"integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==",
"dev": true,
"license": "MIT"
"license": "MIT",
"peer": true
},
"node_modules/meow": {
"version": "13.2.0",
@ -4722,7 +4717,6 @@
"integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==",
"dev": true,
"license": "MIT",
"peer": true,
"bin": {
"prettier": "bin/prettier.cjs"
},
@ -4830,6 +4824,7 @@
"integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==",
"dev": true,
"license": "MIT",
"peer": true,
"engines": {
"node": ">=6"
}
@ -5480,7 +5475,8 @@
"resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz",
"integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==",
"dev": true,
"license": "MIT"
"license": "MIT",
"peer": true
},
"node_modules/uglify-js": {
"version": "3.19.3",

View file

@ -1,6 +1,6 @@
{
"name": "whatsapp-web.js",
"version": "1.34.6",
"version": "1.34.7",
"description": "A Node.js library for interacting with WhatsApp Web",
"main": "./index.js",
"typings": "./index.d.ts",