Commit graph whatsapp-web.js/src/structures/Message.js
Author SHA1 Message Date
2^1
cbf49be9be
fix: resolve naming issues (#201712)
Co-authored-by: BenyFilho <168232825+BenyFilho@users.noreply.github.com>
2026-04-16 12:45:35 -03:00
Maksim Koryukov
11594b2887
refactor(client): move sendReaction method to the Client (#201695)
`Message.react` moved to `Client.sendReaction`
2026-04-12 09:30:32 -03:00
Lindionez
a0ff21e67c
fix: Whatsapp increased the number of characters in IDs, but followed the IOS standard (#201682) 2026-04-06 18:06:48 +03:00
BenyFilho
b0e869317f
Fix: Message get Mentions (#201669)
* fix Message get Mentions

* Update Message.js

check if m is a string

* Update Message.js

* Update Message.js

* Update Message.js

* Update Message.js

* Update Message.js

* Update Message.js

* Update Message.js

* Update Message.js

* Update Message.js

* Update Message.js
2026-03-17 23:18:06 -03:00
Bastian Novoa
03498ea477
fix: WAWebSendReactionMsgAction call to use sendReactionToMsg method (#127101)
* update WAWebSendReactionMsgAction call to use sendReactionToMsg method

The WhatsApp Web internal API changed the WAWebSendReactionMsgAction module 
from a directly callable function to an object with a sendReactionToMsg method.

Before:
  await (window.require('WAWebSendReactionMsgAction'))(msg, reaction);

After:
  await (window.require('WAWebSendReactionMsgAction')).sendReactionToMsg(msg, reaction);

This fixes the TypeError: window.require(...) is not a function error
thrown when attempting to react to messages.

* Refactor react method for improved readability

* Update Message.js

Co-authored-by: @BenyFilho

* Update Message.js

Co-authored-by: @Benyfilho

* Update Message.js

Co-authored-by: @BenyFilho

* Update Message.js

Co-authored-by: BenyFilho <BenyFilho@users.noreply.github.com>

---------

Co-authored-by: BenyFilho <168232825+BenyFilho@users.noreply.github.com>
Co-authored-by: BenyFilho <BenyFilho@users.noreply.github.com>
2026-03-14 16:56:49 -03:00
2^1
807efd502d
chore: cleanup, ci workflows and formatting (#127064)
* ci: setup workflows, dependabot, labeler and commit linting

* docs: update README, community files and issue templates

* chore: configure prettier, editorconfig and format codebase

* chore: restore changes lost during rebase

* docs: adjust url for new logo

* fix: align badges

* chore: resolve conflicts and re-add temp lint
2026-03-10 01:45:12 +02:00
Rajeh Taher
883d7e4eda
Store: remove all mentions of window.Store (#127077)
* Store: remove all mentions of window.Store

* Apply suggestion from @BenyFilho

Co-authored-by: BenyFilho <168232825+BenyFilho@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: BenyFilho <168232825+BenyFilho@users.noreply.github.com>

---------

Co-authored-by: BenyFilho <168232825+BenyFilho@users.noreply.github.com>
2026-03-01 16:49:21 -03:00
Rajeh Taher
9b1eb76b2b
general: tree-shaking pre-MD and old comet versions (#5675)
Co-authored-by: BenyFilho <168232825+BenyFilho@users.noreply.github.com>
Co-authored-by: tuyuribr <45042245+tuyuribr@users.noreply.github.com>
2026-02-10 23:24:54 +00:00
Pedro S Lopez
c13510e907 chore: fix jsdoc invalid types 2026-01-05 01:40:46 -04:00
Lai Ting Yang
de072a1c7c
fix: add missing downloadQpl parameter to downloadAndMaybeDecrypt (#4010)
Co-authored-by: Rajeh Taher <rajeh@reforward.dev>
2025-12-13 06:54:14 +02:00
fallenleavesbuy
dec1bee842
chore: fix never resolve promise when downloading expired media (#4012)
Co-authored-by: fallenleavesguy <no@email.com>
2025-12-13 06:19:10 +02:00
RendyCraft047
a31607e2dc
fix unpin messages (#3839)
Co-authored-by: tuyuribr <45042245+tuyuribr@users.noreply.github.com>
2025-11-20 13:25:36 +02:00
RendyCraft047
0c36613cc7
feat+fix: send vote messages & vote update event (#3913)
* add send vote function

* Update index.d.ts

* fix and add required modules

* fix poll update in group chat

* adjustments to improvements

* add example usages

* fix eslint

---------

Co-authored-by: Rajeh Taher <rajeh@reforward.dev>
2025-11-09 16:37:51 -03:00
BenyFilho
7c7851f4d4
feat: getPollVotes (#3807)
* Add required module

* Add getPollVotes function

* Add getPollVotes function

* Add getPollVotes function

* Add Message.getPollVotes

* Add Message.getPollVotes
2025-10-07 19:24:05 +00:00
Fernando Mondo
912b78d299
fix: Add protocolMessageKey and fix revoked messages to preserve original before.id (#3715)
* Add protocolMessageKey and fix revoke

* Add protocolMessageKey and fix revoke

* docs: add explanation
2025-08-28 17:39:22 +03:00
alechkos
f9db14d185
feat: Event messages (#3345)
* feat: add createCallLink function

* feat: create Event class

* feat: add functionality for sending Events

* feat: add editEvent function

* refactor: send event location prop as wa does

* refactor: combine modules

* feat: add sendResponseToEvent function

* fix: createEventCallLink parameter

* docs: add documentation

* fix: eslint

* refactor: change timestamp to Date for the user's convenience

* refactor: rename 'Event' to 'ScheduledEvent' for more clarity

* style: fix typo in inner function

* refactor: remove unnecessary inner function

* refactor: rename 'sendResponseToEvent' to 'sendResponseToScheduledEvent' for more clarity

* fix: update the module name
2025-08-09 00:36:27 +03:00
Ajetunmobi Isaac
eaa8445ec0
fix error when processing poll messages without messageSecret in channels (#3617)
Co-authored-by: Shir Serlui <70711723+shirser121@users.noreply.github.com>
2025-06-30 09:40:14 +03:00
Yusif Aliyev
94ce20b4a5
fix: change mentionedIds type from ChatId[] to string[] in Message (#3581)
* fix: change mentionedIds type from ChatId[] to string[] in Message interface

* fix: correct types for mentionedIds and groupMentions

---------

Co-authored-by: alechkos <93551621+alechkos@users.noreply.github.com>
2025-06-02 21:05:18 +03:00
alechkos
d0642b761c
feat: Channel (#2620)
* window.injectToFunction clarifications

* added createChannel method

* initial Channel class structure

* added getChannelById and getChannels methods

* added 4 methods to change channel metadata

* added deleteChannel method

* added subscribe to/unsubscribe from channel methods

* ecmaVersion updated to 2022

* added searchChannels method

* refactoring of: getChat, getChannel, getChatModel, getChannelModel

* removed Channel.canSend

* sendMessage updated to support channels [p1]

* createChannel: returns string if an error occupied

* added getSubscribers

* added mute/unmute methods

* searchChannels: minor update

* sendMessage updated to support channels [p2]

- added support to send image, sticker, gif and video

* [REFAC] refactored chat retrieving in getChatOrChannel

* [FEAT] added getChannelByInviteCode method

* [CHG] added check if channel creation enabled

* [FEAT] added sendChannelAdminInvitation method

* [WIP] preparations for sending polls [p1]

* [BUG] fixed some internal functions

* [BUG] fixed poll creation

* [COPY] renamed some internal functions

- window.WWebJS.getChatOrChannel renamed back to window.WWebJS.getChat
-window.WWebJS.getChatOrChannelModel renamed back to window.WWebJS.getChatModel

* fix: typo

* fix: send docs without caption

* fix: fixed some internal function

* fix: channel retrieving

* fix: fixed internal getChannelMetadata function

* fix: fixed channel admin can unsubscribe from channel

* feat: channel admin functionality

* feat: added fetchMessages method

Co-authored-by: tuke307 <58882912+tuke307@users.noreply.github.com>

* refactor: revert removing support for Buttons and Lists

Note: buttons and lists are deprecated

* refactor: revert parameter name from 'chatOrChannel' to 'chat'

* fix: support Node v12

* refactor: return 'undefined' in a case of falsy value

* refactor: use already created variable

* docs: fix 'countryCodes' property type

* fix: 'searchChannels' method fixed

* fix: add check in 'setReactionSetting' method

* sendNewsletterMessageJob requires a proper Msg Object in 2.24xx (#10)

Co-authored-by: Sven Neumann <s.neumann@websix.de>

* style: fix broken link in readme file

* fix: only directPath determines whether hasMedia or not

fixes #2952

* fix: get rid of unnecessary 'await'

* feat: add option to send polls in channels

* refactor: get channel instances with 'getChatById'

* chore: fix eslint

* fix: fatal error

* refactor: delete local models by default when unsubscribing

* fix: prevent TypeError if no channel models are returned

* fix: update 'searchChannels' function for WWeb > 2.3000.0

* fix: fix for 'getChannelByInviteCode' function

* fix: fix for 'sendChannelAdminInvite' function

* fix: update 'fetchMessages' for channels

* refactor: update 'setReactionSetting' function

* fix: update 'sendMessage' for channels

* feat: add 'transferChannelOwnership' function

* refactor: add 'deleteChannel' function to 'Client'

* style: fix project code style

* chore: eslint fix

* feat: add 'sendSeen' function

* fix: fix the function restoration after injection

* refactor: remove duplicate module

* fix: get isNewsletter properly

* fix: fix channels media - add mediaHandle

Co-authored-by: devlikepro <155617407+devlikepro@users.noreply.github.com>

---------

Co-authored-by: tuke307 <58882912+tuke307@users.noreply.github.com>
Co-authored-by: Sven <sven2neumann@gmail.com>
Co-authored-by: Sven Neumann <s.neumann@websix.de>
Co-authored-by: devlikepro <155617407+devlikepro@users.noreply.github.com>
2025-05-31 21:36:19 +03:00
alechkos
bad202d2bc
fix: fix 'delete' method for messages (#3301) 2025-05-30 15:51:41 +03:00
Matheus Kuster
1591350144
chore: add typecheck to data.from and data.to when creating the inviteV4 (#3257)
Co-authored-by: alechkos <93551621+alechkos@users.noreply.github.com>
2024-09-15 12:30:21 +03:00
Alwin Lubbers
951ff7bfca
fix: sendMessage with quoted message id (#3260)
* fix: sendMessage with quoted message id

Now using `window.Store.Msg.getMessagesById` instead of `window.Store.Msg.get`

* refactor: apply message retrievement to all appropriate places

* chore: ignore ide's dirs

* fix: set proper variable

---------

Co-authored-by: Shir Serlui <70711723+shirser121@users.noreply.github.com>
Co-authored-by: alechkos <93551621+alechkos@users.noreply.github.com>
2024-09-15 01:44:07 +03:00
Rajeh Taher
13ce571c64
Farewell, Webpack! Re-injection, Pairing Code login, and 2.24x jumbofix (#2816)
* fix(webpack-exodus): Added the new patch

* fix(webpack-exodus): Fixed v2.3000.x and v2.24

* chore(webpack-exodus): eslint

* fix(webpack-exodus): Fixed Store

* fix(webpack-exodus): slight store fix

* chore(webpack-exodus): fix example so that I don't crash on every load

* chore: eslint fix

* fix(webpack-exodus): prevent confusion with build systems

* fix(webpack-exodus): Add proper groups module

* fix(webpack-exodus): Fix order queries

* fix(webpack-exodus): Bad export name

* feat(webpack-exodus): Re-injection, No more selectors, Pairing Code auth

* fix(webpack-exodus): Eslint and better login/logout handling

* fix(webpack-exodus): 2.24 compatibility

* revert testing options

* chore(webpack-exodus): ESLint

* chore(webpack-exodus): final eslint tweak (did not commit with last commit for some reason)

* style: fix broken link in readme file

* fix(webpack-exodus): Fix forwarding messages

* fix(webpack-exodus): finish forwarding function

* Making the ESLint god happy

* Fix window.Store.ProfilePic.profilePicFind is not a function error (#3001)

* Change window.Store.ProfilePic.profilePicFind to window.Store.ProfilePic.requestProfilePicFromServer

* Prevent breaking v2.2x

* refactor: make it more readable

---------

Co-authored-by: alechkos <93551621+alechkos@users.noreply.github.com>

* Sanitize, improves and fixes

* make ESList god happy

* fix getInviteCode for group (#3007) (#3029)

* fix getInviteCode for group (#3007)

* move changes to proper getInviteCode method.

* style fix

* refactor: add try-catch in a case the user is not a group admin

* refactor: handle promise properly

---------

Co-authored-by: Sven Neumann <s.neumann@websix.de>
Co-authored-by: alechkos <93551621+alechkos@users.noreply.github.com>

* fixes

* Update LocalWebCache.js

* fix delete on 2.3000 (#3048)

* fix delete on 2.3000

* fix compareWwebVersions

* fix: use proper comparison operator

---------

Co-authored-by: alechkos <93551621+alechkos@users.noreply.github.com>

* Implement bot invoking capabilities (#3009)

* Implement bot invoking capabilities

* Update index.d.ts

* Eslint

* Webpack exodus fix message_reaction event (#3099)

* exposed WAWebAddonReactionTableMode

* capture reaction using WAWebAddonReactionTableMode

* move compareWwebVersions and check version before trying to expose new store

* message_reaction on example.js (#3102)

* handle message_reaction event on example.js

* log wweb version on ready

* fix reactions on pvt chats (#3104)

* New group function

* new group settings

* Update Client.js

---------

Co-authored-by: alechkos <93551621+alechkos@users.noreply.github.com>
Co-authored-by: tuyuribr <45042245+tuyuribr@users.noreply.github.com>
Co-authored-by: Seow Zhen Jun <56989187+seowzhenjun0126@users.noreply.github.com>
Co-authored-by: Sven <sven2neumann@gmail.com>
Co-authored-by: Sven Neumann <s.neumann@websix.de>
Co-authored-by: Jorge Rocha Gualtieri <jorge@jrg.com.br>
Co-authored-by: Mateus Mercer <accounts@matbm.net>
2024-07-23 22:19:22 -03:00
alechkos
01714fe599
feat: vote_update event (#2596)
* Merge branch 'add-polls' into polls-ext

* added listener to poll votes

* added isUnvote property

* added option for custom message secret

* usage example updated

* added logic for catching removed votes

* usage example updated

* fixed logic for poll vote events

* temp usage example

* No more `isCurrentState`

* messageSecret converted to array

Co-authored-by: tuyuribr <45042245+tuyuribr@users.noreply.github.com>

* docs updated

* we already have messageSecret in vote.parentMessage

* PollVote.selectedOptions changed to be similar to pollOptions

* docs fixed

* window.injectToFunction clarifications

* minor clarifications

* fix: typo

* style: fix broken link in readme file

---------

Co-authored-by: tuyuribr <45042245+tuyuribr@users.noreply.github.com>
2024-04-30 20:23:17 +03:00
Shir Serlui
8c810a8462
Fix: delete lines that remove data from this._data (#2958) 2024-04-29 10:59:20 +03:00
alechkos
e0d955f130
feat: group mentions + improved user mentions (#2602)
* added logic to mention groups + fixed user mentions

* usage example updated

* docs fixed

* window.injectToFunction clarifications

* usage example clarifications

* fix: typo

* docs: added missed docs
2024-01-11 10:33:10 +02:00
alechkos
8d683a668b
feat: pin/unpin messages (#2692)
* feat: add Message.pin and Message.unpin methods

* feat: added usage example

* docs: clarifications
2024-01-11 10:24:02 +02:00
Shir Serlui
2100853727
Fix: Wrong import of Contact object (#2715)
* Fix: Wrong import of Contact object

There was an error in the import:
`const {Contact} = require('./Contact');`
instead of
`const Contact = require('./Contact');`

* style: fix import order

---------

Co-authored-by: alechkos <93551621+alechkos@users.noreply.github.com>
2024-01-11 02:23:42 +02:00
Humberto Zambrano
b5eb4f97ce
Fix Cannot read properties of undefined (reading 'mediaStage') in message.js (#2556)
* Update Message.js

Fix Cannot read properties of undefined (reading 'mediaStage') when msg or msg.mediaData is undefined.

* node 13 compatible

---------

Co-authored-by: alechkos <93551621+alechkos@users.noreply.github.com>
2023-12-08 01:12:58 +02:00
tofers
3dab4a3f41
fix: message_edit event and edit caption in file (#2617)
* edit caption

* Update Client.js

* refactor: events combined into one line

---------

Co-authored-by: alechkos <93551621+alechkos@users.noreply.github.com>
2023-12-05 14:50:55 +02:00
alechkos
7ff9c9807b
fix: Message.getInfo (#2574)
* module fixed + improved modules retrieving

* wait for msg data to be updated

* added random sleep value between 1100-1200 ms

* added check for msg is sent by current user

* node 13 compatible

* docs fixed

* msg.fromMe fixed

* timestamp calculation fixed

* window.injectToFunction clarifications
2023-11-24 12:18:18 +02:00
alechkos
67d305be78
feat: send polls (#2377)
* feat: added Poll class

* feat: logic for sending polls added

* updated poll properties on returned message instance

* docs updated

* usage example updated

* module fixed

* 'pollSendOptions' changed to 'options'

* window.compareWwebVersions fixed

* small update to improve the performance of findImpl fix

* added option for custom message secret

* usage example updated
2023-10-19 19:37:30 +03:00
alechkos
ecf19eb9a5
fix: sending locations (#2339)
* added function to to modify module functions

* fix for locations to be sent

* changes for class Location

- description property was splited into name and address
- added url property
- added ability to pass name, address and url as options while creating an instance

* docs updated

* usage example updated

* added url checking

* fixed url

* updated location property in Message class

* fixed url when http prefix is provided

* injectToFunction updated to be more flexible

* docs clarification

* ESLint fix

* fix: injectToFunction fixed to work properly

* minor fix in injectToFunction

* refactor: added usage of url validator

* small change to improve performance for findImpl fix

* window.compareWwebVersions fixed
2023-09-20 23:11:52 +03:00
Ricardo Araújo Paes
20dad1b50f
Fix error in nodejs v12.x (#2389) 2023-08-24 14:18:40 -03:00
RendyCraft047
d959645bc3
fix: group invite v4 (#2321)
* Update Injected.js

* Update Client.js

* fix changes

* make it simple

* fix if undefined

---------

Co-authored-by: Shir Serlui <70711723+shirser121@users.noreply.github.com>
2023-08-07 06:37:56 +02:00
tofers
8e8d0c9b3e
feat: Edit message (#2254)
* function edit message
2023-06-15 12:49:38 -03:00
tofers
081b455fa5
hotfix: newId and deviceType (#2196)
* update method generate Msg id, newId to newIdV2

* replace newId and await in version WA 2.2321.6

* fix deviceType
2023-05-19 16:25:54 +00:00
tofers
37724f6959
fix: msg.chat (#2139)
* fix function openChatWindowAt

* fix star \ unstar

* fix function delete

* fix closeRightDrawer
2023-04-19 02:50:08 +03:00
Gabryel Rigol
f8cfc7889c
Fix isStatus (#2108)
* Fix isStatus

* Fiz isStatus
2023-04-09 16:22:56 +03:00
tofers
780005a81a
feat: load reactions in message (#1897)
* msg find reactions

* reaction list

* return hasReaction  only true or false

---------

Co-authored-by: Rajeh Taher <rajeh@reforward.dev>
2023-04-01 17:03:21 +03:00
Italo Castro
109fbce8db
Fix Message.js (#2080)
Fixes https://github.com/pedroslopez/whatsapp-web.js/issues/2078
2023-03-18 18:11:38 -04:00
Michal Serlui
c208c8936a
Fix: message.getInfo (#1953)
window.Store.MessageInfo.sendQueryMsgInfo now needs msg.id instead of msg
2023-01-26 23:52:39 +02:00
tofers
bd192993b7
fix method downloadMedia when not found msg (#1852)
Co-authored-by: Rajeh Taher <rajeh@reforward.dev>
2023-01-15 14:35:26 -04:00
Pedro S. Lopez
dc91562f3c
fix: star/unstar messages (#1843) 2022-11-26 05:12:54 -04:00
Pedro S. Lopez
db55d869f8
fix: delete messages for everyone (#1842) 2022-11-26 04:44:35 -04:00
Pedro S. Lopez
d9f9c28276
fix: get quoted msg (#1841) 2022-11-26 04:38:29 -04:00
blox
b1e0fce504
Allow the deletion of others' messages (#1688) 2022-09-18 16:33:43 -03:00
jurajmatus
537e843a49
Async buffer->BASE64 conversion (#1481)
* Async buffer->BASE64 conversion

* ESLint fixes
2022-08-10 16:31:04 +00:00
Jeremy Andes
fd368361df
Fix: Cannot read properties of undefined (reading 'id') (#1604)
This change fix `react` evaluation:

```
Error: Evaluation failed: TypeError: Cannot read properties of undefined (reading 'id')
    at Object.<anonymous> (https://web.whatsapp.com/bootstrap_main.44dc3fdf06d9bb8b053d.js:2:103021)
    at Generator.next (<anonymous>)
    at t (https://web.whatsapp.com/vendor1~bootstrap_qr.5922e52928d864c0918c.js:2:66483)
    at s (https://web.whatsapp.com/vendor1~bootstrap_qr.5922e52928d864c0918c.js:2:66694)
    at https://web.whatsapp.com/vendor1~bootstrap_qr.5922e52928d864c0918c.js:2:66753
    at Y (https://web.whatsapp.com/bootstrap_qr.f74b98c729dd38392a5f.js:37:128505)
    at new y (https://web.whatsapp.com/bootstrap_qr.f74b98c729dd38392a5f.js:37:121072)
    at Object.<anonymous> (https://web.whatsapp.com/vendor1~bootstrap_qr.5922e52928d864c0918c.js:2:66634)
    at Object.k (https://web.whatsapp.com/bootstrap_main.44dc3fdf06d9bb8b053d.js:2:105511)
    at Object.t.sendReactionToMsg (https://web.whatsapp.com/bootstrap_main.44dc3fdf06d9bb8b053d.js:2:102647)
    at ExecutionContext._evaluateInternal (/app/node_modules/puppeteer/lib/cjs/puppeteer/common/ExecutionContext.js:221:19)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async ExecutionContext.evaluate (/app/node_modules/puppeteer/lib/cjs/puppeteer/common/ExecutionContext.js:110:16)
    at async Message.react (/app/node_modules/whatsapp-web.js/src/structures/Message.js:344:9)
```

Co-authored-by: Rajeh Taher <rajeh@reforward.dev>
2022-08-09 15:30:56 +00:00
Rajeh Taher
bd553f75d3
feat: Adding file size by bytes to MessageMedia (#1273)
* Update index.d.ts

* Update Message.js

* Update Message.js

* Update MessageMedia.js

* Update MessageMedia.js
2022-08-09 15:29:59 +00:00