Full Code of wwebjs/whatsapp-web.js for AI

main b0e869317f30 cached
185 files
2.1 MB
551.1k tokens
455 symbols
1 requests
Download .txt
Showing preview only (2,202K chars total). Download the full file or copy to clipboard to get everything.
Repository: wwebjs/whatsapp-web.js
Branch: main
Commit: b0e869317f30
Files: 185
Total size: 2.1 MB

Directory structure:
gitextract_wvtmvct8/

├── .editorconfig
├── .eslintignore
├── .eslintrc.json
├── .gitattributes
├── .github/
│   ├── CODE_OF_CONDUCT.md
│   ├── COMMIT_CONVENTION.md
│   ├── CONTRIBUTING.md
│   ├── DISCLAIMER.md
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   ├── 01-bug_report.yml
│   │   ├── 02-feature_request.yml
│   │   └── config.yml
│   ├── SUPPORT.md
│   ├── dependabot.yml
│   ├── issue-labeler.yml
│   ├── labels.yml
│   ├── pr-labeler.yml
│   ├── pull_request_template.md
│   └── workflows/
│       ├── format-issue-bug.yml
│       ├── issue-triage.yml
│       ├── labels-sync.yml
│       ├── lint.yml
│       ├── pr-triage.yml
│       ├── release.yml
│       ├── stale.yml
│       ├── tests.yml
│       └── update.yml
├── .gitignore
├── .husky/
│   ├── commit-msg
│   └── pre-commit
├── .jsdoc.json
├── .lintstagedrc.json
├── .npmignore
├── .prettierignore
├── .prettierrc.json
├── LICENSE
├── README.md
├── commitlint.config.js
├── docs/
│   ├── Base.html
│   ├── BaseAuthStrategy.html
│   ├── Broadcast.html
│   ├── BusinessContact.html
│   ├── Buttons.html
│   ├── CNAME
│   ├── Call.html
│   ├── Channel.html
│   ├── Chat.html
│   ├── Client.html
│   ├── Client.js.html
│   ├── ClientInfo.html
│   ├── Contact.html
│   ├── GroupChat.html
│   ├── GroupNotification.html
│   ├── InterfaceController.html
│   ├── Label.html
│   ├── LegacySessionAuth.html
│   ├── List.html
│   ├── LocalAuth.html
│   ├── LocalWebCache.html
│   ├── Location.html
│   ├── Message.html
│   ├── MessageMedia.html
│   ├── NoAuth.html
│   ├── Order.html
│   ├── Poll.html
│   ├── PollVote.html
│   ├── PrivateChat.html
│   ├── PrivateContact.html
│   ├── Product.html
│   ├── Reaction.html
│   ├── RemoteAuth.html
│   ├── RemoteWebCache.html
│   ├── ScheduledEvent.html
│   ├── Util.html
│   ├── WebCache.html
│   ├── authStrategies_BaseAuthStrategy.js.html
│   ├── authStrategies_LegacySessionAuth.js.html
│   ├── authStrategies_LocalAuth.js.html
│   ├── authStrategies_NoAuth.js.html
│   ├── authStrategies_RemoteAuth.js.html
│   ├── css/
│   │   └── baseline.css
│   ├── global.html
│   ├── index.html
│   ├── scripts/
│   │   ├── jsdoc-toc.js
│   │   ├── lang-css.js
│   │   ├── linenumber.js
│   │   ├── prettify.js
│   │   ├── scrollanchor.js
│   │   └── tree.jquery.js
│   ├── structures_Base.js.html
│   ├── structures_Broadcast.js.html
│   ├── structures_BusinessContact.js.html
│   ├── structures_Buttons.js.html
│   ├── structures_Call.js.html
│   ├── structures_Channel.js.html
│   ├── structures_Chat.js.html
│   ├── structures_ClientInfo.js.html
│   ├── structures_Contact.js.html
│   ├── structures_GroupChat.js.html
│   ├── structures_GroupNotification.js.html
│   ├── structures_Label.js.html
│   ├── structures_List.js.html
│   ├── structures_Location.js.html
│   ├── structures_Message.js.html
│   ├── structures_MessageMedia.js.html
│   ├── structures_Order.js.html
│   ├── structures_Payment.js.html
│   ├── structures_Poll.js.html
│   ├── structures_PollVote.js.html
│   ├── structures_PrivateChat.js.html
│   ├── structures_PrivateContact.js.html
│   ├── structures_Product.js.html
│   ├── structures_ProductMetadata.js.html
│   ├── structures_Reaction.js.html
│   ├── structures_ScheduledEvent.js.html
│   ├── util_Constants.js.html
│   ├── util_Injected.js.html
│   ├── util_Injected_LegacyStore.js.html
│   ├── util_Injected_Store.js.html
│   ├── util_Injected_Utils.js.html
│   ├── util_InterfaceController.js.html
│   ├── util_Puppeteer.js.html
│   ├── util_Util.js.html
│   ├── webCache_LocalWebCache.js.html
│   ├── webCache_RemoteWebCache.js.html
│   └── webCache_WebCache.js.html
├── example.js
├── index.d.ts
├── index.js
├── package.json
├── shell.js
├── src/
│   ├── Client.js
│   ├── authStrategies/
│   │   ├── BaseAuthStrategy.js
│   │   ├── LocalAuth.js
│   │   ├── NoAuth.js
│   │   └── RemoteAuth.js
│   ├── factories/
│   │   ├── ChatFactory.js
│   │   └── ContactFactory.js
│   ├── structures/
│   │   ├── Base.js
│   │   ├── Broadcast.js
│   │   ├── BusinessContact.js
│   │   ├── Buttons.js
│   │   ├── Call.js
│   │   ├── Channel.js
│   │   ├── Chat.js
│   │   ├── ClientInfo.js
│   │   ├── Contact.js
│   │   ├── GroupChat.js
│   │   ├── GroupNotification.js
│   │   ├── Label.js
│   │   ├── List.js
│   │   ├── Location.js
│   │   ├── Message.js
│   │   ├── MessageMedia.js
│   │   ├── Order.js
│   │   ├── Payment.js
│   │   ├── Poll.js
│   │   ├── PollVote.js
│   │   ├── PrivateChat.js
│   │   ├── PrivateContact.js
│   │   ├── Product.js
│   │   ├── ProductMetadata.js
│   │   ├── Reaction.js
│   │   ├── ScheduledEvent.js
│   │   └── index.js
│   ├── util/
│   │   ├── Constants.js
│   │   ├── Injected/
│   │   │   ├── AuthStore/
│   │   │   │   └── AuthStore.js
│   │   │   └── Utils.js
│   │   ├── InterfaceController.js
│   │   ├── Puppeteer.js
│   │   └── Util.js
│   └── webCache/
│       ├── LocalWebCache.js
│       ├── RemoteWebCache.js
│       ├── WebCache.js
│       └── WebCacheFactory.js
├── tests/
│   ├── README.md
│   ├── client.js
│   ├── helper.js
│   └── structures/
│       ├── chat.js
│       ├── group.js
│       └── message.js
└── tools/
    ├── changelog.sh
    ├── publish
    └── version-checker/
        ├── .version
        └── update-version

================================================
FILE CONTENTS
================================================

================================================
FILE: .editorconfig
================================================
root = true

[*]
indent_style = space
indent_size = 4
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
end_of_line = lf

[*.md]
trim_trailing_whitespace = false

================================================
FILE: .eslintignore
================================================
node_modules
dist
coverage
docs
*.min.js
.wa-version
.wwebjs_auth
.wwebjs_cache


================================================
FILE: .eslintrc.json
================================================
{
    "env": {
        "browser": true,
        "commonjs": true,
        "es6": true,
        "node": true
    },
    "extends": [
        "eslint:recommended",
        "plugin:mocha/recommended",
        "plugin:prettier/recommended"
    ],
    "globals": {
        "Atomics": "readonly",
        "SharedArrayBuffer": "readonly"
    },
    "parserOptions": {
        "ecmaVersion": 2022
    },
    "plugins": ["mocha"]
}


================================================
FILE: .gitattributes
================================================
* text=auto eol=lf

package-lock.json linguist-generated=true text=auto eol=lf
docs/* linguist-generated=true text=auto eol=lf


================================================
FILE: .github/CODE_OF_CONDUCT.md
================================================
# Contributor Covenant Code of Conduct

## Our Pledge

We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, religion, or sexual identity
and orientation.

We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.

## Our Standards

Examples of behavior that contributes to a positive environment for our
community include:

- Demonstrating empathy and kindness toward other people
- Being respectful of differing opinions, viewpoints, and experiences
- Giving and gracefully accepting constructive feedback
- Accepting responsibility and apologizing to those affected by our mistakes,
  and learning from the experience
- Focusing on what is best not just for us as individuals, but for the
  overall community

Examples of unacceptable behavior include:

- The use of sexualized language or imagery, and sexual attention or
  advances of any kind
- Trolling, insulting or derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information, such as a physical or email
  address, without their explicit permission
- Other conduct which could reasonably be considered inappropriate in a
  professional setting

## Enforcement Responsibilities

Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.

Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.

## Scope

This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
[pedroslopez@me.com][email].
All complaints will be reviewed and investigated promptly and fairly.

All community leaders are obligated to respect the privacy and security of the
reporter of any incident.

## Enforcement Guidelines

Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:

### 1. Correction

**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.

**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.

### 2. Warning

**Community Impact**: A violation through a single incident or series
of actions.

**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or
permanent ban.

### 3. Temporary Ban

**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.

**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.

### 4. Permanent Ban

**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.

**Consequence**: A permanent ban from any sort of public interaction within
the community.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.0, available at
[https://www.contributor-covenant.org/version/2/0/code_of_conduct.html][v2.0].

Community Impact Guidelines were inspired by
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].

For answers to common questions about this code of conduct, see the FAQ at
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available
at [https://www.contributor-covenant.org/translations][translations].

[email]: mailto:pedroslopez@me.com
[homepage]: https://www.contributor-covenant.org
[v2.0]: https://www.contributor-covenant.org/version/2/0/code_of_conduct.html
[Mozilla CoC]: https://github.com/mozilla/diversity
[FAQ]: https://www.contributor-covenant.org/faq
[translations]: https://www.contributor-covenant.org/translations


================================================
FILE: .github/COMMIT_CONVENTION.md
================================================
# Git Commit Message Convention

> This is adapted from [Angular's commit convention][angular-commit-convention].

Messages must be matched by the following regex (case-insensitive):

```ts
/^(revert: )?(feat|fix|docs|style|refactor|perf|test|build|ci|chore|types|infra)(\(.+\))?!?: .{1,72}/i;
```

The commit type is **case-insensitive** — `feat`, `Feat`, and `FEAT` are all valid.

## Examples

### Features

Appears under "Features" header, message subheader:

```txt
feat(message): add 'downloadMedia' option
```

Additional examples:

```txt
feat(chat): add ability to pin messages
```

```txt
feat(contact): add getProfilePicUrl method
```

### Bug Fixes

Appears under "Bug Fixes" header, client subheader, with a link to issue #28:

```txt
fix(client): stop client breaking when QR code expires

Closes #28
```

Additional examples:

```txt
fix(message): handle media messages without caption correctly
```

```txt
fix(auth): resolve authentication timeout on slow connections
```

### Performance Improvements

Appears under "Performance Improvements" header, and under "Breaking Changes" with the breaking change explanation:

```txt
perf(message): remove legacyMode option

BREAKING CHANGE: The legacyMode option has been removed. The new message handling is always used for performance reasons.
```

Additional example:

```txt
perf(client): optimize event listener registration
```

### Documentation

```txt
docs(readme): update installation instructions
```

```txt
docs(api): add examples for message reactions
```

### Code Refactoring

```txt
refactor(client): simplify authentication flow
```

```txt
refactor(structures): extract common message properties
```

### Tests

```txt
test(message): add unit tests for media download
```

```txt
test(client): add integration tests for reconnection
```

### Build System

```txt
build(deps): update puppeteer to v21.0.0
```

```txt
build(webpack): optimize bundle size
```

### Continuous Integration

```txt
ci(actions): add automated release workflow
```

```txt
ci(tests): run tests on multiple node versions
```

### Chores

```txt
chore(gitignore): ignore .vscode directory
```

```txt
chore(deps): bump dependencies to latest versions
```

### Type Definitions

```txt
types(message): add missing type for MessageMedia
```

```txt
types(client): improve ClientOptions interface
```

### Code Style

```txt
style(client): fix indentation and spacing
```

### Reverts

The following commit and commit `667ecc1` do not appear in the changelog if they are under the same release. If not, the revert commit appears under the "Reverts" header:

```txt
revert: feat(message): add 'downloadMedia' option

This reverts commit 667ecc1654a317a13331b17617d973392f415f02.
```

A commit message consists of a **header**, **body** and **footer**. The header has a **type**, **scope** and **subject**:

```txt
<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>
```

The **header** is mandatory and the **scope** of the header is optional.

## Revert

If the commit reverts a previous commit, it should begin with `revert:`, followed by the header of the reverted commit. In the body, it should say: `This reverts commit <hash>.`, where the hash is the SHA of the commit being reverted.

## Type

If the prefix is `feat`, `fix` or `perf`, it will appear in the changelog. However if there is any [BREAKING CHANGE](#footer), the commit will always appear in the changelog.

Other prefixes are up to your discretion. Suggested prefixes are `build`, `ci`, `docs`, `style`, `refactor`, and `test` for non-changelog related tasks.

## Scope

The scope could be anything specifying place of the commit change. For example `client`, `message`, `chat`, `contact`, `media`, `auth`, etc...

## Subject

The subject contains succinct description of the change:

- use the imperative, present tense: "change" not "changed" nor "changes"
- don't capitalize first letter
- no dot (.) at the end

## Body

Just as in the **subject**, use the imperative, present tense: "change" not "changed" nor "changes".
The body should include the motivation for the change and contrast this with previous behavior.

## Footer

The footer should contain any information about **Breaking Changes** and is also the place to
reference GitHub issues that this commit **Closes**.

**Breaking Changes** should start with the word `BREAKING CHANGE:` with a space or two newlines. The rest of the commit message is then used for this.

A detailed explanation can be found in this [document][commit-message-format].

[angular-commit-convention]: https://github.com/conventional-changelog/conventional-changelog/tree/master/packages/conventional-changelog-angular
[commit-message-format]: https://docs.google.com/document/d/1QrDFcIiPjSLDn3EL15IJygNPiHORgU1_OOAqWjiDU5Y/edit#


================================================
FILE: .github/CONTRIBUTING.md
================================================
# Contributing

If you want to contribute to whatsapp-web.js, start by forking the repository and opening a pull request with your changes. The project uses ESLint and Prettier to enforce a consistent coding style, so setting them up in your development environment is recommended to ensure your contributions meet the formatting standards.

## Questions

Do not open issues for general questions or support requests. For help, please join the [Discord Server][discord] instead. Installation instructions and general guidance are available in the documentation. Issues opened for questions will be closed.

### Issue Tracker

Before creating a new issue, review the existing [issue tracker][issue-tracker] to avoid duplicates.

## Issues and Pull Requests

- **Bug reports** must include a minimal reproduction and clear steps to reproduce the problem.
- **Feature requests** should clearly describe the use case and explain why the feature belongs in the library.
- **Pull requests and commit messages** must follow the conventional commit format for both commit messages and the PR title (e.g. `feat(client): add sendMessage option`). The commit type is case-insensitive (`feat`, `Feat`, and `FEAT` are all valid).
- All pull requests should target the `main` branch unless discussed otherwise.
- Ensure that linting and tests pass before submitting your pull request.

## Setup

To prepare your development environment:

1. Fork and clone the repository, and ensure you are on the `main` branch.
2. Run `npm install` to install all dependencies.
3. Implement your changes or improvements.
4. Run `npm run check` to execute ESLint and Prettier checks.
5. Run `npm test` to ensure the test suite passes.
6. Submit a pull request (make sure it follows the conventional commit format).

## Testing Locally

To test your changes within your own project:

1. Clone the repository and apply your modifications.
2. Run `npm install` inside the cloned directory.
3. In your project, run `npm link <path-to-your-clone>` to create a symlink to your local version.
4. Import the package and verify your changes.
5. If everything works as expected, you’ve successfully implemented your changes without breaking the library.

[discord]: https://discord.wwebjs.dev/
[issue-tracker]: https://github.com/pedroslopez/whatsapp-web.js/issues


================================================
FILE: .github/DISCLAIMER.md
================================================
# Disclaimer

This project is an unofficial library and is not affiliated with, endorsed by, maintained, authorized, or sponsored by WhatsApp Inc., Meta Platforms, or any of their subsidiaries or affiliates. Use of this library and any related components is entirely at your own risk. WhatsApp prohibits the use of unofficial clients, reverse-engineered integrations, automated bots, or other non-official methods of access to its platform, and using this library may violate WhatsApp’s Terms of Service, potentially resulting in temporary or permanent suspension of your WhatsApp account or other enforcement actions. We assume no responsibility or liability if your account is restricted, suspended, or permanently banned, and you are solely responsible for any consequences arising from the use or misuse of this project.

The maintainers and contributors provide this library without any guarantees or warranties, express or implied, regarding its reliability, functionality, or long-term viability. Compatibility with WhatsApp’s private or internal APIs may change at any time without notice, which could cause the library to stop functioning or behave unpredictably. This project has been developed strictly for educational, research, experimental, and hobby purposes and should not be used in commercial, production, or business-critical environments without fully understanding and accepting the associated risks.

For official, secure, and policy-compliant integrations, individuals and businesses are strongly encouraged to use the WhatsApp Business Platform or other authorized APIs provided directly by WhatsApp or Meta. The official WhatsApp website is available at [https://www.whatsapp.com][whatsapp]. "WhatsApp" and all related names, marks, logos, and images are registered trademarks of their respective owners. By using this project, you acknowledge that you understand and accept all of the above terms, limitations, and potential risks, including the possibility of account suspension or banning.

[whatsapp]: https://www.whatsapp.com


================================================
FILE: .github/FUNDING.yml
================================================
github: [pedroslopez, PurpShell]
ko_fi: pedroslopez
custom: ['paypal.me/psla', 'buymeacoff.ee/pedroslopez']


================================================
FILE: .github/ISSUE_TEMPLATE/01-bug_report.yml
================================================
name: Bug Report
description: Report a bug in the library or another package
labels: [bug]
body:
    - type: markdown
      attributes:
          value: |
              Thanks for taking the time to report a bug! Please check the [issue tracker](https://github.com/wwebjs/wwebjs/issues) before submitting.

              > [!CAUTION]
              > - **Report only issues related to the `whatsapp-web.js` library!**
              > - **Any issue without a clear reproduction will be closed!**
              > - **Any issue opened as a question will be closed!**
              > - **Duplicate issues will be closed.**

    - type: dropdown
      id: priority
      attributes:
          label: Issue Priority
          description: Be realistic. Elaborate in the description if needed.
          options:
              - Low (slightly annoying)
              - Medium (should be fixed soon)
              - High (immediate attention needed)
          default: 0
      validations:
          required: true

    - type: textarea
      id: description
      attributes:
          label: Issue Description
          description: Provide a clear and concise description of the problem.
          placeholder: |
              When I try to send a message, the client disconnects unexpectedly...
      validations:
          required: true

    - type: textarea
      id: reproduction_steps
      attributes:
          label: Steps To Reproduce
          description: How can we reproduce this issue?
          placeholder: |
              1. Do this
              2. Do that
              ...

              9. See error
      validations:
          required: true

    - type: textarea
      id: code_sample
      attributes:
          label: Code Sample
          description: |
              Provide code that reproduces the bug. Ensure it is:
              - **Minimal** - Only essential code to show the issue
              - **Complete** - Include all dependencies and setup
              - **Tested** - Verify it actually triggers the problem

              Will be auto-formatted - no backticks needed.
          render: typescript
      validations:
          required: false

    - type: dropdown
      id: whatsapp_type
      attributes:
          label: WhatsApp Account Type
          description: What type of WhatsApp account are you using?
          options:
              - Standard
              - WhatsApp Business
      validations:
          required: true

    - type: dropdown
      id: auth_type
      attributes:
          label: Authentication Strategy
          description: What authenctication strategy are you using?
          options:
              - LocalAuth
              - RemoteAuth
              - NoAuth
      validations:
          required: true

    - type: input
      id: lib_version
      attributes:
          label: whatsapp-web.js Version
          description: What library version are you using? Check it in `package.json` file.
          placeholder: 1.31.0
      validations:
          required: true

    - type: input
      id: wweb_version
      attributes:
          label: WhatsApp Web Version
          description: 'What WhatsApp Web version are you using? Use: `await client.getWWebVersion()`'
          placeholder: 2.3000.1017054665
      validations:
          required: true

    - type: input
      id: browser_type
      attributes:
          label: Browser Type
          description: What web browser are you using?
          placeholder: Chromium / Google Chrome / Edge / ...
      validations:
          required: true

    - type: input
      id: browser_version
      attributes:
          label: Browser Version
          description: What version of the browser are you using?
          placeholder: 120.0.6099.71
      validations:
          required: true

    - type: input
      id: computer_os
      attributes:
          label: Computer OS Version
          description: What OS are you using?
          placeholder: MacOS 15 / Windows 11 / Ubuntu 24 / ...
      validations:
          required: true

    - type: input
      id: phone_os
      attributes:
          label: Phone OS Version
          description: What OS version are you using on your phone?
          placeholder: Android 12 / iOS 15.4 / ...
      validations:
          required: true

    - type: input
      id: node_version
      attributes:
          label: Node.js Version
          description: What Node.js version are you using? Run `node -v` in your terminal.
          placeholder: 18.16.0
      validations:
          required: true

    - type: checkboxes
      id: checklist
      attributes:
          label: Checklist
          options:
              - label: '**I use the latest released version of whatsapp-web.js.**'
                required: true
              - label: I have searched existing issues and confirmed this is not a duplicate.
                required: true
              - label: I have verified this is a library issue, not a problem with my code.
                required: true


================================================
FILE: .github/ISSUE_TEMPLATE/02-feature_request.yml
================================================
name: Feature Request
description: Request a new feature for our applications or packages
labels: [feature request]
body:
    - type: markdown
      attributes:
          value: |
              Thanks for taking the time to suggest a feature! Please search the [issue tracker](https://github.com/wwebjs/wwebjs/issues) first to avoid duplicates.

              > [!CAUTION]
              > - **Please submit only feature requests that related to the `whatsapp-web.js` library.**
              > - **Any feature request opened as a question will be closed!**
              > - **Duplicate issues will be closed.**

    - type: textarea
      id: description
      attributes:
          label: Feature summary
          description: Briefly describe the problem/use case and desired capability.
          placeholder: |
              Problem: ...
              Benefit: ...
              Outcome: ...
      validations:
          required: true

    - type: textarea
      id: solution
      attributes:
          label: Ideal solution or implementation
          description: How should this feature work? Include examples like API shape, UX sketches.
          placeholder: |
              API: client.xyz(...)
              Event: client.on('xyz', ...)
              Example: const r = await client.xyz()
              Compatibility: Breaking changes?
          render: markdown
      validations:
          required: true

    - type: textarea
      id: alternatives
      attributes:
          label: Alternatives / Additional context
          description: Alternatives or workarounds? / More notes/links/screenshots.

    - type: checkboxes
      id: checklist
      attributes:
          label: Checklist
          options:
              - label: I have searched existing issues and confirmed this is not a duplicate.
                required: true
              - label: This request is within the scope of WhatsApp Web capabilities.
                required: false


================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
    - name: Discord Server
      url: https://discord.wwebjs.dev
      about: Please ask and answer questions here.


================================================
FILE: .github/SUPPORT.md
================================================
# Need Help?

This issue tracker is **only** for bug reports and feature requests.

For questions and general help, please join our **Discord server**: [https://discord.wwebjs.dev][discord].  
Installation instructions and guidance can be found in the documentation.

Issues that are not bug reports, feature requests or questions will be closed.

[discord]: https://discord.wwebjs.dev


================================================
FILE: .github/dependabot.yml
================================================
version: 2
updates:
    - package-ecosystem: 'npm'
      directory: '/'
      open-pull-requests-limit: 10
      schedule:
          interval: 'monthly'
      labels:
          - 'dependencies'
          - 'dependabot'
      target-branch: 'main'


================================================
FILE: .github/issue-labeler.yml
================================================
documentation:
    - "\\b(doc|docs|readme|documentation|typo|example|guide)s?\\b"
security:
    - "\\b(vulnerability|xss|csrf|security|exploit|attack|inject)s?\\b"
performance:
    - "\\b(performance|slow|memory|cpu|optimize|optimization|lag|leak)s?\\b"
breaking change:
    - "\\bbreaking.?changes?\\b"
dependencies:
    - "\\b(depend(enc)?y|dependencies|deps?|package|upgrade|bump)s?\\b"
typings:
    - "\\b(type|types|typing|typings|typescript|\\.d\\.ts)s?\\b"
tests:
    - "\\b(test|tests|testing|spec|mocha|assert|coverage)s?\\b"
ci:
    - "\\b(ci|workflow|pipeline|action|github.?action|continuous.?integration)s?\\b"
build:
    - "\\b(build|builds|build.?system|webpack|rollup|esbuild|gulp|grunt)s?\\b"
infra:
    - "\\b(infra|infrastructure|devops|docker|kubernetes|cloud|aws|azure|gcp)s?\\b"
styles:
    - "\\b(style|styles|format|lint|prettier|eslint)s?\\b"
ui:
    - "\\b(ui|ux|interface|design|layout|responsive)s?\\b"


================================================
FILE: .github/labels.yml
================================================
# Issue Labels
- name: 'bug'
  color: '#d73a4a'
  description: 'Something is broken'
- name: 'feature request'
  color: '#a2eeef'
  description: 'Request for a new feature'

# Status Labels
- name: 'in progress'
  color: '#fbca04'
  description: 'Work in progress'
- name: 'in review'
  color: '#0e8a16'
  description: 'Awaiting review'
- name: 'merge ready'
  color: '#0e8a16'
  description: 'Ready to merge'
- name: 'blocked'
  color: '#d13917'
  description: 'Blocked by another issue'
- name: 'discussion'
  color: '#d876e3'
  description: 'Needs discussion'
- name: 'approved'
  color: '#11EA91'
  description: 'Confirmed by maintainers'
- name: 'stale'
  color: '#bfd4f2'
  description: 'Inactive for a while'
- name: 'waiting for a response'
  color: '#BE4422'
  description: 'Waiting for author response'
- name: 'waiting for testers'
  color: '#7d006a'
  description: 'Needs testing'

# Priority & Help
- name: 'good first issue'
  color: '#7057ff'
  description: 'Beginner-friendly issue'
- name: 'help wanted'
  color: '#008672'
  description: 'Community help needed'
- name: 'high priority'
  color: '#00DFA8'
  description: 'Important issue'

# Bug Issues
- name: 'issued low'
  color: '#d4c5f9'
  description: 'Low impact issue'
- name: 'issued medium'
  color: '#d4c5f9'
  description: 'Medium impact issue'
- name: 'issued high'
  color: '#d4c5f9'
  description: 'High impact issue'

# Resolution
- name: 'duplicate'
  color: '#cfd3d7'
  description: 'Already reported'
- name: 'invalid'
  color: '#e4e669'
  description: 'Not a valid issue'
- name: 'wontfix'
  color: '#ffffff'
  description: 'Will not be fixed'

# Type of Change
- name: 'api changes'
  color: '#5319e7'
  description: 'API modifications'
- name: 'dependencies'
  color: '#0366d6'
  description: 'Dependency updates'
- name: 'security'
  color: '#ee0701'
  description: 'Security related'
- name: 'performance'
  color: '#ff6b6b'
  description: 'Performance improvements'
- name: 'error handling'
  color: '#f9d0c4'
  description: 'Error handling updates'
- name: 'typings'
  color: '#1d76db'
  description: 'Type definitions'
- name: 'interactions'
  color: '#c5def5'
  description: 'Interaction changes'
- name: 'breaking change'
  color: '#E9314A'
  description: 'Breaks existing behavior'

# Bots & Automation
- name: 'dependabot'
  color: '#0366d6'
  description: 'Dependabot PR'
- name: 'depfu'
  color: '#0000ff'
  description: 'Depfu PR'

# Code & Build
- name: 'tests'
  color: '#bfd4f2'
  description: 'Test related'
- name: 'build'
  color: '#0075ca'
  description: 'Build system'
- name: 'ci'
  color: '#0075ca'
  description: 'CI pipeline'
- name: 'infra'
  color: '#d4c5f9'
  description: 'Infrastructure'
- name: 'styles'
  color: '#ffc0cb'
  description: 'Code style'
- name: 'ui'
  color: '#ffaad4'
  description: 'UI changes'
- name: 'utility'
  color: '#ededed'
  description: 'Utility code'
- name: 'chore'
  color: '#fef2c0'
  description: 'Maintenance task'

# Quality & Review
- name: 'AI pr'
  color: '#b60205'
  description: 'AI-assisted PR; Review very carefully!'
- name: 'bad pr'
  color: '#B60205'
  description: 'Below project standards'

# Project Specific
- name: 'docs'
  color: '#0075ca'
  description: 'Documentation changes'
- name: 'whatsapp bug'
  color: '#1d76db'
  description: 'WhatsApp Web bug'
- name: 'whatsapp change'
  color: '#25D366'
  description: 'WhatsApp Web change'


================================================
FILE: .github/pr-labeler.yml
================================================
api changes:
    - changed-files:
          - any-glob-to-any-file:
                - src/*
                - src/**/*
