sagor-fca 0.0.13 → 0.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +244 -0
- package/index.js +550 -6
- package/package.json +24 -58
- package/src/OldMessage.js +357 -0
- package/src/{api/action/addExternalModule.js → addExternalModule.js} +8 -8
- package/src/addUserToGroup.js +115 -0
- package/src/changeAdminStatus.js +103 -0
- package/src/changeArchivedStatus.js +55 -0
- package/src/{api/action/changeAvatar.js → changeAvatar.js} +33 -34
- package/src/changeAvatarV2.js +86 -0
- package/src/changeAvt.js +85 -0
- package/src/{api/action/changeBio.js → changeBio.js} +21 -20
- package/src/{api/messaging/changeBlockedStatus.js → changeBlockedStatus.js} +15 -14
- package/src/changeBlockedStatusMqtt.js +80 -0
- package/src/changeCover.js +72 -0
- package/src/changeGroupImage.js +135 -0
- package/src/changeName.js +79 -0
- package/src/changeNickname.js +59 -0
- package/src/changeThreadColor.js +65 -0
- package/src/changeThreadEmoji.js +55 -0
- package/src/changeUsername.js +59 -0
- package/src/createCommentPost.js +230 -0
- package/src/{api/messaging/createNewGroup.js → createNewGroup.js} +25 -25
- package/src/createPoll.js +71 -0
- package/src/createPost.js +276 -0
- package/src/deleteMessage.js +56 -0
- package/src/{api/messaging/deleteThread.js → deleteThread.js} +15 -15
- package/src/editMessage.js +68 -0
- package/src/editMessageOld.js +67 -0
- package/src/follow.js +74 -0
- package/src/forwardAttachment.js +60 -0
- package/src/friendList.js +103 -0
- package/src/getAccess.js +112 -0
- package/src/getAvatarUser.js +78 -0
- package/src/{api/action/getCurrentUserID.js → getCurrentUserID.js} +1 -1
- package/src/{api/messaging/getEmojiUrl.js → getEmojiUrl.js} +2 -2
- package/src/{api/messaging/getFriendsList.js → getFriendsList.js} +18 -17
- package/src/{api/messaging/getMessage.js → getMessage.js} +179 -161
- package/src/getRegion.js +7 -0
- package/src/{api/threads/getThreadHistory.js → getThreadHistory.js} +131 -115
- package/src/getThreadHistoryDeprecated.js +71 -0
- package/src/getThreadInfo.js +232 -0
- package/src/getThreadInfoDeprecated.js +56 -0
- package/src/getThreadList.js +213 -0
- package/src/getThreadListDeprecated.js +46 -0
- package/src/getThreadPictures.js +59 -0
- package/src/getThreadTheme.js +82 -0
- package/src/getUID.js +119 -0
- package/src/{api/users/getUserID.js → getUserID.js} +18 -22
- package/src/getUserInfo.js +66 -0
- package/src/handleFriendRequest.js +46 -0
- package/src/handleMessageRequest.js +47 -0
- package/src/httpGet.js +49 -0
- package/src/httpPost.js +48 -0
- package/src/listenMqtt.js +763 -0
- package/src/{api/action/logout.js → logout.js} +24 -25
- package/src/markAsDelivered.js +47 -0
- package/src/markAsRead.js +70 -0
- package/src/markAsReadAll.js +40 -0
- package/src/markAsSeen.js +48 -0
- package/src/metaTheme.js +190 -0
- package/src/muteThread.js +45 -0
- package/src/note.js +228 -0
- package/src/refreshFb_dtsg.js +89 -0
- package/src/removeSuspiciousAccount.js +79 -0
- package/src/removeUserFromGroup.js +79 -0
- package/src/{api/messaging/resolvePhotoUrl.js → resolvePhotoUrl.js} +14 -12
- package/src/{api/messaging/searchForThread.js → searchForThread.js} +12 -12
- package/src/searchFriends.js +139 -0
- package/src/searchStickers.js +53 -0
- package/src/sendFriendRequest.js +113 -0
- package/src/sendMessage.js +258 -0
- package/src/sendMessageMqtt.js +322 -0
- package/src/sendTypingIndicator.js +45 -0
- package/src/setActiveStatus.js +93 -0
- package/src/setMessageReaction.js +122 -0
- package/src/setMessageReactionMqtt.js +62 -0
- package/src/{api/action/setPostReaction.js → setPostReaction.js} +30 -24
- package/src/setProfileLock.js +98 -0
- package/src/setStoryReaction.js +134 -0
- package/src/setStorySeen.js +109 -0
- package/src/setThreadTheme.js +103 -0
- package/src/setTitle.js +90 -0
- package/src/shareContact.js +110 -0
- package/src/shareLink.js +59 -0
- package/src/stopListenMqtt.js +23 -0
- package/src/storyManager.js +358 -0
- package/src/suggestFriend.js +108 -0
- package/src/{api/messaging/threadColors.js → threadColors.js} +5 -2
- package/src/{api/action/unfriend.js → unfriend.js} +13 -15
- package/src/unsendMessage.js +45 -0
- package/src/uploadAttachment.js +93 -0
- package/utils.js +2962 -0
- package/func/checkUpdate.js +0 -222
- package/func/logAdapter.js +0 -33
- package/func/logger.js +0 -48
- package/index.d.ts +0 -751
- package/module/config.js +0 -40
- package/module/login.js +0 -133
- package/module/loginHelper.js +0 -1296
- package/module/options.js +0 -44
- package/src/api/action/enableAutoSaveAppState.js +0 -73
- package/src/api/action/handleFriendRequest.js +0 -57
- package/src/api/action/refreshFb_dtsg.js +0 -48
- package/src/api/http/httpGet.js +0 -46
- package/src/api/http/httpPost.js +0 -52
- package/src/api/http/postFormData.js +0 -47
- package/src/api/messaging/addUserToGroup.js +0 -68
- package/src/api/messaging/changeAdminStatus.js +0 -126
- package/src/api/messaging/changeArchivedStatus.js +0 -55
- package/src/api/messaging/changeGroupImage.js +0 -91
- package/src/api/messaging/changeNickname.js +0 -70
- package/src/api/messaging/changeThreadColor.js +0 -79
- package/src/api/messaging/changeThreadEmoji.js +0 -111
- package/src/api/messaging/createPoll.js +0 -46
- package/src/api/messaging/createThemeAI.js +0 -98
- package/src/api/messaging/deleteMessage.js +0 -136
- package/src/api/messaging/editMessage.js +0 -68
- package/src/api/messaging/forwardAttachment.js +0 -57
- package/src/api/messaging/getThemePictures.js +0 -62
- package/src/api/messaging/handleMessageRequest.js +0 -65
- package/src/api/messaging/markAsDelivered.js +0 -57
- package/src/api/messaging/markAsRead.js +0 -88
- package/src/api/messaging/markAsReadAll.js +0 -49
- package/src/api/messaging/markAsSeen.js +0 -61
- package/src/api/messaging/muteThread.js +0 -50
- package/src/api/messaging/removeUserFromGroup.js +0 -62
- package/src/api/messaging/scheduler.js +0 -264
- package/src/api/messaging/sendMessage.js +0 -270
- package/src/api/messaging/sendTypingIndicator.js +0 -74
- package/src/api/messaging/setMessageReaction.js +0 -90
- package/src/api/messaging/setTitle.js +0 -124
- package/src/api/messaging/shareContact.js +0 -49
- package/src/api/messaging/unsendMessage.js +0 -81
- package/src/api/messaging/uploadAttachment.js +0 -492
- package/src/api/socket/core/connectMqtt.js +0 -258
- package/src/api/socket/core/emitAuth.js +0 -103
- package/src/api/socket/core/getSeqID.js +0 -320
- package/src/api/socket/core/getTaskResponseData.js +0 -25
- package/src/api/socket/core/parseDelta.js +0 -377
- package/src/api/socket/detail/buildStream.js +0 -215
- package/src/api/socket/detail/constants.js +0 -28
- package/src/api/socket/listenMqtt.js +0 -377
- package/src/api/socket/middleware/index.js +0 -216
- package/src/api/threads/getThreadInfo.js +0 -296
- package/src/api/threads/getThreadList.js +0 -293
- package/src/api/threads/getThreadPictures.js +0 -78
- package/src/api/users/getUserInfo.js +0 -402
- package/src/api/users/getUserInfoV2.js +0 -134
- package/src/core/sendReqMqtt.js +0 -96
- package/src/database/helpers.js +0 -53
- package/src/database/models/index.js +0 -88
- package/src/database/models/thread.js +0 -50
- package/src/database/models/user.js +0 -46
- package/src/database/threadData.js +0 -94
- package/src/database/userData.js +0 -98
- package/src/remote/remoteClient.js +0 -123
- package/src/utils/broadcast.js +0 -51
- package/src/utils/client.js +0 -10
- package/src/utils/constants.js +0 -23
- package/src/utils/cookies.js +0 -68
- package/src/utils/format/attachment.js +0 -357
- package/src/utils/format/cookie.js +0 -9
- package/src/utils/format/date.js +0 -50
- package/src/utils/format/decode.js +0 -44
- package/src/utils/format/delta.js +0 -194
- package/src/utils/format/ids.js +0 -64
- package/src/utils/format/index.js +0 -64
- package/src/utils/format/message.js +0 -88
- package/src/utils/format/presence.js +0 -132
- package/src/utils/format/readTyp.js +0 -44
- package/src/utils/format/thread.js +0 -42
- package/src/utils/format/utils.js +0 -141
- package/src/utils/headers.js +0 -115
- package/src/utils/loginParser/autoLogin.js +0 -125
- package/src/utils/loginParser/helpers.js +0 -43
- package/src/utils/loginParser/index.js +0 -10
- package/src/utils/loginParser/parseAndCheckLogin.js +0 -220
- package/src/utils/loginParser/textUtils.js +0 -28
- package/src/utils/request/client.js +0 -26
- package/src/utils/request/config.js +0 -23
- package/src/utils/request/defaults.js +0 -46
- package/src/utils/request/helpers.js +0 -46
- package/src/utils/request/index.js +0 -17
- package/src/utils/request/methods.js +0 -163
- package/src/utils/request/proxy.js +0 -21
- package/src/utils/request/retry.js +0 -77
- package/src/utils/request/sanitize.js +0 -49
package/README.md
ADDED
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
# 🚀 SAGOR-FCA: Unofficial Facebook Chat API
|
|
2
|
+
|
|
3
|
+
  
