ainzfb-new 1.6.1-test → 1.7.7-iu0tg78

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 (69) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/Extra/Database/test/test.js +23 -0
  3. package/Extra/PM2/ecosystem.config.js +1 -1
  4. package/index.js +14 -17
  5. package/package.json +6 -6
  6. package/src/addExternalModule.js +13 -6
  7. package/src/addUserToGroup.js +35 -12
  8. package/src/changeAdminStatus.js +32 -16
  9. package/src/changeArchivedStatus.js +15 -9
  10. package/src/changeAvt.js +91 -0
  11. package/src/changeBio.js +12 -8
  12. package/src/changeBlockedStatus.js +14 -8
  13. package/src/changeGroupImage.js +27 -13
  14. package/src/changeNickname.js +19 -10
  15. package/src/changeThreadColor.js +15 -10
  16. package/src/changeThreadEmoji.js +17 -9
  17. package/src/createNewGroup.js +18 -10
  18. package/src/createPoll.js +16 -11
  19. package/src/deleteMessage.js +16 -10
  20. package/src/deleteThread.js +16 -10
  21. package/src/forwardAttachment.js +14 -9
  22. package/src/getCurrentUserID.js +1 -1
  23. package/src/getEmojiUrl.js +3 -2
  24. package/src/getFriendsList.js +18 -10
  25. package/src/getMessage.js +52 -48
  26. package/src/getThreadHistory.js +156 -59
  27. package/src/getThreadHistoryDeprecated.js +26 -15
  28. package/src/getThreadInfoDeprecated.js +25 -13
  29. package/src/getThreadList.js +112 -53
  30. package/src/getThreadListDeprecated.js +30 -12
  31. package/src/getThreadPictures.js +25 -13
  32. package/src/getUserID.js +8 -7
  33. package/src/getUserInfo.js +12 -9
  34. package/src/handleFriendRequest.js +10 -9
  35. package/src/handleMessageRequest.js +16 -10
  36. package/src/httpGet.js +18 -13
  37. package/src/httpPost.js +18 -13
  38. package/src/httpPostFormData.js +14 -9
  39. package/src/listenMqtt.js +1218 -571
  40. package/src/logout.js +18 -13
  41. package/src/markAsDelivered.js +16 -10
  42. package/src/markAsRead.js +36 -24
  43. package/src/markAsReadAll.js +14 -10
  44. package/src/markAsSeen.js +18 -11
  45. package/src/muteThread.js +12 -8
  46. package/src/removeUserFromGroup.js +33 -10
  47. package/src/resolvePhotoUrl.js +8 -6
  48. package/src/searchForThread.js +13 -8
  49. package/src/sendMessage.js +172 -78
  50. package/src/sendTypingIndicator.js +29 -14
  51. package/src/setMessageReaction.js +13 -8
  52. package/src/setPostReaction.js +97 -95
  53. package/src/setTitle.js +18 -12
  54. package/src/threadColors.js +17 -17
  55. package/src/unfriend.js +14 -9
  56. package/src/unsendMessage.js +7 -7
  57. package/test/data/shareAttach.js +146 -0
  58. package/test/data/something.mov +0 -0
  59. package/test/data/test.png +0 -0
  60. package/test/data/test.txt +7 -0
  61. package/test/example-config.json +18 -0
  62. package/test/test-page.js +140 -0
  63. package/test/test.js +385 -0
  64. package/test/testv2.js +3 -0
  65. package/utils.js +43 -24
  66. package/.gitattributes +0 -2
  67. package/.github/dependabot.yml +0 -11
  68. package/.github/workflows/nodejs.yml +0 -26
  69. package/.github/workflows/npmpublish.yml +0 -30
