Skip to content
MessageBuilder
Documentation menu
BaseBuilder

BaseBuilder

Base class with title, subtitle, body, footer, contextInfo, and extra payload state.

API reference
v4.8/Baileys runtime
On this page

Overview

BaseBuilder is inherited by Button, ButtonV2, Carousel, andAIRich. It stores common fields and provides addPayload() for raw fields.

_title_subtitle_body_footer_contextInfo_extraPayload
base.js
javascript
await new Button(sock)
  .setTitle('Announcement')
  .setSubtitle('Quick update')
  .setBody('The server will undergo maintenance at 11:00 PM UTC.')
  .setFooter('Operations team')
  .setContextInfo({ forwardingScore: 1, isForwarded: true })
  .addReply('Understood', 'ok')
  .send(jid);

Methods

setTitle

chainable
.setTitle(title)

Sets the message header title.

Parameter

ParameterTypeDefaultDescription
titlerequiredstring—Header title.
Returnthis
  • Throws a TypeError when the value is not a string.

setSubtitle

chainable
.setSubtitle(subtitle)

Sets the message header subtitle.

Parameter

ParameterTypeDefaultDescription
subtitlerequiredstring—Header subtitle.
Returnthis

setBody

chainable
.setBody(body)

Sets the main message body.

Parameter

ParameterTypeDefaultDescription
bodyrequiredstring—Body text.
Returnthis

setFooter

chainable
.setFooter(footer)

Sets the message footer text.

Parameter

ParameterTypeDefaultDescription
footerrequiredstring—Footer text.
Returnthis

setContextInfo

chainable
.setContextInfo(obj)

Replaces the entire contextInfo object, for example for quoted messages, mentions, or forwarding metadata.

Parameter

ParameterTypeDefaultDescription
objrequiredobject—A plain contextInfo object.
Returnthis
  • Throws a TypeError when the value is not a plain object.

addPayload

chainable
.addPayload(obj)

Merges additional fields into the final root payload. Useful for raw WhatsApp fields without a dedicated method.

Parameter

ParameterTypeDefaultDescription
objrequiredobject—Fields merged with Object.assign.
Returnthis
example
button.addPayload({ messageContextInfo: { deviceListMetadataVersion: 2 } });

Notes

Chainable

Every setter returns this, so calls can be chained in a single expression.

Order matters mainly for lists

Setters can be called at any point before build(). For lists, the addSelection → makeSection → makeRow order is important.

Do not rely on order for lists

addSelection(), makeSection(), and makeRow() depend on active state. General setters can still be called at any time.