What is @elfhkry/baileys?
@elfhkry/baileys is a powerful, open-source library for developers who need reliable WhatsApp automation without the overhead of a browser. Powered by WebSocket technology, it supports message management, group administration, interactive messages, and action buttons all in a lightweight and modular package.
Actively maintained with continuous improvements to pairing stability, session management, and WhatsApp multi-device compatibility.
Perfect for:
- Business bots & chat automation
- Customer service systems
- Broadcast & notification tools
- E-commerce integrations
Main Features
| Custom Pairing | Stable pairing with your own codes no disconnection issues |
| Interactive Messages | Buttons, menus, native flows, and more |
| Session Management | Automatic, efficient, and long-term stable |
| Multi-Device Support | Fully compatible with WhatsApp's latest multi-device API |
| Lightweight & Modular | Easy to integrate into any Node.js project |
| Rich Documentation | Comprehensive guides and example code included |
| Secure Auth | Improved authentication flow with fixed prior vulnerabilities |
Getting Started
Install via npm or yarn:
npm install @elfhkry/baileys
yarn add @elfhkry/baileys
Then import and initialize:
const { makeWASocket, useMultiFileAuthState } = require("@elfhkry/baileys");
const { state, saveCreds } = await useMultiFileAuthState("auth_info");
const sock = makeWASocket({ auth: state });
sock.ev.on("creds.update", saveCreds);
Additional Functions
Get Channel ID
await sock.newsletterId(url);
Check Banned Number
await sock.checkWhatsApp(target);
SendMessage Documentation
Group Status Message (V2)
await sock.sendMessage(target, {
groupStatusMessage: {
text: "Hello World"
}
});
Album Message (Multiple Images)
await sock.sendMessage(target, {
albumMessage: [
{ image: cihuy, caption: "First photo" },
{ image: { url: "IMAGE_URL" }, caption: "Second photo" }
]
}, { quoted: m });
Event Message
await sock.sendMessage(target, {
eventMessage: {
isCanceled: false,
name: "Event Name",
description: "Event description here",
location: {
degreesLatitude: 0,
degreesLongitude: 0,
name: "Location Name"
},
joinLink: "https://call.whatsapp.com/video/example",
startTime: "1763019000",
endTime: "1763026200",
extraGuestsAllowed: false
}
}, { quoted: m });
Poll Result Message
await sock.sendMessage(target, {
pollResultMessage: {
name: "Poll Title",
pollVotes: [
{ optionName: "Option A", optionVoteCount: "112233" },
{ optionName: "Option B", optionVoteCount: "1" }
]
}
}, { quoted: m });
Simple Interactive Message
await sock.sendMessage(target, {
interactiveMessage: {
header: "Hello World",
title: "Hello World",
footer: "telegram: @Fhkry666",
buttons: [
{
name: "cta_copy",
buttonParamsJson: JSON.stringify({
display_text: "Copy Code",
id: "123456789",
copy_code: "ABC123XYZ"
})
}
]
}
}, { quoted: m });
Interactive Message with Native Flow
await sock.sendMessage(target, {
interactiveMessage: {
header: "Hello World",
title: "Hello World",
footer: "telegram: @Fhkry666",
image: { url: "https://example.com/image.jpg" },
nativeFlowMessage: {
messageParamsJson: JSON.stringify({
limited_time_offer: {
text: "Limited offer text",
url: "https://t.me/Fhkry666",
copy_code: "PROMO2024",
expiration_time: Date.now() * 999
},
bottom_sheet: {
in_thread_buttons_limit: 2,
divider_indices: [1, 2, 3, 4, 5, 999],
list_title: "List Title",
button_title: "Button Title"
},
tap_target_configuration: {
title: "Title",
description: "Description text",
canonical_url: "https://t.me/Fhkry666",
domain: "shop.example.com",
button_index: 0
}
}),
buttons: [
{
name: "single_select",
buttonParamsJson: JSON.stringify({ has_multiple_buttons: true })
},
{
name: "call_permission_request",
buttonParamsJson: JSON.stringify({ has_multiple_buttons: true })
},
{
name: "single_select",
buttonParamsJson: JSON.stringify({
title: "Select an Option",
sections: [
{
title: "Section Title",
highlight_label: "Label",
rows: [
{
title: "Row Title",
description: "Row description",
id: "row_1"
}
]
}
],
has_multiple_buttons: true
})
},
{
name: "cta_copy",
buttonParamsJson: JSON.stringify({
display_text: "Copy Code",
id: "123456789",
copy_code: "ABC123XYZ"
})
}
]
}
}
}, { quoted: m });
Interactive Message with Thumbnail
await sock.sendMessage(target, {
interactiveMessage: {
header: "Hello World",
title: "Hello World",
footer: "telegram: @Fhkry666",
image: { url: "https://example.com/image.jpg" },
buttons: [
{
name: "cta_copy",
buttonParamsJson: JSON.stringify({
display_text: "Copy Code",
id: "123456789",
copy_code: "ABC123XYZ"
})
}
]
}
}, { quoted: m });