@cexy/hoonfca 1.0.0 → 1.0.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 (98) 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 +745 -433
  5. package/package.json +45 -6
  6. package/src/addExternalModule.js +14 -16
  7. package/src/addUserToGroup.js +45 -30
  8. package/src/changeAdminStatus.js +39 -42
  9. package/src/changeApprovalMode.js +79 -0
  10. package/src/changeArchivedStatus.js +19 -15
  11. package/src/changeBio.js +18 -16
  12. package/src/changeBlockedStatus.js +14 -12
  13. package/src/changeBlockedStatusMqtt.js +38 -17
  14. package/src/changeGroupImage.js +100 -77
  15. package/src/changeNickname.js +12 -11
  16. package/src/changeThreadColor.js +25 -16
  17. package/src/changeThreadEmoji.js +11 -10
  18. package/src/createNewGroup.js +21 -14
  19. package/src/createPoll.js +87 -21
  20. package/src/deleteMessage.js +18 -17
  21. package/src/deleteThread.js +18 -17
  22. package/src/editMessage.js +28 -31
  23. package/src/forwardAttachment.js +22 -19
  24. package/src/forwardMessage.js +63 -0
  25. package/src/getCurrentUserID.js +4 -2
  26. package/src/getEmojiUrl.js +20 -9
  27. package/src/getFriendsList.js +21 -18
  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 +277 -126
  34. package/src/getThreadInfo.js +143 -115
  35. package/src/getThreadList.js +216 -143
  36. package/src/getThreadPictures.js +26 -32
  37. package/src/getUserID.js +13 -14
  38. package/src/getUserInfo.js +107 -68
  39. package/src/handleFriendRequest.js +16 -15
  40. package/src/handleMessageRequest.js +15 -15
  41. package/src/httpGet.js +36 -31
  42. package/src/httpPost.js +36 -31
  43. package/src/listenMqtt.js +705 -370
  44. package/src/logout.js +26 -28
  45. package/src/markAsDelivered.js +22 -17
  46. package/src/markAsRead.js +63 -49
  47. package/src/markAsReadAll.js +17 -13
  48. package/src/markAsSeen.js +23 -19
  49. package/src/muteThread.js +17 -14
  50. package/src/pinMessage.js +23 -22
  51. package/src/removeUserFromGroup.js +42 -22
  52. package/src/resolvePhotoUrl.js +15 -17
  53. package/src/searchForThread.js +18 -20
  54. package/src/searchUsers.js +89 -0
  55. package/src/sendComment.js +161 -0
  56. package/src/sendMessage.js +65 -52
  57. package/src/sendTypingIndicator.js +173 -48
  58. package/src/setBio.js +86 -0
  59. package/src/setMessageReaction.js +76 -16
  60. package/src/setPostReaction.js +29 -61
  61. package/src/setTheme.js +313 -0
  62. package/src/setTitle.js +27 -37
  63. package/src/shareContact.js +34 -82
  64. package/src/shareLink.js +56 -99
  65. package/src/threadColors.js +35 -97
  66. package/src/unfriend.js +15 -20
  67. package/src/unsendMessage.js +71 -18
  68. package/utils.js +1000 -472
  69. package/README.md +0 -83
  70. package/replit.nix +0 -3
  71. package/src/changeAvatar.js +0 -89
  72. package/src/changeCover.js +0 -92
  73. package/src/changeName.js +0 -106
  74. package/src/changeUsername.js +0 -80
  75. package/src/createCommentPost.js +0 -196
  76. package/src/createPost.js +0 -285
  77. package/src/data/getThreadInfo.json +0 -1
  78. package/src/follow.js +0 -71
  79. package/src/getAccess.js +0 -130
  80. package/src/getAvatarUser.js +0 -88
  81. package/src/getBotInitialData.js +0 -59
  82. package/src/getCtx.js +0 -5
  83. package/src/getMessage.js +0 -827
  84. package/src/getOptions.js +0 -5
  85. package/src/getRegion.js +0 -7
  86. package/src/getThreadHistoryDeprecated.js +0 -95
  87. package/src/getThreadInfoDeprecated.js +0 -77
  88. package/src/getThreadListDeprecated.js +0 -86
  89. package/src/httpPostFormData.js +0 -58
  90. package/src/listenNotification.js +0 -96
  91. package/src/refreshFb_dtsg.js +0 -75
  92. package/src/searchStickers.js +0 -59
  93. package/src/sendMessageMqtt.js +0 -326
  94. package/src/setMessageReactionMqtt.js +0 -74
  95. package/src/setProfileGuard.js +0 -66
  96. package/src/setStoryReaction.js +0 -97
  97. package/src/stopListenMqtt.js +0 -47
  98. package/src/uploadAttachment.js +0 -98