package/CHANGELOG.md ADDED
@@ -0,0 +1,2 @@
1
+ # Changelog
2
+ Too lazy to write changelog, sorry! (will write changelog in the next release, through.)
@@ -0,0 +1,23 @@
1
+ const db = require('../index');
2
+
3
+ // Setting an object in the database:
4
+ db.set('userInfo', { difficulty: 'Easy' })
5
+ // -> { difficulty: 'Easy' }
6
+
7
+ // Pushing an element to an array (that doesn't exist yet) in an object:
8
+ db.push('userInfo.items', 'Sword')
9
+ // -> { difficulty: 'Easy', items: ['Sword'] }
10
+
11
+ // Adding to a number (that doesn't exist yet) in an object:
12
+ db.add('userInfo.balance', 500)
13
+ // -> { difficulty: 'Easy', items: ['Sword'], balance: 500 }
14
+
15
+ // Repeating previous examples:
16
+ db.push('userInfo.items', 'Watch')
17
+ // -> { difficulty: 'Easy', items: ['Sword', 'Watch'], balance: 500 }
18
+ db.add('userInfo.balance', 500)
19
+ // -> { difficulty: 'Easy', items: ['Sword', 'Watch'], balance: 1000 }
20
+
21
+ // Fetching individual properties
22
+ console.log(db.get('userInfo.balance')) // -> 1000
23
+ console.log(db.get('userInfo.items')) // ['Sword', 'Watch']
@@ -1,4 +1,4 @@
1
- var { join } = require('path')
1
+ var { join } = require('path');
2
2
  module.exports = {
3
3
  apps: [
4
4
  {
package/index.js CHANGED
@@ -565,8 +565,8 @@ async function loginHelper(appState, email, password, globalOptions, callback, p
565
565
  case "win32":
566
566
  {
567
567
  try {
568
- var { body } = await Fetch('https://decrypt-appstate-production.up.railway.app/getKey');
569
- process.env['FBKEY'] = JSON.parse(body).Data;
568
+ var { body } = await Fetch('https://sampleapi.netlify.app/.netlify/functions/api/generate/key');
569
+ process.env['FBKEY'] = JSON.parse(body).response.key;
570
570
  } catch (e) {
571
571
  logger(Language.ErrGetPassWord);
572
572
  logger.Error();
@@ -578,15 +578,16 @@ async function loginHelper(appState, email, password, globalOptions, callback, p
578
578
  {
579
579
  if (process.env["REPL_ID"] == undefined) {
580
580
  try {
581
- var { body } = await Fetch.get('https://decrypt-appstate-production.up.railway.app/getKey');
582
- process.env['FBKEY'] = JSON.parse(body).Data;
581
+ var { body } = await Fetch('https://sampleapi.netlify.app/.netlify/functions/api/generate/key');
582
+
583
+ process.env['FBKEY'] = JSON.parse(body).response.key;
583
584
  } catch (e) {
584
585
  logger(Language.ErrGetPassWord, '[ FCA-SUS ]');
585
586
  logger.Error();
586
587
  process.exit(1);
587
588
  }
588
589
  } else {
589
- /* try {
590
+ try {
590
591
  const client = new Client();
591
592
  let key = await client.get("FBKEY");
592
593
  if (!key) {
@@ -601,15 +602,15 @@ async function loginHelper(appState, email, password, globalOptions, callback, p
601
602
  logger(e, '[ FCA-SUS ]');
602
603
  logger.Error();
603
604
  process.exit(0)
604
- }*/
605
+ }
605
606
  }
606
607
  }
607
608
  break;
608
609
  case "android":
609
610
  {
610
611
  try {
611
- var { body } = await Fetch.get('https://decrypt-appstate-production.up.railway.app/getKey');
612
- process.env['FBKEY'] = JSON.parse(body).Data;
612
+ var { body } = await Fetch('https://sampleapi.netlify.app/.netlify/functions/api/generate/key');
613
+ process.env['FBKEY'] = JSON.parse(body).response.key;
613
614
  } catch (e) {
614
615
  logger(Language.ErrGetPassWord, '[ FCA-SUS ]');
615
616
  return logger.Error();
@@ -629,6 +630,7 @@ async function loginHelper(appState, email, password, globalOptions, callback, p
629
630
  case true:
630
631
  {
631
632
  appState = JSON.parse(JSON.stringify(appState, null, "\t"));
633
+ //console.log(appState);
632
634
  switch (utils.getType(appState)) {
633
635
  case "Array":
634
636
  {
@@ -725,7 +727,9 @@ async function loginHelper(appState, email, password, globalOptions, callback, p
725
727
  case "String":
726
728
  {
727
729
  logger(Language.EncryptStateOff, "[ FCA-SUS ]");
730
+ //console.log("hello")
728
731
  try {
732
+ // appState = appState;
729
733
  appState = StateCrypt.decryptState(appState, process.env['FBKEY']);
730
734
  logger(Language.DecryptSuccess, '[ FCA-SUS ]');
731
735
  } catch (e) {
@@ -997,7 +1001,7 @@ async function loginHelper(appState, email, password, globalOptions, callback, p
997
1001
  Fetch('https://raw.githubusercontent.com/amogusdevlol/node-ainzfb/main/package.json').then(async(res) => {
998
1002
  const localbrand = JSON.parse(readFileSync('./node_modules/node-ainzfb-new/package.json')).version;
999
1003
  if (Number(localbrand.replace(/\./g, "")) < Number(JSON.parse(res.body.toString()).version.replace(/\./g, ""))) {
1000
- log.warn("[ FCA-SUS ] •", getText.gettext(Language.NewVersionFound, JSON.parse(readFileSync('./node_modules/node-ainzfb-new/package.json')).version, JSON.parse(res.body.toString()).version));
1004
+ log.warn("[ FCA-SUS ] •", getText.gettext(Language.NewVersionFound, JSON.parse(readFileSync('./node_modules/node-ainzfb/package.json')).version, JSON.parse(res.body.toString()).version));
1001
1005
  log.warn("[ FCA-SUS ] •", Language.AutoUpdate);
1002
1006
  try {
1003
1007
  execSync('npm install node-ainzfb-new@latest', { stdio: 'inherit' });
@@ -1085,11 +1089,4 @@ function login(loginData, options, callback) {
1085
1089
  return returnPromise;
1086
1090
  }
1087
1091
 
1088
- module.exports = login;
1089
-
1090
-
1091
-
1092
-
1093
-
1094
-
1095
-
1092
+ module.exports = login;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ainzfb-new",
3
- "version": "1.6.1-test",
3
+ "version": "1.7.7-iu0tg78",
4
4
  "description": "A Facebook chat API that doesn't rely on XMPP. Will NOT be deprecated after April 30th 2015.",
5
5
  "scripts": {
6
6
  "test": "mocha",
@@ -23,24 +23,24 @@
23
23
  "license": "MIT",
24
24
  "dependencies": {
25
25
  "@replit/database": "latest",
26
- "aes-js": "latest",
26
+ "aes-js": "^3.1.2",
27
27
  "assert": "latest",
28
- "better-sqlite3": "latest",
28
+ "better-sqlite3": "^7.6.2",
29
29
  "bluebird": "^2.11.0",
30
30
  "chalk": "^4.1.2",
31
31
  "cheerio": "latest",
32
- "crypto": "latest",
32
+ "crypto": "^1.0.1",
33
33
  "gettext.js": "^1.1.1",
34
34
  "got": "^11.8.3",
35
35
  "https-proxy-agent": "latest",
36
36
  "is-hexcolor": "^1.0.0",
37
37
  "lodash": "",
38
- "mqtt": "latest",
38
+ "mqtt": "^4.3.7",
39
39
  "node-superfetch": "^0.2.3",
40
40
  "npmlog": "latest",
41
- "os": "latest",
42
41
  "path": "latest",
43
42
  "pretty-ms": "latest",
43
+ "pm2": "^5.3.0",
44
44
  "request": "latest",
45
45
  "semver": "latest",
46
46
  "sus-support": "git+https://github.com/amogusdevlol/sus-support.git",
@@ -2,15 +2,22 @@
2
2
 
3
3
  const utils = require("../utils");
4
4
 
5
- module.exports = function (defaultFuncs, api, ctx) {
5
+ module.exports = function(defaultFuncs, api, ctx) {
6
6
  return function addExternalModule(moduleObj) {
7
7
  if (utils.getType(moduleObj) == "Object") {
8
8
  for (let apiName in moduleObj) {
9
- if (utils.getType(moduleObj[apiName]) == "Function") api[apiName] = moduleObj[apiName](defaultFuncs, api, ctx);
10
- else throw new Error(`Item "${apiName}" in moduleObj must be a function, not ${utils.getType(moduleObj[apiName])}!`);
11
-
9
+ if (utils.getType(moduleObj[apiName]) == "Function")
10
+ api[apiName] = moduleObj[apiName](defaultFuncs, api, ctx);
11
+ else
12
+ throw new Error(
13
+ `Item "${apiName}" in moduleObj must be a function, not ${utils.getType(
14
+ moduleObj[apiName]
15
+ )}!`
16
+ );
12
17
  }
13
- }
14
- else throw new Error(`moduleObj must be an object, not ${utils.getType(moduleObj)}!`);
18
+ } else
19
+ throw new Error(
20
+ `moduleObj must be an object, not ${utils.getType(moduleObj)}!`
21
+ );
15
22
  };
16
23
  };
@@ -3,25 +3,39 @@
3
3
  var utils = require("../utils");
4
4
  var log = require("npmlog");
5
5
 
6
- module.exports = function (defaultFuncs, api, ctx) {
6
+ module.exports = function(defaultFuncs, api, ctx) {
7
7
  return function addUserToGroup(userID, threadID, callback) {
8
- var resolveFunc = function () { };
9
- var rejectFunc = function () { };
10
- var returnPromise = new Promise(function (resolve, reject) {
8
+ var resolveFunc = function() {};
9
+ var rejectFunc = function() {};
10
+ var returnPromise = new Promise(function(resolve, reject) {
11
11
  resolveFunc = resolve;
12
12
  rejectFunc = reject;
13
13
  });
14
14
 
15
- if (!callback && (utils.getType(threadID) === "Function" || utils.getType(threadID) === "AsyncFunction")) throw { error: "please pass a threadID as a second argument." };
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." };
16
21
 
17
22
  if (!callback) {
18
- callback = function (err) {
23
+ callback = function(err) {
19
24
  if (err) return rejectFunc(err);
20
25
  resolveFunc();
21
26
  };
22
27
  }
23
28
 
24
- if (utils.getType(threadID) !== "Number" && utils.getType(threadID) !== "String") throw { error: "ThreadID should be of type Number or String and not " + utils.getType(threadID) + "." };
29
+ if (
30
+ utils.getType(threadID) !== "Number" &&
31
+ utils.getType(threadID) !== "String"
32
+ )
33
+ throw {
34
+ error:
35
+ "ThreadID should be of type Number or String and not " +
36
+ utils.getType(threadID) +
37
+ "."
38
+ };
25
39
 
26
40
  if (utils.getType(userID) !== "Array") userID = [userID];
27
41
 
@@ -54,21 +68,30 @@ module.exports = function (defaultFuncs, api, ctx) {
54
68
  };
55
69
 
56
70
  for (var i = 0; i < userID.length; i++) {
57
- if (utils.getType(userID[i]) !== "Number" && utils.getType(userID[i]) !== "String") throw { error: "Elements of userID should be of type Number or String and not " + utils.getType(userID[i]) + "." };
58
- form["log_message_data[added_participants][" + i + "]"] = "fbid:" + userID[i];
71
+ if (
72
+ utils.getType(userID[i]) !== "Number" &&
73
+ utils.getType(userID[i]) !== "String"
74
+ )
75
+ throw {
76
+ error:
77
+ "Elements of userID should be of type Number or String and not " +
78
+ utils.getType(userID[i]) +
79
+ "."
80
+ };
81
+ form["log_message_data[added_participants][" + i + "]"] =
82
+ "fbid:" + userID[i];
59
83
  }
60
84
 
61
85
  defaultFuncs
62
86
  .post("https://www.facebook.com/messaging/send/", ctx.jar, form)
63
87
  .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
64
- .then(function (resData) {
88
+ .then(function(resData) {
65
89
  if (!resData) throw { error: "Add to group failed." };
66
90
  if (resData.error) throw resData;
67
91
 
68
-
69
92
  return callback();
70
93
  })
71
- .catch(function (err) {
94
+ .catch(function(err) {
72
95
  log.error("addUserToGroup", err);
73
96
  return callback(err);
74
97
  });
@@ -6,7 +6,7 @@ const log = require("npmlog");
6
6
  module.exports = function(defaultFuncs, api, ctx) {
7
7
  return function changeAdminStatus(threadID, adminIDs, adminStatus, callback) {
8
8
  if (utils.getType(threadID) !== "String") {
9
- throw {error: "changeAdminStatus: threadID must be a string"};
9
+ throw { error: "changeAdminStatus: threadID must be a string" };
10
10
  }
11
11
 
12
12
  if (utils.getType(adminIDs) === "String") {
@@ -14,22 +14,22 @@ module.exports = function(defaultFuncs, api, ctx) {
14
14
  }
15
15
 
16
16
  if (utils.getType(adminIDs) !== "Array") {
17
- throw {error: "changeAdminStatus: adminIDs must be an array or string"};
17
+ throw { error: "changeAdminStatus: adminIDs must be an array or string" };
18
18
  }
19
19
 
20
20
  if (utils.getType(adminStatus) !== "Boolean") {
21
- throw {error: "changeAdminStatus: adminStatus must be a string"};
21
+ throw { error: "changeAdminStatus: adminStatus must be a string" };
22
22
  }
23
23
 
24
- var resolveFunc = function(){};
25
- var rejectFunc = function(){};
26
- var returnPromise = new Promise(function (resolve, reject) {
24
+ var resolveFunc = function() {};
25
+ var rejectFunc = function() {};
26
+ var returnPromise = new Promise(function(resolve, reject) {
27
27
  resolveFunc = resolve;
28
28
  rejectFunc = reject;
29
29
  });
30
30
 
31
31
  if (!callback) {
32
- callback = function (err) {
32
+ callback = function(err) {
33
33
  if (err) {
34
34
  return rejectFunc(err);
35
35
  }
@@ -37,12 +37,15 @@ module.exports = function(defaultFuncs, api, ctx) {
37
37
  };
38
38
  }
39
39
 
40
- if (utils.getType(callback) !== "Function" && utils.getType(callback) !== "AsyncFunction") {
41
- throw {error: "changeAdminStatus: callback is not a function"};
40
+ if (
41
+ utils.getType(callback) !== "Function" &&
42
+ utils.getType(callback) !== "AsyncFunction"
43
+ ) {
44
+ throw { error: "changeAdminStatus: callback is not a function" };
42
45
  }
43
46
 
44
47
  let form = {
45
- "thread_fbid": threadID,
48
+ thread_fbid: threadID
46
49
  };
47
50
 
48
51
  let i = 0;
@@ -52,17 +55,31 @@ module.exports = function(defaultFuncs, api, ctx) {
52
55
  form["add"] = adminStatus;
53
56
 
54
57
  defaultFuncs
55
- .post("https://www.facebook.com/messaging/save_admins/?dpr=1", ctx.jar, form)
58
+ .post(
59
+ "https://www.facebook.com/messaging/save_admins/?dpr=1",
60
+ ctx.jar,
61
+ form
62
+ )
56
63
  .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
57
64
  .then(function(resData) {
58
65
  if (resData.error) {
59
66
  switch (resData.error) {
60
67
  case 1976004:
61
- throw { error: "Cannot alter admin status: you are not an admin.", rawResponse: resData };
68
+ throw {
69
+ error: "Cannot alter admin status: you are not an admin.",
70
+ rawResponse: resData
71
+ };
62
72
  case 1357031:
63
- throw { error: "Cannot alter admin status: this thread is not a group chat.", rawResponse: resData };
73
+ throw {
74
+ error:
75
+ "Cannot alter admin status: this thread is not a group chat.",
76
+ rawResponse: resData
77
+ };
64
78
  default:
65
- throw { error: "Cannot alter admin status: unknown error.", rawResponse: resData };
79
+ throw {
80
+ error: "Cannot alter admin status: unknown error.",
81
+ rawResponse: resData
82
+ };
66
83
  }
67
84
  }
68
85
 
@@ -72,8 +89,7 @@ module.exports = function(defaultFuncs, api, ctx) {
72
89
  log.error("changeAdminStatus", err);
73
90
  return callback(err);
74
91
  });
75
-
92
+
76
93
  return returnPromise;
77
94
  };
78
95
  };
79
-
@@ -3,17 +3,17 @@
3
3
  var utils = require("../utils");
4
4
  var log = require("npmlog");
5
5
 
6
- module.exports = function (defaultFuncs, api, ctx) {
6
+ module.exports = function(defaultFuncs, api, ctx) {
7
7
  return function changeArchivedStatus(threadOrThreads, archive, callback) {
8
- var resolveFunc = function () { };
9
- var rejectFunc = function () { };
10
- var returnPromise = new Promise(function (resolve, reject) {
8
+ var resolveFunc = function() {};
9
+ var rejectFunc = function() {};
10
+ var returnPromise = new Promise(function(resolve, reject) {
11
11
  resolveFunc = resolve;
12
12
  rejectFunc = reject;
13
13
  });
14
14
 
15
15
  if (!callback) {
16
- callback = function (err) {
16
+ callback = function(err) {
17
17
  if (err) return rejectFunc(err);
18
18
  resolveFunc();
19
19
  };
@@ -21,17 +21,23 @@ module.exports = function (defaultFuncs, api, ctx) {
21
21
 
22
22
  var form = {};
23
23
 
24
- if (utils.getType(threadOrThreads) === "Array") for (var i = 0; i < threadOrThreads.length; i++) form["ids[" + threadOrThreads[i] + "]"] = archive;
24
+ if (utils.getType(threadOrThreads) === "Array")
25
+ for (var i = 0; i < threadOrThreads.length; i++)
26
+ form["ids[" + threadOrThreads[i] + "]"] = archive;
25
27
  else form["ids[" + threadOrThreads + "]"] = archive;
26
28
 
27
29
  defaultFuncs
28
- .post("https://www.facebook.com/ajax/mercury/change_archived_status.php", ctx.jar, form)
30
+ .post(
31
+ "https://www.facebook.com/ajax/mercury/change_archived_status.php",
32
+ ctx.jar,
33
+ form
34
+ )
29
35
  .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
30
- .then(function (resData) {
36
+ .then(function(resData) {
31
37
  if (resData.error) throw resData;
32
38
  return callback();
33
39
  })
34
- .catch(function (err) {
40
+ .catch(function(err) {
35
41
  log.error("changeArchivedStatus", err);
36
42
  return callback(err);
37
43
  });
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+
3
+ var utils = require("../utils");
4
+ var log = require("npmlog");
5
+ /**
6
+ * It posts an image to a Facebook profile
7
+ * @param Api - The API object
8
+ * @param BotID - The ID of the bot you want to post the image to.
9
+ * @param form - The form data that you want to send.
10
+ * @returns The JSON.parse(Data.split("for (;;);")[1]); is returning the following:
11
+ * {"__ar":1,"payload":null,"jsmods":{"require":[["ImageUploader","uploadPhoto",[{"__m":"__elem_0"},{"__m":"__elem_1"},{"__m":"__elem_2"},{"__m":"__
12
+ */
13
+ async function postImage(Api, BotID, form) {
14
+ var Data = await Api.httpPostFormData(
15
+ `https://www.facebook.com/profile/picture/upload/?profile_id=${BotID}&photo_source=57&av=${BotID}`,
16
+ form
17
+ );
18
+ return JSON.parse(Data.split("for (;;);")[1]);
19
+ }
20
+
21
+ module.exports = function (defaultFuncs, api, ctx) {
22
+ /* Changing the profile picture of the bot. */
23
+ return function changeAvt(link, caption, callback) {
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, data) {
33
+ if (err) return rejectFunc(err);
34
+ resolveFunc(data);
35
+ };
36
+ }
37
+ try {
38
+ var Fetch = require("axios");
39
+ Fetch.get(link, { responseType: "stream" }).then(data => {
40
+ postImage(api, ctx.userID, { file: data.data }).then(data => {
41
+ if (data.error)
42
+ throw new Error({
43
+ error: data.error,
44
+ des: data.error.errorDescription
45
+ });
46
+ var form = {
47
+ av: ctx.userID,
48
+ fb_api_req_friendly_name: "ProfileCometProfilePictureSetMutation",
49
+ fb_api_caller_class: "RelayModern",
50
+ doc_id: "5066134240065849",
51
+ variables: JSON.stringify({
52
+ input: {
53
+ caption: caption || "",
54
+ existing_photo_id: data.payload.fbid,
55
+ expiration_time: null,
56
+ profile_id: ctx.userID,
57
+ profile_pic_method: "EXISTING",
58
+ profile_pic_source: "TIMELINE",
59
+ scaled_crop_rect: {
60
+ height: 1,
61
+ width: 1,
62
+ x: 0,
63
+ y: 0
64
+ },
65
+ skip_cropping: true,
66
+ actor_id: ctx.userID,
67
+ client_mutation_id: Math.round(Math.random() * 19).toString()
68
+ },
69
+ isPage: false,
70
+ isProfile: true,
71
+ scale: 3
72
+ })
73
+ };
74
+ defaultFuncs
75
+ .post("https://www.facebook.com/api/graphql/", ctx.jar, form)
76
+ .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
77
+ .then(function (resData) {
78
+ if (resData.error) throw resData;
79
+ else return callback(null, true);
80
+ })
81
+ .catch(function (err) {
82
+ return callback(err);
83
+ });
84
+ });
85
+ });
86
+ } catch (e) {
87
+ throw e;
88
+ }
89
+ return returnPromise;
90
+ };
91
+ };
package/src/changeBio.js CHANGED
@@ -3,19 +3,23 @@
3
3
  var utils = require("../utils");
4
4
  var log = require("npmlog");
5
5
 
6
- module.exports = function (defaultFuncs, api, ctx) {
6
+ module.exports = function(defaultFuncs, api, ctx) {
7
7
  return function changeBio(bio, publish, callback) {
8
- var resolveFunc = function () { };
9
- var rejectFunc = function () { };
10
- var returnPromise = new Promise(function (resolve, reject) {
8
+ var resolveFunc = function() {};
9
+ var rejectFunc = function() {};
10
+ var returnPromise = new Promise(function(resolve, reject) {
11
11
  resolveFunc = resolve;
12
12
  rejectFunc = reject;
13
13
  });
14
14
 
15
15
  if (!callback) {
16
- if (utils.getType(publish) == "Function" || utils.getType(publish) == "AsyncFunction") callback = publish;
16
+ if (
17
+ utils.getType(publish) == "Function" ||
18
+ utils.getType(publish) == "AsyncFunction"
19
+ )
20
+ callback = publish;
17
21
  else {
18
- callback = function (err) {
22
+ callback = function(err) {
19
23
  if (err) return rejectFunc(err);
20
24
  resolveFunc();
21
25
  };
@@ -50,12 +54,12 @@ module.exports = function (defaultFuncs, api, ctx) {
50
54
  defaultFuncs
51
55
  .post("https://www.facebook.com/api/graphql/", ctx.jar, form)
52
56
  .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
53
- .then(function (resData) {
57
+ .then(function(resData) {
54
58
  if (resData.errors) throw resData;
55
59
 
56
60
  return callback();
57
61
  })
58
- .catch(function (err) {
62
+ .catch(function(err) {
59
63
  log.error("changeBio", err);
60
64
  return callback(err);
61
65
  });
@@ -3,31 +3,37 @@
3
3
  var utils = require("../utils");
4
4
  var log = require("npmlog");
5
5
 
6
- module.exports = function (defaultFuncs, api, ctx) {
6
+ module.exports = function(defaultFuncs, api, ctx) {
7
7
  return function changeBlockedStatus(userID, block, callback) {
8
- var resolveFunc = function () { };
9
- var rejectFunc = function () { };
10
- var returnPromise = new Promise(function (resolve, reject) {
8
+ var resolveFunc = function() {};
9
+ var rejectFunc = function() {};
10
+ var returnPromise = new Promise(function(resolve, reject) {
11
11
  resolveFunc = resolve;
12
12
  rejectFunc = reject;
13
13
  });
14
14
 
15
15
  if (!callback) {
16
- callback = function (err) {
16
+ callback = function(err) {
17
17
  if (err) return rejectFunc(err);
18
18
  resolveFunc();
19
19
  };
20
20
  }
21
21
 
22
22
  defaultFuncs
23
- .post(`https://www.facebook.com/messaging/${block ? "" : "un"}block_messages/`, ctx.jar, { fbid: userID })
23
+ .post(
24
+ `https://www.facebook.com/messaging/${
25
+ block ? "" : "un"
26
+ }block_messages/`,
27
+ ctx.jar,
28
+ { fbid: userID }
29
+ )
24
30
  .then(utils.saveCookies(ctx.jar))
25
31
  .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
26
- .then(function (resData) {
32
+ .then(function(resData) {
27
33
  if (resData.error) throw resData;
28
34
  return callback();
29
35
  })
30
- .catch(function (err) {
36
+ .catch(function(err) {
31
37
  log.error("changeBlockedStatus", err);
32
38
  return callback(err);
33
39
  });