aminul-new-fca
v1.0.30
Published
A modern Facebook Chat API fork | Made & Maintained by Aminul Sardar - Enhanced with rate limiting, batch messaging, and utility functions
Maintainers
Readme
Aminul FCA - Facebook Chat API Library
Overview
A modern Facebook Chat API fork for Node.js applications. This library provides a comprehensive set of functions to interact with Facebook Messenger programmatically.
Version: 1.0.29
Author: Aminul Sardar
Project Structure
/
├── index.js # Mainn entry point with login, rate limiting, connection monitoring
├── utils.js # Utility functions (HTTP, parsing, validation, helpers)
├── package.json # Dependencies and project metadata
├── test.js # Library validation tests
├── src/ # API function modules
│ ├── sendMessage.js
│ ├── sendBatchMessages.js # NEW: Send multiple messages with delays
│ ├── scheduleMessage.js # NEW: Schedule messages for later
│ ├── forwardMessage.js # NEW: Forward messages to threads
│ ├── getThreadInfo.js
│ ├── getThreadMembers.js # NEW: Get detailed member info
│ ├── getThreadParticipants.js # NEW: Get thread participants
│ ├── getThreadHistory.js
│ ├── getRecentMessages.js # NEW: Get recent messages
│ ├── getUnreadThreads.js # NEW: Get unread threads
│ ├── getOnlineUsers.js # NEW: Get online friends
│ ├── getMutualFriends.js # NEW: Get mutual friends
│ ├── searchMessages.js # NEW: Search message history
│ ├── setTypingStatus.js # NEW: Set typing indicator
│ ├── listenMqtt.js
│ └── ... (60+ API modules)
└── src/data/ # Static data filesRecent Changes (v1.0.29)
index.js Enhancements
- Added Rate Limiter - Prevents API abuse with configurable request limits
- Added Connection Monitor - Tracks connection health and activity
- Added Event Emitter - Emit events for login, shutdown, errors
- Added Graceful Shutdown - Clean disconnection helper
- Added utility exports via
login.utils
utils.js New Functions
retryWithBackoff()- Retry failed operations with exponential backoffisValidThreadID()/isValidUserID()- ID validationsanitizeMessageBody()- Clean message contentparseTimeString()- Parse "5m", "1h" to millisecondsdeepClone()- Deep object cloningdebounce()/throttle()- Rate limiting helpersgenerateRandomString()- Random string generatorformatFileSize()/formatDuration()- Formatting helpersparseMentions()- Extract mentions from messagessleep()- Async delay utilitychunkArray()/uniqueArray()- Array utilitiessafeJSONParse()- Safe JSON parsing with default
New src/ Modules
sendBatchMessages.js- Send multiple messages with configurable delaysscheduleMessage.js- Schedule, cancel, and list scheduled messagesforwardMessage.js- Forward messages to one or more threadsgetThreadMembers.js- Get detailed member informationgetThreadParticipants.js- Get participant profilesgetRecentMessages.js- Get recent message historygetUnreadThreads.js- List unread conversation threadsgetOnlineUsers.js- Get currently online friendsgetMutualFriends.js- Get mutual friends with a usersearchMessages.js- Search message contentsetTypingStatus.js- Control typing indicator
Usage Example
const login = require('aminul-new-fca');
const appState = require('./appstate.json');
login({ appState }, (err, api) => {
if (err) return console.error(err);
// Send a message
api.sendMessage("Hello!", "threadID");
// Send batch messages
api.sendBatchMessages([
{ threadID: "123", body: "Message 1" },
{ threadID: "456", body: "Message 2" }
], { delay: 2000 });
// Schedule a message
api.scheduleMessage.schedule("Reminder!", "threadID", "1h");
// Listen for messages
api.listenMqtt((err, event) => {
if (event.type === "message") {
console.log(event.body);
}
});
});
// Use utility functions
await login.utils.waitForRateLimit();
const health = login.utils.getConnectionHealth();Key Dependencies
axios- HTTP clientmqtt- MQTT client for real-time messagingrequest- HTTP requestsnode-cron- Scheduled taskswebsocket-stream- WebSocket supportcheerio- HTML parsing
Running Tests
node test.jsNotes
- This is a library meant to be imported by other Node.js projects
- Requires a valid Facebook appstate for authentication
- Rate limiting is built-in to prevent API abuse
- Connection health monitoring available via
login.utils.getConnectionHealth()
