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.
Files changed (188) hide show
  1. package/README.md +244 -0
  2. package/index.js +550 -6
  3. package/package.json +24 -58
  4. package/src/OldMessage.js +357 -0
  5. package/src/{api/action/addExternalModule.js → addExternalModule.js} +8 -8
  6. package/src/addUserToGroup.js +115 -0
  7. package/src/changeAdminStatus.js +103 -0
  8. package/src/changeArchivedStatus.js +55 -0
  9. package/src/{api/action/changeAvatar.js → changeAvatar.js} +33 -34
  10. package/src/changeAvatarV2.js +86 -0
  11. package/src/changeAvt.js +85 -0
  12. package/src/{api/action/changeBio.js → changeBio.js} +21 -20
  13. package/src/{api/messaging/changeBlockedStatus.js → changeBlockedStatus.js} +15 -14
  14. package/src/changeBlockedStatusMqtt.js +80 -0
  15. package/src/changeCover.js +72 -0
  16. package/src/changeGroupImage.js +135 -0
  17. package/src/changeName.js +79 -0
  18. package/src/changeNickname.js +59 -0
  19. package/src/changeThreadColor.js +65 -0
  20. package/src/changeThreadEmoji.js +55 -0
  21. package/src/changeUsername.js +59 -0
  22. package/src/createCommentPost.js +230 -0
  23. package/src/{api/messaging/createNewGroup.js → createNewGroup.js} +25 -25
  24. package/src/createPoll.js +71 -0
  25. package/src/createPost.js +276 -0
  26. package/src/deleteMessage.js +56 -0
  27. package/src/{api/messaging/deleteThread.js → deleteThread.js} +15 -15
  28. package/src/editMessage.js +68 -0
  29. package/src/editMessageOld.js +67 -0
  30. package/src/follow.js +74 -0
  31. package/src/forwardAttachment.js +60 -0
  32. package/src/friendList.js +103 -0
  33. package/src/getAccess.js +112 -0
  34. package/src/getAvatarUser.js +78 -0
  35. package/src/{api/action/getCurrentUserID.js → getCurrentUserID.js} +1 -1
  36. package/src/{api/messaging/getEmojiUrl.js → getEmojiUrl.js} +2 -2
  37. package/src/{api/messaging/getFriendsList.js → getFriendsList.js} +18 -17
  38. package/src/{api/messaging/getMessage.js → getMessage.js} +179 -161
  39. package/src/getRegion.js +7 -0
  40. package/src/{api/threads/getThreadHistory.js → getThreadHistory.js} +131 -115
  41. package/src/getThreadHistoryDeprecated.js +71 -0
  42. package/src/getThreadInfo.js +232 -0
  43. package/src/getThreadInfoDeprecated.js +56 -0
  44. package/src/getThreadList.js +213 -0
  45. package/src/getThreadListDeprecated.js +46 -0
  46. package/src/getThreadPictures.js +59 -0
  47. package/src/getThreadTheme.js +82 -0
  48. package/src/getUID.js +119 -0
  49. package/src/{api/users/getUserID.js → getUserID.js} +18 -22
  50. package/src/getUserInfo.js +66 -0
  51. package/src/handleFriendRequest.js +46 -0
  52. package/src/handleMessageRequest.js +47 -0
  53. package/src/httpGet.js +49 -0
  54. package/src/httpPost.js +48 -0
  55. package/src/listenMqtt.js +763 -0
  56. package/src/{api/action/logout.js → logout.js} +24 -25
  57. package/src/markAsDelivered.js +47 -0
  58. package/src/markAsRead.js +70 -0
  59. package/src/markAsReadAll.js +40 -0
  60. package/src/markAsSeen.js +48 -0
  61. package/src/metaTheme.js +190 -0
  62. package/src/muteThread.js +45 -0
  63. package/src/note.js +228 -0
  64. package/src/refreshFb_dtsg.js +89 -0
  65. package/src/removeSuspiciousAccount.js +79 -0
  66. package/src/removeUserFromGroup.js +79 -0
  67. package/src/{api/messaging/resolvePhotoUrl.js → resolvePhotoUrl.js} +14 -12
  68. package/src/{api/messaging/searchForThread.js → searchForThread.js} +12 -12
  69. package/src/searchFriends.js +139 -0
  70. package/src/searchStickers.js +53 -0
  71. package/src/sendFriendRequest.js +113 -0
  72. package/src/sendMessage.js +258 -0
  73. package/src/sendMessageMqtt.js +322 -0
  74. package/src/sendTypingIndicator.js +45 -0
  75. package/src/setActiveStatus.js +93 -0
  76. package/src/setMessageReaction.js +122 -0
  77. package/src/setMessageReactionMqtt.js +62 -0
  78. package/src/{api/action/setPostReaction.js → setPostReaction.js} +30 -24
  79. package/src/setProfileLock.js +98 -0
  80. package/src/setStoryReaction.js +134 -0
  81. package/src/setStorySeen.js +109 -0
  82. package/src/setThreadTheme.js +103 -0
  83. package/src/setTitle.js +90 -0
  84. package/src/shareContact.js +110 -0
  85. package/src/shareLink.js +59 -0
  86. package/src/stopListenMqtt.js +23 -0
  87. package/src/storyManager.js +358 -0
  88. package/src/suggestFriend.js +108 -0
  89. package/src/{api/messaging/threadColors.js → threadColors.js} +5 -2
  90. package/src/{api/action/unfriend.js → unfriend.js} +13 -15
  91. package/src/unsendMessage.js +45 -0
  92. package/src/uploadAttachment.js +93 -0
  93. package/utils.js +2962 -0
  94. package/func/checkUpdate.js +0 -222
  95. package/func/logAdapter.js +0 -33
  96. package/func/logger.js +0 -48
  97. package/index.d.ts +0 -751
  98. package/module/config.js +0 -40
  99. package/module/login.js +0 -133
  100. package/module/loginHelper.js +0 -1296
  101. package/module/options.js +0 -44
  102. package/src/api/action/enableAutoSaveAppState.js +0 -73
  103. package/src/api/action/handleFriendRequest.js +0 -57
  104. package/src/api/action/refreshFb_dtsg.js +0 -48
  105. package/src/api/http/httpGet.js +0 -46
  106. package/src/api/http/httpPost.js +0 -52
  107. package/src/api/http/postFormData.js +0 -47
  108. package/src/api/messaging/addUserToGroup.js +0 -68
  109. package/src/api/messaging/changeAdminStatus.js +0 -126
  110. package/src/api/messaging/changeArchivedStatus.js +0 -55
  111. package/src/api/messaging/changeGroupImage.js +0 -91
  112. package/src/api/messaging/changeNickname.js +0 -70
  113. package/src/api/messaging/changeThreadColor.js +0 -79
  114. package/src/api/messaging/changeThreadEmoji.js +0 -111
  115. package/src/api/messaging/createPoll.js +0 -46
  116. package/src/api/messaging/createThemeAI.js +0 -98
  117. package/src/api/messaging/deleteMessage.js +0 -136
  118. package/src/api/messaging/editMessage.js +0 -68
  119. package/src/api/messaging/forwardAttachment.js +0 -57
  120. package/src/api/messaging/getThemePictures.js +0 -62
  121. package/src/api/messaging/handleMessageRequest.js +0 -65
  122. package/src/api/messaging/markAsDelivered.js +0 -57
  123. package/src/api/messaging/markAsRead.js +0 -88
  124. package/src/api/messaging/markAsReadAll.js +0 -49
  125. package/src/api/messaging/markAsSeen.js +0 -61
  126. package/src/api/messaging/muteThread.js +0 -50
  127. package/src/api/messaging/removeUserFromGroup.js +0 -62
  128. package/src/api/messaging/scheduler.js +0 -264
  129. package/src/api/messaging/sendMessage.js +0 -270
  130. package/src/api/messaging/sendTypingIndicator.js +0 -74
  131. package/src/api/messaging/setMessageReaction.js +0 -90
  132. package/src/api/messaging/setTitle.js +0 -124
  133. package/src/api/messaging/shareContact.js +0 -49
  134. package/src/api/messaging/unsendMessage.js +0 -81
  135. package/src/api/messaging/uploadAttachment.js +0 -492
  136. package/src/api/socket/core/connectMqtt.js +0 -258
  137. package/src/api/socket/core/emitAuth.js +0 -103
  138. package/src/api/socket/core/getSeqID.js +0 -320
  139. package/src/api/socket/core/getTaskResponseData.js +0 -25
  140. package/src/api/socket/core/parseDelta.js +0 -377
  141. package/src/api/socket/detail/buildStream.js +0 -215
  142. package/src/api/socket/detail/constants.js +0 -28
  143. package/src/api/socket/listenMqtt.js +0 -377
  144. package/src/api/socket/middleware/index.js +0 -216
  145. package/src/api/threads/getThreadInfo.js +0 -296
  146. package/src/api/threads/getThreadList.js +0 -293
  147. package/src/api/threads/getThreadPictures.js +0 -78
  148. package/src/api/users/getUserInfo.js +0 -402
  149. package/src/api/users/getUserInfoV2.js +0 -134
  150. package/src/core/sendReqMqtt.js +0 -96
  151. package/src/database/helpers.js +0 -53
  152. package/src/database/models/index.js +0 -88
  153. package/src/database/models/thread.js +0 -50
  154. package/src/database/models/user.js +0 -46
  155. package/src/database/threadData.js +0 -94
  156. package/src/database/userData.js +0 -98
  157. package/src/remote/remoteClient.js +0 -123
  158. package/src/utils/broadcast.js +0 -51
  159. package/src/utils/client.js +0 -10
  160. package/src/utils/constants.js +0 -23
  161. package/src/utils/cookies.js +0 -68
  162. package/src/utils/format/attachment.js +0 -357
  163. package/src/utils/format/cookie.js +0 -9
  164. package/src/utils/format/date.js +0 -50
  165. package/src/utils/format/decode.js +0 -44
  166. package/src/utils/format/delta.js +0 -194
  167. package/src/utils/format/ids.js +0 -64
  168. package/src/utils/format/index.js +0 -64
  169. package/src/utils/format/message.js +0 -88
  170. package/src/utils/format/presence.js +0 -132
  171. package/src/utils/format/readTyp.js +0 -44
  172. package/src/utils/format/thread.js +0 -42
  173. package/src/utils/format/utils.js +0 -141
  174. package/src/utils/headers.js +0 -115
  175. package/src/utils/loginParser/autoLogin.js +0 -125
  176. package/src/utils/loginParser/helpers.js +0 -43
  177. package/src/utils/loginParser/index.js +0 -10
  178. package/src/utils/loginParser/parseAndCheckLogin.js +0 -220
  179. package/src/utils/loginParser/textUtils.js +0 -28
  180. package/src/utils/request/client.js +0 -26
  181. package/src/utils/request/config.js +0 -23
  182. package/src/utils/request/defaults.js +0 -46
  183. package/src/utils/request/helpers.js +0 -46
  184. package/src/utils/request/index.js +0 -17
  185. package/src/utils/request/methods.js +0 -163
  186. package/src/utils/request/proxy.js +0 -21
  187. package/src/utils/request/retry.js +0 -77
  188. 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
+ ![npm](https://img.shields.io/npm/v/sagor-fca) ![License](https://img.shields.io/badge/License-MIT-green) ![GitHub issues](https://img.shields.io/github/issues/SAGOR-KINGx/sagor-fca)
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