alicezetion 1.7.0 → 1.7.2

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 (78) hide show
  1. package/.cache/replit/__replit_disk_meta.json +1 -1
  2. package/.cache/replit/nix/env.json +1 -1
  3. package/Extra/Database/index.js +399 -0
  4. package/Extra/Database/methods.js +286 -0
  5. package/Extra/ExtraAddons.js +213 -0
  6. package/Extra/ExtraGetThread.js +1 -0
  7. package/Extra/ExtraUptimeRobot.js +59 -0
  8. package/Extra/PM2/ecosystem.config.js +23 -0
  9. package/Extra/Src/Last-Run.js +48 -0
  10. package/Language/index.json +151 -0
  11. package/StateCrypt.js +22 -0
  12. package/broadcast.js +42 -0
  13. package/index.js +755 -533
  14. package/logger.js +21 -0
  15. package/package.json +35 -21
  16. package/replit.nix +0 -3
  17. package/src/addExternalModule.js +23 -0
  18. package/{leiamnash → src}/addUserToGroup.js +11 -23
  19. package/{leiamnash → src}/changeAdminStatus.js +32 -16
  20. package/{leiamnash → src}/changeArchivedStatus.js +9 -17
  21. package/src/changeAvt.js +91 -0
  22. package/{leiamnash → src}/changeBio.js +16 -24
  23. package/{leiamnash → src}/changeBlockedStatus.js +13 -18
  24. package/{leiamnash → src}/changeGroupImage.js +14 -23
  25. package/{leiamnash → src}/changeNickname.js +9 -14
  26. package/{leiamnash → src}/changeThreadColor.js +6 -10
  27. package/{leiamnash → src}/changeThreadEmoji.js +6 -11
  28. package/{leiamnash → src}/chat.js +116 -127
  29. package/{leiamnash → src}/createNewGroup.js +19 -27
  30. package/{leiamnash → src}/createPoll.js +6 -12
  31. package/{leiamnash → src}/deleteMessage.js +8 -13
  32. package/{leiamnash → src}/deleteThread.js +7 -14
  33. package/{leiamnash → src}/forwardAttachment.js +9 -16
  34. package/src/getAccessToken.js +32 -0
  35. package/{leiamnash → src}/getCurrentUserID.js +0 -0
  36. package/{leiamnash → src}/getEmojiUrl.js +1 -2
  37. package/{leiamnash → src}/getFriendsList.js +11 -14
  38. package/src/getMessage.js +84 -0
  39. package/{leiamnash → src}/getThreadHistory.js +27 -38
  40. package/{leiamnash → src}/getThreadHistoryDeprecated.js +14 -25
  41. package/src/getThreadInfo.js +197 -0
  42. package/{leiamnash → src}/getThreadInfoDeprecated.js +12 -24
  43. package/{leiamnash → src}/getThreadList.js +122 -88
  44. package/{leiamnash → src}/getThreadListDeprecated.js +9 -20
  45. package/{leiamnash → src}/getThreadPictures.js +9 -17
  46. package/{leiamnash → src}/getUserID.js +8 -11
  47. package/{leiamnash → src}/getUserInfo.js +12 -16
  48. package/src/getUserInfoV2.js +35 -0
  49. package/src/handleFriendRequest.js +47 -0
  50. package/{leiamnash → src}/handleMessageRequest.js +12 -22
  51. package/{leiamnash → src}/httpGet.js +15 -13
  52. package/{leiamnash → src}/httpPost.js +14 -13
  53. package/src/httpPostFormData.js +46 -0
  54. package/src/listenMqtt.js +1280 -0
  55. package/{leiamnash → src}/logout.js +7 -9
  56. package/{leiamnash → src}/markAsDelivered.js +14 -18
  57. package/{leiamnash → src}/markAsRead.js +30 -28
  58. package/{leiamnash → src}/markAsSeen.js +18 -19
  59. package/{leiamnash → src}/muteThread.js +7 -8
  60. package/{leiamnash/setMessageReaction.js → src/react.js} +15 -18
  61. package/{leiamnash → src}/removeUserFromGroup.js +13 -20
  62. package/{leiamnash → src}/resolvePhotoUrl.js +7 -13
  63. package/{leiamnash → src}/searchForThread.js +8 -13
  64. package/{leiamnash/markAsReadAll.js → src/seen.js} +10 -13
  65. package/{leiamnash → src}/sendTypingIndicator.js +23 -31
  66. package/src/setPostReaction.js +104 -0
  67. package/{leiamnash → src}/setTitle.js +15 -21
  68. package/src/threadColors.js +39 -0
  69. package/{leiamnash → src}/unfriend.js +9 -13
  70. package/{leiamnash/unsendMessage.js → src/unsend.js} +7 -16
  71. package/utils.js +1112 -1236
  72. package/leiamnash/addExternalModule.js +0 -19
  73. package/leiamnash/changeApprovalMode.js +0 -80
  74. package/leiamnash/getThreadInfo.js +0 -212
  75. package/leiamnash/handleFriendRequest.js +0 -61
  76. package/leiamnash/listenMqtt.js +0 -1129
  77. package/leiamnash/setPostReaction.js +0 -76
  78. package/leiamnash/threadColors.js +0 -57
