@cexy/hoonfca 1.0.1 → 1.0.3

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 (170) hide show
  1. package/.travis.yml +6 -0
  2. package/LICENSE-MIT +21 -0
  3. package/index.d.ts +620 -0
  4. package/index.js +778 -1
  5. package/package.json +31 -84
  6. package/src/{apis/addExternalModule.js → addExternalModule.js} +4 -5
  7. package/src/addUserToGroup.js +113 -0
  8. package/src/changeAdminStatus.js +95 -0
  9. package/src/changeApprovalMode.js +79 -0
  10. package/src/changeArchivedStatus.js +55 -0
  11. package/src/changeBio.js +76 -0
  12. package/src/changeBlockedStatus.js +47 -0
  13. package/src/changeBlockedStatusMqtt.js +86 -0
  14. package/src/changeGroupImage.js +133 -0
  15. package/src/changeNickname.js +59 -0
  16. package/src/changeThreadColor.js +71 -0
  17. package/src/{apis/changeThreadEmoji.js → changeThreadEmoji.js} +8 -6
  18. package/src/createNewGroup.js +88 -0
  19. package/src/createPoll.js +130 -0
  20. package/src/deleteMessage.js +56 -0
  21. package/src/deleteThread.js +56 -0
  22. package/src/editMessage.js +63 -0
  23. package/src/forwardAttachment.js +60 -0
  24. package/src/forwardMessage.js +63 -0
  25. package/src/getCurrentUserID.js +7 -0
  26. package/src/getEmojiUrl.js +29 -0
  27. package/src/getFriendsList.js +84 -0
  28. package/src/getGroupsList.js +83 -0
  29. package/src/getMarketplace.js +84 -0
  30. package/src/getNotifications.js +86 -0
  31. package/src/getPagesList.js +83 -0
  32. package/src/getStories.js +88 -0
  33. package/src/getThreadHistory.js +647 -0
  34. package/src/getThreadInfo.js +222 -0
  35. package/src/getThreadList.js +292 -0
  36. package/src/getThreadPictures.js +79 -0
  37. package/src/getUserID.js +66 -0
  38. package/src/getUserInfo.js +128 -0
  39. package/src/handleFriendRequest.js +57 -0
  40. package/src/handleMessageRequest.js +65 -0
  41. package/src/{apis/httpGet.js → httpGet.js} +15 -20
  42. package/src/httpPost.js +58 -0
  43. package/src/listenMqtt.js +1018 -0
  44. package/src/logout.js +75 -0
  45. package/src/markAsDelivered.js +58 -0
  46. package/src/{apis/markAsRead.js → markAsRead.js} +19 -30
  47. package/src/markAsReadAll.js +50 -0
  48. package/src/markAsSeen.js +61 -0
  49. package/src/muteThread.js +52 -0
  50. package/src/pinMessage.js +61 -0
  51. package/src/removeUserFromGroup.js +79 -0
  52. package/src/resolvePhotoUrl.js +45 -0
  53. package/src/searchForThread.js +53 -0
  54. package/src/searchUsers.js +89 -0
  55. package/src/sendComment.js +161 -0
  56. package/src/sendMessage.js +457 -0
  57. package/src/sendTypingIndicator.js +179 -0
  58. package/src/setBio.js +86 -0
  59. package/src/setMessageReaction.js +186 -0
  60. package/src/setPostReaction.js +71 -0
  61. package/src/setTheme.js +313 -0
  62. package/src/setTitle.js +90 -0
  63. package/src/shareContact.js +53 -0
  64. package/src/shareLink.js +62 -0
  65. package/src/threadColors.js +57 -0
  66. package/src/unfriend.js +53 -0
  67. package/src/unsendMessage.js +104 -0
  68. package/utils.js +1447 -0
  69. package/LICENSE +0 -3
  70. package/README.md +0 -491
  71. package/examples/login-with-cookies.js +0 -102
  72. package/examples/verify.js +0 -70
  73. package/src/apis/addUserToGroup.js +0 -108
  74. package/src/apis/changeAdminStatus.js +0 -148
  75. package/src/apis/changeArchivedStatus.js +0 -61
  76. package/src/apis/changeAvatar.js +0 -103
  77. package/src/apis/changeBio.js +0 -69
  78. package/src/apis/changeBlockedStatus.js +0 -54
  79. package/src/apis/changeGroupImage.js +0 -136
  80. package/src/apis/changeThreadColor.js +0 -116
  81. package/src/apis/comment.js +0 -207
  82. package/src/apis/createAITheme.js +0 -129
  83. package/src/apis/createNewGroup.js +0 -79
  84. package/src/apis/createPoll.js +0 -73
  85. package/src/apis/deleteMessage.js +0 -44
  86. package/src/apis/deleteThread.js +0 -52
  87. package/src/apis/e2ee.js +0 -17
  88. package/src/apis/editMessage.js +0 -70
  89. package/src/apis/emoji.js +0 -124
  90. package/src/apis/fetchThemeData.js +0 -82
  91. package/src/apis/follow.js +0 -81
  92. package/src/apis/forwardMessage.js +0 -52
  93. package/src/apis/friend.js +0 -243
  94. package/src/apis/gcmember.js +0 -122
  95. package/src/apis/gcname.js +0 -123
  96. package/src/apis/gcrule.js +0 -119
  97. package/src/apis/getAccess.js +0 -111
  98. package/src/apis/getBotInfo.js +0 -88
  99. package/src/apis/getBotInitialData.js +0 -43
  100. package/src/apis/getFriendsList.js +0 -79
  101. package/src/apis/getMessage.js +0 -423
  102. package/src/apis/getTheme.js +0 -95
  103. package/src/apis/getThemeInfo.js +0 -116
  104. package/src/apis/getThreadHistory.js +0 -239
  105. package/src/apis/getThreadInfo.js +0 -267
  106. package/src/apis/getThreadList.js +0 -232
  107. package/src/apis/getThreadPictures.js +0 -58
  108. package/src/apis/getUserID.js +0 -117
  109. package/src/apis/getUserInfo.js +0 -513
  110. package/src/apis/getUserInfoV2.js +0 -146
  111. package/src/apis/handleMessageRequest.js +0 -50
  112. package/src/apis/httpPost.js +0 -89
  113. package/src/apis/httpPostFormData.js +0 -69
  114. package/src/apis/listenMqtt.js +0 -1236
  115. package/src/apis/listenSpeed.js +0 -179
  116. package/src/apis/logout.js +0 -87
  117. package/src/apis/markAsDelivered.js +0 -47
  118. package/src/apis/markAsReadAll.js +0 -40
  119. package/src/apis/markAsSeen.js +0 -70
  120. package/src/apis/mqttDeltaValue.js +0 -278
  121. package/src/apis/muteThread.js +0 -45
  122. package/src/apis/nickname.js +0 -132
  123. package/src/apis/notes.js +0 -163
  124. package/src/apis/pinMessage.js +0 -150
  125. package/src/apis/produceMetaTheme.js +0 -180
  126. package/src/apis/realtime.js +0 -182
  127. package/src/apis/removeUserFromGroup.js +0 -117
  128. package/src/apis/resolvePhotoUrl.js +0 -58
  129. package/src/apis/searchForThread.js +0 -154
  130. package/src/apis/sendMessage.js +0 -354
  131. package/src/apis/sendMessageMqtt.js +0 -249
  132. package/src/apis/sendTypingIndicator.js +0 -91
  133. package/src/apis/setMessageReaction.js +0 -27
  134. package/src/apis/setMessageReactionMqtt.js +0 -61
  135. package/src/apis/setThreadTheme.js +0 -260
  136. package/src/apis/setThreadThemeMqtt.js +0 -94
  137. package/src/apis/share.js +0 -107
  138. package/src/apis/shareContact.js +0 -66
  139. package/src/apis/stickers.js +0 -257
  140. package/src/apis/story.js +0 -181
  141. package/src/apis/theme.js +0 -233
  142. package/src/apis/unfriend.js +0 -47
  143. package/src/apis/unsendMessage.js +0 -17
  144. package/src/engine/client.js +0 -92
  145. package/src/engine/models/buildAPI.js +0 -152
  146. package/src/engine/models/loginHelper.js +0 -519
  147. package/src/engine/models/setOptions.js +0 -88
  148. package/src/security/e2ee.js +0 -109
  149. package/src/types/index.d.ts +0 -498
  150. package/src/utils/antiSuspension.js +0 -506
  151. package/src/utils/auth-helpers.js +0 -149
  152. package/src/utils/autoReLogin.js +0 -336
  153. package/src/utils/axios.js +0 -436
  154. package/src/utils/cache.js +0 -54
  155. package/src/utils/clients.js +0 -282
  156. package/src/utils/constants.js +0 -410
  157. package/src/utils/formatters/data/formatAttachment.js +0 -370
  158. package/src/utils/formatters/data/formatDelta.js +0 -109
  159. package/src/utils/formatters/index.js +0 -159
  160. package/src/utils/formatters/value/formatCookie.js +0 -91
  161. package/src/utils/formatters/value/formatDate.js +0 -36
  162. package/src/utils/formatters/value/formatID.js +0 -16
  163. package/src/utils/formatters.js +0 -1373
  164. package/src/utils/headers.js +0 -230
  165. package/src/utils/index.js +0 -153
  166. package/src/utils/monitoring.js +0 -333
  167. package/src/utils/rateLimiter.js +0 -319
  168. package/src/utils/tokenRefresh.js +0 -657
  169. package/src/utils/user-agents.js +0 -238
  170. package/src/utils/validation.js +0 -157
