fca-priyansh 19.0.1 → 20.0.0
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/.gitlab-ci.yml +22 -0
- package/CountTime.json +1 -0
- package/Extra/Balancer.js +49 -49
- package/Extra/BroadcastSystem.js +1 -0
- package/Extra/Bypass/956/index.js +233 -233
- package/Extra/Bypass/test/aaaa.json +169 -169
- package/Extra/Bypass/test/index.js +187 -187
- package/Extra/Database/index.js +468 -468
- package/Extra/ExtraAddons.js +82 -82
- package/Extra/ExtraFindUID.js +61 -61
- package/Extra/ExtraGetThread.js +365 -365
- package/Extra/ExtraScreenShot.js +430 -430
- package/Extra/ExtraUptimeRobot.js +142 -38
- package/Extra/Html/Classic/script.js +118 -118
- package/Extra/Html/Classic/style.css +7 -7
- package/Extra/Security/Base/Step_1.js +5 -5
- package/Extra/Security/Base/Step_2.js +22 -22
- package/Extra/Security/Base/Step_3.js +22 -22
- package/Extra/Security/Base/index.js +190 -190
- package/Extra/Security/Index.js +4 -4
- package/Extra/Security/Step_1.js +5 -5
- package/Extra/Security/Step_2.js +22 -22
- package/Extra/Security/Step_3.js +22 -22
- package/Extra/Src/Change_Environment.js +24 -24
- package/Extra/Src/Check_Update.js +66 -66
- package/Extra/Src/History.js +114 -114
- package/Extra/Src/Instant_Update.js +64 -64
- package/Extra/Src/Last-Run.js +64 -64
- package/Extra/Src/Premium.js +81 -81
- package/Extra/Src/Websocket.js +212 -212
- package/Extra/Src/uuid.js +137 -137
- package/Func/AcceptAgreement.js +31 -31
- package/Func/ClearCache.js +64 -64
- package/Func/ReportV1.js +54 -54
- package/LICENSE +21 -21
- package/Language/index.json +228 -228
- package/Main.js +1 -1290
- package/README.md +198 -198
- package/broadcast.js +1 -44
- package/errorHandler.js +151 -0
- package/index.js +1 -448
- package/logger.js +69 -66
- package/package.json +99 -98
- package/src/Dev_Horizon_Data.js +124 -124
- package/src/Dev_getThreadInfoOLD.js +421 -421
- package/src/Dev_shareTest2.js +68 -68
- package/src/Dev_shareTest3.js +71 -71
- package/src/Premium.js +24 -24
- package/src/Screenshot.js +82 -82
- package/src/addExternalModule.js +16 -16
- package/src/addUserToGroup.js +79 -79
- package/src/changeAdminStatus.js +79 -79
- package/src/changeArchivedStatus.js +41 -41
- package/src/changeAvt.js +84 -84
- package/src/changeBio.js +65 -65
- package/src/changeBlockedStatus.js +36 -36
- package/src/changeGroupImage.js +106 -106
- package/src/changeNickname.js +45 -45
- package/src/changeThreadColor.js +62 -62
- package/src/changeThreadEmoji.js +42 -42
- package/src/changeThreadTheme.js +263 -0
- package/src/comment.js +244 -0
- package/src/createNewGroup.js +70 -70
- package/src/createPoll.js +60 -60
- package/src/deleteMessage.js +45 -45
- package/src/deleteThread.js +43 -43
- package/src/editMessage.js +71 -71
- package/src/follow.js +119 -0
- package/src/forwardAttachment.js +48 -48
- package/src/friend.js +383 -0
- package/src/getAccessToken.js +27 -27
- package/src/getCurrentUserID.js +7 -7
- package/src/getEmojiUrl.js +27 -27
- package/src/getFriendsList.js +73 -73
- package/src/getMessage.js +102 -102
- package/src/getPendingFriendRequests.js +45 -0
- package/src/getThreadHistory.js +537 -537
- package/src/getThreadInfo.js +424 -423
- package/src/getThreadInfoOLD.js +421 -421
- package/src/getThreadList.js +213 -213
- package/src/getThreadMain.js +219 -219
- package/src/getThreadPictures.js +59 -59
- package/src/getUID.js +58 -58
- package/src/getUserID.js +62 -62
- package/src/getUserInfo.js +112 -112
- package/src/getUserInfoMain.js +64 -64
- package/src/getUserInfoV2.js +31 -31
- package/src/getUserInfoV3.js +62 -62
- package/src/getUserInfoV4.js +54 -54
- package/src/getUserInfoV5.js +60 -60
- package/src/handleFriendRequest.js +46 -46
- package/src/handleMessageRequest.js +49 -49
- package/src/httpGet.js +49 -49
- package/src/httpPost.js +48 -48
- package/src/httpPostFormData.js +40 -40
- package/src/listenMqtt.js +1 -956
- package/src/listenMqttV1.js +832 -846
- package/src/logout.js +68 -68
- package/src/markAsDelivered.js +48 -48
- package/src/markAsRead.js +70 -70
- package/src/markAsReadAll.js +42 -42
- package/src/markAsSeen.js +51 -51
- package/src/muteThread.js +47 -47
- package/src/notes.js +279 -0
- package/src/removeUserFromGroup.js +49 -49
- package/src/resolvePhotoUrl.js +37 -37
- package/src/searchForThread.js +43 -43
- package/src/sendMention.js +325 -0
- package/src/sendMessage.js +1 -386
- package/src/sendMqttMessage.js +70 -70
- package/src/sendTypingIndicator.js +79 -80
- package/src/setMessageReaction.js +109 -109
- package/src/setPostReaction.js +101 -101
- package/src/setTitle.js +74 -74
- package/src/share.js +98 -0
- package/src/shareContact.js +55 -55
- package/src/shareLink.js +58 -58
- package/src/stickers.js +525 -0
- package/src/story.js +267 -0
- package/src/threadColors.js +38 -38
- package/src/unfriend.js +43 -43
- package/src/unsendMessage.js +47 -47
- package/src/unsendMqttMessage.js +65 -65
- package/test/data/shareAttach.js +146 -146
- package/test/data/test.txt +7 -7
- package/test/example-config.json +18 -18
- package/test/test-page.js +140 -140
- package/test/test.js +385 -385
- package/test/testv2.js +2 -2
- package/userAgentManager.js +129 -0
- package/utils.js +1 -3077
- package/.github/workflows/publish.yml +0 -20
- package/Extra/Src/Release_Memory.js +0 -160
- package/Extra/Src/test.js +0 -28
- package/SECURITY.md +0 -17
package/src/notes.js
ADDED
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var utils = require("../utils");
|
|
4
|
+
var log = require("npmlog");
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Notes API Module
|
|
8
|
+
* For interacting with Facebook Messenger Notes (24-hour status messages)
|
|
9
|
+
* Made by @ChoruOfficial - Ported to fca-updated format
|
|
10
|
+
*
|
|
11
|
+
* Note: This is for temporary status-like notes in Messenger, NOT profile page notes
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
module.exports = function(defaultFuncs, api, ctx) {
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Check for the currently active note
|
|
18
|
+
* @param {function} callback - Optional callback(err, note)
|
|
19
|
+
* @returns {Promise<Object>}
|
|
20
|
+
*/
|
|
21
|
+
function checkNote(callback) {
|
|
22
|
+
var resolveFunc = function() {};
|
|
23
|
+
var rejectFunc = function() {};
|
|
24
|
+
var returnPromise = new Promise(function(resolve, reject) {
|
|
25
|
+
resolveFunc = resolve;
|
|
26
|
+
rejectFunc = reject;
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
if (!callback) {
|
|
30
|
+
callback = function(err, data) {
|
|
31
|
+
if (err) return rejectFunc(err);
|
|
32
|
+
resolveFunc(data);
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
var form = {
|
|
37
|
+
fb_api_caller_class: "RelayModern",
|
|
38
|
+
fb_api_req_friendly_name: "MWInboxTrayNoteCreationDialogQuery",
|
|
39
|
+
variables: JSON.stringify({ scale: 2 }),
|
|
40
|
+
doc_id: "30899655739648624"
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
defaultFuncs
|
|
44
|
+
.post("https://www.facebook.com/api/graphql/", ctx.jar, form)
|
|
45
|
+
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
|
46
|
+
.then(function(resData) {
|
|
47
|
+
if (resData && resData.errors) {
|
|
48
|
+
throw resData.errors[0];
|
|
49
|
+
}
|
|
50
|
+
var currentNote = resData?.data?.viewer?.actor?.msgr_user_rich_status;
|
|
51
|
+
log.info("notes.check", "Current note retrieved");
|
|
52
|
+
callback(null, currentNote);
|
|
53
|
+
})
|
|
54
|
+
.catch(function(err) {
|
|
55
|
+
log.error("notes.check", err);
|
|
56
|
+
callback(err);
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
return returnPromise;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Create a new note (lasts 24 hours)
|
|
64
|
+
* @param {string} text - Note content
|
|
65
|
+
* @param {string} privacy - "EVERYONE" or "FRIENDS" (default: "EVERYONE")
|
|
66
|
+
* @param {function} callback - Optional callback(err, status)
|
|
67
|
+
* @returns {Promise<Object>}
|
|
68
|
+
*/
|
|
69
|
+
function createNote(text, privacy, callback) {
|
|
70
|
+
var resolveFunc = function() {};
|
|
71
|
+
var rejectFunc = function() {};
|
|
72
|
+
var returnPromise = new Promise(function(resolve, reject) {
|
|
73
|
+
resolveFunc = resolve;
|
|
74
|
+
rejectFunc = reject;
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
// Handle optional privacy parameter
|
|
78
|
+
if (typeof privacy === 'function') {
|
|
79
|
+
callback = privacy;
|
|
80
|
+
privacy = "EVERYONE";
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
privacy = privacy || "EVERYONE";
|
|
84
|
+
|
|
85
|
+
if (!callback) {
|
|
86
|
+
callback = function(err, data) {
|
|
87
|
+
if (err) return rejectFunc(err);
|
|
88
|
+
resolveFunc(data);
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
if (!text || typeof text !== 'string') {
|
|
93
|
+
return callback({ error: "Note text is required and must be a string." });
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
var variables = {
|
|
97
|
+
input: {
|
|
98
|
+
client_mutation_id: Math.round(Math.random() * 10).toString(),
|
|
99
|
+
actor_id: ctx.userID,
|
|
100
|
+
description: text,
|
|
101
|
+
duration: 86400, // 24 hours in seconds
|
|
102
|
+
note_type: "TEXT_NOTE",
|
|
103
|
+
privacy: privacy,
|
|
104
|
+
session_id: utils.getGUID()
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
var form = {
|
|
109
|
+
fb_api_caller_class: "RelayModern",
|
|
110
|
+
fb_api_req_friendly_name: "MWInboxTrayNoteCreationDialogCreationStepContentMutation",
|
|
111
|
+
variables: JSON.stringify(variables),
|
|
112
|
+
doc_id: "24060573783603122"
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
defaultFuncs
|
|
116
|
+
.post("https://www.facebook.com/api/graphql/", ctx.jar, form)
|
|
117
|
+
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
|
118
|
+
.then(function(resData) {
|
|
119
|
+
if (resData && resData.errors) {
|
|
120
|
+
throw resData.errors[0];
|
|
121
|
+
}
|
|
122
|
+
var status = resData?.data?.xfb_rich_status_create?.status;
|
|
123
|
+
if (!status) {
|
|
124
|
+
throw new Error("Could not find note status in the server response.");
|
|
125
|
+
}
|
|
126
|
+
log.info("notes.create", "Note created successfully: " + text.substring(0, 30) + "...");
|
|
127
|
+
callback(null, status);
|
|
128
|
+
})
|
|
129
|
+
.catch(function(err) {
|
|
130
|
+
log.error("notes.create", err);
|
|
131
|
+
callback(err);
|
|
132
|
+
});
|
|
133
|
+
|
|
134
|
+
return returnPromise;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Delete a specific note by ID
|
|
139
|
+
* @param {string} noteID - The ID of the note to delete
|
|
140
|
+
* @param {function} callback - Optional callback(err, deletedStatus)
|
|
141
|
+
* @returns {Promise<Object>}
|
|
142
|
+
*/
|
|
143
|
+
function deleteNote(noteID, callback) {
|
|
144
|
+
var resolveFunc = function() {};
|
|
145
|
+
var rejectFunc = function() {};
|
|
146
|
+
var returnPromise = new Promise(function(resolve, reject) {
|
|
147
|
+
resolveFunc = resolve;
|
|
148
|
+
rejectFunc = reject;
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
if (!callback) {
|
|
152
|
+
callback = function(err, data) {
|
|
153
|
+
if (err) return rejectFunc(err);
|
|
154
|
+
resolveFunc(data);
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
if (!noteID) {
|
|
159
|
+
return callback({ error: "Note ID is required." });
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
var variables = {
|
|
163
|
+
input: {
|
|
164
|
+
client_mutation_id: Math.round(Math.random() * 10).toString(),
|
|
165
|
+
actor_id: ctx.userID,
|
|
166
|
+
rich_status_id: noteID
|
|
167
|
+
}
|
|
168
|
+
};
|
|
169
|
+
|
|
170
|
+
var form = {
|
|
171
|
+
fb_api_caller_class: "RelayModern",
|
|
172
|
+
fb_api_req_friendly_name: "useMWInboxTrayDeleteNoteMutation",
|
|
173
|
+
variables: JSON.stringify(variables),
|
|
174
|
+
doc_id: "9532619970198958"
|
|
175
|
+
};
|
|
176
|
+
|
|
177
|
+
defaultFuncs
|
|
178
|
+
.post("https://www.facebook.com/api/graphql/", ctx.jar, form)
|
|
179
|
+
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
|
180
|
+
.then(function(resData) {
|
|
181
|
+
if (resData && resData.errors) {
|
|
182
|
+
throw resData.errors[0];
|
|
183
|
+
}
|
|
184
|
+
var deletedStatus = resData?.data?.xfb_rich_status_delete;
|
|
185
|
+
if (!deletedStatus) {
|
|
186
|
+
throw new Error("Could not find deletion status in the server response.");
|
|
187
|
+
}
|
|
188
|
+
log.info("notes.delete", "Note deleted successfully: " + noteID);
|
|
189
|
+
callback(null, deletedStatus);
|
|
190
|
+
})
|
|
191
|
+
.catch(function(err) {
|
|
192
|
+
log.error("notes.delete", err);
|
|
193
|
+
callback(err);
|
|
194
|
+
});
|
|
195
|
+
|
|
196
|
+
return returnPromise;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
/**
|
|
200
|
+
* Delete old note and create a new one (convenience function)
|
|
201
|
+
* @param {string} oldNoteID - The ID of the note to delete
|
|
202
|
+
* @param {string} newText - Text for the new note
|
|
203
|
+
* @param {string} privacy - "EVERYONE" or "FRIENDS" (optional)
|
|
204
|
+
* @param {function} callback - Optional callback(err, result)
|
|
205
|
+
* @returns {Promise<Object>}
|
|
206
|
+
*/
|
|
207
|
+
function recreateNote(oldNoteID, newText, privacy, callback) {
|
|
208
|
+
var resolveFunc = function() {};
|
|
209
|
+
var rejectFunc = function() {};
|
|
210
|
+
var returnPromise = new Promise(function(resolve, reject) {
|
|
211
|
+
resolveFunc = resolve;
|
|
212
|
+
rejectFunc = reject;
|
|
213
|
+
});
|
|
214
|
+
|
|
215
|
+
// Handle optional privacy parameter
|
|
216
|
+
if (typeof privacy === 'function') {
|
|
217
|
+
callback = privacy;
|
|
218
|
+
privacy = "EVERYONE";
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
privacy = privacy || "EVERYONE";
|
|
222
|
+
|
|
223
|
+
if (!callback) {
|
|
224
|
+
callback = function(err, data) {
|
|
225
|
+
if (err) return rejectFunc(err);
|
|
226
|
+
resolveFunc(data);
|
|
227
|
+
};
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
deleteNote(oldNoteID, function(err, deleted) {
|
|
231
|
+
if (err) {
|
|
232
|
+
return callback(err);
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
createNote(newText, privacy, function(err, created) {
|
|
236
|
+
if (err) {
|
|
237
|
+
return callback(err);
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
log.info("notes.recreate", "Note recreated successfully");
|
|
241
|
+
callback(null, { deleted: deleted, created: created });
|
|
242
|
+
});
|
|
243
|
+
});
|
|
244
|
+
|
|
245
|
+
return returnPromise;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
return {
|
|
249
|
+
/**
|
|
250
|
+
* Create a new Messenger note (24 hours)
|
|
251
|
+
* @param {string} text - Note content
|
|
252
|
+
* @param {string} privacy - "EVERYONE" or "FRIENDS" (optional, default: "EVERYONE")
|
|
253
|
+
* @param {function} callback - Optional callback(err, status)
|
|
254
|
+
*/
|
|
255
|
+
create: createNote,
|
|
256
|
+
|
|
257
|
+
/**
|
|
258
|
+
* Delete a note by ID
|
|
259
|
+
* @param {string} noteID - Note ID to delete
|
|
260
|
+
* @param {function} callback - Optional callback(err, deletedStatus)
|
|
261
|
+
*/
|
|
262
|
+
delete: deleteNote,
|
|
263
|
+
|
|
264
|
+
/**
|
|
265
|
+
* Delete old note and create new one
|
|
266
|
+
* @param {string} oldNoteID - Old note ID to delete
|
|
267
|
+
* @param {string} newText - New note text
|
|
268
|
+
* @param {string} privacy - "EVERYONE" or "FRIENDS" (optional)
|
|
269
|
+
* @param {function} callback - Optional callback(err, result)
|
|
270
|
+
*/
|
|
271
|
+
recreate: recreateNote,
|
|
272
|
+
|
|
273
|
+
/**
|
|
274
|
+
* Check current active note
|
|
275
|
+
* @param {function} callback - Optional callback(err, currentNote)
|
|
276
|
+
*/
|
|
277
|
+
check: checkNote
|
|
278
|
+
};
|
|
279
|
+
};
|
|
@@ -1,49 +1,49 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var utils = require("../utils");
|
|
4
|
-
var log = require("npmlog");
|
|
5
|
-
|
|
6
|
-
module.exports = function (defaultFuncs, api, ctx) {
|
|
7
|
-
return function removeUserFromGroup(userID, threadID, callback) {
|
|
8
|
-
if (!callback && (utils.getType(threadID) === "Function" || utils.getType(threadID) === "AsyncFunction")) throw { error: "please pass a threadID as a second argument." };
|
|
9
|
-
if (utils.getType(threadID) !== "Number" && utils.getType(threadID) !== "String") throw { error: "threadID should be of type Number or String and not " + utils.getType(threadID) + "." };
|
|
10
|
-
if (utils.getType(userID) !== "Number" && utils.getType(userID) !== "String") throw { error: "userID should be of type Number or String and not " + utils.getType(userID) + "." };
|
|
11
|
-
|
|
12
|
-
var resolveFunc = function () { };
|
|
13
|
-
var rejectFunc = function () { };
|
|
14
|
-
var returnPromise = new Promise(function (resolve, reject) {
|
|
15
|
-
resolveFunc = resolve;
|
|
16
|
-
rejectFunc = reject;
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
if (!callback) {
|
|
20
|
-
callback = function (err, data) {
|
|
21
|
-
if (err) return rejectFunc(err);
|
|
22
|
-
|
|
23
|
-
resolveFunc(data);
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
var form = {
|
|
28
|
-
uid: userID,
|
|
29
|
-
tid: threadID
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
defaultFuncs
|
|
33
|
-
.post("https://www.facebook.com/chat/remove_participants", ctx.jar, form)
|
|
34
|
-
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
|
35
|
-
.then(function (resData) {
|
|
36
|
-
if (!resData) throw { error: "Remove from group failed." };
|
|
37
|
-
|
|
38
|
-
if (resData.error) throw resData;
|
|
39
|
-
|
|
40
|
-
return callback();
|
|
41
|
-
})
|
|
42
|
-
.catch(function (err) {
|
|
43
|
-
log.error("removeUserFromGroup", err);
|
|
44
|
-
return callback(err);
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
return returnPromise;
|
|
48
|
-
};
|
|
49
|
-
};
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var utils = require("../utils");
|
|
4
|
+
var log = require("npmlog");
|
|
5
|
+
|
|
6
|
+
module.exports = function (defaultFuncs, api, ctx) {
|
|
7
|
+
return function removeUserFromGroup(userID, threadID, callback) {
|
|
8
|
+
if (!callback && (utils.getType(threadID) === "Function" || utils.getType(threadID) === "AsyncFunction")) throw { error: "please pass a threadID as a second argument." };
|
|
9
|
+
if (utils.getType(threadID) !== "Number" && utils.getType(threadID) !== "String") throw { error: "threadID should be of type Number or String and not " + utils.getType(threadID) + "." };
|
|
10
|
+
if (utils.getType(userID) !== "Number" && utils.getType(userID) !== "String") throw { error: "userID should be of type Number or String and not " + utils.getType(userID) + "." };
|
|
11
|
+
|
|
12
|
+
var resolveFunc = function () { };
|
|
13
|
+
var rejectFunc = function () { };
|
|
14
|
+
var returnPromise = new Promise(function (resolve, reject) {
|
|
15
|
+
resolveFunc = resolve;
|
|
16
|
+
rejectFunc = reject;
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
if (!callback) {
|
|
20
|
+
callback = function (err, data) {
|
|
21
|
+
if (err) return rejectFunc(err);
|
|
22
|
+
|
|
23
|
+
resolveFunc(data);
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
var form = {
|
|
28
|
+
uid: userID,
|
|
29
|
+
tid: threadID
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
defaultFuncs
|
|
33
|
+
.post("https://www.facebook.com/chat/remove_participants", ctx.jar, form)
|
|
34
|
+
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
|
35
|
+
.then(function (resData) {
|
|
36
|
+
if (!resData) throw { error: "Remove from group failed." };
|
|
37
|
+
|
|
38
|
+
if (resData.error) throw resData;
|
|
39
|
+
|
|
40
|
+
return callback();
|
|
41
|
+
})
|
|
42
|
+
.catch(function (err) {
|
|
43
|
+
log.error("removeUserFromGroup", err);
|
|
44
|
+
return callback(err);
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
return returnPromise;
|
|
48
|
+
};
|
|
49
|
+
};
|
package/src/resolvePhotoUrl.js
CHANGED
|
@@ -1,37 +1,37 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var utils = require("../utils");
|
|
4
|
-
var log = require("npmlog");
|
|
5
|
-
|
|
6
|
-
module.exports = function (defaultFuncs, api, ctx) {
|
|
7
|
-
return function resolvePhotoUrl(photoID, callback) {
|
|
8
|
-
var resolveFunc = function () { };
|
|
9
|
-
var rejectFunc = function () { };
|
|
10
|
-
var returnPromise = new Promise(function (resolve, reject) {
|
|
11
|
-
resolveFunc = resolve;
|
|
12
|
-
rejectFunc = reject;
|
|
13
|
-
});
|
|
14
|
-
|
|
15
|
-
if (!callback) {
|
|
16
|
-
callback = function (err, data) {
|
|
17
|
-
if (err) return rejectFunc(err);
|
|
18
|
-
resolveFunc(data);
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
defaultFuncs
|
|
23
|
-
.get("https://www.facebook.com/mercury/attachments/photo", ctx.jar, { photo_id: photoID })
|
|
24
|
-
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
|
25
|
-
.then(resData => {
|
|
26
|
-
if (resData.error) throw resData;
|
|
27
|
-
var photoUrl = resData.jsmods.require[0][3][0];
|
|
28
|
-
return callback(null, photoUrl);
|
|
29
|
-
})
|
|
30
|
-
.catch(err => {
|
|
31
|
-
log.error("resolvePhotoUrl", err);
|
|
32
|
-
return callback(err);
|
|
33
|
-
});
|
|
34
|
-
|
|
35
|
-
return returnPromise;
|
|
36
|
-
};
|
|
37
|
-
};
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var utils = require("../utils");
|
|
4
|
+
var log = require("npmlog");
|
|
5
|
+
|
|
6
|
+
module.exports = function (defaultFuncs, api, ctx) {
|
|
7
|
+
return function resolvePhotoUrl(photoID, callback) {
|
|
8
|
+
var resolveFunc = function () { };
|
|
9
|
+
var rejectFunc = function () { };
|
|
10
|
+
var returnPromise = new Promise(function (resolve, reject) {
|
|
11
|
+
resolveFunc = resolve;
|
|
12
|
+
rejectFunc = reject;
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
if (!callback) {
|
|
16
|
+
callback = function (err, data) {
|
|
17
|
+
if (err) return rejectFunc(err);
|
|
18
|
+
resolveFunc(data);
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
defaultFuncs
|
|
23
|
+
.get("https://www.facebook.com/mercury/attachments/photo", ctx.jar, { photo_id: photoID })
|
|
24
|
+
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
|
25
|
+
.then(resData => {
|
|
26
|
+
if (resData.error) throw resData;
|
|
27
|
+
var photoUrl = resData.jsmods.require[0][3][0];
|
|
28
|
+
return callback(null, photoUrl);
|
|
29
|
+
})
|
|
30
|
+
.catch(err => {
|
|
31
|
+
log.error("resolvePhotoUrl", err);
|
|
32
|
+
return callback(err);
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
return returnPromise;
|
|
36
|
+
};
|
|
37
|
+
};
|
package/src/searchForThread.js
CHANGED
|
@@ -1,43 +1,43 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var utils = require("../utils");
|
|
4
|
-
|
|
5
|
-
module.exports = function (defaultFuncs, api, ctx) {
|
|
6
|
-
return function searchForThread(name, callback) {
|
|
7
|
-
var resolveFunc = function () { };
|
|
8
|
-
var rejectFunc = function () { };
|
|
9
|
-
var returnPromise = new Promise(function (resolve, reject) {
|
|
10
|
-
resolveFunc = resolve;
|
|
11
|
-
rejectFunc = reject;
|
|
12
|
-
});
|
|
13
|
-
|
|
14
|
-
if (!callback) {
|
|
15
|
-
callback = function (err, data) {
|
|
16
|
-
if (err) return rejectFunc(err);
|
|
17
|
-
resolveFunc(data);
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
var tmpForm = {
|
|
22
|
-
client: "web_messenger",
|
|
23
|
-
query: name,
|
|
24
|
-
offset: 0,
|
|
25
|
-
limit: 21,
|
|
26
|
-
index: "fbid"
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
defaultFuncs
|
|
30
|
-
.post("https://www.facebook.com/ajax/mercury/search_threads.php", ctx.jar, tmpForm)
|
|
31
|
-
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
|
32
|
-
.then(function (resData) {
|
|
33
|
-
if (resData.error) throw resData;
|
|
34
|
-
if (!resData.payload.mercury_payload.threads) return callback({ error: "Could not find thread `" + name + "`." });
|
|
35
|
-
return callback(
|
|
36
|
-
null,
|
|
37
|
-
resData.payload.mercury_payload.threads.map(utils.formatThread)
|
|
38
|
-
);
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
return returnPromise;
|
|
42
|
-
};
|
|
43
|
-
};
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var utils = require("../utils");
|
|
4
|
+
|
|
5
|
+
module.exports = function (defaultFuncs, api, ctx) {
|
|
6
|
+
return function searchForThread(name, callback) {
|
|
7
|
+
var resolveFunc = function () { };
|
|
8
|
+
var rejectFunc = function () { };
|
|
9
|
+
var returnPromise = new Promise(function (resolve, reject) {
|
|
10
|
+
resolveFunc = resolve;
|
|
11
|
+
rejectFunc = reject;
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
if (!callback) {
|
|
15
|
+
callback = function (err, data) {
|
|
16
|
+
if (err) return rejectFunc(err);
|
|
17
|
+
resolveFunc(data);
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
var tmpForm = {
|
|
22
|
+
client: "web_messenger",
|
|
23
|
+
query: name,
|
|
24
|
+
offset: 0,
|
|
25
|
+
limit: 21,
|
|
26
|
+
index: "fbid"
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
defaultFuncs
|
|
30
|
+
.post("https://www.facebook.com/ajax/mercury/search_threads.php", ctx.jar, tmpForm)
|
|
31
|
+
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
|
32
|
+
.then(function (resData) {
|
|
33
|
+
if (resData.error) throw resData;
|
|
34
|
+
if (!resData.payload.mercury_payload.threads) return callback({ error: "Could not find thread `" + name + "`." });
|
|
35
|
+
return callback(
|
|
36
|
+
null,
|
|
37
|
+
resData.payload.mercury_payload.threads.map(utils.formatThread)
|
|
38
|
+
);
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
return returnPromise;
|
|
42
|
+
};
|
|
43
|
+
};
|