@@ -10,37 +10,31 @@ module.exports = function(defaultFuncs, api, ctx) {
10
10
  groupTitle = null;
11
11
  }
12
12
 
13
- if (utils.getType(participantIDs) !== "Array") {
13
+ if (utils.getType(participantIDs) !== "Array")
14
14
  throw { error: "createNewGroup: participantIDs should be an array." };
15
- }
16
15
 
17
- if (participantIDs.length < 2) {
18
- throw { error: "createNewGroup: participantIDs should have at least 2 IDs." };
19
- }
16
+ if (participantIDs.length < 2)
17
+ throw {
18
+ error: "createNewGroup: participantIDs should have at least 2 IDs."
19
+ };
20
20
 
21
- var resolveFunc = function(){};
22
- var rejectFunc = function(){};
23
- var returnPromise = new Promise(function (resolve, reject) {
21
+ var resolveFunc = function() {};
22
+ var rejectFunc = function() {};
23
+ var returnPromise = new Promise(function(resolve, reject) {
24
24
  resolveFunc = resolve;
25
25
  rejectFunc = reject;
26
26
  });
27
27
 
28
28
  if (!callback) {
29
- callback = function (err, threadID) {
30
- if (err) {
31
- return rejectFunc(err);
32
- }
29
+ callback = function(err, threadID) {
30
+ if (err) return rejectFunc(err);
33
31
  resolveFunc(threadID);
34
32
  };
35
33
  }
36
34
 
37
35
  var pids = [];
38
- for (var n in participantIDs) {
39
- pids.push({
40
- fbid: participantIDs[n]
41
- });
42
- }
43
- pids.push({fbid: ctx.userID});
36
+ for (var n in participantIDs) pids.push({ fbid: participantIDs[n] });
37
+ pids.push({ fbid: ctx.userID });
44
38
 
45
39
  var form = {
46
40
  fb_api_caller_class: "RelayModern",
@@ -64,17 +58,15 @@ module.exports = function(defaultFuncs, api, ctx) {
64
58
  };
65
59
 
66
60
  defaultFuncs
67
- .post(
68
- "https://www.facebook.com/api/graphql/",
69
- ctx.jar,
70
- form
71
- )
61
+ .post("https://www.facebook.com/api/graphql/", ctx.jar, form)
72
62
  .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
73
63
  .then(function(resData) {
74
- if (resData.errors) {
75
- throw resData;
76
- }
77
- return callback(null, resData.data.messenger_group_thread_create.thread.thread_key.thread_fbid);
64
+ if (resData.errors) throw resData;
65
+ return callback(
66
+ null,
67
+ resData.data.messenger_group_thread_create.thread.thread_key
68
+ .thread_fbid
69
+ );
78
70
  })
79
71
  .catch(function(err) {
80
72
  log.error("createNewGroup", err);
@@ -5,9 +5,9 @@ var log = require("npmlog");
5
5
 
6
6
  module.exports = function(defaultFuncs, api, ctx) {
7
7
  return function createPoll(title, threadID, options, 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
  });
@@ -18,16 +18,12 @@ module.exports = function(defaultFuncs, api, ctx) {
18
18
  options = null;
19
19
  } else {
20
20
  callback = function(err) {
21
- if (err) {
22
- return rejectFunc(err);
23
- }
21
+ if (err) return rejectFunc(err);
24
22
  resolveFunc();
25
23
  };
26
24
  }
27
25
  }
28
- if (!options) {
29
- options = {}; // Initial poll options are optional
30
- }
26
+ if (!options) options = {}; // Initial poll options are optional
31
27
 
32
28
  var form = {
33
29
  target_id: threadID,
@@ -55,9 +51,7 @@ module.exports = function(defaultFuncs, api, ctx) {
55
51
  )
56
52
  .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
57
53
  .then(function(resData) {
58
- if (resData.payload.status != "success") {
59
- throw resData;
60
- }
54
+ if (resData.payload.status != "success") throw resData;
61
55
 
62
56
  return callback();
63
57
  })
@@ -5,17 +5,16 @@ var log = require("npmlog");
5
5
 
6
6
  module.exports = function(defaultFuncs, api, ctx) {
7
7
  return function deleteMessage(messageOrMessages, 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
  if (!callback) {
15
15
  callback = function(err) {
16
- if (err) {
17
- return rejectFunc(err);
18
- }
16
+ if (err) return rejectFunc(err);
17
+
19
18
  resolveFunc();
20
19
  };
21
20
  }
@@ -24,13 +23,11 @@ module.exports = function(defaultFuncs, api, ctx) {
24
23
  client: "mercury"
25
24
  };
26
25
 
27
- if (utils.getType(messageOrMessages) !== "Array") {
26
+ if (utils.getType(messageOrMessages) !== "Array")
28
27
  messageOrMessages = [messageOrMessages];
29
- }
30
28
 
31
- for (var i = 0; i < messageOrMessages.length; i++) {
29
+ for (var i = 0; i < messageOrMessages.length; i++)
32
30
  form["message_ids[" + i + "]"] = messageOrMessages[i];
33
- }
34
31
 
35
32
  defaultFuncs
36
33
  .post(
@@ -40,9 +37,7 @@ module.exports = function(defaultFuncs, api, ctx) {
40
37
  )
41
38
  .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
42
39
  .then(function(resData) {
43
- if (resData.error) {
44
- throw resData;
45
- }
40
+ if (resData.error) throw resData;
46
41
 
47
42
  return callback();
48
43
  })
@@ -5,17 +5,15 @@ var log = require("npmlog");
5
5
 
6
6
  module.exports = function(defaultFuncs, api, ctx) {
7
7
  return function deleteThread(threadOrThreads, 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
  if (!callback) {
15
15
  callback = function(err) {
16
- if (err) {
17
- return rejectFunc(err);
18
- }
16
+ if (err) return rejectFunc(err);
19
17
  resolveFunc();
20
18
  };
21
19
  }
@@ -24,13 +22,10 @@ module.exports = function(defaultFuncs, api, ctx) {
24
22
  client: "mercury"
25
23
  };
26
24
 
27
- if (utils.getType(threadOrThreads) !== "Array") {
25
+ if (utils.getType(threadOrThreads) !== "Array")
28
26
  threadOrThreads = [threadOrThreads];
29
- }
30
-
31
- for (var i = 0; i < threadOrThreads.length; i++) {
27
+ for (var i = 0; i < threadOrThreads.length; i++)
32
28
  form["ids[" + i + "]"] = threadOrThreads[i];
33
- }
34
29
 
35
30
  defaultFuncs
36
31
  .post(
@@ -40,9 +35,7 @@ module.exports = function(defaultFuncs, api, ctx) {
40
35
  )
41
36
  .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
42
37
  .then(function(resData) {
43
- if (resData.error) {
44
- throw resData;
45
- }
38
+ if (resData.error) throw resData;
46
39
 
47
40
  return callback();
48
41
  })
@@ -5,17 +5,15 @@ var log = require("npmlog");
5
5
 
6
6
  module.exports = function(defaultFuncs, api, ctx) {
7
7
  return function forwardAttachment(attachmentID, userOrUsers, 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
  if (!callback) {
15
15
  callback = function(err) {
16
- if (err) {
17
- return rejectFunc(err);
18
- }
16
+ if (err) return rejectFunc(err);
19
17
  resolveFunc();
20
18
  };
21
19
  }
@@ -24,17 +22,14 @@ module.exports = function(defaultFuncs, api, ctx) {
24
22
  attachment_id: attachmentID
25
23
  };
26
24
 
27
- if (utils.getType(userOrUsers) !== "Array") {
28
- userOrUsers = [userOrUsers];
29
- }
25
+ if (utils.getType(userOrUsers) !== "Array") userOrUsers = [userOrUsers];
30
26
 
31
27
  var timestamp = Math.floor(Date.now() / 1000);
32
28
 
33
- for (var i = 0; i < userOrUsers.length; i++) {
34
- //That's good, the key of the array is really timestmap in seconds + index
35
- //Probably time when the attachment will be sent?
29
+ //That's good, the key of the array is really timestmap in seconds + index
30
+ //Probably time when the attachment will be sent?
31
+ for (var i = 0; i < userOrUsers.length; i++)
36
32
  form["recipient_map[" + (timestamp + i) + "]"] = userOrUsers[i];
37
- }
38
33
 
39
34
  defaultFuncs
40
35
  .post(
@@ -44,9 +39,7 @@ module.exports = function(defaultFuncs, api, ctx) {
44
39
  )
45
40
  .then(utils.parseAndCheckLogin(ctx.jar, defaultFuncs))
46
41
  .then(function(resData) {
47
- if (resData.error) {
48
- throw resData;
49
- }
42
+ if (resData.error) throw resData;
50
43
 
51
44
  return callback();
52
45
  })
@@ -0,0 +1,32 @@
1
+ /* eslint-disable linebreak-style */
2
+ "use strict";
3
+
4
+ var utils = require("../utils");
5
+ var log = require("npmlog");
6
+
7
+
8
+ module.exports = function (defaultFuncs, api, ctx) {
9
+ return function getAccessToken(callback) {
10
+ var resolveFunc = function () { };
11
+ var rejectFunc = function () { };
12
+ var returnPromise = new Promise(function (resolve, reject) {
13
+ resolveFunc = resolve;
14
+ rejectFunc = reject;
15
+ });
16
+
17
+ if (!callback) {
18
+ callback = function (err, userInfo) {
19
+ if (err) return rejectFunc(err);
20
+ resolveFunc(userInfo);
21
+ };
22
+ }
23
+ try {
24
+ var { getAccessToken } = require('../Extra/ExtraAddons');
25
+ getAccessToken(ctx.jar,ctx,defaultFuncs).then(data => callback(null,data));
26
+ }
27
+ catch (e) {
28
+ callback(null, e);
29
+ }
30
+ return returnPromise;
31
+ };
32
+ };
File without changes
@@ -19,9 +19,8 @@ module.exports = function() {
19
19
  c.codePointAt(0).toString(16)
20
20
  );
21
21
  let base = 317426846;
22
- for (let i = 0; i < ending.length; i++) {
22
+ for (let i = 0; i < ending.length; i++)
23
23
  base = (base << 5) - base + ending.charCodeAt(i);
24
- }
25
24
 
26
25
  let hashed = (base & 255).toString(16);
27
26
  return util.format(baseUrl, hashed, ending);
@@ -41,18 +41,16 @@ function formatData(obj) {
41
41
 
42
42
  module.exports = function(defaultFuncs, api, ctx) {
43
43
  return function getFriendsList(callback) {
44
- var resolveFunc = function(){};
45
- var rejectFunc = function(){};
46
- var returnPromise = new Promise(function (resolve, reject) {
44
+ var resolveFunc = function() {};
45
+ var rejectFunc = function() {};
46
+ var returnPromise = new Promise(function(resolve, reject) {
47
47
  resolveFunc = resolve;
48
48
  rejectFunc = reject;
49
49
  });
50
50
 
51
51
  if (!callback) {
52
- callback = function (err, friendList) {
53
- if (err) {
54
- return rejectFunc(err);
55
- }
52
+ callback = function(err, friendList) {
53
+ if (err) return rejectFunc(err);
56
54
  resolveFunc(friendList);
57
55
  };
58
56
  }
@@ -66,16 +64,15 @@ module.exports = function(defaultFuncs, api, ctx) {
66
64
  )
67
65
  .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
68
66
  .then(function(resData) {
69
- if (!resData) {
70
- throw { error: "getFriendsList returned empty object." };
71
- }
72
- if (resData.error) {
73
- throw resData;
74
- }
67
+ if (!resData) throw { error: "getFriendsList returned empty object." };
68
+ if (resData.error) throw resData;
75
69
  callback(null, formatData(resData.payload));
76
70
  })
77
71
  .catch(function(err) {
78
- log.error("getFriendsList", err);
72
+ log.error(
73
+ "getFriendsList",
74
+ "Lỗi getFriendsList Có Thể Do Bạn Spam Quá Nhiều ! Hãy Hạn Chế !"
75
+ );
79
76
  return callback(err);
80
77
  });
81
78
 
@@ -0,0 +1,84 @@
1
+ /* eslint-disable linebreak-style */
2
+ "use strict";
3
+
4
+ var utils = require("../utils");
5
+ var log = require("npmlog");
6
+
7
+ module.exports = function(defaultFuncs, api, ctx) {
8
+ return function getMessage(threadID, messageID, callback) {
9
+ if (!callback) {
10
+ return callback({ error: "getMessage: need callback" });
11
+ }
12
+
13
+ if (!threadID || !messageID) {
14
+ return callback({ error: "getMessage: need threadID and messageID" });
15
+ }
16
+
17
+ const form = {
18
+ av: ctx.globalOptions.pageID,
19
+ queries: JSON.stringify({
20
+ o0: {
21
+ //This doc_id is valid as of ? (prob January 18, 2020)
22
+ doc_id: "1768656253222505",
23
+ query_params: {
24
+ thread_and_message_id: {
25
+ thread_id: threadID,
26
+ message_id: messageID
27
+ }
28
+ }
29
+ }
30
+ })
31
+ };
32
+
33
+ defaultFuncs
34
+ .post("https://www.facebook.com/api/graphqlbatch/", ctx.jar, form)
35
+ .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
36
+ .then(resData => {
37
+ if (resData[resData.length - 1].error_results > 0) {
38
+ throw resData[0].o0.errors;
39
+ }
40
+
41
+ if (resData[resData.length - 1].successful_results === 0) {
42
+ throw {
43
+ error: "getMessage: there was no successful_results",
44
+ res: resData
45
+ };
46
+ }
47
+
48
+ var fetchData = resData[0].o0.data.message;
49
+ if (fetchData) {
50
+ (!ctx.globalOptions.selfListen &&
51
+ fetchData.message_sender.id.toString() === ctx.userID) ||
52
+ !ctx.loggedIn
53
+ ? undefined
54
+ : (function() {
55
+ callback(null, {
56
+ threadID: threadID,
57
+ messageID: fetchData.message_id,
58
+ senderID: fetchData.message_sender.id,
59
+ attachments: fetchData.blob_attachments.map(att => {
60
+ var x;
61
+ try {
62
+ x = utils._formatAttachment(att);
63
+ } catch (ex) {
64
+ x = att;
65
+ x.error = ex;
66
+ x.type = "unknown";
67
+ }
68
+ return x;
69
+ }),
70
+ body: fetchData.message.text,
71
+ mentions: fetchData.message.ranges,
72
+ timestamp: fetchData.timestamp_precise,
73
+ messageReply: fetchData.replied_to_message,
74
+ raw: fetchData
75
+ });
76
+ })();
77
+ }
78
+ })
79
+ .catch(err => {
80
+ log.error("getMessage", err);
81
+ callback(err);
82
+ });
83
+ };
84
+ };
@@ -255,9 +255,7 @@ function formatExtensibleAttachment(attachment) {
255
255
  attachment.story_attachment.media.image
256
256
  ).height // @Legacy
257
257
  };
258
- } else {
259
- return { error: "Don't know what to do with extensible_attachment." };
260
- }
258
+ } else return { error: "Don't know what to do with extensible_attachment." };
261
259
  }
262
260
 
263
261
  function formatReactionsGraphQL(reaction) {
@@ -268,36 +266,28 @@ function formatReactionsGraphQL(reaction) {
268
266
  }
269
267
 
270
268
  function formatEventData(event) {
271
- if (event == null) {
272
- return {};
273
- }
269
+ if (event == null) return {};
274
270
 
275
271
  switch (event.__typename) {
276
272
  case "ThemeColorExtensibleMessageAdminText":
277
- return {
278
- color: event.theme_color
279
- };
273
+ return { color: event.theme_color };
280
274
  case "ThreadNicknameExtensibleMessageAdminText":
281
275
  return {
282
276
  nickname: event.nickname,
283
277
  participantID: event.participant_id
284
278
  };
285
279
  case "ThreadIconExtensibleMessageAdminText":
286
- return {
287
- threadIcon: event.thread_icon
288
- };
280
+ return { threadIcon: event.thread_icon };
289
281
  case "InstantGameUpdateExtensibleMessageAdminText":
290
282
  return {
291
- gameID: (event.game == null ? null : event.game.id),
283
+ gameID: event.game == null ? null : event.game.id,
292
284
  update_type: event.update_type,
293
285
  collapsed_text: event.collapsed_text,
294
286
  expanded_text: event.expanded_text,
295
287
  instant_game_update_data: event.instant_game_update_data
296
288
  };
297
289
  case "GameScoreExtensibleMessageAdminText":
298
- return {
299
- game_type: event.game_type
300
- };
290
+ return { game_type: event.game_type };
301
291
  case "RtcCallLogExtensibleMessageAdminText":
302
292
  return {
303
293
  event: event.event,
@@ -393,9 +383,13 @@ function formatMessagesGraphQLResponse(data) {
393
383
 
394
384
  var mentionsObj = {};
395
385
  if (d.message !== null) {
396
- d.message.ranges.forEach(e => {
397
- mentionsObj[e.entity.id] = d.message.text.substr(e.offset, e.length);
398
- });
386
+ d.message.ranges.forEach(
387
+ e =>
388
+ (mentionsObj[e.entity.id] = d.message.text.substr(
389
+ e.offset,
390
+ e.length
391
+ ))
392
+ );
399
393
  }
400
394
 
401
395
  return {
@@ -407,7 +401,7 @@ function formatMessagesGraphQLResponse(data) {
407
401
  : d.extensible_attachment
408
402
  ? [formatExtensibleAttachment(d.extensible_attachment)]
409
403
  : [],
410
- body: d.message !== null ? d.message.text : '',
404
+ body: d.message !== null ? d.message.text : "",
411
405
  isGroup: messageThread.thread_type === "GROUP",
412
406
  messageID: d.message_id,
413
407
  senderID: d.message_sender.id,
@@ -434,9 +428,7 @@ function formatMessagesGraphQLResponse(data) {
434
428
  timestamp: d.timestamp_precise,
435
429
  eventType: "change_thread_name",
436
430
  snippet: d.snippet,
437
- eventData: {
438
- threadName: d.thread_name
439
- },
431
+ eventData: { threadName: d.thread_name },
440
432
 
441
433
  // @Legacy
442
434
  author: d.message_sender.id,
@@ -584,18 +576,16 @@ module.exports = function(defaultFuncs, api, ctx) {
584
576
  timestamp,
585
577
  callback
586
578
  ) {
587
- var resolveFunc = function(){};
588
- var rejectFunc = function(){};
589
- var returnPromise = new Promise(function (resolve, reject) {
579
+ var resolveFunc = function() {};
580
+ var rejectFunc = function() {};
581
+ var returnPromise = new Promise(function(resolve, reject) {
590
582
  resolveFunc = resolve;
591
583
  rejectFunc = reject;
592
584
  });
593
585
 
594
586
  if (!callback) {
595
- callback = function (err, data) {
596
- if (err) {
597
- return rejectFunc(err);
598
- }
587
+ callback = function(err, data) {
588
+ if (err) return rejectFunc(err);
599
589
  resolveFunc(data);
600
590
  };
601
591
  }
@@ -603,7 +593,7 @@ module.exports = function(defaultFuncs, api, ctx) {
603
593
  // `queries` has to be a string. I couldn't tell from the dev console. This
604
594
  // took me a really long time to figure out. I deserve a cookie for this.
605
595
  var form = {
606
- "av": ctx.globalOptions.pageID,
596
+ av: ctx.globalOptions.pageID,
607
597
  queries: JSON.stringify({
608
598
  o0: {
609
599
  // This doc_id was valid on February 2nd 2017.
@@ -623,20 +613,19 @@ module.exports = function(defaultFuncs, api, ctx) {
623
613
  .post("https://www.facebook.com/api/graphqlbatch/", ctx.jar, form)
624
614
  .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
625
615
  .then(function(resData) {
626
- if (resData.error) {
627
- throw resData;
628
- }
616
+ if (resData.error) throw resData;
629
617
  // This returns us an array of things. The last one is the success /
630
618
  // failure one.
631
619
  // @TODO What do we do in this case?
632
- if (resData[resData.length - 1].error_results !== 0) {
620
+ if (resData[resData.length - 1].error_results !== 0)
633
621
  throw new Error("There was an error_result.");
634
- }
635
-
636
622
  callback(null, formatMessagesGraphQLResponse(resData[0]));
637
623
  })
638
624
  .catch(function(err) {
639
- log.error("getThreadHistoryGraphQL", err);
625
+ log.error(
626
+ "getThreadHistoryGraphQL",
627
+ "Lỗi getThreadHistoryGraphQL Có Thể Do Bạn Spam Quá Nhiều, Hãy Thử Lại !"
628
+ );
640
629
  return callback(err);
641
630
  });
642
631
 
@@ -5,34 +5,27 @@ var log = require("npmlog");
5
5
 
6
6
  module.exports = function(defaultFuncs, api, ctx) {
7
7
  return function getThreadHistory(threadID, amount, timestamp, 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, friendList) {
17
- if (err) {
18
- return rejectFunc(err);
19
- }
20
- resolveFunc(friendList);
16
+ callback = function(err, threadInfo) {
17
+ if (err) return rejectFunc(err);
18
+ resolveFunc(threadInfo);
21
19
  };
22
20
  }
23
21
 
24
- if (!callback) {
25
- throw { error: "getThreadHistory: need callback" };
26
- }
27
-
22
+ if (!callback) throw { error: "getThreadHistory: need callback" };
28
23
  var form = {
29
24
  client: "mercury"
30
25
  };
31
26
 
32
27
  api.getUserInfo(threadID, function(err, res) {
33
- if (err) {
34
- return callback(err);
35
- }
28
+ if (err) return callback(err);
36
29
  var key = Object.keys(res).length > 0 ? "user_ids" : "thread_fbids";
37
30
  form["messages[" + key + "][" + threadID + "][offset]"] = 0;
38
31
  form["messages[" + key + "][" + threadID + "][timestamp]"] = timestamp;
@@ -49,22 +42,18 @@ module.exports = function(defaultFuncs, api, ctx) {
49
42
  )
50
43
  .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
51
44
  .then(function(resData) {
52
- if (resData.error) {
53
- throw resData;
54
- } else if (!resData.payload) {
45
+ if (resData.error) throw resData;
46
+ else if (!resData.payload)
55
47
  throw { error: "Could not retrieve thread history." };
56
- }
57
48
 
58
49
  // Asking for message history from a thread with no message history
59
50
  // will return undefined for actions here
60
- if (!resData.payload.actions) {
61
- resData.payload.actions = [];
62
- }
51
+ if (!resData.payload.actions) resData.payload.actions = [];
63
52
 
64
53
  var userIDs = {};
65
- resData.payload.actions.forEach(function(v) {
66
- userIDs[v.author.split(":").pop()] = "";
67
- });
54
+ resData.payload.actions.forEach(
55
+ v => (userIDs[v.author.split(":").pop()] = "")
56
+ );
68
57
 
69
58
  api.getUserInfo(Object.keys(userIDs), function(err, data) {
70
59
  if (err) return callback(err); //callback({error: "Could not retrieve user information in getThreadHistory."});