package/package.json CHANGED
@@ -1,104 +1,51 @@
1
1
  {
2
2
  "name": "@cexy/hoonfca",
3
- "version": "1.0.1",
4
- "type": "commonjs",
5
- "types": "src/types/index.d.ts",
6
- "description": "Hinata FCA - Advanced Facebook Chat API",
3
+ "version": "1.0.3",
4
+ "description": "🚀 Advanced Facebook Chat API — 65+ Methods, MQTT Real-time, Middleware System, New GraphQL APIs",
7
5
  "main": "index.js",
8
- "files": [
9
- "index.js",
10
- "src/",
11
- "examples/",
12
- "LICENSE",
13
- "README.md"
14
- ],
6
+ "types": "index.d.ts",
7
+ "scripts": {
8
+ "test": "mocha",
9
+ "lint": "./node_modules/.bin/eslint **.js",
10
+ "prettier": "npx prettier utils.js src/* --write"
11
+ },
15
12
  "repository": {
16
13
  "type": "git",
17
- "url": "git+https://github.com/c9352220sketch/h.git"
18
- },
19
- "author": "c9352220sketch",
20
- "contributors": [
21
- "NeoKEX Team"
22
- ],
23
- "license": "MIT",
24
- "bugs": {
25
- "url": "https://github.com/c9352220sketch/hinata-fca/issues"
14
+ "url": "git://github.com/bdrakib123/rakibfca.git"
26
15
  },
27
- "homepage": "https://github.com/c9352220sketch/hinata-fca#readme",
28
16
  "keywords": [
29
17
  "facebook",
30
- "messenger",
31
18
  "chat",
32
- "bot",
33
- "fca",
34
- "mqtt",
35
- "messaging",
36
19
  "api",
20
+ "messenger",
21
+ "fca",
22
+ "bot",
37
23
  "automation",
38
- "facebook-chat-api",
39
- "nkxfca",
40
- "neoaz07",
41
- "anti-suspension",
42
- "e2ee"
24
+ "mqtt",
25
+ "real-time"
43
26
  ],
27
+ "author": "Rakib Hasan",
28
+ "license": "MIT",
29
+ "bugs": {
30
+ "url": "https://github.com/bdrakib123/rakibfca/issues"
31
+ },
32
+ "homepage": "https://github.com/bdrakib123/rakibfca#readme",
44
33
  "dependencies": {
45
- "axios": "^1.9.0",
46
- "axios-cookiejar-support": "^4.0.7",
34
+ "axios": "^0.27.2",
47
35
  "bluebird": "^3.7.2",
48
- "cheerio": "^1.0.0",
49
- "deepdash": "^5.3.9",
50
- "duplexify": "^4.1.3",
51
- "form-data": "^4.0.4",
52
- "https-proxy-agent": "^7.0.6",
53
- "jsonpath-plus": "^10.3.0",
54
- "lodash": "^4.17.21",
36
+ "cheerio": "^1.0.0-rc.12",
55
37
  "mqtt": "^4.3.8",
56
- "node-cron": "^3.0.3",
38
+ "nosql-json-database": "^1.0.0",
57
39
  "npmlog": "^7.0.1",
58
- "totp-generator": "^2.0.1",
59
- "tough-cookie": "^5.1.2",
60
- "undici": "^7.8.0",
61
- "uuid": "^11.1.0",
62
- "ws": "^8.18.2"
40
+ "request": "^2.88.2",
41
+ "sequelize": "^6.35.2",
42
+ "sqlite3": "^5.1.7",
43
+ "totp-generator": "^0.0.14",
44
+ "ws": "^8.16.0"
63
45
  },
64
46
  "devDependencies": {
65
- "@types/node": "^22.15.17",
66
- "eslint": "^9.26.0",
67
- "mocha": "^11.3.0",
68
- "prettier": "^3.5.3",
69
- "ts-node": "^10.9.2",
70
- "typescript": "^5.8.3"
71
- },
72
- "engines": {
73
- "node": ">=22.0.0"
74
- },
75
- "scripts": {
76
- "validate": "npm pack --dry-run",
77
- "prepack": "echo 'Preparing package for npm...'",
78
- "test": "echo 'No tests configured yet'",
79
- "lint": "eslint src/",
80
- "format": "prettier --write src/**/*.js"
81
- },
82
- "overrides": {
83
- "undici": "^7.8.0",
84
- "ws": "^8.18.2",
85
- "tough-cookie": "^5.1.2",
86
- "glob": "^11.0.2",
87
- "prebuild-install": "^7.1.3",
88
- "npmlog": "^7.0.1",
89
- "are-we-there-yet": "^4.0.2",
90
- "gauge": "^5.0.2",
91
- "serialize-javascript": "^6.0.2",
92
- "cacache": "^18.0.4",
93
- "make-fetch-happen": "^13.0.3",
94
- "@tootallnate/once": "^3.0.1",
95
- "mocha": {
96
- "serialize-javascript": "^6.0.2",
97
- "debug": "^4.4.0",
98
- "diff": "^7.0.0",
99
- "js-yaml": "^4.1.0",
100
- "minimatch": "^10.0.1",
101
- "glob": "^11.0.2"
102
- }
47
+ "eslint": "^8.56.0",
48
+ "mocha": "^10.2.0",
49
+ "prettier": "^3.2.4"
103
50
  }
104
51
  }
