UNPKG

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
# ๐Ÿš˜ ws3-fca ![Image](wiegine.png) ๐Ÿ’ **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.