ainzfb-new 1.6.1-test → 1.7.7-iu0tg78

Sign up to get free protection for your applications and to get access to all the features.
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
  });