@@ -1,17 +1,16 @@
1
1
  "use strict";
2
- const utils = require('../utils');
2
+
3
+ const utils = require("../utils");
3
4
 
4
5
  module.exports = function (defaultFuncs, api, ctx) {
5
6
  return function addExternalModule(moduleObj) {
6
7
  if (utils.getType(moduleObj) == "Object") {
7
- for (const apiName in moduleObj) {
8
+ for (let apiName in moduleObj) {
8
9
  if (utils.getType(moduleObj[apiName]) == "Function") {
9
10
  api[apiName] = moduleObj[apiName](defaultFuncs, api, ctx);
10
11
  } else {
11
12
  throw new Error(
12
- `Item "${apiName}" in moduleObj must be a function, not ${utils.getType(
13
- moduleObj[apiName],
14
- )}!`,
13
+ `Item "${apiName}" in moduleObj must be a function, not ${utils.getType(moduleObj[apiName])}!`,
15
14
  );
16
15
  }
17
16
  }
@@ -0,0 +1,113 @@
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 addUserToGroup(userID, threadID, 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 (
16
+ !callback &&
17
+ (utils.getType(threadID) === "Function" ||
18
+ utils.getType(threadID) === "AsyncFunction")
19
+ ) {
20
+ throw { error: "please pass a threadID as a second argument." };
21
+ }
22
+
23
+ if (!callback) {
24
+ callback = function (err) {
25
+ if (err) {
26
+ return rejectFunc(err);
27
+ }
28
+ resolveFunc();
29
+ };
30
+ }
31
+
32
+ if (
33
+ utils.getType(threadID) !== "Number" &&
34
+ utils.getType(threadID) !== "String"
35
+ ) {
36
+ throw {
37
+ error:
38
+ "ThreadID should be of type Number or String and not " +
39
+ utils.getType(threadID) +
40
+ ".",
41
+ };
42
+ }
43
+
44
+ if (utils.getType(userID) !== "Array") {
45
+ userID = [userID];
46
+ }
47
+
48
+ var messageAndOTID = utils.generateOfflineThreadingID();
49
+ var form = {
50
+ client: "mercury",
51
+ action_type: "ma-type:log-message",
52
+ author: "fbid:" + ctx.userID,
53
+ thread_id: "",
54
+ timestamp: Date.now(),
55
+ timestamp_absolute: "Today",
56
+ timestamp_relative: utils.generateTimestampRelative(),
57
+ timestamp_time_passed: "0",
58
+ is_unread: false,
59
+ is_cleared: false,
60
+ is_forward: false,
61
+ is_filtered_content: false,
62
+ is_filtered_content_bh: false,
63
+ is_filtered_content_account: false,
64
+ is_spoof_warning: false,
65
+ source: "source:chat:web",
66
+ "source_tags[0]": "source:chat",
67
+ log_message_type: "log:subscribe",
68
+ status: "0",
69
+ offline_threading_id: messageAndOTID,
70
+ message_id: messageAndOTID,
71
+ threading_id: utils.generateThreadingID(ctx.clientID),
72
+ manual_retry_cnt: "0",
73
+ thread_fbid: threadID,
74
+ };
75
+
76
+ for (var i = 0; i < userID.length; i++) {
77
+ if (
78
+ utils.getType(userID[i]) !== "Number" &&
79
+ utils.getType(userID[i]) !== "String"
80
+ ) {
81
+ throw {
82
+ error:
83
+ "Elements of userID should be of type Number or String and not " +
84
+ utils.getType(userID[i]) +
85
+ ".",
86
+ };
87
+ }
88
+
89
+ form["log_message_data[added_participants][" + i + "]"] =
90
+ "fbid:" + userID[i];
91
+ }
92
+
93
+ defaultFuncs
94
+ .post("https://www.facebook.com/messaging/send/", ctx.jar, form)
95
+ .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
96
+ .then(function (resData) {
97
+ if (!resData) {
98
+ throw { error: "Add to group failed." };
99
+ }
100
+ if (resData.error) {
101
+ throw resData;
102
+ }
103
+
104
+ return callback();
105
+ })
106
+ .catch(function (err) {
107
+ log.error("addUserToGroup", err);
108
+ return callback(err);
109
+ });
110
+
111
+ return returnPromise;
112
+ };
113
+ };
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+
3
+ const utils = require("../utils");
4
+ const log = require("npmlog");
5
+
6
+ module.exports = function (defaultFuncs, api, ctx) {
7
+ return function changeAdminStatus(threadID, adminIDs, adminStatus, callback) {
8
+ if (utils.getType(threadID) !== "String") {
9
+ throw { error: "changeAdminStatus: threadID must be a string" };
10
+ }
11
+
12
+ if (utils.getType(adminIDs) === "String") {
13
+ adminIDs = [adminIDs];
14
+ }
15
+
16
+ if (utils.getType(adminIDs) !== "Array") {
17
+ throw { error: "changeAdminStatus: adminIDs must be an array or string" };
18
+ }
19
+
20
+ if (utils.getType(adminStatus) !== "Boolean") {
21
+ throw { error: "changeAdminStatus: adminStatus must be a string" };
22
+ }
23
+
24
+ var resolveFunc = function () {};
25
+ var rejectFunc = function () {};
26
+ var returnPromise = new Promise(function (resolve, reject) {
27
+ resolveFunc = resolve;
28
+ rejectFunc = reject;
29
+ });
30
+
31
+ if (!callback) {
32
+ callback = function (err) {
33
+ if (err) {
34
+ return rejectFunc(err);
35
+ }
36
+ resolveFunc();
37
+ };
38
+ }
39
+
40
+ if (
41
+ utils.getType(callback) !== "Function" &&
42
+ utils.getType(callback) !== "AsyncFunction"
43
+ ) {
44
+ throw { error: "changeAdminStatus: callback is not a function" };
45
+ }
46
+
47
+ let form = {
48
+ thread_fbid: threadID,
49
+ };
50
+
51
+ let i = 0;
52
+ for (let u of adminIDs) {
53
+ form[`admin_ids[${i++}]`] = u;
54
+ }
55
+ form["add"] = adminStatus;
56
+
57
+ defaultFuncs
58
+ .post(
59
+ "https://www.facebook.com/messaging/save_admins/?dpr=1",
60
+ ctx.jar,
61
+ form,
62
+ )
63
+ .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
64
+ .then(function (resData) {
65
+ if (resData.error) {
66
+ switch (resData.error) {
67
+ case 1976004:
68
+ throw {
69
+ error: "Cannot alter admin status: you are not an admin.",
70
+ rawResponse: resData,
71
+ };
72
+ case 1357031:
73
+ throw {
74
+ error:
75
+ "Cannot alter admin status: this thread is not a group chat.",
76
+ rawResponse: resData,
77
+ };
78
+ default:
79
+ throw {
80
+ error: "Cannot alter admin status: unknown error.",
81
+ rawResponse: resData,
82
+ };
83
+ }
84
+ }
85
+
86
+ callback();
87
+ })
88
+ .catch(function (err) {
89
+ log.error("changeAdminStatus", err);
90
+ return callback(err);
91
+ });
92
+
93
+ return returnPromise;
94
+ };
95
+ };
@@ -0,0 +1,79 @@
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 changeApprovalMode(approval_mode, threadID, callback) {
8
+ if (utils.getType(threadID) !== "String") {
9
+ throw { error: "changeApprovalMode: threadID must be a string" };
10
+ }
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) {
21
+ if (err) {
22
+ return rejectFunc(err);
23
+ }
24
+ resolveFunc(err);
25
+ };
26
+ }
27
+
28
+ if (
29
+ utils.getType(callback) !== "Function" &&
30
+ utils.getType(callback) !== "AsyncFunction"
31
+ ) {
32
+ throw { error: "changeApprovalMode: callback is not a function" };
33
+ }
34
+
35
+ approval_mode = parseInt(approval_mode);
36
+
37
+ if (approval_mode !== 0 && approval_mode !== 1) {
38
+ throw { error: "changeApprovalMode: approval_mode must be 0 or 1" };
39
+ }
40
+
41
+ var form = {
42
+ thread_fbid: threadID,
43
+ set_mode: approval_mode,
44
+ };
45
+
46
+ defaultFuncs
47
+ .post(
48
+ "https://www.facebook.com/messaging/set_approval_mode/?dpr=1",
49
+ ctx.jar,
50
+ form,
51
+ )
52
+ .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
53
+ .then(function (resData) {
54
+ if (resData.error) {
55
+ switch (resData.error) {
56
+ case 1357031:
57
+ throw {
58
+ error:
59
+ "Cannot alter approval mode: this thread is not a group chat or you are not an admin.",
60
+ rawResponse: resData,
61
+ };
62
+ default:
63
+ throw {
64
+ error: "Cannot alter approval mode: unknown error.",
65
+ rawResponse: resData,
66
+ };
67
+ }
68
+ }
69
+
70
+ return callback();
71
+ })
72
+ .catch(function (err) {
73
+ log.error("changeApprovalMode", err);
74
+ return callback(err);
75
+ });
76
+
77
+ return returnPromise;
78
+ };
79
+ };
@@ -0,0 +1,55 @@
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 changeArchivedStatus(threadOrThreads, archive, 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) {
17
+ if (err) {
18
+ return rejectFunc(err);
19
+ }
20
+ resolveFunc();
21
+ };
22
+ }
23
+
24
+ var form = {};
25
+
26
+ if (utils.getType(threadOrThreads) === "Array") {
27
+ for (var i = 0; i < threadOrThreads.length; i++) {
28
+ form["ids[" + threadOrThreads[i] + "]"] = archive;
29
+ }
30
+ } else {
31
+ form["ids[" + threadOrThreads + "]"] = archive;
32
+ }
33
+
34
+ defaultFuncs
35
+ .post(
36
+ "https://www.facebook.com/ajax/mercury/change_archived_status.php",
37
+ ctx.jar,
38
+ form,
39
+ )
40
+ .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
41
+ .then(function (resData) {
42
+ if (resData.error) {
43
+ throw resData;
44
+ }
45
+
46
+ return callback();
47
+ })
48
+ .catch(function (err) {
49
+ log.error("changeArchivedStatus", err);
50
+ return callback(err);
51
+ });
52
+
53
+ return returnPromise;
54
+ };
55
+ };
@@ -0,0 +1,76 @@
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 changeBio(bio, publish, 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
+ if (
17
+ utils.getType(publish) == "Function" ||
18
+ utils.getType(publish) == "AsyncFunction"
19
+ ) {
20
+ callback = publish;
21
+ } else {
22
+ callback = function (err) {
23
+ if (err) {
24
+ return rejectFunc(err);
25
+ }
26
+ resolveFunc();
27
+ };
28
+ }
29
+ }
30
+
31
+ if (utils.getType(publish) != "Boolean") {
32
+ publish = false;
33
+ }
34
+
35
+ if (utils.getType(bio) != "String") {
36
+ bio = "";
37
+ publish = false;
38
+ }
39
+
40
+ var form = {
41
+ fb_api_caller_class: "RelayModern",
42
+ fb_api_req_friendly_name: "ProfileCometSetBioMutation",
43
+ // This doc_is is valid as of May 23, 2020
44
+ doc_id: "2725043627607610",
45
+ variables: JSON.stringify({
46
+ input: {
47
+ bio: bio,
48
+ publish_bio_feed_story: publish,
49
+ actor_id: ctx.userID,
50
+ client_mutation_id: Math.round(Math.random() * 1024).toString(),
51
+ },
52
+ hasProfileTileViewID: false,
53
+ profileTileViewID: null,
54
+ scale: 1,
55
+ }),
56
+ av: ctx.userID,
57
+ };
58
+
59
+ defaultFuncs
60
+ .post("https://www.facebook.com/api/graphql/", ctx.jar, form)
61
+ .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
62
+ .then(function (resData) {
63
+ if (resData.errors) {
64
+ throw resData;
65
+ }
66
+
67
+ return callback();
68
+ })
69
+ .catch(function (err) {
70
+ log.error("changeBio", err);
71
+ return callback(err);
72
+ });
73
+
74
+ return returnPromise;
75
+ };
76
+ };
@@ -0,0 +1,47 @@
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 changeBlockedStatus(userID, block, 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) {
17
+ if (err) {
18
+ return rejectFunc(err);
19
+ }
20
+ resolveFunc();
21
+ };
22
+ }
23
+
24
+ defaultFuncs
25
+ .post(
26
+ `https://www.facebook.com/messaging/${block ? "" : "un"}block_messages/`,
27
+ ctx.jar,
28
+ {
29
+ fbid: userID,
30
+ },
31
+ )
32
+ .then(utils.saveCookies(ctx.jar))
33
+ .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
34
+ .then(function (resData) {
35
+ if (resData.error) {
36
+ throw resData;
37
+ }
38
+
39
+ return callback();
40
+ })
41
+ .catch(function (err) {
42
+ log.error("changeBlockedStatus", err);
43
+ return callback(err);
44
+ });
45
+ return returnPromise;
46
+ };
47
+ };