dependencies:
    - changed-files:
          - any-glob-to-any-file:
                - package.json
                - package-lock.json
tests:
    - changed-files:
          - any-glob-to-any-file:
                - tests/*
                - tests/**/*
docs:
    - changed-files:
          - any-glob-to-any-file:
                - docs/*
                - docs/**/*
                - '**/*.md'
                - .jsdoc.json
infra:
    - changed-files:
          - any-glob-to-any-file:
                - .github/*
                - .github/**/*
ci:
    - changed-files:
          - any-glob-to-any-file:
                - .github/workflows/*
                - .github/workflows/**/*
typings:
    - changed-files:
          - any-glob-to-any-file:
                - index.d.ts
                - '**/*.d.ts'
utility:
    - changed-files:
          - any-glob-to-any-file:
                - src/util/*
                - src/util/**/*
build:
    - changed-files:
          - any-glob-to-any-file:
                - tools/*
                - tools/**/*
                - .eslintrc.json
                - .eslintignore
                - .prettierrc.json
                - .prettierignore
                - .editorconfig
                - .gitignore
                - .gitattributes
                - .commitlint.config.js
chore:
    - changed-files:
          - any-glob-to-any-file:
                - .env.example
                - .npmignore
                - LICENSE
                - .github/FUNDING.yml
                - .github/CODE_OF_CONDUCT.md
                - .github/ISSUE_TEMPLATE/*
                - .github/pull_request_template.md


================================================
FILE: .github/pull_request_template.md
================================================
## Description

<!-- What does this PR change and why? -->

## Related Issue(s)

<!--
If this pull request relates to one or more GitHub issues, link them using GitHub's closing keywords to automatically close the issues upon merging.

Examples:
  closes #123
  fixes #456
  resolves #789

For more details, see:
https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue
-->

## Testing Summary

### Test Details

<!-- Describe in detail how you tested your changes. -->

### Environment

<!-- Provide detailed information about the environment used to test this pull request. Simply fill out the blanks with your setup. -->

<!-- Operating system of the machine used for testing -->
<!-- Example: (macOS 15 / Windows 11 / Ubuntu 24 / ...) -->

- Machine OS:

<!-- Operating system of the mobile device used to verify functionality -->
<!-- Example: (Android 12 / iOS 16 / ...) -->

- Phone OS:

<!-- Version of whatsapp-web.js used during testing -->
<!-- Check your `package.json` file -->
<!-- Example: (1.31.0) -->

- Library Version:

<!-- WhatsApp Web version used for testing -->
<!-- Run `await client.getWWebVersion()` to retrieve it -->
<!-- Example: (2.3000.1017054665) -->

- WhatsApp Web Version:

<!-- Browser and version used for testing -->
<!-- Example: (Chromium 120 / Google Chrome 118 / ...) -->

- Browser Type and Version:

<!-- Node.js version used during testing -->
<!-- Run `node -v` to check -->
<!-- Example: (18.16.0) -->

- Node Version:

## Type of Change

<!-- Select all that apply: -->

- [ ] **Dependency change** _(package changes such as removals, upgrades, or additions)_
- [ ] **Bug fix** _(non-breaking change that fixes an issue)_
- [ ] **New feature** _(non-breaking change that adds functionality)_
- [ ] **Breaking change** _(fix or feature that would cause existing functionality to change)_
- [ ] **Non-code change** _(documentation, README, etc.)_

## Checklist

<!-- Please confirm that all relevant items below have been completed. -->

- [ ] My code follows the style guidelines of this project.
- [ ] All new and existing tests pass (`npm test`).
- [ ] Typings (e.g. `index.d.ts`) have been updated if necessary.
- [ ] Usage examples (e.g. `example.js`) / documentation have been updated if applicable.


================================================
FILE: .github/workflows/format-issue-bug.yml
================================================
name: Format Issue Body

on:
    issues:
        types: [opened]

permissions:
    contents: read
    issues: write

concurrency:
    group: issue-format-${{ github.event.issue.number }}
    cancel-in-progress: true

jobs:
    format:
        runs-on: ubuntu-latest
        if: github.event_name == 'issues' && contains(github.event.issue.labels.*.name, 'bug')
        permissions:
            contents: read
            issues: write
        steps:
            - name: Checkout repository
              uses: actions/checkout@v4

            - name: Parse issue form body
              uses: stefanbuck/github-issue-parser@v3
              id: parse
              with:
                  template-path: .github/ISSUE_TEMPLATE/01-bug_report.yml

            - name: Build formatted issue body
              id: summary
              env:
                  DESCRIPTION: ${{ steps.parse.outputs.issueparser_description }}
                  REPRODUCTION_STEPS: ${{ steps.parse.outputs.issueparser_reproduction_steps }}
                  CODE_SAMPLE: ${{ steps.parse.outputs.issueparser_code_sample }}
                  WHATSAPP_TYPE: ${{ steps.parse.outputs.issueparser_whatsapp_type }}
                  AUTH_TYPE: ${{ steps.parse.outputs.issueparser_auth_type }}
                  LIB_VERSION: ${{ steps.parse.outputs.issueparser_lib_version }}
                  WWEB_VERSION: ${{ steps.parse.outputs.issueparser_wweb_version }}
                  BROWSER_TYPE: ${{ steps.parse.outputs.issueparser_browser_type }}
                  BROWSER_VERSION: ${{ steps.parse.outputs.issueparser_browser_version }}
                  COMPUTER_OS: ${{ steps.parse.outputs.issueparser_computer_os }}
                  PHONE_OS: ${{ steps.parse.outputs.issueparser_phone_os }}
                  NODE_VERSION: ${{ steps.parse.outputs.issueparser_node_version }}
                  CHECKLIST: ${{ steps.parse.outputs.issueparser_checklist }}
              run: |
                  {
                    echo 'body<<BODY_DELIMITER'
                    echo '## Issue Description'
                    echo "$DESCRIPTION"
                    echo ''
                    echo '## Reproduction Steps'
                    echo "$REPRODUCTION_STEPS"
                    echo ''
                    if [ -n "$CODE_SAMPLE" ]; then
                      echo '## Code Sample'
                      echo "$CODE_SAMPLE"
                      echo ''
                    fi
                    echo '## User Setup'
                    echo ''
                    echo '| WhatsApp | Type |'
                    echo '|---|---|'
                    [ -n "$WHATSAPP_TYPE" ]   && echo "| **Account Type** | $WHATSAPP_TYPE |"
                    [ -n "$AUTH_TYPE" ]       && echo "| **Authentication Strategy** | $AUTH_TYPE |"
                    [ -n "$WWEB_VERSION" ]    && echo "| **WhatsApp Web Version** | $WWEB_VERSION |"
                    [ -n "$LIB_VERSION" ]     && echo "| **whatsapp-web.js Version** | $LIB_VERSION |"
                    echo ''
                    echo '| Environment | Version |'
                    echo '|---|---|'
                    [ -n "$BROWSER_TYPE" ]    && echo "| **Browser Type** | $BROWSER_TYPE |"
                    [ -n "$BROWSER_VERSION" ] && echo "| **Browser Version** | $BROWSER_VERSION |"
                    [ -n "$PHONE_OS" ]        && echo "| **Phone OS Version** | $PHONE_OS |"
                    [ -n "$COMPUTER_OS" ]     && echo "| **Running OS Version** | $COMPUTER_OS |"
                    [ -n "$NODE_VERSION" ]    && echo "| **Node.js Version** | $NODE_VERSION |"
                    echo ''
                    if [ -n "$CHECKLIST" ]; then
                      echo '## Checklist'
                      echo '- [x] **I use the latest released version of whatsapp-web.js.**'
                      echo '- [x] I have searched existing issues and confirmed this is not a duplicate.'
                      echo '- [x] I have verified this is a library issue, not a problem with my code.'
                    fi
                    echo 'BODY_DELIMITER'
                  } >> "$GITHUB_OUTPUT"

            - name: Update issue body
              uses: julien-deramond/update-issue-body@v1
              with:
                  issue-number: ${{ github.event.issue.number }}
                  body: ${{ steps.summary.outputs.body }}
                  edit-mode: replace

            - name: Determine priority label
              id: priority_label
              env:
                  PRIORITY: ${{ steps.parse.outputs.issueparser_priority }}
              run: |
                  if [[ "$PRIORITY" == "Low"* ]]; then
                    echo "label=issued low" >> "$GITHUB_OUTPUT"
                  elif [[ "$PRIORITY" == "Medium"* ]]; then
                    echo "label=issued medium" >> "$GITHUB_OUTPUT"
                  elif [[ "$PRIORITY" == "High"* ]]; then
                    echo "label=issued high" >> "$GITHUB_OUTPUT"
                  fi

            - name: Add priority label
              if: steps.priority_label.outputs.label != ''
              uses: actions-ecosystem/action-add-labels@v1
              with:
                  labels: ${{ steps.priority_label.outputs.label }}


================================================
FILE: .github/workflows/issue-triage.yml
================================================
name: Issue Triage

on:
    issues:
        types: [opened, edited, reopened]

permissions:
    contents: read
    issues: write

concurrency:
    group: issue-${{ github.event.issue.number }}
    cancel-in-progress: true

jobs:
    label:
        runs-on: ubuntu-latest
        steps:
            - name: Label issue
              uses: github/issue-labeler@v3.4
              with:
                  repo-token: ${{ secrets.GITHUB_TOKEN }}
                  configuration-path: .github/issue-labeler.yml
                  enable-versioned-regex: 0


================================================
FILE: .github/workflows/labels-sync.yml
================================================
name: Sync Labels

on:
    schedule:
        - cron: '0 0 */3 * *'
    workflow_dispatch:
    push:
        branches:
            - main
        paths:
            - '.github/labels.yml'

permissions:
    contents: read
    issues: write

concurrency:
    group: label-sync
    cancel-in-progress: false

jobs:
    label-sync:
        runs-on: ubuntu-latest
        if: github.repository_owner == 'pedroslopez'
        steps:
            - uses: actions/checkout@v6
            - uses: crazy-max/ghaction-github-labeler@v5
              with:
                  github-token: ${{ secrets.GITHUB_TOKEN }}


================================================
FILE: .github/workflows/lint.yml
================================================
name: Lint

on:
    push:
    pull_request:

jobs:
    eslint:
        name: ESLint
        runs-on: ubuntu-latest
        steps:
            - uses: actions/checkout@v2
            - name: Install node v14
              uses: actions/setup-node@v2
              with:
                  node-version: '14'
            - name: Install dependencies
              run: npm install
            - name: Run ESLint
              run: ./node_modules/.bin/eslint .


================================================
FILE: .github/workflows/pr-triage.yml
================================================
name: PR Triage

on:
    pull_request_target:
        types:
            - opened
            - edited
            - reopened
            - synchronize

permissions:
    contents: read
    pull-requests: write

concurrency:
    group: pr-${{ github.event.pull_request.number }}
    cancel-in-progress: true

jobs:
    label:
        name: Label PR
        if: github.event.action != 'edited'
        runs-on: ubuntu-latest
        steps:
            - name: Label pull request
              uses: actions/labeler@v5
              with:
                  repo-token: ${{ secrets.GITHUB_TOKEN }}
                  configuration-path: .github/pr-labeler.yml
                  dot: true
                  sync-labels: true

    validate-title:
        name: Validate title
        runs-on: ubuntu-latest
        steps:
            - name: Validate pull request title
              env:
                  TITLE: ${{ github.event.pull_request.title }}
              run: |
                  REGEX="^(revert: )?(feat|fix|docs|style|refactor|perf|test|build|ci|chore|types|infra)(\\(.+\\))?!?: .{1,72}$"

                  echo "Title: \"$TITLE\""

                  shopt -s nocasematch
                  if [[ ! "$TITLE" =~ $REGEX ]]; then
                    echo "❌ PR title does not match the required format!"
                    exit 1
                  fi


================================================
FILE: .github/workflows/release.yml
================================================
name: Release a New Version

on:
    workflow_dispatch:
        inputs:
            release_type:
                description: 'Release type'
                required: true
                default: 'alpha'
                type: choice
                options:
                    - alpha
                    - alpha-minor
                    - alpha-major
                    - release-minor
                    - release-patch

concurrency:
    group: release-${{ github.ref }}
    cancel-in-progress: false

jobs:
    release:
        runs-on: ubuntu-latest
        if: github.repository == 'pedroslopez/whatsapp-web.js'
        permissions:
            contents: write
            id-token: write
        steps:
            - name: Checkout
              uses: actions/checkout@v4
              with:
                  token: ${{ secrets.RELEASE_GITHUB_TOKEN }}

            - name: Setup Node.js
              uses: actions/setup-node@v4
              with:
                  node-version: '24'
                  registry-url: 'https://registry.npmjs.org'

            - name: Configure Git
              run: |
                  git config --global user.email "hello@wwebjs.dev"
                  git config --global user.name "WWebJS Bot"

            - name: Bump version and publish to NPM
              id: publish
              run: ./tools/publish ${{ inputs.release_type }}

            - name: Create GitHub Release
              uses: ncipollo/release-action@v1
              with:
                  prerelease: ${{ steps.publish.outputs.PRERELEASE }}
                  generateReleaseNotes: true
                  tag: v${{ steps.publish.outputs.NEW_VERSION }}


================================================
FILE: .github/workflows/stale.yml
================================================
name: Mark Stale Issues and PRs

on:
    schedule:
        - cron: '0 0 * * *'
    workflow_dispatch:

permissions:
    issues: write
    pull-requests: write

concurrency:
    group: stale
    cancel-in-progress: false

jobs:
    stale:
        if: github.repository_owner == 'pedroslopez'
        runs-on: ubuntu-latest
        steps:
            - name: Mark stale issues and PRs
              uses: actions/stale@v9
              with:
                  repo-token: ${{ secrets.GITHUB_TOKEN }}
                  days-before-stale: 35
                  days-before-close: 7
                  stale-issue-label: 'stale'
                  stale-pr-label: 'stale'
                  start-date: '2026-03-03T00:00:00Z'
                  remove-stale-when-updated: true
                  exempt-issue-labels: 'pinned,security,feature request,issued high'
                  exempt-pr-labels: 'pinned,security,whatsapp change,approved,waiting for testers'
                  stale-issue-message: >
                      Marking this issue as stale due to inactivity. Comment or update the issue to
                      keep it open. It will be closed in 7 days otherwise. Thank you for your contributions.
                  stale-pr-message: >
                      Marking this pull request as stale due to inactivity. Push changes or comment
                      to keep it open. It will be closed in 7 days otherwise. Thank you for your contributions.
                  close-issue-message: >
                      Closing this issue due to inactivity. Feel free to reopen if it is still relevant.
                  close-pr-message: >
                      Closing this pull request due to inactivity. You can reopen it anytime to continue.


================================================
FILE: .github/workflows/tests.yml
================================================
name: Tests

on:
    push:
    pull_request:

concurrency:
    group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
    cancel-in-progress: true

jobs:
    tests:
        name: Tests
        runs-on: ubuntu-latest
        steps:
            - name: Checkout repository
              uses: actions/checkout@v4

            - name: Install Node.js v20
              uses: actions/setup-node@v4
              with:
                  node-version: 20

            - name: Install dependencies
              run: npm install

            - name: Run Eslint
              run: npm run lint


================================================
FILE: .github/workflows/update.yml
================================================
name: Update

on:
    schedule:
        - cron: '0 12 * * 0'
    workflow_dispatch:

permissions:
    contents: write
    pull-requests: write

concurrency:
    group: wa-update
    cancel-in-progress: false

jobs:
    update:
        if: github.repository_owner == 'pedroslopez'
        runs-on: ubuntu-latest
        defaults:
            run:
                working-directory: ./tools/version-checker

        steps:
            - name: Checkout
              uses: actions/checkout@v4

            - name: Setup Node.js
              uses: actions/setup-node@v4
              with:
                  node-version: '20'

            - name: Install dependencies
              run: npm install

            - name: Run Updater
              run: ./update-version

            - name: Store WA Version
              run: echo "WA_VERSION=$(cat ./.version)" >> $GITHUB_ENV

            - name: Create Pull Request
              uses: peter-evans/create-pull-request@v7
              with:
                  branch: auto-wa-web-update/patch
                  delete-branch: true
                  commit-message: 'chore: update supported WhatsApp Web version to v${{ env.WA_VERSION }}'
                  title: 'chore: update WhatsApp Web version (${{ env.WA_VERSION }})'
                  body: |
                      A new version of WhatsApp Web has been detected!

                      Tests should be run against this new version before merging.
                  labels: whatsapp change
                  reviewers: pedroslopez


================================================
FILE: .gitignore
================================================
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
coverage

# nyc test coverage
.nyc_output

# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt

# Bower dependency directory (https://bower.io/)
bower_components

# node-waf configuration
.lock-wscript

# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release

# Dependency directories
node_modules/
jspm_packages/

# Lock files
package-lock.json
yarn.lock

# TypeScript v1 declaration files
typings/

# Optional npm cache directory
.npm

# Optional eslint cache
.eslintcache

# Optional REPL history
.node_repl_history

# Output of 'npm pack'
*.tgz

# Yarn Integrity file
.yarn-integrity

# dotenv environment variables file
.env

# next.js build output
.next

# macOS
._*
.DS_Store

# Test sessions
*session.json
.wwebjs_auth/

# local version cache
.wwebjs_cache/

# IDE's
.idea
.vscode

================================================
FILE: .husky/commit-msg
================================================
# Normalize commit type to lowercase
sed -E 's/^[A-Za-z]+/\L&/' "$1" > "$1.tmp" && mv "$1.tmp" "$1"

npx --no-install commitlint --edit "$1"


================================================
FILE: .husky/pre-commit
================================================
npx lint-staged


================================================
FILE: .jsdoc.json
================================================
{
    "tags": {
        "allowUnknownTags": true,
        "dictionaries": ["jsdoc"]
    },
    "source": {
        "include": ["src", "package.json", "README.md"],
        "includePattern": ".js$",
        "excludePattern": "(node_modules/|docs)"
    },
    "plugins": ["plugins/markdown"],
    "templates": {
        "cleverLinks": false,
        "monospaceLinks": true,
        "useLongnameInNav": false,
        "showInheritedInNav": true
    },
    "opts": {
        "destination": "./docs/",
        "encoding": "utf8",
        "recurse": true,
        "template": "./node_modules/jsdoc-baseline"
    }
}


================================================
FILE: .lintstagedrc.json
================================================
{
    "*": "prettier --ignore-unknown --write",
    "*.{js,ts}": "eslint --fix",
    "src/**/*.{js,ts}": "eslint --fix",
    "tests/**/*.{js,ts}": "eslint --fix"
}