|
|
4
|
+
|
|
5
|
+
**A lightweight, fast, and unofficial API to interact with Facebook Chat programmatically — ideal for building bots, automation systems, and custom messaging tools.**
|
|
6
|
+
|
|
7
|
+
**This project is customized and enhanced for improved performance and stability.**
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
# 🌟 What's New in SAGOR-FCA
|
|
12
|
+
|
|
13
|
+
- ✨ Enhanced MQTT connection logging
|
|
14
|
+
- 🔄 Auto-reconnect with configurable intervals
|
|
15
|
+
- 📊 Better connection status indicators
|
|
16
|
+
- 🎨 Improved console output with colors
|
|
17
|
+
- 🔐 Enhanced security and stability
|
|
18
|
+
- 🚀 Automatic update checking and installation
|
|
19
|
+
- 💡 Better error handling and debugging
|
|
20
|
+
|
|
21
|
+
## 📦 Installation
|
|
22
|
+
```bash
|
|
23
|
+
npm install sagor-fca@latest
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Or
|
|
27
|
+
```bash
|
|
28
|
+
npm install sagor-fca
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## 🚀 Basic Usage
|
|
32
|
+
|
|
33
|
+
### 1. Login and Simple Echo Bot
|
|
34
|
+
|
|
35
|
+
```javascript
|
|
36
|
+
const login = require("sagor-fca");
|
|
37
|
+
|
|
38
|
+
login({ appState: [] }, (err, api) => {
|
|
39
|
+
if (err) return console.error(err);
|
|
40
|
+
|
|
41
|
+
api.listenMqtt((err, event) => {
|
|
42
|
+
if (err) return console.error(err);
|
|
43
|
+
|
|
44
|
+
// Echo back the received message
|
|
45
|
+
api.sendMessage(event.body, event.threadID);
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### 2. Send Text Message
|
|
51
|
+
|
|
52
|
+
```javascript
|
|
53
|
+
const login = require("sagor-fca");
|
|
54
|
+
|
|
55
|
+
login({ appState: [] }, (err, api) => {
|
|
56
|
+
if (err) {
|
|
57
|
+
console.error("Login Error:", err);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
let yourID = "000000000000000"; // Replace with actual Facebook ID
|
|
62
|
+
let msg = "Hey!";
|
|
63
|
+
|
|
64
|
+
api.sendMessage(msg, yourID, err => {
|
|
65
|
+
if (err) console.error("Message Sending Error:", err);
|
|
66
|
+
else console.log("Message sent successfully!");
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
**Tip:** To find your Facebook ID, look inside the cookies under the name `c_user`
|
|
72
|
+
|
|
73
|
+
### 3. Send File/Image
|
|
74
|
+
|
|
75
|
+
```javascript
|
|
76
|
+
const login = require("sagor-fca");
|
|
77
|
+
const fs = require("fs");
|
|
78
|
+
|
|
79
|
+
login({ appState: [] }, (err, api) => {
|
|
80
|
+
if (err) {
|
|
81
|
+
console.error("Login Error:", err);
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
let yourID = "000000000000000";
|
|
86
|
+
let imagePath = __dirname + "/image.jpg";
|
|
87
|
+
|
|
88
|
+
// Check if file exists
|
|
89
|
+
if (!fs.existsSync(imagePath)) {
|
|
90
|
+
console.error("Error: Image file not found!");
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
let msg = {
|
|
95
|
+
body: "Hey!",
|
|
96
|
+
attachment: fs.createReadStream(imagePath)
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
api.sendMessage(msg, yourID, err => {
|
|
100
|
+
if (err) console.error("Message Sending Error:", err);
|
|
101
|
+
else console.log("Message sent successfully!");
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## 📝 Message Types
|
|
107
|
+
|
|
108
|
+
| Type | Usage |
|
|
109
|
+
| ---------------------- | ----------------------------------------------------------------- |
|
|
110
|
+
| **Regular text** | `{ body: "message text" }` |
|
|
111
|
+
| **Sticker** | `{ sticker: "sticker_id" }` |
|
|
112
|
+
| **File/Image** | `{ attachment: fs.createReadStream(path) }` or array of streams |
|
|
113
|
+
| **URL** | `{ url: "https://example.com" }` |
|
|
114
|
+
| **Large emoji** | `{ emoji: "👍", emojiSize: "large" }` (small/medium/large) |
|
|
115
|
+
|
|
116
|
+
**Note:** A message can only be a regular message (which can be empty) and optionally **one of the following**: a sticker, an attachment, or a URL.
|
|
117
|
+
|
|
118
|
+
## 💾 Saving AppState to Avoid Re-login
|
|
119
|
+
|
|
120
|
+
### Save AppState
|
|
121
|
+
|
|
122
|
+
```javascript
|
|
123
|
+
const fs = require("fs");
|
|
124
|
+
const login = require("sagor-fca");
|
|
125
|
+
|
|
126
|
+
const credentials = { appState: [] };
|
|
127
|
+
|
|
128
|
+
login(credentials, (err, api) => {
|
|
129
|
+
if (err) {
|
|
130
|
+
console.error("Login Error:", err);
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
try {
|
|
135
|
+
const appState = JSON.stringify(api.getAppState(), null, 2);
|
|
136
|
+
fs.writeFileSync("appstate.json", appState);
|
|
137
|
+
console.log("✅ AppState saved successfully!");
|
|
138
|
+
} catch (error) {
|
|
139
|
+
console.error("Error saving AppState:", error);
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
### Use Saved AppState
|
|
145
|
+
|
|
146
|
+
```javascript
|
|
147
|
+
const fs = require("fs");
|
|
148
|
+
const login = require("sagor-fca");
|
|
149
|
+
|
|
150
|
+
login(
|
|
151
|
+
{ appState: JSON.parse(fs.readFileSync("appstate.json", "utf8")) },
|
|
152
|
+
(err, api) => {
|
|
153
|
+
if (err) {
|
|
154
|
+
console.error("Login Error:", err);
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
console.log("✅ Logged in successfully!");
|
|
159
|
+
// Your code here
|
|
160
|
+
}
|
|
161
|
+
);
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
**Alternative:** Use [c3c-fbstate](https://github.com/c3cbot/c3c-fbstate) to get fbstate.json
|
|
165
|
+
|
|
166
|
+
## 👂 Listening for Messages
|
|
167
|
+
|
|
168
|
+
### Echo Bot with Stop Command
|
|
169
|
+
|
|
170
|
+
```javascript
|
|
171
|
+
const fs = require("fs");
|
|
172
|
+
const login = require("sagor-fca");
|
|
173
|
+
|
|
174
|
+
login(
|
|
175
|
+
{ appState: JSON.parse(fs.readFileSync("appstate.json", "utf8")) },
|
|
176
|
+
(err, api) => {
|
|
177
|
+
if (err) {
|
|
178
|
+
console.error("Login Error:", err);
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
// Enable listening to events (join/leave, title change, etc.)
|
|
183
|
+
api.setOptions({ listenEvents: true });
|
|
184
|
+
|
|
185
|
+
const stopListening = api.listenMqtt((err, event) => {
|
|
186
|
+
if (err) {
|
|
187
|
+
console.error("Listen Error:", err);
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
// Mark as read
|
|
192
|
+
api.markAsRead(event.threadID, err => {
|
|
193
|
+
if (err) console.error("Mark as read error:", err);
|
|
194
|
+
});
|
|
195
|
+
|
|
196
|
+
// Handle different event types
|
|
197
|
+
switch (event.type) {
|
|
198
|
+
case "message":
|
|
199
|
+
if (event.body && event.body.trim().toLowerCase() === "/stop") {
|
|
200
|
+
api.sendMessage("Goodbye…", event.threadID);
|
|
201
|
+
stopListening();
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
api.sendMessage(`TEST BOT: ${event.body}`, event.threadID);
|
|
205
|
+
break;
|
|
206
|
+
|
|
207
|
+
case "event":
|
|
208
|
+
console.log("Event Received:", event);
|
|
209
|
+
break;
|
|
210
|
+
}
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
);
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
### Listen Options
|
|
217
|
+
|
|
218
|
+
```javascript
|
|
219
|
+
api.setOptions({
|
|
220
|
+
listenEvents: true, // Receive events (join/leave, rename, etc.)
|
|
221
|
+
selfListen: true, // Receive messages from yourself
|
|
222
|
+
logLevel: "silent" // Disable logs (silent/error/warn/info/verbose)
|
|
223
|
+
});
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
**By default:**
|
|
227
|
+
|
|
228
|
+
- `listenEvents` is `false` - won't receive events like joining/leaving chat, title changes
|
|
229
|
+
- `selfListen` is `false` - will ignore messages sent by the current account
|
|
230
|
+
|
|
231
|
+
### ⚠️ Disclaime
|
|
232
|
+
> Note: This is an unofficial Facebook API.
|
|
233
|
+
Use at your own risk.
|
|
234
|
+
This project is not affiliated with or endorsed by Meta / Facebook in any way.
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
🚀 **DEVELOPMENT APPROACH**
|
|
240
|
+
- 💻 **Copy-paste techniques with customizations**
|
|
241
|
+
- 🤝 **Collaborative development with friends**
|
|
242
|
+
- 🤖 **AI-powered using ChatGPT and other advanced tools**
|
|
243
|
+
|
|
244
|
+
## Thanks for using FCA
|