package/src/shareLink.js CHANGED
@@ -1,105 +1,62 @@
1
1
  "use strict";
2
2
 
3
3
  var utils = require("../utils");
4
+ var log = require("npmlog");
4
5
 
5
6
  module.exports = function (defaultFuncs, api, ctx) {
6
- return async function shareLink(text, url, threadID, callback) {
7
- var resolveFunc = function () {};
8
- var rejectFunc = function () {};
9
- var returnPromise = new Promise(function (resolve, reject) {
10
- resolveFunc = resolve;
11
- rejectFunc = reject;
12
- });
13
-
14
- if (!callback) {
15
- callback = function (err, data) {
16
- if (err) return rejectFunc(err);
17
- resolveFunc(data);
18
- };
19
- }
20
-
21
- if (!ctx.mqttClient) {
22
- return callback({ error: "Not connected to MQTT" });
23
- }
24
-
25
- if (!threadID) {
26
- return callback({ error: "ThreadID is required." });
27
- }
28
-
29
- if (!url) {
30
- return callback({ error: "URL is required." });
31
- }
32
-
33
- // safe initialization of request counters
34
- if (ctx.req_ID === undefined || ctx.req_ID === null) {
35
- ctx.req_ID = 0;
36
- }
37
- if (!ctx.callback_Task) {
38
- ctx.callback_Task = {};
39
- }
40
-
41
- const currentReqID = ++ctx.req_ID;
42
- const threadIDStr = threadID.toString();
43
-
44
- const payload = {
45
- "app_id": "2220391788200892",
46
- "payload": JSON.stringify({
47
- tasks: [{
48
- label: 46,
49
- payload: JSON.stringify({
50
- "otid": utils.generateOfflineThreadingID(),
51
- "source": 524289,
52
- "sync_group": 1,
53
- "send_type": 6,
54
- "mark_thread_read": 0,
55
- "url": url,
56
- "text": text || "",
57
- "thread_id": threadIDStr,
58
- "initiating_source": 0
59
- }),
60
- queue_name: threadIDStr,
61
- task_id: Math.floor(Math.random() * 1001),
62
- failure_count: null,
63
- }],
64
- epoch_id: parseInt(utils.generateOfflineThreadingID()),
65
- version_id: '7191105584331330',
66
- }),
67
- "request_id": currentReqID,
68
- "type": 3
69
- };
70
-
71
- ctx.callback_Task[currentReqID] = {
72
- callback,
73
- type: "shareLink"
74
- };
75
-
76
- // fallback trigger to reqCallbacks if used by the library
77
- if (ctx.reqCallbacks) {
78
- ctx.reqCallbacks[currentReqID] = callback;
79
- }
80
-
81
- ctx.mqttClient.publish(
82
- '/ls_req',
83
- JSON.stringify(payload),
84
- {
85
- qos: 1,
86
- retain: false,
87
- },
88
- function (err, data) {
89
- if (err) {
90
- utils.error("shareLink", err);
91
- // clean up callback store on error
92
- delete ctx.callback_Task[currentReqID];
93
- if (ctx.reqCallbacks) delete ctx.reqCallbacks[currentReqID];
94
- return callback(err);
95
- }
96
- // if there is no global listener, execute immediately on success
97
- if (!ctx.reqCallbacks && ctx.callback_Task[currentReqID]) {
98
- callback(null, data);
99
- }
100
- }
101
- );
102
-
103
- return returnPromise;
104
- };
7
+ return async function shareLink(text, url, threadID, callback) {
8
+ if (!ctx.mqttClient) {
9
+ throw new Error("Not connected to MQTT");
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
+ if (!callback) {
19
+ callback = function (err, data) {
20
+ if (err) return rejectFunc(err);
21
+ resolveFunc(data);
22
+ };
23
+ }
24
+ let count_req = 0;
25
+ ctx.mqttClient.publish(
26
+ "/ls_req",
27
+ JSON.stringify({
28
+ app_id: "2220391788200892",
29
+ payload: JSON.stringify({
30
+ tasks: [
31
+ {
32
+ label: 46,
33
+ payload: JSON.stringify({
34
+ otid: utils.generateOfflineThreadingID(),
35
+ source: 524289,
36
+ sync_group: 1,
37
+ send_type: 6,
38
+ mark_thread_read: 0,
39
+ url: url || "",
40
+ text: text || "",
41
+ thread_id: threadID,
42
+ initiating_source: 0,
43
+ }),
44
+ queue_name: threadID,
45
+ task_id: (Math.random() * 1001) << 0,
46
+ failure_count: null,
47
+ },
48
+ ],
49
+ epoch_id: utils.generateOfflineThreadingID(),
50
+ version_id: "7191105584331330",
51
+ }),
52
+ request_id: ++count_req,
53
+ type: 3,
54
+ }),
55
+ {
56
+ qos: 1,
57
+ retain: false,
58
+ },
59
+ );
60
+ return returnPromise;
61
+ };
105
62
  };
@@ -1,20 +1,40 @@
1
1
  "use strict";
2
2
 
3
3
  module.exports = function (_defaultFuncs, _api, _ctx) {
4
- const themes = {
5
- // #region Backward compatibility mapping
6
- MessengerBlue: "196241301102133", // DefaultBlue
7
- Viking: "1928399724138152", // TealBlue
8
- GoldenPoppy: "174636906462322", // Yellow
9
- RadicalRed: "2129984390566328", // Red
10
- Shocking: "2058653964378557", // LavenderPurple
11
- FreeSpeechGreen: "2136751179887052", // Green
12
- Pumpkin: "175615189761153", // Orange
13
- LightCoral: "980963458735625", // CoralPink
14
- MediumSlateBlue: "234137870477637", // BrightPurple
15
- DeepSkyBlue: "2442142322678320", // AquaBlue
16
- BrilliantRose: "169463077092846", // HotPink
17
- // #endregion
4
+ // Currently the only colors that can be passed to api.changeThreadColor(); may change if Facebook adds more
5
+ return {
6
+ //Old hex colors.
7
+ ////MessengerBlue: null,
8
+ ////Viking: "#44bec7",
9
+ ////GoldenPoppy: "#ffc300",
10
+ ////RadicalRed: "#fa3c4c",
11
+ ////Shocking: "#d696bb",
12
+ ////PictonBlue: "#6699cc",
13
+ ////FreeSpeechGreen: "#13cf13",
14
+ ////Pumpkin: "#ff7e29",
15
+ ////LightCoral: "#e68585",
16
+ ////MediumSlateBlue: "#7646ff",
17
+ ////DeepSkyBlue: "#20cef5",
18
+ ////Fern: "#67b868",
19
+ ////Cameo: "#d4a88c",
20
+ ////BrilliantRose: "#ff5ca1",
21
+ ////BilobaFlower: "#a695c7"
22
+
23
+ //#region This part is for backward compatibly
24
+ //trying to match the color one-by-one. kill me plz
25
+ MessengerBlue: "196241301102133", //DefaultBlue
26
+ Viking: "1928399724138152", //TealBlue
27
+ GoldenPoppy: "174636906462322", //Yellow
28
+ RadicalRed: "2129984390566328", //Red
29
+ Shocking: "2058653964378557", //LavenderPurple
30
+ FreeSpeechGreen: "2136751179887052", //Green
31
+ Pumpkin: "175615189761153", //Orange
32
+ LightCoral: "980963458735625", //CoralPink
33
+ MediumSlateBlue: "234137870477637", //BrightPurple
34
+ DeepSkyBlue: "2442142322678320", //AquaBlue
35
+ BrilliantRose: "169463077092846", //HotPink
36
+ //i've tried my best, everything else can't be mapped. (or is it?) -UIRI 2020
37
+ //#endregion
18
38
 
19
39
  DefaultBlue: "196241301102133",
20
40
  HotPink: "169463077092846",
@@ -32,88 +52,6 @@ module.exports = function (_defaultFuncs, _api, _ctx) {
32
52
  Berry: "164535220883264",
33
53
  Citrus: "370940413392601",
34
54
  Candy: "205488546921017",
35
-
36
- Earth: "1833559466821043",
37
- Support: "365557122117011",
38
- Music: "339021464972092",
39
- Pride: "1652456634878319",
40
- DoctorStrange: "538280997628317",
41
- LoFi: "1060619084701625",
42
- Sky: "3190514984517598",
43
- LunarNewYear: "357833546030778",
44
- Celebration: "627144732056021",
45
- Chill: "390127158985345",
46
- StrangerThings: "1059859811490132",
47
- Dune: "1455149831518874",
48
- Care: "275041734441112",
49
- Astrology: "3082966625307060",
50
- JBalvin: "184305226956268",
51
- Birthday: "621630955405500",
52
- Cottagecore: "539927563794799",
53
- Ocean: "736591620215564",
54
- Love: "741311439775765",
55
- TieDye: "230032715012014",
56
- Monochrome: "788274591712841",
57
- Default: "3259963564026002",
58
- Rocket: "582065306070020",
59
- Berry2: "724096885023603",
60
- Candy2: "624266884847972",
61
- Unicorn: "273728810607574",
62
- Tropical: "262191918210707",
63
- Maple: "2533652183614000",
64
- Sushi: "909695489504566",
65
- Citrus2: "557344741607350",
66
- Lollipop: "280333826736184",
67
- Shadow: "271607034185782",
68
- Rose: "1257453361255152",
69
- Lavender: "571193503540759",
70
- Tulip: "2873642949430623",
71
- Classic: "3273938616164733",
72
- Peach: "3022526817824329",
73
- Honey: "672058580051520",
74
- Kiwi: "3151463484918004",
75
- Grape: "193497045377796",
76
-
77
- NonBinary: "737761000603635",
78
-
79
- ThankfulForFriends: "1318983195536293",
80
- Transgender: "504518465021637",
81
- TaylorSwift: "769129927636836",
82
- NationalComingOutDay: "788102625833584",
83
- Autumn: "822549609168155",
84
- Cyberpunk2077: "780962576430091",
85
-
86
- MothersDay: "1288506208402340",
87
- APAHM: "121771470870245",
88
- Parenthood: "810978360551741",
89
- StarWars: "1438011086532622",
90
- GuardianOfTheGalaxy: "101275642962533",
91
- Bloom: "158263147151440",
92
- BubbleTea: "195296273246380",
93
- Basketball: "6026716157422736",
94
- ElephantsAndFlowers: "693996545771691"
55
+ //StarWars: "809305022860427" Removed.
95
56
  };
96
-
97
- // কেস-ইনসেনসিটিভ সার্চ বা ফলব্যাকের সুবিধাসহ অবজেক্টটি রিটার্ন করা হচ্ছে
98
- const themeMap = { ...themes };
99
-
100
- // ডাইনামিকালি আইডি বের করার একটি হেল্পার মেথড
101
- themeMap.getThemeID = function (name) {
102
- if (!name) return themes.DefaultBlue;
103
- const searchName = name.toString().toLowerCase().replace(/\s+/g, "");
104
-
105
- // থিমের অবজেক্ট থেকে মিলিয়ে দেখা হচ্ছে
106
- for (const key of Object.keys(themes)) {
107
- if (key.toLowerCase() === searchName) {
108
- return themes[key];
109
- }
110
- }
111
- // যদি আইডি সরাসরি পাস করা হয়, সেটিই ফেরত যাবে
112
- if (/^\d+$/.test(name)) {
113
- return name.toString();
114
- }
115
- return themes.DefaultBlue;
116
- };
117
-
118
- return themeMap;
119
57
  };
package/src/unfriend.js CHANGED
@@ -1,55 +1,50 @@
1
1
  "use strict";
2
2
 
3
3
  var utils = require("../utils");
4
+ var log = require("npmlog");
4
5
 
5
- module.exports = function(defaultFuncs, api, ctx) {
6
- return function unFriend(userID, callback) {
7
- var resolveFunc = function(){};
8
- var rejectFunc = function(){};
6
+ module.exports = function (defaultFuncs, api, ctx) {
7
+ return function unsendMessage(userID, callback) {
8
+ var resolveFunc = function () {};
9
+ var rejectFunc = function () {};
9
10
  var returnPromise = new Promise(function (resolve, reject) {
10
11
  resolveFunc = resolve;
11
12
  rejectFunc = reject;
12
13
  });
13
14
 
14
15
  if (!callback) {
15
- callback = function (err, data) {
16
+ callback = function (err, friendList) {
16
17
  if (err) {
17
18
  return rejectFunc(err);
18
19
  }
19
- resolveFunc(data);
20
+ resolveFunc(friendList);
20
21
  };
21
22
  }
22
23
 
23
- if (!userID) {
24
- return callback({ error: "unFriend: userID is required." });
25
- }
26
-
27
24
  var form = {
28
- uid: userID.toString(),
25
+ uid: userID,
29
26
  unref: "bd_friends_tab",
30
27
  floc: "friends_tab",
31
- "nctr[_mod]": "pagelet_timeline_app_collection_" + ctx.userID + ":2356318349:2"
28
+ "nctr[_mod]":
29
+ "pagelet_timeline_app_collection_" + ctx.userID + ":2356318349:2",
32
30
  };
33
31
 
34
32
  defaultFuncs
35
33
  .post(
36
34
  "https://www.facebook.com/ajax/profile/removefriendconfirm.php",
37
35
  ctx.jar,
38
- form
36
+ form,
39
37
  )
40
38
  .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
41
- .then(function(resData) {
42
- if (!resData) {
43
- throw { error: "unFriend returned empty response." };
44
- }
39
+ .then(function (resData) {
45
40
  if (resData.error) {
46
41
  throw resData;
47
42
  }
48
43
 
49
- return callback(null, resData);
44
+ return callback();
50
45
  })
51
- .catch(function(err) {
52
- utils.error("unFriend", err);
46
+ .catch(function (err) {
47
+ log.error("unfriend", err);
53
48
  return callback(err);
54
49
  });
55
50
 
@@ -1,51 +1,104 @@
1
1
  "use strict";
2
2
 
3
- const utils = require("../utils");
3
+ var utils = require("../utils");
4
+ var log = require("npmlog");
5
+ const { generateOfflineThreadingID } = require("../utils");
4
6
 
5
7
  module.exports = function (defaultFuncs, api, ctx) {
6
- return function unsendMessage(messageID, callback) {
7
- let resolveFunc = function () {};
8
- let rejectFunc = function () {};
9
- const returnPromise = new Promise(function (resolve, reject) {
8
+ function unsendMessageNoMqtt(messageID, callback) {
9
+ var resolveFunc = function () {};
10
+ var rejectFunc = function () {};
11
+ var returnPromise = new Promise(function (resolve, reject) {
10
12
  resolveFunc = resolve;
11
13
  rejectFunc = reject;
12
14
  });
13
15
 
14
16
  if (!callback) {
15
- callback = function (err, data) {
17
+ callback = function (err, friendList) {
16
18
  if (err) {
17
19
  return rejectFunc(err);
18
20
  }
19
- resolveFunc(data);
21
+ resolveFunc(friendList);
20
22
  };
21
23
  }
22
24
 
23
- if (!messageID) {
24
- return callback({ error: "unsendMessage: messageID is required." });
25
- }
26
-
27
- const form = {
28
- message_id: messageID.toString(),
25
+ var form = {
26
+ message_id: messageID,
29
27
  };
30
28
 
31
29
  defaultFuncs
32
30
  .post("https://www.facebook.com/messaging/unsend_message/", ctx.jar, form)
33
31
  .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
34
32
  .then(function (resData) {
35
- if (!resData) {
36
- throw { error: "unsendMessage returned empty response." };
37
- }
38
33
  if (resData.error) {
39
34
  throw resData;
40
35
  }
41
36
 
42
- return callback(null, resData);
37
+ return callback();
43
38
  })
44
39
  .catch(function (err) {
45
- utils.error("unsendMessage", err);
40
+ log.error("unsendMessage", err);
46
41
  return callback(err);
47
42
  });
48
43
 
49
44
  return returnPromise;
45
+ }
46
+
47
+ function unsendMessageMqtt(messageID, threadID, callback) {
48
+ if (!ctx.mqttClient) {
49
+ throw new Error("Not connected to MQTT");
50
+ }
51
+
52
+ ctx.wsReqNumber += 1;
53
+ ctx.wsTaskNumber += 1;
54
+
55
+ const label = "33";
56
+
57
+ const taskPayload = {
58
+ message_id: messageID,
59
+ thread_key: threadID,
60
+ sync_group: 1,
61
+ };
62
+
63
+ const payload = JSON.stringify(taskPayload);
64
+ const version = "25393437286970779";
65
+
66
+ const task = {
67
+ failure_count: null,
68
+ label: label,
69
+ payload: payload,
70
+ queue_name: "unsend_message",
71
+ task_id: ctx.wsTaskNumber,
72
+ };
73
+
74
+ const content = {
75
+ app_id: "2220391788200892",
76
+ payload: JSON.stringify({
77
+ tasks: [task],
78
+ epoch_id: parseInt(generateOfflineThreadingID()),
79
+ version_id: version,
80
+ }),
81
+ request_id: ctx.wsReqNumber,
82
+ type: 3,
83
+ };
84
+
85
+ // if (isCallable(callback)) {
86
+ // // to be implemented
87
+ // }
88
+
89
+ ctx.mqttClient.publish("/ls_req", JSON.stringify(content), {
90
+ qos: 1,
91
+ retain: false,
92
+ });
93
+ }
94
+
95
+ return function unsendMessage(messageID, threadID, callback) {
96
+ if (ctx.mqttClient) {
97
+ try {
98
+ unsendMessageMqtt(messageID, threadID, callback);
99
+ } catch (e) {
100
+ unsendMessageNoMqtt(messageID, callback);
101
+ }
102
+ } else unsendMessageNoMqtt(messageID, callback);
50
103
  };
51
104
  };