================================================
FILE: .npmignore
================================================
docs/*
.github/*

.eslintrc.json
.jsdoc.json
.editorconfig

logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*

*session.json
.wwebjs_auth/
.wwebjs_cache/

.env
tools/
tests/


================================================
FILE: .prettierignore
================================================
node_modules
dist
coverage
*.min.js
.wa-version
.wwebjs_auth
.wwebjs_cache
docs


================================================
FILE: .prettierrc.json
================================================
{
    "semi": true,
    "trailingComma": "all",
    "singleQuote": true,
    "printWidth": 80,
    "tabWidth": 4,
    "useTabs": false,
    "arrowParens": "always",
    "endOfLine": "lf"
}


================================================
FILE: LICENSE
================================================
                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "[]"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright 2019 Pedro S Lopez

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.


================================================
FILE: README.md
================================================
<div align="center">
    <p>
        <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>
    <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://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/pedroslopez/whatsapp-web.js/graphs/contributors"><img alt="GitHub contributors"
                src="https://img.shields.io/github/contributors-anon/pedroslopez/whatsapp-web.js" /></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>
        <a href="https://discord.wwebjs.dev"><img
                src="https://img.shields.io/discord/698610475432411196.svg?logo=discord" alt="Discord server" /></a>
    </p>
</div>

## About

whatsapp‑web.js is a powerful [Node.js][nodejs] 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 [Puppeteer][puppeteer] to access WhatsApp Web’s internal functions and runs them in a managed browser instance to reduce the risk of being blocked.

## Links

- [GitHub][gitHub]
- [Guide][guide] ([source][guide-source])
- [Documentation][documentation] ([source][documentation-source])
- [Discord Server][discord]
- [npm][npm]

## Installation

**Node.js `v18.0.0` or higher, is required.**

```sh
npm install whatsapp-web.js
yarn add whatsapp-web.js
pnpm add whatsapp-web.js
```

Having trouble installing? Take a peak at the [Guide][guide] for more detailed instructions.

## Example usage

```js
const { Client } = require('whatsapp-web.js');
const qrcode = require('qrcode-terminal');

const client = new Client();

client.on('qr', (qr) => {
    qrcode.generate(qr, { small: true });
});

client.on('ready', () => {
    console.log('Client is ready!');
});

client.on('message', (msg) => {
    if (msg.body == '!ping') {
        msg.reply('pong');
    }
});

client.initialize();
```

Take a look at [example.js][examples] for additional examples and use cases.  
For more details on saving and restoring sessions, check out the [Authentication Strategies][auth-strategies].

## Supported features

| Feature                                          | Status                                       |
| ------------------------------------------------ | -------------------------------------------- |
| Multi Device                                     | ✅                                           |
| Send messages                                    | ✅                                           |
| Receive messages                                 | ✅                                           |
| Send media (images/audio/documents)              | ✅                                           |
| Send media (video)                               | ✅ [(requires Google Chrome)][google-chrome] |
| Send stickers                                    | ✅                                           |
| Receive media (images/audio/video/documents)     | ✅                                           |
| Send contact cards                               | ✅                                           |
| Send location                                    | ✅                                           |
| Send buttons                                     | ❌ [(DEPRECATED)][deprecated-video]          |
| Send lists                                       | ❌ [(DEPRECATED)][deprecated-video]          |
| Receive location                                 | ✅                                           |
| Message replies                                  | ✅                                           |
| Join groups by invite                            | ✅                                           |
| Get invite for group                             | ✅                                           |
| Modify group info (subject, description)         | ✅                                           |
| Modify group settings (send messages, edit info) | ✅                                           |
| Add group participants                           | ✅                                           |
| Kick group participants                          | ✅                                           |
| Promote/demote group participants                | ✅                                           |
| Mention users                                    | ✅                                           |
| Mention groups                                   | ✅                                           |
| Mute/unmute chats                                | ✅                                           |
| Block/unblock contacts                           | ✅                                           |
| Get contact info                                 | ✅                                           |
| Get profile pictures                             | ✅                                           |
| Set user status message                          | ✅                                           |
| React to messages                                | ✅                                           |
| Create polls                                     | ✅                                           |
| Channels                                         | ✅                                           |
| Vote in polls                                    | ✅                                           |
| Communities                                      | 🔜                                           |

Something missing? Make an issue and let us know!

## Supporting the project

You can support the maintainer of this project through the links below:

- [Support via GitHub Sponsors][gitHub-sponsors]
- [Support via PayPal][support-payPal]

## Contributing

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 [contribution guidelines][contributing] before creating a pull request. Before creating your own issue or pull request, always check to see if one already exists!

## Disclaimer

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 [whatsapp.com][whatsapp]. "WhatsApp" 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.

## License

Copyright 2019 Pedro S Lopez

Licensed under the Apache License, Version 2.0 (the "License");  
you may not use this project except in compliance with the License.  
You may obtain a copy of the License at <https://www.apache.org/licenses/LICENSE-2.0>.

Unless required by applicable law or agreed to in writing, software  
distributed under the License is distributed on an "AS IS" BASIS,  
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
See the License for the specific language governing permissions and  
limitations under the License.

[guide]: https://guide.wwebjs.dev/guide
[guide-source]: https://github.com/wwebjs/wwebjs.dev/tree/main
[documentation]: https://docs.wwebjs.dev/
[documentation-source]: https://github.com/pedroslopez/whatsapp-web.js/tree/main/docs
[discord]: https://discord.wwebjs.dev
[gitHub]: https://github.com/pedroslopez/whatsapp-web.js
[npm]: https://npmjs.org/package/whatsapp-web.js
[nodejs]: https://nodejs.org/en/download/
[examples]: https://github.com/pedroslopez/whatsapp-web.js/blob/main/example.js
[auth-strategies]: https://wwebjs.dev/guide/creating-your-bot/authentication.html
[google-chrome]: https://wwebjs.dev/guide/creating-your-bot/handling-attachments.html#caveat-for-sending-videos-and-gifs
[deprecated-video]: https://www.youtube.com/watch?v=hv1R1rLeVVE
[gitHub-sponsors]: https://github.com/sponsors/pedroslopez
[support-payPal]: https://www.paypal.me/psla/
[contributing]: .github/CONTRIBUTING.md
[whatsapp]: https://whatsapp.com
[puppeteer]: https://pptr.dev/


================================================
FILE: commitlint.config.js
================================================
module.exports = {
    extends: ['@commitlint/config-conventional'],
    rules: {
        'header-max-length': [2, 'always', 72],
        'type-enum': [
            2,
            'always',
            [
                'feat',
                'fix',
                'docs',
                'style',
                'refactor',
                'perf',
                'test',
                'build',
                'ci',
                'chore',
                'types',
                'revert',
                'infra',
            ],
        ],
        'type-case': [0],
        'scope-case': [0],
        'subject-case': [0],
        'subject-exclamation-mark': [0],
    },
};


================================================
FILE: docs/Base.html
================================================
<!doctype html>
<html>

<head>
  <meta name="generator" content="JSDoc 3.6.11">
  <meta charset="utf-8">
  <title>whatsapp-web.js 1.34.6 &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">
  <link href="css/baseline.css" rel="stylesheet">
</head>

<body onload="prettyPrint()">
  <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>
      </div>
    </div>
  </nav>
  <div id="jsdoc-body-container">
    <div id="jsdoc-content">
      <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">Base</span></h1>
            <p class="source-link">Source: <a href="structures_Base.js.html#source-line-6">structures/<wbr>Base.<wbr>js:6</a></p>
            <div class="symbol-classdesc">
              <p>Represents a WhatsApp data structure</p>
            </div>
            <dl class="dl-compact">
            </dl>
          </header>
          <section id="summary">
          </section>
          <section>
            <h2 id="Base">new&nbsp;<span class="symbol-name">Base</span><span class="signature"><span class="signature-params">()</span></span></h2>
            <dl class="dl-compact">
            </dl>
          </section>
          <section>
          </section>
        </div>
      </div>
      <nav id="jsdoc-toc-nav" role="navigation"></nav>
    </div>
  </div>
  <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.
      </p>
    </div>
  </footer>
  <script src="scripts/jquery.min.js"></script>
  <script src="scripts/tree.jquery.js"></script>
  <script src="scripts/prettify.js"></script>
  <script src="scripts/jsdoc-toc.js"></script>
  <script src="scripts/linenumber.js"></script>
  <script src="scripts/scrollanchor.js"></script>
</body>

</html>

================================================
FILE: docs/BaseAuthStrategy.html
================================================
<!doctype html>
<html>

<head>
  <meta name="generator" content="JSDoc 3.6.11">
  <meta charset="utf-8">
  <title>whatsapp-web.js 1.34.6 &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">
  <link href="css/baseline.css" rel="stylesheet">
</head>

<body onload="prettyPrint()">
  <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>
      </div>
    </div>
  </nav>
  <div id="jsdoc-body-container">
    <div id="jsdoc-content">
      <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">BaseAuthStrategy</span></h1>
            <p class="source-link">Source: <a href="authStrategies_BaseAuthStrategy.js.html#source-line-6">authStrategies/<wbr>BaseAuthStrategy.<wbr>js:6</a></p>
            <div class="symbol-classdesc">
              <p>Base class which all authentication strategies extend</p>
            </div>
            <dl class="dl-compact">
            </dl>
          </header>
          <section id="summary">
          </section>
          <section>
            <h2 id="BaseAuthStrategy">new&nbsp;<span class="symbol-name">BaseAuthStrategy</span><span class="signature"><span class="signature-params">()</span></span></h2>
            <dl class="dl-compact">
            </dl>
          </section>
          <section>
          </section>
        </div>
      </div>
      <nav id="jsdoc-toc-nav" role="navigation"></nav>
    </div>
  </div>
  <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.
      </p>
    </div>
  </footer>
  <script src="scripts/jquery.min.js"></script>
  <script src="scripts/tree.jquery.js"></script>
  <script src="scripts/prettify.js"></script>
  <script src="scripts/jsdoc-toc.js"></script>
  <script src="scripts/linenumber.js"></script>
  <script src="scripts/scrollanchor.js"></script>
</body>

</html>

================================================
FILE: docs/Broadcast.html
================================================
<!doctype html>
<html>

<head>
  <meta name="generator" content="JSDoc 3.6.11">
  <meta charset="utf-8">
  <title>whatsapp-web.js 1.34.6 &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">
  <link href="css/baseline.css" rel="stylesheet">
</head>

<body onload="prettyPrint()">
  <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>
      </div>
    </div>
  </nav>
  <div id="jsdoc-body-container">
    <div id="jsdoc-content">
      <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">Broadcast</span></h1>
            <p class="source-link">Source: <a href="structures_Broadcast.js.html#source-line-10">structures/<wbr>Broadcast.<wbr>js:10</a></p>
            <div class="symbol-classdesc">
              <p>Represents a Status/Story on WhatsApp</p>
            </div>
            <dl class="dl-compact">
            </dl>
          </header>
          <section id="summary">
            <div class="summary-callout">
              <h2 class="summary-callout-heading">Properties</h2>
              <div class="summary-content">
                <div class="summary-column">
                  <dl class="dl-summary-callout">
                    <dt><a href="Broadcast.html#id">id</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Broadcast.html#msgs">msgs</a></dt>
                    <dd>
                    </dd>
                  </dl>
                </div>
                <div class="summary-column">
                  <dl class="dl-summary-callout">
                    <dt><a href="Broadcast.html#timestamp">timestamp</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Broadcast.html#totalCount">totalCount</a></dt>
                    <dd>
                    </dd>
                  </dl>
                </div>
                <div class="summary-column">
                  <dl class="dl-summary-callout">
                    <dt><a href="Broadcast.html#unreadCount">unreadCount</a></dt>
                    <dd>
                    </dd>
                  </dl>
                </div>
              </div>
            </div>
            <div class="summary-callout">
              <h2 class="summary-callout-heading">Methods</h2>
              <div class="summary-content">
                <div class="summary-column">
                  <dl class="dl-summary-callout">
                    <dt><a href="Broadcast.html#getChat">getChat()</a></dt>
                    <dd>
                    </dd>
                  </dl>
                </div>
                <div class="summary-column">
                  <dl class="dl-summary-callout">
                    <dt><a href="Broadcast.html#getContact">getContact()</a></dt>
                    <dd>
                    </dd>
                  </dl>
                </div>
                <div class="summary-column">
                </div>
              </div>
            </div>
          </section>
          <section>
            <h2 id="Broadcast">new&nbsp;<span class="symbol-name">Broadcast</span><span class="signature"><span class="signature-params">()</span></span></h2>
            <dl class="dl-compact">
              <dt>Extends</dt>
              <dd><a href="Base.html">Base</a></dd>
            </dl>
          </section>
          <section>
            <h2>Properties</h2>
            <section>
              <h3 id="id"><span class="symbol-name">id</span><small class="property-type">
                  &nbsp;object</small></h3>
              <p>ID that represents the chat</p>
              <dl class="dl-compact">
              </dl>
              <h3 id="msgs"><span class="symbol-name">msgs</span><small class="property-type">
                  &nbsp;Array of <a href="Message.html">Message</a></small></h3>
              <p>Messages statuses</p>
              <dl class="dl-compact">
              </dl>
              <h3 id="timestamp"><span class="symbol-name">timestamp</span><small class="property-type">
                  &nbsp;number</small></h3>
              <p>Unix timestamp of last status</p>
              <dl class="dl-compact">
              </dl>
              <h3 id="totalCount"><span class="symbol-name">totalCount</span><small class="property-type">
                  &nbsp;number</small></h3>
              <p>Number of available statuses</p>
              <dl class="dl-compact">
              </dl>
              <h3 id="unreadCount"><span class="symbol-name">unreadCount</span><small class="property-type">
                  &nbsp;number</small></h3>
              <p>Number of not viewed</p>
              <dl class="dl-compact">
              </dl>
            </section>
            <h2>Methods</h2>
            <section>
              <h3 id="getChat"><span class="symbol-name">getChat</span><span class="signature"><span class="signature-params">()</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing <a href="Chat.html">Chat</a></span></span></h3>
              <p>Returns the Chat this message was sent in</p>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code>Promise containing <a href="Chat.html">Chat</a></code> </p>
                </dd>
              </dl>
              <h3 id="getContact"><span class="symbol-name">getContact</span><span class="signature"><span class="signature-params">()</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing <a href="Contact.html">Contact</a></span></span></h3>
              <p>Returns the Contact this message was sent from</p>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code>Promise containing <a href="Contact.html">Contact</a></code> </p>
                </dd>
              </dl>
            </section>
          </section>
        </div>
      </div>
      <nav id="jsdoc-toc-nav" role="navigation"></nav>
    </div>
  </div>
  <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.
      </p>
    </div>
  </footer>
  <script src="scripts/jquery.min.js"></script>
  <script src="scripts/tree.jquery.js"></script>
  <script src="scripts/prettify.js"></script>
  <script src="scripts/jsdoc-toc.js"></script>
  <script src="scripts/linenumber.js"></script>
  <script src="scripts/scrollanchor.js"></script>
</body>

</html>

================================================
FILE: docs/BusinessContact.html
================================================
<!doctype html>
<html>

<head>
  <meta name="generator" content="JSDoc 3.6.11">
  <meta charset="utf-8">
  <title>whatsapp-web.js 1.34.6 &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">
  <link href="css/baseline.css" rel="stylesheet">
</head>

<body onload="prettyPrint()">
  <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>
      </div>
    </div>
  </nav>
  <div id="jsdoc-body-container">
    <div id="jsdoc-content">
      <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">BusinessContact</span></h1>
            <p class="source-link">Source: <a href="structures_BusinessContact.js.html#source-line-9">structures/<wbr>BusinessContact.<wbr>js:9</a></p>
            <div class="symbol-classdesc">
              <p>Represents a Business Contact on WhatsApp</p>
            </div>
            <dl class="dl-compact">
            </dl>
          </header>
          <section id="summary">
            <div class="summary-callout">
              <h2 class="summary-callout-heading">Properties</h2>
              <div class="summary-content">
                <div class="summary-column">
                  <dl class="dl-summary-callout">
                    <dt><a href="BusinessContact.html#businessProfile">businessProfile</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="BusinessContact.html#id">id</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="BusinessContact.html#isBlocked">isBlocked</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="BusinessContact.html#isBusiness">isBusiness</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="BusinessContact.html#isEnterprise">isEnterprise</a></dt>
                    <dd>
                    </dd>
                  </dl>
                </div>
                <div class="summary-column">
                  <dl class="dl-summary-callout">
                    <dt><a href="BusinessContact.html#isGroup">isGroup</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="BusinessContact.html#isMe">isMe</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="BusinessContact.html#isMyContact">isMyContact</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="BusinessContact.html#isUser">isUser</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="BusinessContact.html#isWAContact">isWAContact</a></dt>
                    <dd>
                    </dd>
                  </dl>
                </div>
                <div class="summary-column">
                  <dl class="dl-summary-callout">
                    <dt><a href="BusinessContact.html#name">name</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="BusinessContact.html#number">number</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="BusinessContact.html#pushname">pushname</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="BusinessContact.html#shortName">shortName</a></dt>
                    <dd>
                    </dd>
                  </dl>
                </div>
              </div>
            </div>
            <div class="summary-callout">
              <h2 class="summary-callout-heading">Methods</h2>
              <div class="summary-content">
                <div class="summary-column">
                  <dl class="dl-summary-callout">
                    <dt><a href="BusinessContact.html#block">block()</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="BusinessContact.html#getAbout">getAbout()</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="BusinessContact.html#getBroadcast">getBroadcast()</a></dt>
                    <dd>
                    </dd>
                  </dl>
                </div>
                <div class="summary-column">
                  <dl class="dl-summary-callout">
                    <dt><a href="BusinessContact.html#getChat">getChat()</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="BusinessContact.html#getCommonGroups">getCommonGroups()</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="BusinessContact.html#getCountryCode">getCountryCode()</a></dt>
                    <dd>
                    </dd>
                  </dl>
                </div>
                <div class="summary-column">
                  <dl class="dl-summary-callout">
                    <dt><a href="BusinessContact.html#getFormattedNumber">getFormattedNumber()</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="BusinessContact.html#getProfilePicUrl">getProfilePicUrl()</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="BusinessContact.html#unblock">unblock()</a></dt>
                    <dd>
                    </dd>
                  </dl>
                </div>
              </div>
            </div>
          </section>
          <section>
            <h2 id="BusinessContact">new&nbsp;<span class="symbol-name">BusinessContact</span><span class="signature"><span class="signature-params">()</span></span></h2>
            <dl class="dl-compact">
              <dt>Extends</dt>
              <dd><a href="Contact.html">Contact</a></dd>
            </dl>
          </section>
          <section>
            <h2>Properties</h2>
            <section>
              <h3 id="businessProfile"><span class="symbol-name">businessProfile</span></h3>
              <p>The contact's business profile</p>
              <dl class="dl-compact">
              </dl>
              <h3 id="id"><span class="symbol-name">id</span><small class="property-type">
                  &nbsp;unknown</small></h3>
              <p>ID that represents the contact</p>
              <dl class="dl-compact">
                <dt>Inherited from</dt>
                <dd><a href="Contact.html#id">Contact#id</a></dd>
              </dl>
              <h3 id="isBlocked"><span class="symbol-name">isBlocked</span><small class="property-type">
                  &nbsp;unknown</small></h3>
              <p>Indicates if you have blocked this contact</p>
              <dl class="dl-compact">
                <dt>Inherited from</dt>
                <dd><a href="Contact.html#isBlocked">Contact#isBlocked</a></dd>
              </dl>
              <h3 id="isBusiness"><span class="symbol-name">isBusiness</span><small class="property-type">
                  &nbsp;unknown</small></h3>
              <p>Indicates if the contact is a business contact</p>
              <dl class="dl-compact">
                <dt>Inherited from</dt>
                <dd><a href="Contact.html#isBusiness">Contact#isBusiness</a></dd>
              </dl>
              <h3 id="isEnterprise"><span class="symbol-name">isEnterprise</span><small class="property-type">
                  &nbsp;unknown</small></h3>
              <p>Indicates if the contact is an enterprise contact</p>
              <dl class="dl-compact">
                <dt>Inherited from</dt>
                <dd><a href="Contact.html#isEnterprise">Contact#isEnterprise</a></dd>
              </dl>
              <h3 id="isGroup"><span class="symbol-name">isGroup</span><small class="property-type">
                  &nbsp;unknown</small></h3>
              <p>Indicates if the contact is a group contact</p>
              <dl class="dl-compact">
                <dt>Inherited from</dt>
                <dd><a href="Contact.html#isGroup">Contact#isGroup</a></dd>
              </dl>
              <h3 id="isMe"><span class="symbol-name">isMe</span><small class="property-type">
                  &nbsp;unknown</small></h3>
              <p>Indicates if the contact is the current user's contact</p>
              <dl class="dl-compact">
                <dt>Inherited from</dt>
                <dd><a href="Contact.html#isMe">Contact#isMe</a></dd>
              </dl>
              <h3 id="isMyContact"><span class="symbol-name">isMyContact</span><small class="property-type">
                  &nbsp;unknown</small></h3>
              <p>Indicates if the number is saved in the current phone's contacts</p>
              <dl class="dl-compact">
                <dt>Inherited from</dt>
                <dd><a href="Contact.html#isMyContact">Contact#isMyContact</a></dd>
              </dl>
              <h3 id="isUser"><span class="symbol-name">isUser</span><small class="property-type">
                  &nbsp;unknown</small></h3>
              <p>Indicates if the contact is a user contact</p>
              <dl class="dl-compact">
                <dt>Inherited from</dt>
                <dd><a href="Contact.html#isUser">Contact#isUser</a></dd>
              </dl>
              <h3 id="isWAContact"><span class="symbol-name">isWAContact</span><small class="property-type">
                  &nbsp;unknown</small></h3>
              <p>Indicates if the number is registered on WhatsApp</p>
              <dl class="dl-compact">
                <dt>Inherited from</dt>
                <dd><a href="Contact.html#isWAContact">Contact#isWAContact</a></dd>
              </dl>
              <h3 id="name"><span class="symbol-name">name</span><small class="property-type">
                  &nbsp;unknown</small></h3>
              <p>The contact's name, as saved by the current user</p>
              <dl class="dl-compact">
                <dt>Inherited from</dt>
                <dd><a href="Contact.html#name">Contact#name</a></dd>
              </dl>
              <h3 id="number"><span class="symbol-name">number</span><small class="property-type">
                  &nbsp;unknown</small></h3>
              <p>Contact's phone number</p>
              <dl class="dl-compact">
                <dt>Inherited from</dt>
                <dd><a href="Contact.html#number">Contact#number</a></dd>
              </dl>
              <h3 id="pushname"><span class="symbol-name">pushname</span><small class="property-type">
                  &nbsp;unknown</small></h3>
              <p>The name that the contact has configured to be shown publically</p>
              <dl class="dl-compact">
                <dt>Inherited from</dt>
                <dd><a href="Contact.html#pushname">Contact#pushname</a></dd>
              </dl>
              <h3 id="shortName"><span class="symbol-name">shortName</span><small class="property-type">
                  &nbsp;unknown</small></h3>
              <p>A shortened version of name</p>
              <dl class="dl-compact">
                <dt>Inherited from</dt>
                <dd><a href="Contact.html#shortName">Contact#shortName</a></dd>
              </dl>
            </section>
            <h2>Methods</h2>
            <section>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="block"><span class="symbol-name">block</span><span class="signature"><span class="signature-params">()</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing boolean</span></span></h3>
              <p>Blocks this contact from WhatsApp</p>
              <dl class="dl-compact">
                <dt>Inherited from</dt>
                <dd><a href="Contact.html#block">Contact#block</a></dd>
                <dt>Returns</dt>
                <dd></dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="getAbout"><span class="symbol-name">getAbout</span><span class="signature"><span class="signature-params">()</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing nullable string</span></span></h3>
              <p>Gets the Contact's current &quot;about&quot; info. Returns null if you don't have permission to read their status.</p>
              <dl class="dl-compact">
                <dt>Inherited from</dt>
                <dd><a href="Contact.html#getAbout">Contact#getAbout</a></dd>
                <dt>Returns</dt>
                <dd></dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="getBroadcast"><span class="symbol-name">getBroadcast</span><span class="signature"><span class="signature-params">()</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing <a href="Broadcast.html">Broadcast</a></span></span></h3>
              <p>Gets the Contact's current status broadcast.</p>
              <dl class="dl-compact">
                <dt>Inherited from</dt>
                <dd><a href="Contact.html#getBroadcast">Contact#getBroadcast</a></dd>
                <dt>Returns</dt>
                <dd></dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="getChat"><span class="symbol-name">getChat</span><span class="signature"><span class="signature-params">()</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing <a href="Chat.html">Chat</a></span></span></h3>
              <p>Returns the Chat that corresponds to this Contact.
                Will return null when getting chat for currently logged in user.</p>
              <dl class="dl-compact">
                <dt>Inherited from</dt>
                <dd><a href="Contact.html#getChat">Contact#getChat</a></dd>
                <dt>Returns</dt>
                <dd></dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="getCommonGroups"><span class="symbol-name">getCommonGroups</span><span class="signature"><span class="signature-params">()</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing Array of WAWebJS.ChatId</span></span></h3>
              <p>Gets the Contact's common groups with you. Returns empty array if you don't have any common group.</p>
              <dl class="dl-compact">
                <dt>Inherited from</dt>
                <dd><a href="Contact.html#getCommonGroups">Contact#getCommonGroups</a></dd>
                <dt>Returns</dt>
                <dd></dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="getCountryCode"><span class="symbol-name">getCountryCode</span><span class="signature"><span class="signature-params">()</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing string</span></span></h3>
              <p>Returns the contact's countrycode, (1541859685@c.us) =&gt; (1)</p>
              <dl class="dl-compact">
                <dt>Inherited from</dt>
                <dd><a href="Contact.html#getCountryCode">Contact#getCountryCode</a></dd>
                <dt>Returns</dt>
                <dd></dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="getFormattedNumber"><span class="symbol-name">getFormattedNumber</span><span class="signature"><span class="signature-params">()</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing string</span></span></h3>
              <p>Returns the contact's formatted phone number, (12345678901@c.us) =&gt; (+1 (234) 5678-901)</p>
              <dl class="dl-compact">
                <dt>Inherited from</dt>
                <dd><a href="Contact.html#getFormattedNumber">Contact#getFormattedNumber</a></dd>
                <dt>Returns</dt>
                <dd></dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="getProfilePicUrl"><span class="symbol-name">getProfilePicUrl</span><span class="signature"><span class="signature-params">()</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing string</span></span></h3>
              <p>Returns the contact's profile picture URL, if privacy settings allow it</p>
              <dl class="dl-compact">
                <dt>Inherited from</dt>
                <dd><a href="Contact.html#getProfilePicUrl">Contact#getProfilePicUrl</a></dd>
                <dt>Returns</dt>
                <dd></dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="unblock"><span class="symbol-name">unblock</span><span class="signature"><span class="signature-params">()</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing boolean</span></span></h3>
              <p>Unblocks this contact from WhatsApp</p>
              <dl class="dl-compact">
                <dt>Inherited from</dt>
                <dd><a href="Contact.html#unblock">Contact#unblock</a></dd>
                <dt>Returns</dt>
                <dd></dd>
              </dl>
            </section>
          </section>
        </div>
      </div>
      <nav id="jsdoc-toc-nav" role="navigation"></nav>
    </div>
  </div>
  <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.
      </p>
    </div>
  </footer>
  <script src="scripts/jquery.min.js"></script>
  <script src="scripts/tree.jquery.js"></script>
  <script src="scripts/prettify.js"></script>
  <script src="scripts/jsdoc-toc.js"></script>
  <script src="scripts/linenumber.js"></script>
  <script src="scripts/scrollanchor.js"></script>
</body>

</html>

================================================
FILE: docs/Buttons.html
================================================
<!doctype html>
<html>

<head>
  <meta name="generator" content="JSDoc 3.6.11">
  <meta charset="utf-8">
  <title>whatsapp-web.js 1.34.6 &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">
  <link href="css/baseline.css" rel="stylesheet">
</head>

<body onload="prettyPrint()">
  <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>
      </div>
    </div>
  </nav>
  <div id="jsdoc-body-container">
    <div id="jsdoc-content">
      <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">Buttons</span></h1>
            <p class="source-link">Source: <a href="structures_Buttons.js.html#source-line-23">structures/<wbr>Buttons.<wbr>js:23</a></p>
            <div class="symbol-classdesc">
              <p>Message type buttons</p>
            </div>
            <dl class="dl-compact">
            </dl>
          </header>
          <section id="summary">
            <div class="summary-callout">
              <h2 class="summary-callout-heading">Properties</h2>
              <div class="summary-content">
                <div class="summary-column">
                  <dl class="dl-summary-callout">
                    <dt><a href="Buttons.html#body">body</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Buttons.html#buttons">buttons</a></dt>
                    <dd>
                    </dd>
                  </dl>
                </div>
                <div class="summary-column">
                  <dl class="dl-summary-callout">
                    <dt><a href="Buttons.html#footer">footer</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Buttons.html#title">title</a></dt>
                    <dd>
                    </dd>
                  </dl>
                </div>
                <div class="summary-column">
                </div>
              </div>
            </div>
            <div class="summary-callout">
              <h2 class="summary-callout-heading">Method</h2>
              <div class="summary-content">
                <div class="summary-column">
                  <dl class="dl-summary-callout">
                    <dt><a href="Buttons.html#_format">_format(buttons)</a></dt>
                    <dd>
                    </dd>
                  </dl>
                </div>
                <div class="summary-column">
                </div>
                <div class="summary-column">
                </div>
              </div>
            </div>
          </section>
          <section>
            <h2 id="Buttons">new&nbsp;<span class="symbol-name">Buttons</span><span class="signature"><span class="signature-params">(body, buttons, title, footer)</span></span></h2>
            <section>
              <h3>Parameters</h3>
              <table class="jsdoc-details-table">
                <thead>
                  <tr>
                    <th>Name</th>
                    <th>Type</th>
                    <th>Optional</th>
                    <th>Description</th>
                  </tr>
                </thead>
                <tbody>
                  <tr>
                    <td>
                      <p>body</p>
                    </td>
                    <td>
                      <p>&nbsp;</p>
                    </td>
                    <td>
                      <p>&nbsp;</p>
                    </td>
                    <td>
                    </td>
                  </tr>
                  <tr>
                    <td>
                      <p>buttons</p>
                    </td>
                    <td>
                      <p>&nbsp;</p>
                    </td>
                    <td>
                      <p>&nbsp;</p>
                    </td>
                    <td>
                      <p>See <a href="global.html#ButtonSpec"><code>ButtonSpec</code></a></p>
                    </td>
                  </tr>
                  <tr>
                    <td>
                      <p>title</p>
                    </td>
                    <td>
                      <p>&nbsp;</p>
                    </td>
                    <td>
                      <p>&nbsp;</p>
                    </td>
                    <td>
                      <p>Value can be null.</p>
                    </td>
                  </tr>
                  <tr>
                    <td>
                      <p>footer</p>
                    </td>
                    <td>
                      <p>&nbsp;</p>
                    </td>
                    <td>
                      <p>&nbsp;</p>
                    </td>
                    <td>
                      <p>Value can be null.</p>
                    </td>
                  </tr>
                </tbody>
              </table>
            </section>
            <dl class="dl-compact">
            </dl>
          </section>
          <section>
            <h2>Properties</h2>
            <section>
              <h3 id="body"><span class="symbol-name">body</span><small class="property-type">
                  &nbsp;(string or <a href="MessageMedia.html">MessageMedia</a>)</small></h3>
              <p>Message body</p>
              <dl class="dl-compact">
              </dl>
              <h3 id="buttons"><span class="symbol-name">buttons</span><small class="property-type">
                  &nbsp;Array of <a href="global.html#FormattedButtonSpec">FormattedButtonSpec</a></small></h3>
              <p>buttons of message</p>
              <dl class="dl-compact">
              </dl>
              <h3 id="footer"><span class="symbol-name">footer</span><small class="property-type">
                  &nbsp;string</small></h3>
              <p>footer of message</p>
              <dl class="dl-compact">
              </dl>
              <h3 id="title"><span class="symbol-name">title</span><small class="property-type">
                  &nbsp;string</small></h3>
              <p>title of message</p>
              <dl class="dl-compact">
              </dl>
            </section>
            <h2>Method</h2>
            <section>
              <h3 id="_format"><span class="symbol-name">_format</span><span class="signature"><span class="signature-params">(buttons)</span>&nbsp;&rarr; <span class="signature-returns"> Array of <a href="global.html#FormattedButtonSpec">FormattedButtonSpec</a></span></span></h3>
              <p>Creates button array from simple array</p>
              <section>
                <h4>
                  Example
                </h4>
                <div>
                  <pre class="prettyprint"><code>Input: [{id:&#x27;customId&#x27;,body:&#x27;button1&#x27;},{body:&#x27;button2&#x27;},{body:&#x27;button3&#x27;},{body:&#x27;button4&#x27;}]
Returns: [{ buttonId:&#x27;customId&#x27;,buttonText:{&#x27;displayText&#x27;:&#x27;button1&#x27;},type: 1 },{buttonId:&#x27;n3XKsL&#x27;,buttonText:{&#x27;displayText&#x27;:&#x27;button2&#x27;},type:1},{buttonId:&#x27;NDJk0a&#x27;,buttonText:{&#x27;displayText&#x27;:&#x27;button3&#x27;},type:1}]</code></pre>
                </div>
              </section>
              <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>buttons</p>
                      </td>
                      <td>
                        <p>Array of <a href="global.html#ButtonSpec">ButtonSpec</a></p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </section>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code>Array of <a href="global.html#FormattedButtonSpec">FormattedButtonSpec</a></code> </p>
                </dd>
              </dl>
            </section>
          </section>
        </div>
      </div>
      <nav id="jsdoc-toc-nav" role="navigation"></nav>
    </div>
  </div>
  <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.
      </p>
    </div>
  </footer>
  <script src="scripts/jquery.min.js"></script>
  <script src="scripts/tree.jquery.js"></script>
  <script src="scripts/prettify.js"></script>
  <script src="scripts/jsdoc-toc.js"></script>
  <script src="scripts/linenumber.js"></script>
  <script src="scripts/scrollanchor.js"></script>
</body>

</html>

================================================
FILE: docs/CNAME
================================================
docs.wwebjs.dev

================================================
FILE: docs/Call.html
================================================
<!doctype html>
<html>

<head>
  <meta name="generator" content="JSDoc 3.6.11">
  <meta charset="utf-8">
  <title>whatsapp-web.js 1.34.6 &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">
  <link href="css/baseline.css" rel="stylesheet">
</head>

<body onload="prettyPrint()">
  <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>
      </div>
    </div>
  </nav>
  <div id="jsdoc-body-container">
    <div id="jsdoc-content">
      <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">Call</span></h1>
            <p class="source-link">Source: <a href="structures_Call.js.html#source-line-9">structures/<wbr>Call.<wbr>js:9</a></p>
            <div class="symbol-classdesc">
              <p>Represents a Call on WhatsApp</p>
            </div>
            <dl class="dl-compact">
            </dl>
          </header>
          <section id="summary">
            <div class="summary-callout">
              <h2 class="summary-callout-heading">Properties</h2>
              <div class="summary-content">
                <div class="summary-column">
                  <dl class="dl-summary-callout">
                    <dt><a href="Call.html#canHandleLocally">canHandleLocally</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Call.html#from">from</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Call.html#fromMe">fromMe</a></dt>
                    <dd>
                    </dd>
                  </dl>
                </div>
                <div class="summary-column">
                  <dl class="dl-summary-callout">
                    <dt><a href="Call.html#id">id</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Call.html#isGroup">isGroup</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Call.html#isVideo">isVideo</a></dt>
                    <dd>
                    </dd>
                  </dl>
                </div>
                <div class="summary-column">
                  <dl class="dl-summary-callout">
                    <dt><a href="Call.html#participants">participants</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Call.html#timestamp">timestamp</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Call.html#webClientShouldHandle">webClientShouldHandle</a></dt>
                    <dd>
                    </dd>
                  </dl>
                </div>
              </div>
            </div>
            <div class="summary-callout">
              <h2 class="summary-callout-heading">Method</h2>
              <div class="summary-content">
                <div class="summary-column">
                  <dl class="dl-summary-callout">
                    <dt><a href="Call.html#reject">reject()</a></dt>
                    <dd>
                    </dd>
                  </dl>
                </div>
                <div class="summary-column">
                </div>
                <div class="summary-column">
                </div>
              </div>
            </div>
          </section>
          <section>
            <h2 id="Call">new&nbsp;<span class="symbol-name">Call</span><span class="signature"><span class="signature-params">()</span></span></h2>
            <dl class="dl-compact">
              <dt>Extends</dt>
              <dd><a href="Base.html">Base</a></dd>
            </dl>
          </section>
          <section>
            <h2>Properties</h2>
            <section>
              <h3 id="canHandleLocally"><span class="symbol-name">canHandleLocally</span><small class="property-type">
                  &nbsp;boolean</small></h3>
              <p>Indicates if the call can be handled in waweb</p>
              <dl class="dl-compact">
              </dl>
              <h3 id="from"><span class="symbol-name">from</span><small class="property-type">
                  &nbsp;string</small></h3>
              <p>From</p>
              <dl class="dl-compact">
              </dl>
              <h3 id="fromMe"><span class="symbol-name">fromMe</span><small class="property-type">
                  &nbsp;boolean</small></h3>
              <p>Indicates if the call was sent by the current user</p>
              <dl class="dl-compact">
              </dl>
              <h3 id="id"><span class="symbol-name">id</span><small class="property-type">
                  &nbsp;string</small></h3>
              <p>Call ID</p>
              <dl class="dl-compact">
              </dl>
              <h3 id="isGroup"><span class="symbol-name">isGroup</span><small class="property-type">
                  &nbsp;boolean</small></h3>
              <p>Is Group</p>
              <dl class="dl-compact">
              </dl>
              <h3 id="isVideo"><span class="symbol-name">isVideo</span><small class="property-type">
                  &nbsp;boolean</small></h3>
              <p>Is video</p>
              <dl class="dl-compact">
              </dl>
              <h3 id="participants"><span class="symbol-name">participants</span><small class="property-type">
                  &nbsp;object</small></h3>
              <p>Object with participants</p>
              <dl class="dl-compact">
              </dl>
              <h3 id="timestamp"><span class="symbol-name">timestamp</span><small class="property-type">
                  &nbsp;number</small></h3>
              <p>Unix timestamp for when the call was created</p>
              <dl class="dl-compact">
              </dl>
              <h3 id="webClientShouldHandle"><span class="symbol-name">webClientShouldHandle</span><small class="property-type">
                  &nbsp;boolean</small></h3>
              <p>Indicates if the call Should be handled in waweb</p>
              <dl class="dl-compact">
              </dl>
            </section>
            <h2>Method</h2>
            <section>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="reject"><span class="symbol-name">reject</span><span class="signature"><span class="signature-params">()</span></span></h3>
              <p>Reject the call</p>
              <dl class="dl-compact">
              </dl>
            </section>
          </section>
        </div>
      </div>
      <nav id="jsdoc-toc-nav" role="navigation"></nav>
    </div>
  </div>
  <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.
      </p>
    </div>
  </footer>
  <script src="scripts/jquery.min.js"></script>
  <script src="scripts/tree.jquery.js"></script>
  <script src="scripts/prettify.js"></script>
  <script src="scripts/jsdoc-toc.js"></script>
  <script src="scripts/linenumber.js"></script>
  <script src="scripts/scrollanchor.js"></script>
</body>

</html>

================================================
FILE: docs/Channel.html
================================================
<!doctype html>
<html>

<head>
  <meta name="generator" content="JSDoc 3.6.11">
  <meta charset="utf-8">
  <title>whatsapp-web.js 1.34.6 &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">
  <link href="css/baseline.css" rel="stylesheet">
</head>

<body onload="prettyPrint()">
  <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>
      </div>
    </div>
  </nav>
  <div id="jsdoc-body-container">
    <div id="jsdoc-content">
      <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">Channel</span></h1>
            <p class="source-link">Source: <a href="structures_Channel.js.html#source-line-18">structures/<wbr>Channel.<wbr>js:18</a></p>
            <div class="symbol-classdesc">
              <p>Represents a Channel on WhatsApp</p>
            </div>
            <dl class="dl-compact">
            </dl>
          </header>
          <section id="summary">
            <div class="summary-callout">
              <h2 class="summary-callout-heading">Properties</h2>
              <div class="summary-content">
                <div class="summary-column">
                  <dl class="dl-summary-callout">
                    <dt><a href="Channel.html#description">description</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Channel.html#id">id</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Channel.html#isChannel">isChannel</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Channel.html#isGroup">isGroup</a></dt>
                    <dd>
                    </dd>
                  </dl>
                </div>
                <div class="summary-column">
                  <dl class="dl-summary-callout">
                    <dt><a href="Channel.html#isMuted">isMuted</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Channel.html#isReadOnly">isReadOnly</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Channel.html#lastMessage">lastMessage</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Channel.html#muteExpiration">muteExpiration</a></dt>
                    <dd>
                    </dd>
                  </dl>
                </div>
                <div class="summary-column">
                  <dl class="dl-summary-callout">
                    <dt><a href="Channel.html#name">name</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Channel.html#timestamp">timestamp</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Channel.html#unreadCount">unreadCount</a></dt>
                    <dd>
                    </dd>
                  </dl>
                </div>
              </div>
            </div>
            <div class="summary-callout">
              <h2 class="summary-callout-heading">Methods</h2>
              <div class="summary-content">
                <div class="summary-column">
                  <dl class="dl-summary-callout">
                    <dt><a href="Channel.html#_muteUnmuteChannel">_muteUnmuteChannel(action)</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Channel.html#_setChannelMetadata">_setChannelMetadata(value, property)</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Channel.html#acceptChannelAdminInvite">acceptChannelAdminInvite()</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Channel.html#deleteChannel">deleteChannel()</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Channel.html#demoteChannelAdmin">demoteChannelAdmin(userId)</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Channel.html#fetchMessages">fetchMessages(searchOptions)</a></dt>
                    <dd>
                    </dd>
                  </dl>
                </div>
                <div class="summary-column">
                  <dl class="dl-summary-callout">
                    <dt><a href="Channel.html#getSubscribers">getSubscribers(limit)</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Channel.html#mute">mute()</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Channel.html#revokeChannelAdminInvite">revokeChannelAdminInvite(userId)</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Channel.html#sendChannelAdminInvite">sendChannelAdminInvite(chatId, options)</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Channel.html#sendMessage">sendMessage(content, options)</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Channel.html#sendSeen">sendSeen()</a></dt>
                    <dd>
                    </dd>
                  </dl>
                </div>
                <div class="summary-column">
                  <dl class="dl-summary-callout">
                    <dt><a href="Channel.html#setDescription">setDescription(newDescription)</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Channel.html#setProfilePicture">setProfilePicture(newProfilePicture)</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Channel.html#setReactionSetting">setReactionSetting(reactionCode)</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Channel.html#setSubject">setSubject(newSubject)</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Channel.html#transferChannelOwnership">transferChannelOwnership(newOwnerId, options)</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Channel.html#unmute">unmute()</a></dt>
                    <dd>
                    </dd>
                  </dl>
                </div>
              </div>
            </div>
          </section>
          <section>
            <h2 id="Channel">new&nbsp;<span class="symbol-name">Channel</span><span class="signature"><span class="signature-params">()</span></span></h2>
            <dl class="dl-compact">
              <dt>Extends</dt>
              <dd><a href="Base.html">Base</a></dd>
            </dl>
          </section>
          <section>
            <h2>Properties</h2>
            <section>
              <h3 id="description"><span class="symbol-name">description</span><small class="property-type">
                  &nbsp;string</small></h3>
              <p>The channel description</p>
              <dl class="dl-compact">
              </dl>
              <h3 id="id"><span class="symbol-name">id</span><small class="property-type">
                  &nbsp;<a href="global.html#ChannelId">ChannelId</a></small></h3>
              <p>ID that represents the channel</p>
              <dl class="dl-compact">
              </dl>
              <h3 id="isChannel"><span class="symbol-name">isChannel</span><small class="property-type">
                  &nbsp;boolean</small></h3>
              <p>Indicates if it is a Channel</p>
              <dl class="dl-compact">
              </dl>
              <h3 id="isGroup"><span class="symbol-name">isGroup</span><small class="property-type">
                  &nbsp;boolean</small></h3>
              <p>Indicates if it is a Group</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 channel is muted or not</p>
              <dl class="dl-compact">
              </dl>
              <h3 id="isReadOnly"><span class="symbol-name">isReadOnly</span><small class="property-type">
                  &nbsp;boolean</small></h3>
              <p>Indicates if the channel is readonly</p>
              <dl class="dl-compact">
              </dl>
              <h3 id="lastMessage"><span class="symbol-name">lastMessage</span><small class="property-type">
                  &nbsp;<a href="Message.html">Message</a></small></h3>
              <p>Last message in the channel</p>
              <dl class="dl-compact">
              </dl>
              <h3 id="muteExpiration"><span class="symbol-name">muteExpiration</span><small class="property-type">
                  &nbsp;number</small></h3>
              <p>Unix timestamp for when the mute expires</p>
              <dl class="dl-compact">
              </dl>
              <h3 id="name"><span class="symbol-name">name</span><small class="property-type">
                  &nbsp;string</small></h3>
              <p>Title of the channel</p>
              <dl class="dl-compact">
              </dl>
              <h3 id="timestamp"><span class="symbol-name">timestamp</span><small class="property-type">
                  &nbsp;number</small></h3>
              <p>Unix timestamp for when the last activity occurred</p>
              <dl class="dl-compact">
              </dl>
              <h3 id="unreadCount"><span class="symbol-name">unreadCount</span><small class="property-type">
                  &nbsp;number</small></h3>
              <p>Amount of messages unread</p>
              <dl class="dl-compact">
              </dl>
            </section>
            <h2>Methods</h2>
            <section>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="_muteUnmuteChannel"><span class="symbol-name">_muteUnmuteChannel</span><span class="signature"><span class="signature-params">(action)</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing boolean</span></span></h3>
              <p>Internal method to mute or unmute the channel</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>action</p>
                      </td>
                      <td>
                        <p>string</p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                        <p>The action: 'MUTE' or 'UNMUTE'</p>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </section>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code>Promise containing boolean</code> 
                  <p>Returns true if the operation completed successfully, false otherwise</p>
                  </p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="_setChannelMetadata"><span class="symbol-name">_setChannelMetadata</span><span class="signature"><span class="signature-params">(value, property)</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing boolean</span></span></h3>
              <p>Internal method to change the channel metadata</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>value</p>
                      </td>
                      <td>
                        <p>(string, number, or <a href="MessageMedia.html">MessageMedia</a>)</p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                        <p>The new value to set</p>
                      </td>
                    </tr>
                    <tr>
                      <td>
                        <p>property</p>
                      </td>
                      <td>
                        <p>string</p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                        <p>The property of a channel metadata to change</p>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </section>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code>Promise containing boolean</code> 
                  <p>Returns true if the operation completed successfully, false otherwise</p>
                  </p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="acceptChannelAdminInvite"><span class="symbol-name">acceptChannelAdminInvite</span><span class="signature"><span class="signature-params">()</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing boolean</span></span></h3>
              <p>Accepts a channel admin invitation and promotes the current user to a channel admin</p>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code>Promise containing boolean</code> 
                  <p>Returns true if the operation completed successfully, false otherwise</p>
                  </p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="deleteChannel"><span class="symbol-name">deleteChannel</span><span class="signature"><span class="signature-params">()</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing boolean</span></span></h3>
              <p>Deletes the channel you created</p>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code>Promise containing boolean</code> 
                  <p>Returns true if the operation completed successfully, false otherwise</p>
                  </p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="demoteChannelAdmin"><span class="symbol-name">demoteChannelAdmin</span><span class="signature"><span class="signature-params">(userId)</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing boolean</span></span></h3>
              <p>Demotes a channel admin to a regular subscriber (can be used also for self-demotion)</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>userId</p>
                      </td>
                      <td>
                        <p>string</p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                        <p>The user ID to demote</p>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </section>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code>Promise containing boolean</code> 
                  <p>Returns true if the operation completed successfully, false otherwise</p>
                  </p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="fetchMessages"><span class="symbol-name">fetchMessages</span><span class="signature"><span class="signature-params">(searchOptions)</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing Array of <a href="Message.html">Message</a></span></span></h3>
              <p>Loads channel messages, sorted from earliest to latest</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>searchOptions</p>
                      </td>
                      <td>
                        <p>Object</p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                        <p>Options for searching messages. Right now only limit and fromMe is supported</p>
                        <p>Values in <code>searchOptions</code> have the following properties:</p>
                        <table class="jsdoc-details-table">
                          <thead>
                            <tr>
                              <th>Name</th>
                              <th>Type</th>
                              <th>Optional</th>
                              <th>Description</th>
                            </tr>
                          </thead>
                          <tbody>
                            <tr>
                              <td>
                                <p>limit</p>
                              </td>
                              <td>
                                <p>Number</p>
                              </td>
                              <td>
                                <p>Yes</p>
                              </td>
                              <td>
                                <p>The amount of messages to return. If no limit is specified, the available messages will be returned. Note that the actual number of returned messages may be smaller if there aren't enough messages in the conversation. Set this to Infinity to load all messages</p>
                              </td>
                            </tr>
                            <tr>
                              <td>
                                <p>fromMe</p>
                              </td>
                              <td>
                                <p>Boolean</p>
                              </td>
                              <td>
                                <p>Yes</p>
                              </td>
                              <td>
                                <p>Return only messages from the bot number or vise versa. To get all messages, leave the option undefined</p>
                              </td>
                            </tr>
                          </tbody>
                        </table>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </section>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code>Promise containing Array of <a href="Message.html">Message</a></code> </p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="getSubscribers"><span class="symbol-name">getSubscribers</span><span class="signature"><span class="signature-params">(limit)</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing Array of {contact: <a href="Contact.html">Contact</a>, role: string}</span></span></h3>
              <p>Gets the subscribers of the channel (only those who are in your contact list)</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>limit</p>
                      </td>
                      <td>
                        <p>number</p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                        <p>Optional parameter to specify the limit of subscribers to retrieve</p>
                        <p>Value can be null.</p>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </section>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code>Promise containing Array of {contact: <a href="Contact.html">Contact</a>, role: string}</code> 
                  <p>Returns an array of objects that handle the subscribed contacts and their roles in the channel</p>
                  </p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="mute"><span class="symbol-name">mute</span><span class="signature"><span class="signature-params">()</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing boolean</span></span></h3>
              <p>Mutes the channel</p>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code>Promise containing boolean</code> 
                  <p>Returns true if the operation completed successfully, false otherwise</p>
                  </p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="revokeChannelAdminInvite"><span class="symbol-name">revokeChannelAdminInvite</span><span class="signature"><span class="signature-params">(userId)</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing boolean</span></span></h3>
              <p>Revokes a channel admin invitation sent to a user by a channel owner</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>userId</p>
                      </td>
                      <td>
                        <p>string</p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                        <p>The user ID the invitation was sent to</p>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </section>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code>Promise containing boolean</code> 
                  <p>Returns true if the operation completed successfully, false otherwise</p>
                  </p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="sendChannelAdminInvite"><span class="symbol-name">sendChannelAdminInvite</span><span class="signature"><span class="signature-params">(chatId, options)</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing boolean</span></span></h3>
              <p>Sends a channel admin invitation to a user, allowing them to become an admin of the channel</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>chatId</p>
                      </td>
                      <td>
                        <p>string</p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                        <p>The ID of a user to send the channel admin invitation to</p>
                      </td>
                    </tr>
                    <tr>
                      <td>
                        <p>options</p>
                      </td>
                      <td>
                        <p><a href="global.html#SendChannelAdminInviteOptions">SendChannelAdminInviteOptions</a></p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </section>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code>Promise containing boolean</code> 
                  <p>Returns true if an invitation was sent successfully, false otherwise</p>
                  </p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="sendMessage"><span class="symbol-name">sendMessage</span><span class="signature"><span class="signature-params">(content, options)</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing <a href="Message.html">Message</a></span></span></h3>
              <p>Sends a message to this channel</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>content</p>
                      </td>
                      <td>
                        <p>(string or <a href="MessageMedia.html">MessageMedia</a>)</p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                      </td>
                    </tr>
                    <tr>
                      <td>
                        <p>options</p>
                      </td>
                      <td>
                        <p><a href="global.html#MessageSendOptions">MessageSendOptions</a></p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                        <p>Value can be null.</p>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </section>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code>Promise containing <a href="Message.html">Message</a></code> 
                  <p>Message that was just sent</p>
                  </p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="sendSeen"><span class="symbol-name">sendSeen</span><span class="signature"><span class="signature-params">()</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing boolean</span></span></h3>
              <p>Sets the channel as seen</p>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code>Promise containing boolean</code> </p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="setDescription"><span class="symbol-name">setDescription</span><span class="signature"><span class="signature-params">(newDescription)</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing boolean</span></span></h3>
              <p>Updates the channel description</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>newDescription</p>
                      </td>
                      <td>
                        <p>string</p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </section>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code>Promise containing boolean</code> 
                  <p>Returns true if the operation completed successfully, false otherwise</p>
                  </p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="setProfilePicture"><span class="symbol-name">setProfilePicture</span><span class="signature"><span class="signature-params">(newProfilePicture)</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing boolean</span></span></h3>
              <p>Updates the channel profile picture</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>newProfilePicture</p>
                      </td>
                      <td>
                        <p><a href="MessageMedia.html">MessageMedia</a></p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </section>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code>Promise containing boolean</code> 
                  <p>Returns true if the operation completed successfully, false otherwise</p>
                  </p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="setReactionSetting"><span class="symbol-name">setReactionSetting</span><span class="signature"><span class="signature-params">(reactionCode)</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing boolean</span></span></h3>
              <p>Updates available reactions to use in the channel</p>
              <p>Valid values for passing to the method are:
                0 for NONE reactions to be avaliable
                1 for BASIC reactions to be available: 👍, ❤️, 😂, 😮, 😢, 🙏
                2 for ALL reactions to be available</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>reactionCode</p>
                      </td>
                      <td>
                        <p>number</p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </section>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code>Promise containing boolean</code> 
                  <p>Returns true if the operation completed successfully, false otherwise</p>
                  </p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="setSubject"><span class="symbol-name">setSubject</span><span class="signature"><span class="signature-params">(newSubject)</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing boolean</span></span></h3>
              <p>Updates the channel subject</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>newSubject</p>
                      </td>
                      <td>
                        <p>string</p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </section>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code>Promise containing boolean</code> 
                  <p>Returns true if the subject was properly updated. This can return false if the user does not have the necessary permissions.</p>
                  </p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="transferChannelOwnership"><span class="symbol-name">transferChannelOwnership</span><span class="signature"><span class="signature-params">(newOwnerId, options)</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing boolean</span></span></h3>
              <p>Transfers a channel ownership to another user.
                Note: the user you are transferring the channel ownership to must be a channel admin.</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>newOwnerId</p>
                      </td>
                      <td>
                        <p>string</p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                      </td>
                    </tr>
                    <tr>
                      <td>
                        <p>options</p>
                      </td>
                      <td>
                        <p><a href="global.html#TransferChannelOwnershipOptions">TransferChannelOwnershipOptions</a></p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </section>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code>Promise containing boolean</code> 
                  <p>Returns true if the operation completed successfully, false otherwise</p>
                  </p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="unmute"><span class="symbol-name">unmute</span><span class="signature"><span class="signature-params">()</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing boolean</span></span></h3>
              <p>Unmutes the channel</p>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code>Promise containing boolean</code> 
                  <p>Returns true if the operation completed successfully, false otherwise</p>
                  </p>
                </dd>
              </dl>
            </section>
          </section>
        </div>
      </div>
      <nav id="jsdoc-toc-nav" role="navigation"></nav>
    </div>
  </div>
  <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.
      </p>
    </div>
  </footer>
  <script src="scripts/jquery.min.js"></script>
  <script src="scripts/tree.jquery.js"></script>
  <script src="scripts/prettify.js"></script>
  <script src="scripts/jsdoc-toc.js"></script>
  <script src="scripts/linenumber.js"></script>
  <script src="scripts/scrollanchor.js"></script>
</body>

</html>

================================================
FILE: docs/Chat.html
================================================
<!doctype html>
<html>

<head>
  <meta name="generator" content="JSDoc 3.6.11">
  <meta charset="utf-8">
  <title>whatsapp-web.js 1.34.6 &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">
  <link href="css/baseline.css" rel="stylesheet">
</head>

<body onload="prettyPrint()">
  <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>
      </div>
    </div>
  </nav>
  <div id="jsdoc-body-container">
    <div id="jsdoc-content">
      <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">Chat</span></h1>
            <p class="source-link">Source: <a href="structures_Chat.js.html#source-line-10">structures/<wbr>Chat.<wbr>js:10</a></p>
            <div class="symbol-classdesc">
              <p>Represents a Chat on WhatsApp</p>
            </div>
            <dl class="dl-compact">
            </dl>
          </header>
          <section id="summary">
            <div class="summary-callout">
              <h2 class="summary-callout-heading">Properties</h2>
              <div class="summary-content">
                <div class="summary-column">
                  <dl class="dl-summary-callout">
                    <dt><a href="Chat.html#archived">archived</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Chat.html#id">id</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Chat.html#isGroup">isGroup</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Chat.html#isMuted">isMuted</a></dt>
                    <dd>
                    </dd>
                  </dl>
                </div>
                <div class="summary-column">
                  <dl class="dl-summary-callout">
                    <dt><a href="Chat.html#isReadOnly">isReadOnly</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Chat.html#lastMessage">lastMessage</a></dt>
                    <dd>
                    </dd>
                    <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#pinned">pinned</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Chat.html#timestamp">timestamp</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Chat.html#unreadCount">unreadCount</a></dt>
                    <dd>
                    </dd>
                  </dl>
                </div>
              </div>
            </div>
            <div class="summary-callout">
              <h2 class="summary-callout-heading">Methods</h2>
              <div class="summary-content">
                <div class="summary-column">
                  <dl class="dl-summary-callout">
                    <dt><a href="Chat.html#addOrEditCustomerNote">addOrEditCustomerNote(note)</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Chat.html#archive">archive()</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Chat.html#changeLabels">changeLabels(labelIds)</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Chat.html#clearMessages">clearMessages()</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Chat.html#clearState">clearState()</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Chat.html#delete">delete()</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Chat.html#fetchMessages">fetchMessages(searchOptions)</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Chat.html#getContact">getContact()</a></dt>
                    <dd>
                    </dd>
                  </dl>
                </div>
                <div class="summary-column">
                  <dl class="dl-summary-callout">
                    <dt><a href="Chat.html#getCustomerNote">getCustomerNote()</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Chat.html#getLabels">getLabels()</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Chat.html#getPinnedMessages">getPinnedMessages()</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Chat.html#markUnread">markUnread()</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Chat.html#mute">mute(unmuteDate)</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Chat.html#pin">pin()</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Chat.html#sendMessage">sendMessage(content[, options])</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Chat.html#sendSeen">sendSeen()</a></dt>
                    <dd>
                    </dd>
                  </dl>
                </div>
                <div class="summary-column">
                  <dl class="dl-summary-callout">
                    <dt><a href="Chat.html#sendStateRecording">sendStateRecording()</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Chat.html#sendStateTyping">sendStateTyping()</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Chat.html#syncHistory">syncHistory()</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Chat.html#unarchive">unarchive()</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Chat.html#unmute">unmute()</a></dt>
                    <dd>
                    </dd>
                    <dt><a href="Chat.html#unpin">unpin()</a></dt>
                    <dd>
                    </dd>
                  </dl>
                </div>
              </div>
            </div>
          </section>
          <section>
            <h2 id="Chat">new&nbsp;<span class="symbol-name">Chat</span><span class="signature"><span class="signature-params">()</span></span></h2>
            <dl class="dl-compact">
              <dt>Extends</dt>
              <dd><a href="Base.html">Base</a></dd>
            </dl>
          </section>
          <section>
            <h2>Properties</h2>
            <section>
              <h3 id="archived"><span class="symbol-name">archived</span><small class="property-type">
                  &nbsp;boolean</small></h3>
              <p>Indicates if the Chat is archived</p>
              <dl class="dl-compact">
              </dl>
              <h3 id="id"><span class="symbol-name">id</span><small class="property-type">
                  &nbsp;object</small></h3>
              <p>ID that represents the chat</p>
              <dl class="dl-compact">
              </dl>
              <h3 id="isGroup"><span class="symbol-name">isGroup</span><small class="property-type">
                  &nbsp;boolean</small></h3>
              <p>Indicates if the Chat is a Group Chat</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>
              <dl class="dl-compact">
              </dl>
              <h3 id="isReadOnly"><span class="symbol-name">isReadOnly</span><small class="property-type">
                  &nbsp;boolean</small></h3>
              <p>Indicates if the Chat is readonly</p>
              <dl class="dl-compact">
              </dl>
              <h3 id="lastMessage"><span class="symbol-name">lastMessage</span><small class="property-type">
                  &nbsp;<a href="Message.html">Message</a></small></h3>
              <p>Last message fo chat</p>
              <dl class="dl-compact">
              </dl>
              <h3 id="muteExpiration"><span class="symbol-name">muteExpiration</span><small class="property-type">
                  &nbsp;number</small></h3>
              <p>Unix timestamp for when the mute expires</p>
              <dl class="dl-compact">
              </dl>
              <h3 id="name"><span class="symbol-name">name</span><small class="property-type">
                  &nbsp;string</small></h3>
              <p>Title of the chat</p>
              <dl class="dl-compact">
              </dl>
              <h3 id="pinned"><span class="symbol-name">pinned</span><small class="property-type">
                  &nbsp;boolean</small></h3>
              <p>Indicates if the Chat is pinned</p>
              <dl class="dl-compact">
              </dl>
              <h3 id="timestamp"><span class="symbol-name">timestamp</span><small class="property-type">
                  &nbsp;number</small></h3>
              <p>Unix timestamp for when the last activity occurred</p>
              <dl class="dl-compact">
              </dl>
              <h3 id="unreadCount"><span class="symbol-name">unreadCount</span><small class="property-type">
                  &nbsp;number</small></h3>
              <p>Amount of messages unread</p>
              <dl class="dl-compact">
              </dl>
            </section>
            <h2>Methods</h2>
            <section>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="addOrEditCustomerNote"><span class="symbol-name">addOrEditCustomerNote</span><span class="signature"><span class="signature-params">(note)</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing void</span></span></h3>
              <p>Add or edit a customer note</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>note</p>
                      </td>
                      <td>
                        <p>string</p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                        <p>The note to add</p>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </section>
              <dl class="dl-compact">
                <dt>See also</dt>
                <dd><a href="https://faq.whatsapp.com/1433099287594476">https://faq.whatsapp.com/1433099287594476</a></dd>
                <dt>Returns</dt>
                <dd>
                  <p><code>Promise containing void</code> </p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="archive"><span class="symbol-name">archive</span><span class="signature"><span class="signature-params">()</span></span></h3>
              <p>Archives this chat</p>
              <dl class="dl-compact">
              </dl>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="changeLabels"><span class="symbol-name">changeLabels</span><span class="signature"><span class="signature-params">(labelIds)</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing void</span></span></h3>
              <p>Add or remove labels to this Chat</p>
              <section>
                <h4>Parameter</h4>
                <table class="jsdoc-details-table">
                  <thead>
                    <tr>
                      <th>Name</th>
                      <th>Type</th>
                      <th>Optional</th>
                      <th>Description</th>
                    </tr>
                  </thead>
                  <tbody>
                    <tr>
                      <td>
                        <p>labelIds</p>
                      </td>
                      <td>
                        <p>Array of (number or string)</p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </section>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code>Promise containing void</code> </p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="clearMessages"><span class="symbol-name">clearMessages</span><span class="signature"><span class="signature-params">()</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing boolean</span></span></h3>
              <p>Clears all messages from the chat</p>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code>Promise containing boolean</code> 
                  <p>result</p>
                  </p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="clearState"><span class="symbol-name">clearState</span><span class="signature"><span class="signature-params">()</span></span></h3>
              <p>Stops typing or recording in chat immediately.</p>
              <dl class="dl-compact">
              </dl>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="delete"><span class="symbol-name">delete</span><span class="signature"><span class="signature-params">()</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing Boolean</span></span></h3>
              <p>Deletes the chat</p>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code>Promise containing Boolean</code> 
                  <p>result</p>
                  </p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="fetchMessages"><span class="symbol-name">fetchMessages</span><span class="signature"><span class="signature-params">(searchOptions)</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing Array of <a href="Message.html">Message</a></span></span></h3>
              <p>Loads chat messages, sorted from earliest to latest.</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>searchOptions</p>
                      </td>
                      <td>
                        <p>Object</p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                        <p>Options for searching messages. Right now only limit and fromMe is supported.</p>
                        <p>Values in <code>searchOptions</code> have the following properties:</p>
                        <table class="jsdoc-details-table">
                          <thead>
                            <tr>
                              <th>Name</th>
                              <th>Type</th>
                              <th>Optional</th>
                              <th>Description</th>
                            </tr>
                          </thead>
                          <tbody>
                            <tr>
                              <td>
                                <p>limit</p>
                              </td>
                              <td>
                                <p>Number</p>
                              </td>
                              <td>
                                <p>Yes</p>
                              </td>
                              <td>
                                <p>The amount of messages to return. If no limit is specified, the available messages will be returned. Note that the actual number of returned messages may be smaller if there aren't enough messages in the conversation. Set this to Infinity to load all messages.</p>
                              </td>
                            </tr>
                            <tr>
                              <td>
                                <p>fromMe</p>
                              </td>
                              <td>
                                <p>Boolean</p>
                              </td>
                              <td>
                                <p>Yes</p>
                              </td>
                              <td>
                                <p>Return only messages from the bot number or vise versa. To get all messages, leave the option undefined.</p>
                              </td>
                            </tr>
                          </tbody>
                        </table>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </section>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code>Promise containing Array of <a href="Message.html">Message</a></code> </p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="getContact"><span class="symbol-name">getContact</span><span class="signature"><span class="signature-params">()</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing <a href="Contact.html">Contact</a></span></span></h3>
              <p>Returns the Contact that corresponds to this Chat.</p>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code>Promise containing <a href="Contact.html">Contact</a></code> </p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="getCustomerNote"><span class="symbol-name">getCustomerNote</span><span class="signature"><span class="signature-params">()</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing {chatId: string, content: string, createdAt: number, id: string, modifiedAt: number, type: string}</span></span></h3>
              <p>Get a customer note</p>
              <dl class="dl-compact">
                <dt>See also</dt>
                <dd><a href="https://faq.whatsapp.com/1433099287594476">https://faq.whatsapp.com/1433099287594476</a></dd>
                <dt>Returns</dt>
                <dd>
                  <p><code>Promise containing {chatId: string, content: string, createdAt: number, id: string, modifiedAt: number, type: string}</code> </p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="getLabels"><span class="symbol-name">getLabels</span><span class="signature"><span class="signature-params">()</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing Array of <a href="Label.html">Label</a></span></span></h3>
              <p>Returns array of all Labels assigned to this Chat</p>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code>Promise containing Array of <a href="Label.html">Label</a></code> </p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="getPinnedMessages"><span class="symbol-name">getPinnedMessages</span><span class="signature"><span class="signature-params">()</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing Array of <a href="Message.html">Message</a></span></span></h3>
              <p>Gets instances of all pinned messages in a chat</p>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code>Promise containing Array of <a href="Message.html">Message</a></code> </p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="markUnread"><span class="symbol-name">markUnread</span><span class="signature"><span class="signature-params">()</span></span></h3>
              <p>Mark this chat as unread</p>
              <dl class="dl-compact">
              </dl>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="mute"><span class="symbol-name">mute</span><span class="signature"><span class="signature-params">(unmuteDate)</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing {isMuted: boolean, muteExpiration: number}</span></span></h3>
              <p>Mutes this chat forever, unless a date is specified</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>unmuteDate</p>
                      </td>
                      <td>
                        <p>Date</p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                        <p>Date when the chat will be unmuted, don't provide a value to mute forever</p>
                        <p>Value can be null.</p>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </section>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code>Promise containing {isMuted: boolean, muteExpiration: number}</code> </p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="pin"><span class="symbol-name">pin</span><span class="signature"><span class="signature-params">()</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing boolean</span></span></h3>
              <p>Pins this chat</p>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code>Promise containing boolean</code> 
                  <p>New pin state. Could be false if the max number of pinned chats was reached.</p>
                  </p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="sendMessage"><span class="symbol-name">sendMessage</span><span class="signature"><span class="signature-params">(content[, options])</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing <a href="Message.html">Message</a></span></span></h3>
              <p>Send a message to this chat</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>content</p>
                      </td>
                      <td>
                        <p>(string, <a href="MessageMedia.html">MessageMedia</a>, or <a href="Location.html">Location</a>)</p>
                      </td>
                      <td>
                        <p>&nbsp;</p>
                      </td>
                      <td>
                      </td>
                    </tr>
                    <tr>
                      <td>
                        <p>options</p>
                      </td>
                      <td>
                        <p><a href="global.html#MessageSendOptions">MessageSendOptions</a></p>
                      </td>
                      <td>
                        <p>Yes</p>
                      </td>
                      <td>
                      </td>
                    </tr>
                  </tbody>
                </table>
              </section>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code>Promise containing <a href="Message.html">Message</a></code> 
                  <p>Message that was just sent</p>
                  </p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="sendSeen"><span class="symbol-name">sendSeen</span><span class="signature"><span class="signature-params">()</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing Boolean</span></span></h3>
              <p>Sets the chat as seen</p>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code>Promise containing Boolean</code> 
                  <p>result</p>
                  </p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="sendStateRecording"><span class="symbol-name">sendStateRecording</span><span class="signature"><span class="signature-params">()</span></span></h3>
              <p>Simulate recording audio in chat. This will last for 25 seconds.</p>
              <dl class="dl-compact">
              </dl>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="sendStateTyping"><span class="symbol-name">sendStateTyping</span><span class="signature"><span class="signature-params">()</span></span></h3>
              <p>Simulate typing in chat. This will last for 25 seconds.</p>
              <dl class="dl-compact">
              </dl>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="syncHistory"><span class="symbol-name">syncHistory</span><span class="signature"><span class="signature-params">()</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing boolean</span></span></h3>
              <p>Sync chat history conversation</p>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code>Promise containing boolean</code> 
                  <p>True if operation completed successfully, false otherwise.</p>
                  </p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="unarchive"><span class="symbol-name">unarchive</span><span class="signature"><span class="signature-params">()</span></span></h3>
              <p>un-archives this chat</p>
              <dl class="dl-compact">
              </dl>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="unmute"><span class="symbol-name">unmute</span><span class="signature"><span class="signature-params">()</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing {isMuted: boolean, muteExpiration: number}</span></span></h3>
              <p>Unmutes this chat</p>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code>Promise containing {isMuted: boolean, muteExpiration: number}</code> </p>
                </dd>
              </dl>
              <div class="symbol-detail-labels"><span class="label label-async">async</span></div>
              <h3 id="unpin"><span class="symbol-name">unpin</span><span class="signature"><span class="signature-params">()</span>&nbsp;&rarr; <span class="signature-returns"> Promise containing boolean</span></span></h3>
              <p>Unpins this chat</p>
              <dl class="dl-compact">
                <dt>Returns</dt>
                <dd>
                  <p><code>Promise containing boolean</code> 
                  <p>New pin state</p>
                  </p>
                </dd>
              </dl>
            </section>
          </section>
        </div>
      </div>
      <nav id="jsdoc-toc-nav" role="navigation"></nav>
    </div>
  </div>
  <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.
      </p>
    </div>
  </footer>
  <script src="scripts/jquery.min.js"></script>
  <script src="scripts/tree.jquery.js"></script>
  <script src="scripts/prettify.js"></script>
  <script src="scripts/jsdoc-toc.js"></script>
  <script src="scripts/linenumber.js"></script>
  <script src="scripts/scrollanchor.js"></script>
</body>

</html>

================================================
FILE: docs/Client.html
================================================
<!doctype html>
<html>
        <head>
                <meta name="generator" content="JSDoc 3.6.11">
                <meta charset="utf-8">
                <title>whatsapp-web.js 1.34.6 &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">
                <link href="css/baseline.css" rel="stylesheet">
        </head>
        <body onload="prettyPrint()">
                <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>
        </div>
    </div>
</nav>

                <div id="jsdoc-body-container">
                        <div id="jsdoc-content">
                                <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-classdesc">
                <p>Starting point for interacting with the WhatsApp Web API</p>
            </div>
        <dl class="dl-compact">
            
            
            
        </dl>
</header>


    <section id="summary">
                

                

                

                

                    <div class="summary-callout">
            <h2 class="summary-callout-heading">Properties</h2>
        <div class="summary-content">
                    <div class="summary-column">
        <dl class="dl-summary-callout">
                <dt><a href="Client.html#info">info</a></dt>
                <dd>
                </dd>
        </dl>
</div>

                    <div class="summary-column">
        <dl class="dl-summary-callout">
                <dt><a href="Client.html#pupBrowser">pupBrowser</a></dt>
                <dd>
                </dd>
        </dl>
</div>

                    <div class="summary-column">
        <dl class="dl-summary-callout">
                <dt><a href="Client.html#pupPage">pupPage</a></dt>
                <dd>
                </dd>
        </dl>
</div>

        </div>
    </div>


                    <div class="summary-callout">
            <h2 class="summary-callout-heading">Methods</h2>
        <div class="summary-content">
                    <div class="summary-column">
        <dl class="dl-summary-callout">
                <dt><a href="Client.html#_muteUnmuteChat">_muteUnmuteChat(chatId, action, unmuteDateTs)</a></dt>
                <dd>
                </dd>
                <dt><a href="Client.html#acceptChannelAdminInvite">acceptChannelAdminInvite(channelId)</a></dt>
                <dd>
                </dd>
                <dt><a href="Client.html#acceptGroupV4Invite">acceptGroupV4Invite(inviteInfo)</a></dt>
                <dd>
                </dd>
                <dt><a href="Client.html#acceptInvite">acceptInvite(inviteCode)</a></dt>
                <dd>
                </dd>
                <dt><a href="Client.html#addOrEditCustomerNote">addOrEditCustomerNote(userId, note)</a></dt>
                <dd>
                </dd>
                <dt><a href="Client.html#addOrRemoveLabels">addOrRemoveLabels(labelIds, chatIds)</a></dt>
                <dd>
                </dd>
                <dt><a href="Client.html#approveGroupMembershipRequests">approveGroupMembershipRequests(groupId, options)</a></dt>
                <dd>
                </dd>
                <dt><a href="Client.html#archiveChat">archiveChat()</a></dt>
                <dd>
                </dd>
                <dt><a href="Client.html#attachEventListeners">attachEventListeners()</a></dt>
                <dd>
                </dd>
                <dt><a href="Client.html#createCallLink">createCallLink(startTime, callType)</a></dt>
                <dd>
                </dd>
                <dt><a href="Client.html#createChannel">createChannel(title, options)</a></dt>
                <dd>
                </dd>
                <dt><a href="Client.html#createGroup">createGroup(title, participants, options)</a></dt>
                <dd>
                </dd>
                <dt><a href="Client.html#deleteAddressbookContact">deleteAddressbookContact(phoneNumber)</a></dt>
                <dd>
                </dd>
                <dt><a href="Client.html#deleteChannel">deleteChannel(channelId)</a></dt>
                <dd>
                </dd>
                <dt><a href="Client.html#deleteProfilePicture">deleteProfilePicture()</a></dt>
            
Download .txt
gitextract_wvtmvct8/

├── .editorconfig
├── .eslintignore
├── .eslintrc.json
├── .gitattributes
├── .github/
│   ├── CODE_OF_CONDUCT.md
│   ├── COMMIT_CONVENTION.md
│   ├── CONTRIBUTING.md
│   ├── DISCLAIMER.md
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   ├── 01-bug_report.yml
│   │   ├── 02-feature_request.yml
│   │   └── config.yml
│   ├── SUPPORT.md
│   ├── dependabot.yml
│   ├── issue-labeler.yml
│   ├── labels.yml
│   ├── pr-labeler.yml
│   ├── pull_request_template.md
│   └── workflows/
│       ├── format-issue-bug.yml
│       ├── issue-triage.yml
│       ├── labels-sync.yml
│       ├── lint.yml
│       ├── pr-triage.yml
│       ├── release.yml
│       ├── stale.yml
│       ├── tests.yml
│       └── update.yml
├── .gitignore
├── .husky/
│   ├── commit-msg
│   └── pre-commit
├── .jsdoc.json
├── .lintstagedrc.json
├── .npmignore
├── .prettierignore
├── .prettierrc.json
├── LICENSE
├── README.md
├── commitlint.config.js
├── docs/
│   ├── Base.html
│   ├── BaseAuthStrategy.html
│   ├── Broadcast.html
│   ├── BusinessContact.html
│   ├── Buttons.html
│   ├── CNAME
│   ├── Call.html
│   ├── Channel.html
│   ├── Chat.html
│   ├── Client.html
│   ├── Client.js.html
│   ├── ClientInfo.html
│   ├── Contact.html
│   ├── GroupChat.html
│   ├── GroupNotification.html
│   ├── InterfaceController.html
│   ├── Label.html
│   ├── LegacySessionAuth.html
│   ├── List.html
│   ├── LocalAuth.html
│   ├── LocalWebCache.html
│   ├── Location.html
│   ├── Message.html
│   ├── MessageMedia.html
│   ├── NoAuth.html
│   ├── Order.html
│   ├── Poll.html
│   ├── PollVote.html
│   ├── PrivateChat.html
│   ├── PrivateContact.html
│   ├── Product.html
│   ├── Reaction.html
│   ├── RemoteAuth.html
│   ├── RemoteWebCache.html
│   ├── ScheduledEvent.html
│   ├── Util.html
│   ├── WebCache.html
│   ├── authStrategies_BaseAuthStrategy.js.html
│   ├── authStrategies_LegacySessionAuth.js.html
│   ├── authStrategies_LocalAuth.js.html
│   ├── authStrategies_NoAuth.js.html
│   ├── authStrategies_RemoteAuth.js.html
│   ├── css/
│   │   └── baseline.css
│   ├── global.html
│   ├── index.html
│   ├── scripts/
│   │   ├── jsdoc-toc.js
│   │   ├── lang-css.js
│   │   ├── linenumber.js
│   │   ├── prettify.js
│   │   ├── scrollanchor.js
│   │   └── tree.jquery.js
│   ├── structures_Base.js.html
│   ├── structures_Broadcast.js.html
│   ├── structures_BusinessContact.js.html
│   ├── structures_Buttons.js.html
│   ├── structures_Call.js.html
│   ├── structures_Channel.js.html
│   ├── structures_Chat.js.html
│   ├── structures_ClientInfo.js.html
│   ├── structures_Contact.js.html
│   ├── structures_GroupChat.js.html
│   ├── structures_GroupNotification.js.html
│   ├── structures_Label.js.html
│   ├── structures_List.js.html
│   ├── structures_Location.js.html
│   ├── structures_Message.js.html
│   ├── structures_MessageMedia.js.html
│   ├── structures_Order.js.html
│   ├── structures_Payment.js.html
│   ├── structures_Poll.js.html
│   ├── structures_PollVote.js.html
│   ├── structures_PrivateChat.js.html
│   ├── structures_PrivateContact.js.html
│   ├── structures_Product.js.html
│   ├── structures_ProductMetadata.js.html
│   ├── structures_Reaction.js.html
│   ├── structures_ScheduledEvent.js.html
│   ├── util_Constants.js.html
│   ├── util_Injected.js.html
│   ├── util_Injected_LegacyStore.js.html
│   ├── util_Injected_Store.js.html
│   ├── util_Injected_Utils.js.html
│   ├── util_InterfaceController.js.html
│   ├── util_Puppeteer.js.html
│   ├── util_Util.js.html
│   ├── webCache_LocalWebCache.js.html
│   ├── webCache_RemoteWebCache.js.html
│   └── webCache_WebCache.js.html
├── example.js
├── index.d.ts
├── index.js
├── package.json
├── shell.js
├── src/
│   ├── Client.js
│   ├── authStrategies/
│   │   ├── BaseAuthStrategy.js
│   │   ├── LocalAuth.js
│   │   ├── NoAuth.js
│   │   └── RemoteAuth.js
│   ├── factories/
│   │   ├── ChatFactory.js
│   │   └── ContactFactory.js
│   ├── structures/
│   │   ├── Base.js
│   │   ├── Broadcast.js
│   │   ├── BusinessContact.js
│   │   ├── Buttons.js
│   │   ├── Call.js
│   │   ├── Channel.js
│   │   ├── Chat.js
│   │   ├── ClientInfo.js
│   │   ├── Contact.js
│   │   ├── GroupChat.js
│   │   ├── GroupNotification.js
│   │   ├── Label.js
│   │   ├── List.js
│   │   ├── Location.js
│   │   ├── Message.js
│   │   ├── MessageMedia.js
│   │   ├── Order.js
│   │   ├── Payment.js
│   │   ├── Poll.js
│   │   ├── PollVote.js
│   │   ├── PrivateChat.js
│   │   ├── PrivateContact.js
│   │   ├── Product.js
│   │   ├── ProductMetadata.js
│   │   ├── Reaction.js
│   │   ├── ScheduledEvent.js
│   │   └── index.js
│   ├── util/
│   │   ├── Constants.js
│   │   ├── Injected/
│   │   │   ├── AuthStore/
│   │   │   │   └── AuthStore.js
│   │   │   └── Utils.js
│   │   ├── InterfaceController.js
│   │   ├── Puppeteer.js
│   │   └── Util.js
│   └── webCache/
│       ├── LocalWebCache.js
│       ├── RemoteWebCache.js
│       ├── WebCache.js
│       └── WebCacheFactory.js
├── tests/
│   ├── README.md
│   ├── client.js
│   ├── helper.js
│   └── structures/
│       ├── chat.js
│       ├── group.js
│       └── message.js
└── tools/
    ├── changelog.sh
    ├── publish
    └── version-checker/
        ├── .version
        └── update-version
Download .txt
SYMBOL INDEX (455 symbols across 45 files)

FILE: docs/scripts/prettify.js
  function L (line 1) | function L(e,n,t,r,a){if(t){var s={sourceNode:e,pre:1,langExtension:null...
  function k (line 1) | function k(e){for(var n=void 0,t=e.firstChild;t;t=t.nextSibling){var r=t...
  function y (line 1) | function y(c,w){var S,C={};!function(){for(var e=c.concat(w),n=[],t={},r...
  function b (line 1) | function b(e){var n=[],t=[];e.tripleQuotedStrings?n.push([d,/^(?:\'\'\'(...
  function R (line 1) | function R(e,n,i){for(var o=/(?:^|\s)nocode(?:\s|$)/,u=/\r\n?|\n/,c=e.ow...
  function S (line 1) | function S(e,n){for(var t=n.length;0<=--t;){var r=n[t];w.hasOwnProperty(...
  function A (line 1) | function A(e,n){return e&&w.hasOwnProperty(e)||(e=/^\s*</.test(n)?"defau...
  function $ (line 1) | function $(e){var n=e.langExtension;try{var t=function(e,l){var i=/(?:^|...
  function C (line 1) | function C(e,n,t){var r=t||!1,a=n||null,s=document.createElement("div");...
  function N (line 1) | function N(y,e){var n=e||document.body,b=n.ownerDocument||document;funct...

FILE: docs/scripts/scrollanchor.js
  function o (line 1) | function o(n){var o,t,e=document.getElementById(n.replace(/^#/,""));e&&(...

FILE: docs/scripts/tree.jquery.js
  function r (line 1) | function r(e){if(n[e])return n[e].exports;var t=n[e]={i:e,l:!1,exports:{...
  function n (line 1) | function n(e,t,o){void 0===t&&(t=!1),void 0===o&&(o=n),this.name="",this...
  function t (line 1) | function t(e){null!=e&&(o.name=e)}
  function u (line 1) | function u(e,t){this.$el=jQuery(e);var o=this.constructor.defaults;this....
  function d (line 1) | function d(){return"simple_widget_"+e}
  function l (line 1) | function l(e,t){var o=jQuery.data(e,t);return o&&o instanceof u?o:null}
  function o (line 1) | function o(){this.constructor=e}
  function t (line 1) | function t(){var n=null!==e&&e.apply(this,arguments)||this;return n._han...
  function r (line 1) | function r(e,t,o){new _.FolderElement(e,n).open(o,t,n.options.animationS...
  function e (line 1) | function e(e){if(n&&n.id){var t={node:n.id};e.data=t}else{var o=r._getNo...
  function t (line 1) | function t(){o.isInitialized||(o.isInitialized=!0,o._triggerEvent("tree....
  function o (line 1) | function o(){this.constructor=e}
  function e (line 1) | function e(e){this.treeWidget=e,this.hoveredArea=null,this.hitAreas=[],t...
  function e (line 1) | function e(e,t,o){var n=r.call(this,e)||this;return n.currentNode=t,n.tr...
  function e (line 1) | function e(e){this.tree=e}
  function e (line 1) | function e(e,t,o,n){this.offsetX=t,this.offsetY=o,this.$element=l('<span...
  function e (line 1) | function e(e){this.treeWidget=e,this.openedIconElement=this.createButton...
  function e (line 1) | function e(e){this.treeWidget=e}
  function o (line 1) | function o(e){var t=this;this.handleKeyDown=function(e){if(!t.canHandleK...
  function o (line 1) | function o(){this.constructor=e}
  function t (line 1) | function t(){var n=null!==e&&e.apply(this,arguments)||this;return n.mous...
  function e (line 1) | function e(e){this.treeWidget=e}
  function t (line 1) | function t(){for(var e=[],t=0,o=d;t<o.length;t++){var n=o[t],r=a.treeWid...
  function e (line 1) | function e(e){this.treeWidget=e,this.previousTop=-1,this.isInitialized=!1}
  function e (line 1) | function e(){s.scrollParentTop=0,s.$scrollParent=null}
  function e (line 1) | function e(e){for(var t=0,o=i;t<o.length;t++){var n=o[t],r=e.css(n);if("...
  function e (line 1) | function e(e){this.treeWidget=e,this.clear()}
  function o (line 1) | function o(){this.constructor=e}
  function e (line 1) | function e(e,t){this.init(e,t)}
  function t (line 1) | function t(){return null!==e&&e.apply(this,arguments)||this}
  function e (line 1) | function e(e,t){var o=e.children(".jqtree-element"),n=e.width()||0,r=Mat...
  function e (line 1) | function e(e,t,o){this.$element=t,this.node=e,this.$ghost=jQuery('<li cl...

FILE: index.d.ts
  class Client (line 7) | class Client extends EventEmitter {
  type ClientInfo (line 649) | interface ClientInfo {
  type ClientInfoPhone (line 675) | interface ClientInfoPhone {
  type ClientOptions (line 689) | interface ClientOptions {
  type LocalWebCacheOptions (line 749) | interface LocalWebCacheOptions {
  type RemoteWebCacheOptions (line 755) | interface RemoteWebCacheOptions {
  type NoWebCacheOptions (line 761) | interface NoWebCacheOptions {
  type WebCacheOptions (line 765) | type WebCacheOptions =
  class NoAuth (line 793) | class NoAuth extends AuthStrategy {}
  class LocalAuth (line 798) | class LocalAuth extends AuthStrategy {
  class RemoteAuth (line 811) | class RemoteAuth extends AuthStrategy {
  type Store (line 826) | interface Store {
  type BatteryInfo (line 841) | interface BatteryInfo {
  type CreateGroupOptions (line 849) | interface CreateGroupOptions {
  type CreateGroupResult (line 891) | interface CreateGroupResult {
  type CreateChannelOptions (line 908) | interface CreateChannelOptions {
  type CreateChannelResult (line 916) | interface CreateChannelResult {
  type UnsubscribeOptions (line 928) | interface UnsubscribeOptions {
  type SearchChannelsOptions (line 939) | interface SearchChannelsOptions {
  type GroupNotification (line 947) | interface GroupNotification {
  type ChatTypes (line 984) | enum ChatTypes {
  type Events (line 991) | enum Events {
  type GroupNotificationTypes (line 1026) | enum GroupNotificationTypes {
  type MessageAck (line 1041) | enum MessageAck {
  type MessageTypes (line 1051) | enum MessageTypes {
  type Status (line 1093) | enum Status {
  type WAState (line 1100) | enum WAState {
  type MessageInfo (line 1115) | type MessageInfo = {
  type InviteV4Data (line 1124) | type InviteV4Data = {
  type Message (line 1162) | interface Message {
  type MessageId (line 1364) | interface MessageId {
  type LocationSendOptions (line 1372) | interface LocationSendOptions {
  class Location (line 1382) | class Location {
  type PollSendOptions (line 1398) | interface PollSendOptions {
  class Poll (line 1409) | class Poll {
  type ScheduledEventSendOptions (line 1425) | interface ScheduledEventSendOptions {
  class ScheduledEvent (line 1447) | class ScheduledEvent {
  type PollVote (line 1467) | interface PollVote {
  type SelectedPollOption (line 1486) | interface SelectedPollOption {
  type Label (line 1494) | interface Label {
  type Broadcast (line 1506) | interface Broadcast {
  type MessageSendOptions (line 1529) | interface MessageSendOptions {
  type MessageEditOptions (line 1584) | interface MessageEditOptions {
  type MediaFromURLOptions (line 1593) | interface MediaFromURLOptions {
  class MessageMedia (line 1601) | class MessageMedia {
  type MessageContent (line 1634) | type MessageContent =
  type Contact (line 1674) | interface Contact {
  type ContactId (line 1744) | interface ContactId {
  type BusinessCategory (line 1750) | interface BusinessCategory {
  type BusinessHoursOfDay (line 1755) | interface BusinessHoursOfDay {
  type BusinessHours (line 1760) | interface BusinessHours {
  type BusinessContact (line 1772) | interface BusinessContact extends Contact {
  type PrivateContact (line 1827) | interface PrivateContact extends Contact {}
  type Chat (line 1847) | interface Chat {
  type Channel (line 1933) | interface Channel {
  type TransferChannelOwnershipOptions (line 2019) | interface TransferChannelOwnershipOptions {
  type MessageSendChannelOptions (line 2028) | interface MessageSendChannelOptions {
  type MessageSearchOptions (line 2039) | interface MessageSearchOptions {
  type ChatId (line 2062) | interface ChatId {
  type PrivateChat (line 2080) | interface PrivateChat extends Chat {}
  type GroupParticipant (line 2082) | type GroupParticipant = {
  type ChangeParticipantsPermissions (line 2089) | type ChangeParticipantsPermissions = (
  type AddParticipantsResult (line 2094) | interface AddParticipantsResult {
  type AddParticipantsOptions (line 2103) | interface AddParticipantsOptions {
  type GroupMembershipRequest (line 2127) | interface GroupMembershipRequest {
  type MembershipRequestActionResult (line 2141) | interface MembershipRequestActionResult {
  type MembershipRequestActionOptions (line 2151) | interface MembershipRequestActionOptions {
  type GroupChat (line 2158) | interface GroupChat extends Chat {
  type ProductMetadata (line 2240) | interface ProductMetadata {
  type Product (line 2264) | interface Product {
  type Order (line 2304) | interface Order {
  type Payment (line 2345) | interface Payment {
  type Call (line 2380) | interface Call {
  class List (line 2405) | class List {
  class Buttons (line 2422) | class Buttons {
  class Reaction (line 2441) | class Reaction {
  type ReactionList (line 2453) | type ReactionList = {

FILE: src/Client.js
  class Client (line 82) | class Client extends EventEmitter {
    method constructor (line 83) | constructor(options = {}) {
    method inject (line 114) | async inject() {
    method initialize (line 429) | async initialize() {
    method requestPairingCode (line 514) | async requestPairingCode(
    method attachEventListeners (line 561) | async attachEventListeners() {
    method initWebVersionCache (line 1143) | async initWebVersionCache() {
    method destroy (line 1180) | async destroy() {
    method logout (line 1192) | async logout() {
    method getWWebVersion (line 1212) | async getWWebVersion() {
    method setDeviceName (line 1218) | async setDeviceName(deviceName, browserName) {
    method sendSeen (line 1242) | async sendSeen(chatId) {
    method sendMessage (line 1289) | async sendMessage(chatId, content, options = {}) {
    method sendChannelAdminInvite (line 1476) | async sendChannelAdminInvite(chatId, channelId, options = {}) {
    method searchMessages (line 1521) | async searchMessages(query, options = {}) {
    method getChats (line 1544) | async getChats() {
    method getChannels (line 1556) | async getChannels() {
    method getChatById (line 1569) | async getChatById(chatId) {
    method getChannelByInviteCode (line 1581) | async getChannelByInviteCode(inviteCode) {
    method getContacts (line 1601) | async getContacts() {
    method getContactById (line 1614) | async getContactById(contactId) {
    method getMessageById (line 1627) | async getMessageById(messageId) {
    method getPinnedMessages (line 1654) | async getPinnedMessages(chatId) {
    method getInviteInfo (line 1697) | async getInviteInfo(inviteCode) {
    method acceptInvite (line 1710) | async acceptInvite(inviteCode) {
    method acceptChannelAdminInvite (line 1725) | async acceptChannelAdminInvite(channelId) {
    method revokeChannelAdminInvite (line 1745) | async revokeChannelAdminInvite(channelId, userId) {
    method demoteChannelAdmin (line 1772) | async demoteChannelAdmin(channelId, userId) {
    method acceptGroupV4Invite (line 1798) | async acceptGroupV4Invite(inviteInfo) {
    method setStatus (line 1820) | async setStatus(status) {
    method setDisplayName (line 1834) | async setDisplayName(displayName) {
    method getState (line 1851) | async getState() {
    method sendPresenceAvailable (line 1860) | async sendPresenceAvailable() {
    method sendPresenceUnavailable (line 1871) | async sendPresenceUnavailable() {
    method archiveChat (line 1883) | async archiveChat(chatId) {
    method unarchiveChat (line 1897) | async unarchiveChat(chatId) {
    method pinChat (line 1911) | async pinChat(chatId) {
    method unpinChat (line 1938) | async unpinChat(chatId) {
    method muteChat (line 1957) | async muteChat(chatId, unmuteDate) {
    method unmuteChat (line 1967) | async unmuteChat(chatId) {
    method _muteUnmuteChat (line 1978) | async _muteUnmuteChat(chatId, action, unmuteDateTs) {
    method markChatUnread (line 2007) | async markChatUnread(chatId) {
    method getProfilePicUrl (line 2021) | async getProfilePicUrl(contactId) {
    method getCommonGroups (line 2042) | async getCommonGroups(contactId) {
    method resetState (line 2079) | async resetState() {
    method isRegisteredUser (line 2090) | async isRegisteredUser(id) {
    method getNumberId (line 2100) | async getNumberId(number) {
    method getFormattedNumber (line 2120) | async getFormattedNumber(number) {
    method getCountryCode (line 2138) | async getCountryCode(number) {
    method createGroup (line 2186) | async createGroup(title, participants = [], options = {}) {
    method createChannel (line 2346) | async createChannel(title, options = {}) {
    method subscribeToChannel (line 2405) | async subscribeToChannel(channelId) {
    method unsubscribeFromChannel (line 2426) | async unsubscribeFromChannel(channelId, options) {
    method transferChannelOwnership (line 2454) | async transferChannelOwnership(channelId, newOwnerId, options = {}) {
    method searchChannels (line 2521) | async searchChannels(searchOptions = {}) {
    method deleteChannel (line 2601) | async deleteChannel(channelId) {
    method getLabels (line 2623) | async getLabels() {
    method getBroadcasts (line 2635) | async getBroadcasts() {
    method getBroadcastById (line 2647) | async getBroadcastById(contactId) {
    method revokeStatusMessage (line 2671) | async revokeStatusMessage(messageId) {
    method getLabelById (line 2701) | async getLabelById(labelId) {
    method getChatLabels (line 2714) | async getChatLabels(chatId) {
    method getChatsByLabelId (line 2727) | async getChatsByLabelId(labelId) {
    method getBlockedContacts (line 2746) | async getBlockedContacts() {
    method setProfilePicture (line 2767) | async setProfilePicture(media) {
    method deleteProfilePicture (line 2783) | async deleteProfilePicture() {
    method addOrRemoveLabels (line 2797) | async addOrRemoveLabels(labelIds, chatIds) {
    method getGroupMembershipRequests (line 2851) | async getGroupMembershipRequests(groupId) {
    method approveGroupMembershipRequests (line 2883) | async approveGroupMembershipRequests(groupId, options = {}) {
    method rejectGroupMembershipRequests (line 2905) | async rejectGroupMembershipRequests(groupId, options = {}) {
    method setAutoDownloadAudio (line 2925) | async setAutoDownloadAudio(flag) {
    method setAutoDownloadDocuments (line 2944) | async setAutoDownloadDocuments(flag) {
    method setAutoDownloadPhotos (line 2963) | async setAutoDownloadPhotos(flag) {
    method setAutoDownloadVideos (line 2982) | async setAutoDownloadVideos(flag) {
    method setBackgroundSync (line 3003) | async setBackgroundSync(flag) {
    method getContactDeviceCount (line 3025) | async getContactDeviceCount(userId) {
    method syncHistory (line 3049) | async syncHistory(chatId) {
    method createCallLink (line 3073) | async createCallLink(startTime, callType) {
    method sendResponseToScheduledEvent (line 3104) | async sendResponseToScheduledEvent(response, eventMessageId) {
    method saveOrEditAddressbookContact (line 3136) | async saveOrEditAddressbookContact(
    method deleteAddressbookContact (line 3167) | async deleteAddressbookContact(phoneNumber) {
    method getContactLidAndPhone (line 3183) | async getContactLidAndPhone(userIds) {
    method addOrEditCustomerNote (line 3208) | async addOrEditCustomerNote(userId, note) {
    method getCustomerNote (line 3246) | async getCustomerNote(userId) {
    method getPollVotes (line 3279) | async getPollVotes(messageId) {

FILE: src/authStrategies/BaseAuthStrategy.js
  class BaseAuthStrategy (line 6) | class BaseAuthStrategy {
    method constructor (line 7) | constructor() {}
    method setup (line 8) | setup(client) {
    method beforeBrowserInitialized (line 11) | async beforeBrowserInitialized() {}
    method afterBrowserInitialized (line 12) | async afterBrowserInitialized() {}
    method onAuthenticationNeeded (line 13) | async onAuthenticationNeeded() {
    method getAuthEventPayload (line 20) | async getAuthEventPayload() {}
    method afterAuthReady (line 21) | async afterAuthReady() {}
    method disconnect (line 22) | async disconnect() {}
    method destroy (line 23) | async destroy() {}
    method logout (line 24) | async logout() {}

FILE: src/authStrategies/LocalAuth.js
  class LocalAuth (line 14) | class LocalAuth extends BaseAuthStrategy {
    method constructor (line 15) | constructor({ clientId, dataPath, rmMaxRetries } = {}) {
    method beforeBrowserInitialized (line 30) | async beforeBrowserInitialized() {
    method logout (line 56) | async logout() {

FILE: src/authStrategies/NoAuth.js
  class NoAuth (line 9) | class NoAuth extends BaseAuthStrategy {}

FILE: src/authStrategies/RemoteAuth.js
  class RemoteAuth (line 27) | class RemoteAuth extends BaseAuthStrategy {
    method constructor (line 28) | constructor({
    method beforeBrowserInitialized (line 67) | async beforeBrowserInitialized() {
    method logout (line 94) | async logout() {
    method destroy (line 98) | async destroy() {
    method disconnect (line 102) | async disconnect() {
    method afterAuthReady (line 118) | async afterAuthReady() {
    method storeRemoteSession (line 134) | async storeRemoteSession(options) {
    method extractRemoteSession (line 163) | async extractRemoteSession() {
    method deleteRemoteSession (line 192) | async deleteRemoteSession() {
    method compressSession (line 200) | async compressSession() {
    method unCompressSession (line 223) | async unCompressSession(compressedSessionPath) {
    method copyByRequiredDirs (line 239) | async copyByRequiredDirs(from, to) {
    method isValidPath (line 253) | async isValidPath(path) {
    method delay (line 262) | async delay(ms) {

FILE: src/factories/ChatFactory.js
  class ChatFactory (line 7) | class ChatFactory {
    method create (line 8) | static create(client, data) {

FILE: src/factories/ContactFactory.js
  class ContactFactory (line 6) | class ContactFactory {
    method create (line 7) | static create(client, data) {

FILE: src/structures/Base.js
  class Base (line 6) | class Base {
    method constructor (line 7) | constructor(client) {
    method _clone (line 15) | _clone() {
    method _patch (line 19) | _patch(data) {

FILE: src/structures/Broadcast.js
  class Broadcast (line 10) | class Broadcast extends Base {
    method constructor (line 11) | constructor(client, data) {
    method _patch (line 17) | _patch(data) {
    method getChat (line 55) | getChat() {
    method getContact (line 63) | getContact() {

FILE: src/structures/BusinessContact.js
  class BusinessContact (line 9) | class BusinessContact extends Contact {
    method _patch (line 10) | _patch(data) {

FILE: src/structures/Buttons.js
  class Buttons (line 23) | class Buttons {
    method constructor (line 30) | constructor(body, buttons, title, footer) {
    method _format (line 74) | _format(buttons) {

FILE: src/structures/Call.js
  class Call (line 9) | class Call extends Base {
    method constructor (line 10) | constructor(client, data) {
    method _patch (line 16) | _patch(data) {
    method reject (line 69) | async reject() {

FILE: src/structures/Channel.js
  class Channel (line 18) | class Channel extends Base {
    method constructor (line 19) | constructor(client, data) {
    method _patch (line 25) | _patch(data) {
    method getSubscribers (line 104) | async getSubscribers(limit) {
    method setSubject (line 138) | async setSubject(newSubject) {
    method setDescription (line 152) | async setDescription(newDescription) {
    method setProfilePicture (line 166) | async setProfilePicture(newProfilePicture) {
    method setReactionSetting (line 183) | async setReactionSetting(reactionCode) {
    method mute (line 202) | async mute() {
    method unmute (line 215) | async unmute() {
    method sendMessage (line 238) | async sendMessage(content, options) {
    method sendSeen (line 246) | async sendSeen() {
    method sendChannelAdminInvite (line 261) | async sendChannelAdminInvite(chatId, options = {}) {
    method acceptChannelAdminInvite (line 273) | async acceptChannelAdminInvite() {
    method revokeChannelAdminInvite (line 282) | async revokeChannelAdminInvite(userId) {
    method demoteChannelAdmin (line 294) | async demoteChannelAdmin(userId) {
    method transferChannelOwnership (line 311) | async transferChannelOwnership(newOwnerId, options = {}) {
    method fetchMessages (line 326) | async fetchMessages(searchOptions) {
    method deleteChannel (line 379) | async deleteChannel() {
    method _setChannelMetadata (line 389) | async _setChannelMetadata(value, property) {
    method _muteUnmuteChannel (line 430) | async _muteUnmuteChannel(action) {

FILE: src/structures/Chat.js
  class Chat (line 10) | class Chat extends Base {
    method constructor (line 11) | constructor(client, data) {
    method _patch (line 17) | _patch(data) {
    method sendMessage (line 101) | async sendMessage(content, options) {
    method sendSeen (line 109) | async sendSeen() {
    method clearMessages (line 117) | async clearMessages() {
    method delete (line 127) | async delete() {
    method archive (line 136) | async archive() {
    method unarchive (line 143) | async unarchive() {
    method pin (line 151) | async pin() {
    method unpin (line 159) | async unpin() {
    method mute (line 168) | async mute(unmuteDate) {
    method unmute (line 182) | async unmute() {
    method markUnread (line 192) | async markUnread() {
    method fetchMessages (line 203) | async fetchMessages(searchOptions) {
    method sendStateTyping (line 252) | async sendStateTyping() {
    method sendStateRecording (line 262) | async sendStateRecording() {
    method clearState (line 272) | async clearState() {
    method getContact (line 283) | async getContact() {
    method getLabels (line 291) | async getLabels() {
    method changeLabels (line 300) | async changeLabels(labelIds) {
    method getPinnedMessages (line 308) | async getPinnedMessages() {
    method syncHistory (line 316) | async syncHistory() {
    method addOrEditCustomerNote (line 326) | async addOrEditCustomerNote(note) {
    method getCustomerNote (line 344) | async getCustomerNote() {

FILE: src/structures/ClientInfo.js
  class ClientInfo (line 9) | class ClientInfo extends Base {
    method constructor (line 10) | constructor(client, data) {
    method _patch (line 16) | _patch(data) {
    method getBatteryStatus (line 63) | async getBatteryStatus() {

FILE: src/structures/Contact.js
  class Contact (line 17) | class Contact extends Base {
    method constructor (line 18) | constructor(client, data) {
    method _patch (line 24) | _patch(data) {
    method getProfilePicUrl (line 119) | async getProfilePicUrl() {
    method getFormattedNumber (line 127) | async getFormattedNumber() {
    method getCountryCode (line 135) | async getCountryCode() {
    method getChat (line 144) | async getChat() {
    method block (line 154) | async block() {
    method unblock (line 172) | async unblock() {
    method getAbout (line 192) | async getAbout() {
    method getCommonGroups (line 209) | async getCommonGroups() {
    method getBroadcast (line 217) | async getBroadcast() {

FILE: src/structures/GroupChat.js
  class GroupChat (line 17) | class GroupChat extends Chat {
    method _patch (line 18) | _patch(data) {
    method owner (line 28) | get owner() {
    method createdAt (line 36) | get createdAt() {
    method description (line 44) | get description() {
    method participants (line 52) | get participants() {
    method addParticipants (line 78) | async addParticipants(participantIds, options = {}) {
    method removeParticipants (line 263) | async removeParticipants(participantIds) {
    method promoteParticipants (line 301) | async promoteParticipants(participantIds) {
    method demoteParticipants (line 339) | async demoteParticipants(participantIds) {
    method setSubject (line 377) | async setSubject(subject) {
    method setDescription (line 407) | async setDescription(description) {
    method setAddMembersAdminsOnly (line 447) | async setAddMembersAdminsOnly(adminsOnly = true) {
    method setMessagesAdminsOnly (line 483) | async setMessagesAdminsOnly(adminsOnly = true) {
    method setInfoAdminsOnly (line 518) | async setInfoAdminsOnly(adminsOnly = true) {
    method deletePicture (line 548) | async deletePicture() {
    method setPicture (line 561) | async setPicture(media) {
    method getInviteCode (line 577) | async getInviteCode() {
    method revokeInvite (line 596) | async revokeInvite() {
    method getGroupMembershipRequests (line 621) | async getGroupMembershipRequests() {
    method approveGroupMembershipRequests (line 647) | async approveGroupMembershipRequests(options = {}) {
    method rejectGroupMembershipRequests (line 659) | async rejectGroupMembershipRequests(options = {}) {
    method leave (line 670) | async leave() {

FILE: src/structures/GroupNotification.js
  class GroupNotification (line 9) | class GroupNotification extends Base {
    method constructor (line 10) | constructor(client, data) {
    method _patch (line 16) | _patch(data) {
    method getChat (line 77) | getChat() {
    method getContact (line 85) | getContact() {
    method getRecipients (line 93) | async getRecipients() {
    method reply (line 108) | async reply(content, options = {}) {

FILE: src/structures/Label.js
  class Label (line 10) | class Label extends Base {
    method constructor (line 15) | constructor(client, labelData) {
    method _patch (line 21) | _patch(labelData) {
    method getChats (line 44) | async getChats() {

FILE: src/structures/List.js
  class List (line 8) | class List {
    method constructor (line 16) | constructor(body, buttonText, sections, title, footer) {
    method _format (line 56) | _format(sections) {

FILE: src/structures/Location.js
  class Location (line 15) | class Location {
    method constructor (line 21) | constructor(latitude, longitude, options = {}) {

FILE: src/structures/Message.js
  class Message (line 17) | class Message extends Base {
    method constructor (line 18) | constructor(client, data) {
    method _patch (line 24) | _patch(data) {
    method _getChatId (line 347) | _getChatId() {
    method reload (line 356) | async reload() {
    method rawData (line 379) | get rawData() {
    method getChat (line 387) | getChat() {
    method getContact (line 395) | getContact() {
    method getMentions (line 403) | async getMentions() {
    method getGroupMentions (line 418) | async getGroupMentions() {
    method getQuotedMessage (line 431) | async getQuotedMessage() {
    method reply (line 461) | async reply(content, chatId, options = {}) {
    method react (line 479) | async react(reaction) {
    method acceptGroupV4Invite (line 504) | async acceptGroupV4Invite() {
    method forward (line 514) | async forward(chat) {
    method downloadMedia (line 530) | async downloadMedia() {
    method delete (line 621) | async delete(everyone, clearMedia = true) {
    method star (line 687) | async star() {
    method unstar (line 710) | async unstar() {
    method pin (line 735) | async pin(duration) {
    method unpin (line 753) | async unpin() {
    method getInfo (line 775) | async getInfo() {
    method getOrder (line 809) | async getOrder() {
    method getPayment (line 828) | async getPayment() {
    method getReactions (line 859) | async getReactions() {
    method edit (line 891) | async edit(content, options = {}) {
    method editScheduledEvent (line 967) | async editScheduledEvent(editedEventObject) {
    method getPollVotes (line 1013) | async getPollVotes() {
    method vote (line 1022) | async vote(selectedOptions) {

FILE: src/structures/MessageMedia.js
  class MessageMedia (line 16) | class MessageMedia {
    method constructor (line 17) | constructor(mimetype, data, filename, filesize) {
    method fromFilePath (line 48) | static fromFilePath(filePath) {
    method fromUrl (line 67) | static async fromUrl(url, options = {}) {

FILE: src/structures/Order.js
  class Order (line 10) | class Order extends Base {
    method constructor (line 11) | constructor(client, data) {
    method _patch (line 17) | _patch(data) {

FILE: src/structures/Payment.js
  class Payment (line 3) | class Payment extends Base {
    method constructor (line 4) | constructor(client, data) {
    method _patch (line 10) | _patch(data) {

FILE: src/structures/Poll.js
  class Poll (line 11) | class Poll {
    method constructor (line 17) | constructor(pollName, pollOptions, options = {}) {

FILE: src/structures/PollVote.js
  class PollVote (line 17) | class PollVote extends Base {
    method constructor (line 18) | constructor(client, data) {
    method _patch (line 24) | _patch(data) {

FILE: src/structures/PrivateChat.js
  class PrivateChat (line 9) | class PrivateChat extends Chat {}

FILE: src/structures/PrivateContact.js
  class PrivateContact (line 9) | class PrivateContact extends Contact {}

FILE: src/structures/Product.js
  class Product (line 10) | class Product extends Base {
    method constructor (line 11) | constructor(client, data) {
    method _patch (line 17) | _patch(data) {
    method getData (line 53) | async getData() {

FILE: src/structures/ProductMetadata.js
  class ProductMetadata (line 3) | class ProductMetadata extends Base {
    method constructor (line 4) | constructor(client, data) {
    method _patch (line 10) | _patch(data) {

FILE: src/structures/Reaction.js
  class Reaction (line 9) | class Reaction extends Base {
    method constructor (line 10) | constructor(client, data) {
    method _patch (line 16) | _patch(data) {

FILE: src/structures/ScheduledEvent.js
  class ScheduledEvent (line 15) | class ScheduledEvent {
    method constructor (line 21) | constructor(name, startTime, options = {}) {
    method _validateInputs (line 56) | _validateInputs(propName, propValue) {

FILE: src/util/Injected/Utils.js
  method constructor (line 16) | constructor(m) {
  method constructor (line 24) | constructor(m) {

FILE: src/util/InterfaceController.js
  class InterfaceController (line 6) | class InterfaceController {
    method constructor (line 7) | constructor(props) {
    method openChatWindow (line 15) | async openChatWindow(chatId) {
    method openChatDrawer (line 30) | async openChatDrawer(chatId) {
    method openChatSearch (line 43) | async openChatSearch(chatId) {
    method openChatWindowAt (line 56) | async openChatWindowAt(msgId) {
    method openMessageDrawer (line 83) | async openMessageDrawer(msgId) {
    method closeRightDrawer (line 99) | async closeRightDrawer() {
    method getFeatures (line 110) | async getFeatures() {
    method checkFeatureStatus (line 124) | async checkFeatureStatus(feature) {
    method enableFeatures (line 140) | async enableFeatures(features) {
    method disableFeatures (line 158) | async disableFeatures(features) {

FILE: src/util/Puppeteer.js
  function exposeFunctionIfAbsent (line 13) | async function exposeFunctionIfAbsent(page, name, fn) {

FILE: src/util/Util.js
  class Util (line 14) | class Util {
    method constructor (line 15) | constructor() {
    method generateHash (line 21) | static generateHash(length) {
    method mergeDefault (line 41) | static mergeDefault(def, given) {
    method formatImageToWebpSticker (line 60) | static async formatImageToWebpSticker(media, pupPage) {
    method formatVideoToWebpSticker (line 79) | static async formatVideoToWebpSticker(media) {
    method formatToWebpSticker (line 152) | static async formatToWebpSticker(media, metadata, pupPage) {
    method setFfmpegPath (line 194) | static setFfmpegPath(path) {

FILE: src/webCache/LocalWebCache.js
  class LocalWebCache (line 12) | class LocalWebCache extends WebCache {
    method constructor (line 13) | constructor(options = {}) {
    method resolve (line 20) | async resolve(version) {
    method persist (line 34) | async persist(indexHtml, version) {

FILE: src/webCache/RemoteWebCache.js
  class RemoteWebCache (line 10) | class RemoteWebCache extends WebCache {
    method constructor (line 11) | constructor(options = {}) {
    method resolve (line 22) | async resolve(version) {
    method persist (line 41) | async persist() {

FILE: src/webCache/WebCache.js
  class WebCache (line 4) | class WebCache {
    method resolve (line 5) | async resolve() {
    method persist (line 8) | async persist() {}
  class VersionResolveError (line 11) | class VersionResolveError extends Error {}

FILE: tests/helper.js
  function createClient (line 11) | function createClient({ authenticated, options: additionalOpts } = {}) {
  function sleep (line 26) | function sleep(ms) {
Condensed preview — 185 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,263K chars).
[
  {
    "path": ".editorconfig",
    "chars": 187,
    "preview": "root = true\n\n[*]\nindent_style = space\nindent_size = 4\ncharset = utf-8\ntrim_trailing_whitespace = true\ninsert_final_newli"
  },
  {
    "path": ".eslintignore",
    "chars": 80,
    "preview": "node_modules\ndist\ncoverage\ndocs\n*.min.js\n.wa-version\n.wwebjs_auth\n.wwebjs_cache\n"
  },
  {
    "path": ".eslintrc.json",
    "chars": 423,
    "preview": "{\n    \"env\": {\n        \"browser\": true,\n        \"commonjs\": true,\n        \"es6\": true,\n        \"node\": true\n    },\n    \""
  },
  {
    "path": ".gitattributes",
    "chars": 127,
    "preview": "* text=auto eol=lf\n\npackage-lock.json linguist-generated=true text=auto eol=lf\ndocs/* linguist-generated=true text=auto "
  },
  {
    "path": ".github/CODE_OF_CONDUCT.md",
    "chars": 5513,
    "preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nWe as members, contributors, and leaders pledge to make participa"
  },
  {
    "path": ".github/COMMIT_CONVENTION.md",
    "chars": 4808,
    "preview": "# Git Commit Message Convention\n\n> This is adapted from [Angular's commit convention][angular-commit-convention].\n\nMessa"
  },
  {
    "path": ".github/CONTRIBUTING.md",
    "chars": 2325,
    "preview": "# Contributing\n\nIf you want to contribute to whatsapp-web.js, start by forking the repository and opening a pull request"
  },
  {
    "path": ".github/DISCLAIMER.md",
    "chars": 2056,
    "preview": "# Disclaimer\n\nThis project is an unofficial library and is not affiliated with, endorsed by, maintained, authorized, or "
  },
  {
    "path": ".github/FUNDING.yml",
    "chars": 108,
    "preview": "github: [pedroslopez, PurpShell]\nko_fi: pedroslopez\ncustom: ['paypal.me/psla', 'buymeacoff.ee/pedroslopez']\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/01-bug_report.yml",
    "chars": 5057,
    "preview": "name: Bug Report\ndescription: Report a bug in the library or another package\nlabels: [bug]\nbody:\n    - type: markdown\n  "
  },
  {
    "path": ".github/ISSUE_TEMPLATE/02-feature_request.yml",
    "chars": 1972,
    "preview": "name: Feature Request\ndescription: Request a new feature for our applications or packages\nlabels: [feature request]\nbody"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "chars": 159,
    "preview": "blank_issues_enabled: false\ncontact_links:\n    - name: Discord Server\n      url: https://discord.wwebjs.dev\n      about:"
  },
  {
    "path": ".github/SUPPORT.md",
    "chars": 386,
    "preview": "# Need Help?\n\nThis issue tracker is **only** for bug reports and feature requests.\n\nFor questions and general help, plea"
  },
  {
    "path": ".github/dependabot.yml",
    "chars": 247,
    "preview": "version: 2\nupdates:\n    - package-ecosystem: 'npm'\n      directory: '/'\n      open-pull-requests-limit: 10\n      schedul"
  },
  {
    "path": ".github/issue-labeler.yml",
    "chars": 931,
    "preview": "documentation:\n    - \"\\\\b(doc|docs|readme|documentation|typo|example|guide)s?\\\\b\"\nsecurity:\n    - \"\\\\b(vulnerability|xss"
  },
  {
    "path": ".github/labels.yml",
    "chars": 3404,
    "preview": "# Issue Labels\n- name: 'bug'\n  color: '#d73a4a'\n  description: 'Something is broken'\n- name: 'feature request'\n  color: "
  },
  {
    "path": ".github/pr-labeler.yml",
    "chars": 1761,
    "preview": "api changes:\n    - changed-files:\n          - any-glob-to-any-file:\n                - src/*\n                - src/**/*\nd"
  },
  {
    "path": ".github/pull_request_template.md",
    "chars": 2296,
    "preview": "## Description\n\n<!-- What does this PR change and why? -->\n\n## Related Issue(s)\n\n<!--\nIf this pull request relates to on"
  },
  {
    "path": ".github/workflows/format-issue-bug.yml",
    "chars": 5224,
    "preview": "name: Format Issue Body\n\non:\n    issues:\n        types: [opened]\n\npermissions:\n    contents: read\n    issues: write\n\ncon"
  },
  {
    "path": ".github/workflows/issue-triage.yml",
    "chars": 550,
    "preview": "name: Issue Triage\n\non:\n    issues:\n        types: [opened, edited, reopened]\n\npermissions:\n    contents: read\n    issue"
  },
  {
    "path": ".github/workflows/labels-sync.yml",
    "chars": 603,
    "preview": "name: Sync Labels\n\non:\n    schedule:\n        - cron: '0 0 */3 * *'\n    workflow_dispatch:\n    push:\n        branches:\n  "
  },
  {
    "path": ".github/workflows/lint.yml",
    "chars": 457,
    "preview": "name: Lint\n\non:\n    push:\n    pull_request:\n\njobs:\n    eslint:\n        name: ESLint\n        runs-on: ubuntu-latest\n     "
  },
  {
    "path": ".github/workflows/pr-triage.yml",
    "chars": 1356,
    "preview": "name: PR Triage\n\non:\n    pull_request_target:\n        types:\n            - opened\n            - edited\n            - reo"
  },
  {
    "path": ".github/workflows/release.yml",
    "chars": 1676,
    "preview": "name: Release a New Version\n\non:\n    workflow_dispatch:\n        inputs:\n            release_type:\n                descri"
  },
  {
    "path": ".github/workflows/stale.yml",
    "chars": 1741,
    "preview": "name: Mark Stale Issues and PRs\n\non:\n    schedule:\n        - cron: '0 0 * * *'\n    workflow_dispatch:\n\npermissions:\n    "
  },
  {
    "path": ".github/workflows/tests.yml",
    "chars": 601,
    "preview": "name: Tests\n\non:\n    push:\n    pull_request:\n\nconcurrency:\n    group: ${{ github.workflow }}-${{ github.head_ref || gith"
  },
  {
    "path": ".github/workflows/update.yml",
    "chars": 1536,
    "preview": "name: Update\n\non:\n    schedule:\n        - cron: '0 12 * * 0'\n    workflow_dispatch:\n\npermissions:\n    contents: write\n  "
  },
  {
    "path": ".gitignore",
    "chars": 1084,
    "preview": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n\n# Runtime data\npids\n*.pid\n*.seed\n*.pid.lock\n\n# Directo"
  },
  {
    "path": ".husky/commit-msg",
    "chars": 141,
    "preview": "# Normalize commit type to lowercase\nsed -E 's/^[A-Za-z]+/\\L&/' \"$1\" > \"$1.tmp\" && mv \"$1.tmp\" \"$1\"\n\nnpx --no-install co"
  },
  {
    "path": ".husky/pre-commit",
    "chars": 16,
    "preview": "npx lint-staged\n"
  },
  {
    "path": ".jsdoc.json",
    "chars": 610,
    "preview": "{\n    \"tags\": {\n        \"allowUnknownTags\": true,\n        \"dictionaries\": [\"jsdoc\"]\n    },\n    \"source\": {\n        \"incl"
  },
  {
    "path": ".lintstagedrc.json",
    "chars": 164,
    "preview": "{\n    \"*\": \"prettier --ignore-unknown --write\",\n    \"*.{js,ts}\": \"eslint --fix\",\n    \"src/**/*.{js,ts}\": \"eslint --fix\","
  },
  {
    "path": ".npmignore",
    "chars": 182,
    "preview": "docs/*\n.github/*\n\n.eslintrc.json\n.jsdoc.json\n.editorconfig\n\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n\n*"
  },
  {
    "path": ".prettierignore",
    "chars": 80,
    "preview": "node_modules\ndist\ncoverage\n*.min.js\n.wa-version\n.wwebjs_auth\n.wwebjs_cache\ndocs\n"
  },
  {
    "path": ".prettierrc.json",
    "chars": 189,
    "preview": "{\n    \"semi\": true,\n    \"trailingComma\": \"all\",\n    \"singleQuote\": true,\n    \"printWidth\": 80,\n    \"tabWidth\": 4,\n    \"u"
  },
  {
    "path": "LICENSE",
    "chars": 11343,
    "preview": "                                 Apache License\n                           Version 2.0, January 2004\n                   "
  },
  {
    "path": "README.md",
    "chars": 8680,
    "preview": "<div align=\"center\">\n    <p>\n        <a href=\"https://wwebjs.dev\">\n            <img src=\"https://github.com/wwebjs/Asset"
  },
  {
    "path": "commitlint.config.js",
    "chars": 683,
    "preview": "module.exports = {\n    extends: ['@commitlint/config-conventional'],\n    rules: {\n        'header-max-length': [2, 'alwa"
  },
  {
    "path": "docs/Base.html",
    "chars": 2500,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/BaseAuthStrategy.html",
    "chars": 2597,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/Broadcast.html",
    "chars": 7185,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/BusinessContact.html",
    "chars": 18581,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/Buttons.html",
    "chars": 9604,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/CNAME",
    "chars": 15,
    "preview": "docs.wwebjs.dev"
  },
  {
    "path": "docs/Call.html",
    "chars": 7702,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/Channel.html",
    "chars": 40450,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/Chat.html",
    "chars": 31363,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/Client.html",
    "chars": 163785,
    "preview": "<!doctype html>\n<html>\n        <head>\n                <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n                <me"
  },
  {
    "path": "docs/Client.js.html",
    "chars": 121905,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/ClientInfo.html",
    "chars": 9893,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/Contact.html",
    "chars": 16220,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/GroupChat.html",
    "chars": 62972,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/GroupNotification.html",
    "chars": 11240,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/InterfaceController.html",
    "chars": 15948,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/Label.html",
    "chars": 6749,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/LegacySessionAuth.html",
    "chars": 7106,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/List.html",
    "chars": 10093,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/LocalAuth.html",
    "chars": 5727,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/LocalWebCache.html",
    "chars": 5198,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/Location.html",
    "chars": 7110,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/Message.html",
    "chars": 44594,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/MessageMedia.html",
    "chars": 14585,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/NoAuth.html",
    "chars": 2583,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/Order.html",
    "chars": 4653,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/Poll.html",
    "chars": 5963,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/PollVote.html",
    "chars": 4873,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/PrivateChat.html",
    "chars": 33611,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/PrivateContact.html",
    "chars": 18202,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/Product.html",
    "chars": 5730,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/Reaction.html",
    "chars": 6547,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/RemoteAuth.html",
    "chars": 6869,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/RemoteWebCache.html",
    "chars": 5249,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/ScheduledEvent.html",
    "chars": 8689,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/Util.html",
    "chars": 10462,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/WebCache.html",
    "chars": 2548,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/authStrategies_BaseAuthStrategy.js.html",
    "chars": 2573,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/authStrategies_LegacySessionAuth.js.html",
    "chars": 4724,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/authStrategies_LocalAuth.js.html",
    "chars": 4217,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/authStrategies_NoAuth.js.html",
    "chars": 2197,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/authStrategies_RemoteAuth.js.html",
    "chars": 10788,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/css/baseline.css",
    "chars": 85526,
    "preview": "/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\nhtml{font-family:sans-serif;-ms-text-size-a"
  },
  {
    "path": "docs/global.html",
    "chars": 152925,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/index.html",
    "chars": 169418,
    "preview": "<!doctype html>\n<html>\n        <head>\n                <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n                <me"
  },
  {
    "path": "docs/scripts/jsdoc-toc.js",
    "chars": 3299,
    "preview": "(function($) {\n    // TODO: make the node ID configurable\n    var treeNode = $('#jsdoc-toc-nav');\n\n    // initialize the"
  },
  {
    "path": "docs/scripts/lang-css.js",
    "chars": 1020,
    "preview": "PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \\t\\r\\n\\f]+/,null,\" \\t\\r\\n\\f\"]],[[PR.PR_STRING,/^\\\"(?:[^\\n\\"
  },
  {
    "path": "docs/scripts/linenumber.js",
    "chars": 260,
    "preview": "!function(){var n,e=0,t=document.getElementsByClassName(\"prettyprint\");t&&t[0]&&(n=(n=(t=t[0].getElementsByTagName(\"code"
  },
  {
    "path": "docs/scripts/prettify.js",
    "chars": 15392,
    "preview": "var DecorationsT,JobT,SourceSpansT,HACK_TO_FIX_JS_INCLUDE_PL,PR,prettyPrintOne,prettyPrint,IN_GLOBAL_SCOPE=!1;window.PR_"
  },
  {
    "path": "docs/scripts/scrollanchor.js",
    "chars": 355,
    "preview": "!function(){function o(n){var o,t,e=document.getElementById(n.replace(/^#/,\"\"));e&&(t=e.getBoundingClientRect(),o=t.top+"
  },
  {
    "path": "docs/scripts/tree.jquery.js",
    "chars": 52283,
    "preview": "!function(o){var n={};function r(e){if(n[e])return n[e].exports;var t=n[e]={i:e,l:!1,exports:{}};return o[e].call(t.expo"
  },
  {
    "path": "docs/structures_Base.js.html",
    "chars": 2350,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/structures_Broadcast.js.html",
    "chars": 3440,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/structures_BusinessContact.js.html",
    "chars": 2366,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/structures_Buttons.js.html",
    "chars": 4552,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/structures_Call.js.html",
    "chars": 3729,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/structures_Channel.js.html",
    "chars": 17034,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/structures_Chat.js.html",
    "chars": 12091,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/structures_ClientInfo.js.html",
    "chars": 3965,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/structures_Contact.js.html",
    "chars": 7970,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/structures_GroupChat.js.html",
    "chars": 25435,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/structures_GroupNotification.js.html",
    "chars": 4764,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/structures_Label.js.html",
    "chars": 2970,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/structures_List.js.html",
    "chars": 4614,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/structures_Location.js.html",
    "chars": 3505,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/structures_Message.js.html",
    "chars": 32424,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/structures_MessageMedia.js.html",
    "chars": 6031,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/structures_Order.js.html",
    "chars": 3044,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/structures_Payment.js.html",
    "chars": 3821,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/structures_Poll.js.html",
    "chars": 3300,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/structures_PollVote.js.html",
    "chars": 4106,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/structures_PrivateChat.js.html",
    "chars": 2144,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/structures_PrivateContact.js.html",
    "chars": 2171,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/structures_Product.js.html",
    "chars": 3614,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/structures_ProductMetadata.js.html",
    "chars": 2513,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/structures_Reaction.js.html",
    "chars": 3369,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/structures_ScheduledEvent.js.html",
    "chars": 4982,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/util_Constants.js.html",
    "chars": 7391,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/util_Injected.js.html",
    "chars": 51878,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/util_Injected_LegacyStore.js.html",
    "chars": 12261,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/util_Injected_Store.js.html",
    "chars": 17526,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/util_Injected_Utils.js.html",
    "chars": 45683,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/util_InterfaceController.js.html",
    "chars": 6381,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/util_Puppeteer.js.html",
    "chars": 2570,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/util_Util.js.html",
    "chars": 8793,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/webCache_LocalWebCache.js.html",
    "chars": 3483,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/webCache_RemoteWebCache.js.html",
    "chars": 3521,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "docs/webCache_WebCache.js.html",
    "chars": 2188,
    "preview": "<!doctype html>\n<html>\n\n<head>\n  <meta name=\"generator\" content=\"JSDoc 3.6.11\">\n  <meta charset=\"utf-8\">\n  <title>whatsa"
  },
  {
    "path": "example.js",
    "chars": 29835,
    "preview": "const { Client, Location, Poll, List, Buttons, LocalAuth } = require('./index');\n\nconst client = new Client({\n    authSt"
  },
  {
    "path": "index.d.ts",
    "chars": 86687,
    "preview": "import { EventEmitter } from 'events';\nimport { RequestInit } from 'node-fetch';\nimport * as puppeteer from 'puppeteer';"
  },
  {
    "path": "index.js",
    "chars": 1333,
    "preview": "'use strict';\n\nconst Constants = require('./src/util/Constants');\n\nmodule.exports = {\n    Client: require('./src/Client'"
  },
  {
    "path": "package.json",
    "chars": 2143,
    "preview": "{\n    \"name\": \"whatsapp-web.js\",\n    \"version\": \"1.34.6\",\n    \"description\": \"A Node.js library for interacting with Wha"
  },
  {
    "path": "shell.js",
    "chars": 822,
    "preview": "/**\n * ==== wwebjs-shell ====\n * Used for quickly testing library features\n *\n * Running `npm run shell` will start What"
  },
  {
    "path": "src/Client.js",
    "chars": 128374,
    "preview": "'use strict';\n\nconst EventEmitter = require('events');\nconst puppeteer = require('puppeteer');\n\nconst Util = require('./"
  },
  {
    "path": "src/authStrategies/BaseAuthStrategy.js",
    "chars": 605,
    "preview": "'use strict';\n\n/**\n * Base class which all authentication strategies extend\n */\nclass BaseAuthStrategy {\n    constructor"
  },
  {
    "path": "src/authStrategies/LocalAuth.js",
    "chars": 2271,
    "preview": "'use strict';\n\nconst path = require('path');\nconst fs = require('fs');\nconst BaseAuthStrategy = require('./BaseAuthStrat"
  },
  {
    "path": "src/authStrategies/NoAuth.js",
    "chars": 237,
    "preview": "'use strict';\n\nconst BaseAuthStrategy = require('./BaseAuthStrategy');\n\n/**\n * No session restoring functionality\n * Wil"
  },
  {
    "path": "src/authStrategies/RemoteAuth.js",
    "chars": 8803,
    "preview": "'use strict';\n\n/* Require Optional Dependencies */\ntry {\n    var fs = require('fs-extra');\n    var unzipper = require('u"
  },
  {
    "path": "src/factories/ChatFactory.js",
    "chars": 491,
    "preview": "'use strict';\n\nconst PrivateChat = require('../structures/PrivateChat');\nconst GroupChat = require('../structures/GroupC"
  },
  {
    "path": "src/factories/ContactFactory.js",
    "chars": 390,
    "preview": "'use strict';\n\nconst PrivateContact = require('../structures/PrivateContact');\nconst BusinessContact = require('../struc"
  },
  {
    "path": "src/structures/Base.js",
    "chars": 416,
    "preview": "'use strict';\n\n/**\n * Represents a WhatsApp data structure\n */\nclass Base {\n    constructor(client) {\n        /**\n      "
  },
  {
    "path": "src/structures/Broadcast.js",
    "chars": 1415,
    "preview": "'use strict';\n\nconst Base = require('./Base');\nconst Message = require('./Message');\n\n/**\n * Represents a Status/Story o"
  },
  {
    "path": "src/structures/BusinessContact.js",
    "chars": 386,
    "preview": "'use strict';\n\nconst Contact = require('./Contact');\n\n/**\n * Represents a Business Contact on WhatsApp\n * @extends {Cont"
  },
  {
    "path": "src/structures/Buttons.js",
    "chars": 2370,
    "preview": "'use strict';\n\nconst MessageMedia = require('./MessageMedia');\nconst Util = require('../util/Util');\n\n/**\n * Button spec"
  },
  {
    "path": "src/structures/Call.js",
    "chars": 1777,
    "preview": "'use strict';\n\nconst Base = require('./Base');\n\n/**\n * Represents a Call on WhatsApp\n * @extends {Base}\n */\nclass Call e"
  },
  {
    "path": "src/structures/Channel.js",
    "chars": 16510,
    "preview": "'use strict';\n\nconst Base = require('./Base');\nconst Message = require('./Message');\n\n/**\n * Channel ID structure\n * @ty"
  },
  {
    "path": "src/structures/Chat.js",
    "chars": 10117,
    "preview": "'use strict';\n\nconst Base = require('./Base');\nconst Message = require('./Message');\n\n/**\n * Represents a Chat on WhatsA"
  },
  {
    "path": "src/structures/ClientInfo.js",
    "chars": 1988,
    "preview": "'use strict';\n\nconst Base = require('./Base');\n\n/**\n * Current connection information\n * @extends {Base}\n */\nclass Clien"
  },
  {
    "path": "src/structures/Contact.js",
    "chars": 5842,
    "preview": "'use strict';\n\nconst Base = require('./Base');\n\n/**\n * ID that represents a contact\n * @typedef {Object} ContactId\n * @p"
  },
  {
    "path": "src/structures/GroupChat.js",
    "chars": 27357,
    "preview": "'use strict';\n\nconst Chat = require('./Chat');\n\n/**\n * Group participant information\n * @typedef {Object} GroupParticipa"
  },
  {
    "path": "src/structures/GroupNotification.js",
    "chars": 2735,
    "preview": "'use strict';\n\nconst Base = require('./Base');\n\n/**\n * Represents a GroupNotification on WhatsApp\n * @extends {Base}\n */"
  },
  {
    "path": "src/structures/Label.js",
    "chars": 974,
    "preview": "'use strict';\n\nconst Base = require('./Base');\n// eslint-disable-next-line no-unused-vars\nconst Chat = require('./Chat')"
  },
  {
    "path": "src/structures/List.js",
    "chars": 2410,
    "preview": "'use strict';\n\nconst Util = require('../util/Util');\n\n/**\n * Message type List\n */\nclass List {\n    /**\n     * @param {s"
  },
  {
    "path": "src/structures/Location.js",
    "chars": 1514,
    "preview": "'use strict';\n\n/**\n * Location send options\n * @typedef {Object} LocationSendOptions\n * @property {string} [name] Locati"
  },
  {
    "path": "src/structures/Message.js",
    "chars": 34839,
    "preview": "'use strict';\n\nconst Base = require('./Base');\nconst MessageMedia = require('./MessageMedia');\nconst Location = require("
  },
  {
    "path": "src/structures/MessageMedia.js",
    "chars": 3888,
    "preview": "'use strict';\n\nconst fs = require('fs');\nconst path = require('path');\nconst mime = require('mime');\nconst fetch = requi"
  },
  {
    "path": "src/structures/Order.js",
    "chars": 1068,
    "preview": "'use strict';\n\nconst Base = require('./Base');\nconst Product = require('./Product');\n\n/**\n * Represents a Order on Whats"
  },
  {
    "path": "src/structures/Payment.js",
    "chars": 1880,
    "preview": "const Base = require('./Base');\n\nclass Payment extends Base {\n    constructor(client, data) {\n        super(client);\n\n  "
  },
  {
    "path": "src/structures/Poll.js",
    "chars": 1291,
    "preview": "'use strict';\n\n/**\n * Poll send options\n * @typedef {Object} PollSendOptions\n * @property {boolean} [allowMultipleAnswer"
  },
  {
    "path": "src/structures/PollVote.js",
    "chars": 2105,
    "preview": "'use strict';\n\nconst Message = require('./Message');\nconst Base = require('./Base');\n\n/**\n * Selected poll option struct"
  },
  {
    "path": "src/structures/PrivateChat.js",
    "chars": 181,
    "preview": "'use strict';\n\nconst Chat = require('./Chat');\n\n/**\n * Represents a Private Chat on WhatsApp\n * @extends {Chat}\n */\nclas"
  },
  {
    "path": "src/structures/PrivateContact.js",
    "chars": 202,
    "preview": "'use strict';\n\nconst Contact = require('./Contact');\n\n/**\n * Represents a Private Contact on WhatsApp\n * @extends {Conta"
  },
  {
    "path": "src/structures/Product.js",
    "chars": 1563,
    "preview": "'use strict';\n\nconst Base = require('./Base');\nconst ProductMetadata = require('./ProductMetadata');\n\n/**\n * Represents "
  },
  {
    "path": "src/structures/ProductMetadata.js",
    "chars": 533,
    "preview": "const Base = require('./Base');\n\nclass ProductMetadata extends Base {\n    constructor(client, data) {\n        super(clie"
  },
  {
    "path": "src/structures/Reaction.js",
    "chars": 1347,
    "preview": "'use strict';\n\nconst Base = require('./Base');\n\n/**\n * Represents a Reaction on WhatsApp\n * @extends {Base}\n */\nclass Re"
  },
  {
    "path": "src/structures/ScheduledEvent.js",
    "chars": 2924,
    "preview": "'use strict';\n\n/**\n * ScheduledEvent send options\n * @typedef {Object} ScheduledEventSendOptions\n * @property {?string} "
  },
  {
    "path": "src/structures/index.js",
    "chars": 964,
    "preview": "module.exports = {\n    Base: require('./Base'),\n    BusinessContact: require('./BusinessContact'),\n    Chat: require('./"
  },
  {
    "path": "src/util/Constants.js",
    "chars": 4433,
    "preview": "'use strict';\n\nexports.WhatsWebURL = 'https://web.whatsapp.com/';\n\nexports.DefaultOptions = {\n    puppeteer: {\n        h"
  },
  {
    "path": "src/util/Injected/AuthStore/AuthStore.js",
    "chars": 831,
    "preview": "'use strict';\n\nexports.ExposeAuthStore = () => {\n    window.AuthStore = {};\n    window.AuthStore.AppState = window.requi"
  },
  {
    "path": "src/util/Injected/Utils.js",
    "chars": 62112,
    "preview": "'use strict';\n\nexports.LoadUtils = () => {\n    window.WWebJS = {};\n\n    /**\n     * Helper function that compares between"
  },
  {
    "path": "src/util/InterfaceController.js",
    "chars": 5563,
    "preview": "'use strict';\n\n/**\n * Interface Controller\n */\nclass InterfaceController {\n    constructor(props) {\n        this.pupPage"
  },
  {
    "path": "src/util/Puppeteer.js",
    "chars": 628,
    "preview": "/**\n * Expose a function to the page if it does not exist\n *\n * NOTE:\n * Rewrite it to 'upsertFunction' after updating P"
  },
  {
    "path": "src/util/Util.js",
    "chars": 6177,
    "preview": "'use strict';\n\nconst path = require('path');\nconst Crypto = require('crypto');\nconst { tmpdir } = require('os');\nconst f"
  },
  {
    "path": "src/webCache/LocalWebCache.js",
    "chars": 1419,
    "preview": "const path = require('path');\nconst fs = require('fs');\n\nconst { WebCache, VersionResolveError } = require('./WebCache')"
  },
  {
    "path": "src/webCache/RemoteWebCache.js",
    "chars": 1555,
    "preview": "const fetch = require('node-fetch');\nconst { WebCache, VersionResolveError } = require('./WebCache');\n\n/**\n * RemoteWebC"
  },
  {
    "path": "src/webCache/WebCache.js",
    "chars": 273,
    "preview": "/**\n * Default implementation of a web version cache that does nothing.\n */\nclass WebCache {\n    async resolve() {\n     "
  },
  {
    "path": "src/webCache/WebCacheFactory.js",
    "chars": 538,
    "preview": "const RemoteWebCache = require('./RemoteWebCache');\nconst LocalWebCache = require('./LocalWebCache');\nconst { WebCache }"
  },
  {
    "path": "tests/README.md",
    "chars": 650,
    "preview": "# Running Tests\n\nThese tests require an authenticated WhatsApp Web session, as well as an additional phone that you can "
  },
  {
    "path": "tests/client.js",
    "chars": 27137,
    "preview": "const chai = require('chai');\nconst chaiAsPromised = require('chai-as-promised');\nconst sinon = require('sinon');\n\nconst"
  },
  {
    "path": "tests/helper.js",
    "chars": 843,
    "preview": "const { Client, LocalAuth } = require('..');\n\nrequire('dotenv').config();\n\nconst remoteId = process.env.WWEBJS_TEST_REMO"
  },
  {
    "path": "tests/structures/chat.js",
    "chars": 6770,
    "preview": "const { expect } = require('chai');\n\nconst helper = require('../helper');\nconst Message = require('../../src/structures/"
  },
  {
    "path": "tests/structures/group.js",
    "chars": 8582,
    "preview": "const { expect } = require('chai');\nconst helper = require('../helper');\n\nconst remoteId = helper.remoteId;\n\ndescribe('G"
  },
  {
    "path": "tests/structures/message.js",
    "chars": 3801,
    "preview": "const { expect } = require('chai');\nconst sinon = require('sinon');\n\nconst helper = require('../helper');\nconst { Contac"
  },
  {
    "path": "tools/changelog.sh",
    "chars": 98,
    "preview": "#!/bin/sh\n\nLAST_TAG=$(git describe --tags --abbrev=0)\ngit log --pretty=\"%h - %s\" \"$LAST_TAG\"..HEAD"
  },
  {
    "path": "tools/publish",
    "chars": 2194,
    "preview": "#!/bin/bash\nset -e\n\ncd \"$(dirname \"$0\")\"\ncd '..'\n\nBRANCH=`git rev-parse --abbrev-ref HEAD`\nRELEASE_MODE=$1\n\necho \"\"\necho"
  },
  {
    "path": "tools/version-checker/.version",
    "chars": 17,
    "preview": "2.3000.1017054665"
  },
  {
    "path": "tools/version-checker/update-version",
    "chars": 3286,
    "preview": "#!/usr/bin/env node\n\nconst fs = require('fs');\nconst puppeteer = require('puppeteer');\n\nconst args = [\n    '--autoplay-p"
  }
]

About this extraction

This page contains the full source code of the wwebjs/whatsapp-web.js GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 185 files (2.1 MB), approximately 551.1k tokens, and a symbol index with 455 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!