ws3-fca
Version:
A node.js package for automating Facebook Messenger bot, and is one of the most advanced next-generation Facebook Chat API (FCA) by @NethWs3Dev & @ExocoreCommunity
179 lines (122 loc) โข 4.79 kB
Markdown
# ๐ ws3-fca

๐ **ws3-fca** is a fully refactored Facebook Chat API (FCA) client built for **reliable**, **real-time**, and **modular** interaction with Facebook Messenger. Designed with modern bot development in mind, it offers full control over Messenger automation through a clean, stable interface.
## ๐ Documentation & Feedback
Full documentation and advanced examples:
[https://exocore-dev-docs-exocore.hf.space](https://exocore-dev-docs-exocore.hf.space)
If you encounter issues or want to give feedback, feel free to message us via Facebook:
* [@Kenneth Aceberos](https://www.facebook.com/Neth.Ace.7/)
* [@Johnsteve Costaรฑos](https://www.facebook.com/johnstevecostanos2025/)
* [@Jonell Magallanes ๓ฑข](https://www.facebook.com/ccprojectsjonell10/)
## โจ Features
* ๐ **Precise Login Mechanism**
Dynamically scrapes Facebook's login form and submits tokens for secure authentication.
* ๐ฌ **Real-time Messaging**
Send and receive messages (text, attachments, stickers, replies).
* ๐ **Message Editing**
Edit your botโs messages in-place.
* โ๏ธ **Typing Indicators**
Detect and send typing status.
* โ
**Message Status Handling**
Mark messages as delivered, read, or seen.
* ๐ **Thread Management**
* Retrieve thread details
* Load thread message history
* Get lists with filtering
* Pin/unpin messages
* ๐ค **User Info Retrieval**
Access name, ID, profile picture, and mutual context.
* ๐ผ๏ธ **Sticker API**
Search stickers, list packs, fetch store data, AI-stickers.
* ๐ฌ **Post Interaction**
Comment and reply to public Facebook posts.
* โ **Follow/Unfollow Users**
Automate social interactions.
* ๐ **Proxy Support**
Full support for custom proxies.
* ๐งฑ **Modular Architecture**
Organized into pluggable models for maintainability.
* ๐ก๏ธ **Robust Error Handling**
Retry logic, consistent logging, and graceful failovers.
## โ๏ธ Installation
> Requires **Node.js v20+**
```bash
npm i ws3-fca@latest
```
## ๐ Getting Started
### 1. Generate `appstate.json`
This file contains your Facebook session cookies.
Use a browser extension (e.g. "C3C FbState", "CookieEditor") to export cookies after logging in, and save them in this format:
```json
[
{
"key": "c_user",
"value": "your-id"
}
]
```
If you don't know how to get cookie, you can follow this tutorial **[here](https://appstate-tutorial-ws3.pages.dev)**.
Place this file in the root directory as `appstate.json`.
### 2. Basic Usage Example
```js
const fs = require("fs");
const path = require("path");
const { login } = require("ws3-fca");
let credentials;
try {
credentials = { appState: JSON.parse(fs.readFileSync("appstate.json", "utf8")) };
} catch (err) {
console.error("โ appstate.json is missing or malformed.", err);
process.exit(1);
}
console.log("Logging in...");
login(credentials, {
online: true,
updatePresence: true,
selfListen: false,
randomUserAgent: false
}, async (err, api) => {
if (err) return console.error("LOGIN ERROR:", err);
console.log(`โ
Logged in as: ${api.getCurrentUserID()}`);
const commandsDir = path.join(__dirname, "modules", "commands");
const commands = new Map();
if (!fs.existsSync(commandsDir)) fs.mkdirSync(commandsDir, { recursive: true });
for (const file of fs.readdirSync(commandsDir).filter(f => f.endsWith(".js"))) {
const command = require(path.join(commandsDir, file));
if (command.name && typeof command.execute === "function") {
commands.set(command.name, command);
console.log(`๐ง Loaded command: ${command.name}`);
}
}
api.listenMqtt(async (err, event) => {
if (err || !event.body || event.type !== "message") return;
const prefix = "/";
if (!event.body.startsWith(prefix)) return;
const args = event.body.slice(prefix.length).trim().split(/ +/);
const commandName = args.shift().toLowerCase();
const command = commands.get(commandName);
if (!command) return;
try {
await command.execute({ api, event, args });
} catch (error) {
console.error(`Error executing ${commandName}:`, error);
api.sendMessageMqtt("โ An error occurred while executing the command.", event.threadID, event.messageID);
}
});
});
```
## ๐ Credits
* ๐ง **@NethWs3Dev (Kenneth Aceberos)** โ Main developer, equal maintainer, feature and patch contributions.
* ๐ง **@ChoruOfficial** โ Lead developer, refactor of original FCA code, Fully Setup Mqtt.
* ๐ฎ **@CommunityExocore** โ Foundational core design and architecture.
> Copyright (c) 2015
> Avery, Benjamin, David, Maude
## ๐ License
**MIT** โ Free to use, modify, and distribute. Attribution appreciated.