@cexy/hoonfca 1.0.0 → 1.0.1

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 (188) hide show
  1. package/LICENSE +3 -0
  2. package/README.md +451 -43
  3. package/examples/login-with-cookies.js +102 -0
  4. package/examples/verify.js +70 -0
  5. package/index.js +1 -466
  6. package/package.json +98 -6
  7. package/src/apis/addExternalModule.js +24 -0
  8. package/src/apis/addUserToGroup.js +108 -0
  9. package/src/apis/changeAdminStatus.js +148 -0
  10. package/src/apis/changeArchivedStatus.js +61 -0
  11. package/src/apis/changeAvatar.js +103 -0
  12. package/src/apis/changeBio.js +69 -0
  13. package/src/apis/changeBlockedStatus.js +54 -0
  14. package/src/apis/changeGroupImage.js +136 -0
  15. package/src/apis/changeThreadColor.js +116 -0
  16. package/src/{changeThreadEmoji.js → apis/changeThreadEmoji.js} +7 -8
  17. package/src/apis/comment.js +207 -0
  18. package/src/apis/createAITheme.js +129 -0
  19. package/src/apis/createNewGroup.js +79 -0
  20. package/src/apis/createPoll.js +73 -0
  21. package/src/apis/deleteMessage.js +44 -0
  22. package/src/apis/deleteThread.js +52 -0
  23. package/src/apis/e2ee.js +17 -0
  24. package/src/apis/editMessage.js +70 -0
  25. package/src/apis/emoji.js +124 -0
  26. package/src/apis/fetchThemeData.js +82 -0
  27. package/src/apis/follow.js +81 -0
  28. package/src/apis/forwardMessage.js +52 -0
  29. package/src/apis/friend.js +243 -0
  30. package/src/apis/gcmember.js +122 -0
  31. package/src/apis/gcname.js +123 -0
  32. package/src/apis/gcrule.js +119 -0
  33. package/src/apis/getAccess.js +111 -0
  34. package/src/apis/getBotInfo.js +88 -0
  35. package/src/apis/getBotInitialData.js +43 -0
  36. package/src/apis/getFriendsList.js +79 -0
  37. package/src/apis/getMessage.js +423 -0
  38. package/src/apis/getTheme.js +95 -0
  39. package/src/apis/getThemeInfo.js +116 -0
  40. package/src/apis/getThreadHistory.js +239 -0
  41. package/src/apis/getThreadInfo.js +267 -0
  42. package/src/apis/getThreadList.js +232 -0
  43. package/src/apis/getThreadPictures.js +58 -0
  44. package/src/apis/getUserID.js +117 -0
  45. package/src/apis/getUserInfo.js +513 -0
  46. package/src/apis/getUserInfoV2.js +146 -0
  47. package/src/apis/handleMessageRequest.js +50 -0
  48. package/src/apis/httpGet.js +63 -0
  49. package/src/apis/httpPost.js +89 -0
  50. package/src/apis/httpPostFormData.js +69 -0
  51. package/src/apis/listenMqtt.js +1236 -0
  52. package/src/apis/listenSpeed.js +179 -0
  53. package/src/apis/logout.js +87 -0
  54. package/src/apis/markAsDelivered.js +47 -0
  55. package/src/apis/markAsRead.js +99 -0
  56. package/src/apis/markAsReadAll.js +40 -0
  57. package/src/apis/markAsSeen.js +70 -0
  58. package/src/apis/mqttDeltaValue.js +278 -0
  59. package/src/apis/muteThread.js +45 -0
  60. package/src/apis/nickname.js +132 -0
  61. package/src/apis/notes.js +163 -0
  62. package/src/apis/pinMessage.js +150 -0
  63. package/src/apis/produceMetaTheme.js +180 -0
  64. package/src/apis/realtime.js +182 -0
  65. package/src/apis/removeUserFromGroup.js +117 -0
  66. package/src/apis/resolvePhotoUrl.js +58 -0
  67. package/src/apis/searchForThread.js +154 -0
  68. package/src/apis/sendMessage.js +354 -0
  69. package/src/apis/sendMessageMqtt.js +249 -0
  70. package/src/apis/sendTypingIndicator.js +91 -0
  71. package/src/apis/setMessageReaction.js +27 -0
  72. package/src/apis/setMessageReactionMqtt.js +61 -0
  73. package/src/apis/setThreadTheme.js +260 -0
  74. package/src/apis/setThreadThemeMqtt.js +94 -0
  75. package/src/apis/share.js +107 -0
  76. package/src/apis/shareContact.js +66 -0
  77. package/src/apis/stickers.js +257 -0
  78. package/src/apis/story.js +181 -0
  79. package/src/apis/theme.js +233 -0
  80. package/src/apis/unfriend.js +47 -0
  81. package/src/apis/unsendMessage.js +17 -0
  82. package/src/engine/client.js +92 -0
  83. package/src/engine/models/buildAPI.js +152 -0
  84. package/src/engine/models/loginHelper.js +519 -0
  85. package/src/engine/models/setOptions.js +88 -0
  86. package/src/security/e2ee.js +109 -0
  87. package/src/types/index.d.ts +498 -0
  88. package/src/utils/antiSuspension.js +506 -0
  89. package/src/utils/auth-helpers.js +149 -0
  90. package/src/utils/autoReLogin.js +336 -0
  91. package/src/utils/axios.js +436 -0
  92. package/src/utils/cache.js +54 -0
  93. package/src/utils/clients.js +282 -0
  94. package/src/utils/constants.js +410 -0
  95. package/src/utils/formatters/data/formatAttachment.js +370 -0
  96. package/src/utils/formatters/data/formatDelta.js +109 -0
  97. package/src/utils/formatters/index.js +159 -0
  98. package/src/utils/formatters/value/formatCookie.js +91 -0
  99. package/src/utils/formatters/value/formatDate.js +36 -0
  100. package/src/utils/formatters/value/formatID.js +16 -0
  101. package/src/utils/formatters.js +1373 -0
  102. package/src/utils/headers.js +230 -0
  103. package/src/utils/index.js +153 -0
  104. package/src/utils/monitoring.js +333 -0
  105. package/src/utils/rateLimiter.js +319 -0
  106. package/src/utils/tokenRefresh.js +657 -0
  107. package/src/utils/user-agents.js +238 -0
  108. package/src/utils/validation.js +157 -0
  109. package/replit.nix +0 -3
  110. package/src/addExternalModule.js +0 -25
  111. package/src/addUserToGroup.js +0 -98
  112. package/src/changeAdminStatus.js +0 -98
  113. package/src/changeArchivedStatus.js +0 -51
  114. package/src/changeAvatar.js +0 -89
  115. package/src/changeBio.js +0 -74
  116. package/src/changeBlockedStatus.js +0 -45
  117. package/src/changeBlockedStatusMqtt.js +0 -65
  118. package/src/changeCover.js +0 -92
  119. package/src/changeGroupImage.js +0 -110
  120. package/src/changeName.js +0 -106
  121. package/src/changeNickname.js +0 -58
  122. package/src/changeThreadColor.js +0 -62
  123. package/src/changeUsername.js +0 -80
  124. package/src/createCommentPost.js +0 -196
  125. package/src/createNewGroup.js +0 -81
  126. package/src/createPoll.js +0 -64
  127. package/src/createPost.js +0 -285
  128. package/src/data/getThreadInfo.json +0 -1
  129. package/src/deleteMessage.js +0 -55
  130. package/src/deleteThread.js +0 -55
  131. package/src/editMessage.js +0 -66
  132. package/src/follow.js +0 -71
  133. package/src/forwardAttachment.js +0 -57
  134. package/src/getAccess.js +0 -130
  135. package/src/getAvatarUser.js +0 -88
  136. package/src/getBotInitialData.js +0 -59
  137. package/src/getCtx.js +0 -5
  138. package/src/getCurrentUserID.js +0 -5
  139. package/src/getEmojiUrl.js +0 -18
  140. package/src/getFriendsList.js +0 -81
  141. package/src/getMessage.js +0 -827
  142. package/src/getOptions.js +0 -5
  143. package/src/getRegion.js +0 -7
  144. package/src/getThreadHistory.js +0 -496
  145. package/src/getThreadHistoryDeprecated.js +0 -95
  146. package/src/getThreadInfo.js +0 -194
  147. package/src/getThreadInfoDeprecated.js +0 -77
  148. package/src/getThreadList.js +0 -219
  149. package/src/getThreadListDeprecated.js +0 -86
  150. package/src/getThreadPictures.js +0 -85
  151. package/src/getUserID.js +0 -67
  152. package/src/getUserInfo.js +0 -89
  153. package/src/handleFriendRequest.js +0 -56
  154. package/src/handleMessageRequest.js +0 -65
  155. package/src/httpGet.js +0 -53
  156. package/src/httpPost.js +0 -53
  157. package/src/httpPostFormData.js +0 -58
  158. package/src/listenMqtt.js +0 -683
  159. package/src/listenNotification.js +0 -96
  160. package/src/logout.js +0 -77
  161. package/src/markAsDelivered.js +0 -53
  162. package/src/markAsRead.js +0 -74
  163. package/src/markAsReadAll.js +0 -46
  164. package/src/markAsSeen.js +0 -57
  165. package/src/muteThread.js +0 -49
  166. package/src/pinMessage.js +0 -60
  167. package/src/refreshFb_dtsg.js +0 -75
  168. package/src/removeUserFromGroup.js +0 -59
  169. package/src/resolvePhotoUrl.js +0 -47
  170. package/src/searchForThread.js +0 -55
  171. package/src/searchStickers.js +0 -59
  172. package/src/sendMessage.js +0 -444
  173. package/src/sendMessageMqtt.js +0 -326
  174. package/src/sendTypingIndicator.js +0 -54
  175. package/src/setMessageReaction.js +0 -126
  176. package/src/setMessageReactionMqtt.js +0 -74
  177. package/src/setPostReaction.js +0 -103
  178. package/src/setProfileGuard.js +0 -66
  179. package/src/setStoryReaction.js +0 -97
  180. package/src/setTitle.js +0 -100
  181. package/src/shareContact.js +0 -101
  182. package/src/shareLink.js +0 -105
  183. package/src/stopListenMqtt.js +0 -47
  184. package/src/threadColors.js +0 -119
  185. package/src/unfriend.js +0 -58
  186. package/src/unsendMessage.js +0 -51
  187. package/src/uploadAttachment.js +0 -98
  188. package/utils.js +0 -919
package/src/createPost.js DELETED
@@ -1,285 +0,0 @@
1
- "use strict";
2
-
3
- const utils = require("../utils");
4
-
5
- module.exports = function (defaultFuncs, api, ctx) {
6
-
7
- // মিডিয়া বা ইমেজ আপলোড হ্যান্ডেল করার ফাংশন
8
- function handleUpload(msg, form) {
9
- let cb;
10
- const rt = new Promise((resolve, reject) => {
11
- cb = error => error ? reject(error) : resolve();
12
- });
13
-
14
- if (!msg.attachment) {
15
- cb();
16
- } else {
17
- msg.attachment = Array.isArray(msg.attachment) ? msg.attachment : [msg.attachment];
18
- const uploads = [];
19
-
20
- for (const attachment of msg.attachment) {
21
- if (!utils.isReadableStream(attachment)) {
22
- cb("Attachment should be a readable stream, not " + utils.getType(attachment)); // বাগ ফিক্স
23
- return rt;
24
- }
25
-
26
- const vari = {
27
- source: 8,
28
- profile_id: ctx.userID,
29
- waterfallxapp: "comet",
30
- farr: attachment,
31
- upload_id: "jsc_c_6"
32
- };
33
-
34
- const main = defaultFuncs
35
- .postFormData("https://upload.facebook.com/ajax/react_composer/attachments/photo/upload", ctx.jar, vari)
36
- .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
37
- .then(res => {
38
- if (res.error || res.errors) throw res;
39
- return res.payload;
40
- });
41
-
42
- uploads.push(main);
43
- }
44
-
45
- Promise.all(uploads)
46
- .then(res => {
47
- for (const payload of res) {
48
- if (!payload) break;
49
- form.input.attachments.push({
50
- photo: { id: payload.photoID }
51
- });
52
- }
53
- return cb();
54
- })
55
- .catch(cb);
56
- }
57
-
58
- return rt;
59
- }
60
-
61
- // URL লিংক প্রিভিউ হ্যান্ডেল করার ফাংশน
62
- function handleUrl(msg, form) {
63
- let cb;
64
- const rt = new Promise((resolve, reject) => {
65
- cb = error => error ? reject(error) : resolve();
66
- });
67
-
68
- if (!msg.url) {
69
- cb();
70
- } else {
71
- const vari = {
72
- feedLocation: "FEED_COMPOSER",
73
- focusCommentID: null,
74
- goodwillCampaignId: "",
75
- goodwillCampaignMediaIds: [],
76
- goodwillContentType: null,
77
- params: { url: msg.url },
78
- privacySelectorRenderLocation: "COMET_COMPOSER",
79
- renderLocation: "composer_preview",
80
- parentStoryID: null,
81
- scale: 1,
82
- useDefaultActor: false,
83
- shouldIncludeStoryAttachment: false,
84
- __relay_internal__pv__IsWorkUserrelayprovider: false,
85
- __relay_internal__pv__IsMergQAPollsrelayprovider: false
86
- };
87
-
88
- defaultFuncs
89
- .post("https://www.facebook.com/api/graphql/", ctx.jar, {
90
- fb_api_req_friendly_name: "ComposerLinkAttachmentPreviewQuery",
91
- variables: JSON.stringify(vari),
92
- server_timestamps: true,
93
- doc_id: 6549975235094234
94
- })
95
- .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
96
- .then(res => {
97
- const resData = (res[0] || res).data.link_preview;
98
- if (JSON.parse(resData.share_scrape_data).share_type === 400) {
99
- throw { error: "url is not accepted" };
100
- }
101
-
102
- form.input.attachments.push({
103
- link: { share_scrape_data: resData.share_scrape_data }
104
- });
105
-
106
- return cb();
107
- })
108
- .catch(cb);
109
- }
110
-
111
- return rt;
112
- }
113
-
114
- // মেনশন হ্যান্ডেল করার ফাংশন (বাগ ফিক্স করা হয়েছে)
115
- function handleMention(msg, form) {
116
- if (!msg.mentions) return Promise.resolve();
117
-
118
- msg.mentions = Array.isArray(msg.mentions) ? msg.mentions : [msg.mentions];
119
-
120
- try {
121
- for (const mention of msg.mentions) {
122
- const { id, tag, fromIndex } = mention;
123
-
124
- if (typeof tag !== "string") throw new Error("Mention tag must be string");
125
- if (!id) throw new Error("id must be string");
126
-
127
- const offset = msg.body.indexOf(tag, fromIndex || 0);
128
- if (offset < 0) throw new Error(`Mention for "${tag}" not found in message string.`);
129
-
130
- form.input.message.ranges.push({
131
- entity: { id },
132
- length: tag.length,
133
- offset
134
- });
135
- }
136
- return Promise.resolve();
137
- } catch (err) {
138
- return Promise.reject(err);
139
- }
140
- }
141
-
142
- // পোস্ট সাবমিট করার গ্রাফকিউএল ফাংশন
143
- function createContent(vari) {
144
- let cb;
145
- const rt = new Promise((resolve, reject) => {
146
- cb = (error, postData) => error ? reject(error) : resolve(postData);
147
- });
148
-
149
- const form = {
150
- fb_api_req_friendly_name: "ComposerStoryCreateMutation",
151
- variables: JSON.stringify(vari),
152
- server_timestamps: true,
153
- doc_id: 6255089511280268
154
- };
155
-
156
- defaultFuncs
157
- .post("https://www.facebook.com/api/graphql/", ctx.jar, form)
158
- .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
159
- .then(res => cb(null, res))
160
- .catch(cb);
161
-
162
- return rt;
163
- }
164
-
165
- return function createPost(msg, callback) {
166
- let cb;
167
- const rt = new Promise((resolve, reject) => {
168
- cb = (error, url) => url ? resolve(url) : reject(error);
169
- });
170
-
171
- if (typeof msg === "function") {
172
- const error = "Msg must be a string or object and not function";
173
- utils.error("createPost", error);
174
- msg(error);
175
- return rt;
176
- }
177
-
178
- if (typeof callback === "function") {
179
- cb = callback;
180
- }
181
-
182
- const typeMsg = utils.getType(msg);
183
- if (!["Object", "String"].includes(typeMsg)) {
184
- const error = "Msg must be a string or object and not " + typeMsg;
185
- utils.error("createPost", error);
186
- cb(error);
187
- return rt;
188
- } else if (typeMsg === "String") {
189
- msg = { body: msg };
190
- }
191
-
192
- msg.allowUserID = msg.allowUserID ? (!Array.isArray(msg.allowUserID) ? [msg.allowUserID] : msg.allowUserID) : null;
193
-
194
- const sessionID = utils.getGUID();
195
- const base = ["EVERYONE", "FRIENDS", "SELF"];
196
-
197
- // মেইন ফর্ম কনফিগারেশন
198
- const form = {
199
- input: {
200
- composer_entry_point: !msg.groupID && msg.url ? "share_modal" : "inline_composer",
201
- composer_source_surface: !msg.groupID && msg.url ? "feed_story" : msg.groupID ? "group" : "timeline",
202
- composer_type: !msg.groupID && msg.url ? "share" : msg.groupID ? "group" : "timeline",
203
- idempotence_token: sessionID + "_FEED",
204
- source: "WWW",
205
- attachments: [],
206
- audience: msg.groupID ? { to_id: msg.groupID } : {
207
- privacy: {
208
- allow: msg.allowUserID ? msg.allowUserID : [],
209
- base_state: msg.allowUserID && msg.allowUserID.length > 0 ? base[2] : (base[msg.baseState - 1] || base[0]),
210
- deny: [],
211
- tag_expansion_state: "UNSPECIFIED"
212
- }
213
- },
214
- message: {
215
- ranges: [],
216
- text: msg.body ? (typeof msg.body === "object" ? JSON.stringify(msg.body, null, 2) : msg.body) : ""
217
- },
218
- with_tags_ids: [],
219
- inline_activities: [],
220
- explicit_place_id: 0,
221
- text_format_preset_id: 0,
222
- logging: { composer_session_id: sessionID },
223
- navigation_data: {
224
- attribution_id_v2: msg.groupID
225
- ? "CometGroupDiscussionRoot.react,comet.group,tap_search_bar," + Date.now() + ",909538,2361831622,"
226
- : "ProfileCometTimelineListViewRoot.react,comet.profile.timeline.list,via_cold_start," + Date.now() + ",796829,190055527696468,"
227
- },
228
- is_tracking_encrypted: !!msg.url,
229
- tracking: [],
230
- event_share_metadata: { surface: "newsfeed" },
231
- actor_id: ctx.globalOptions.pageID || ctx.userID,
232
- client_mutation_id: Math.round(Math.random() * 19).toString()
233
- },
234
- displayCommentsFeedbackContext: null,
235
- displayCommentsContextEnableComment: null,
236
- displayCommentsContextIsAdPreview: null,
237
- displayCommentsContextIsAggregatedShare: null,
238
- displayCommentsContextIsStorySet: null,
239
- feedLocation: msg.groupID ? "GROUP" : "TIMELINE",
240
- feedbackSource: 0,
241
- focusCommentID: null,
242
- gridMediaWidth: 230,
243
- groupID: null,
244
- scale: 1,
245
- privacySelectorRenderLocation: "COMET_STREAM",
246
- renderLocation: msg.groupID ? "group" : "timeline",
247
- useDefaultActor: false,
248
- inviteShortLinkKey: null,
249
- isFeed: false,
250
- isFundraiser: false,
251
- isFunFactPost: false,
252
- isGroup: !!msg.groupID,
253
- isEvent: false,
254
- isTimeline: !msg.groupID,
255
- isSocialLearning: false,
256
- isPageNewsFeed: !!ctx.globalOptions.pageID,
257
- isProfileReviews: false,
258
- isWorkSharedDraft: false,
259
- UFI2CommentsProvider_commentsKey: msg.groupID ? "CometGroupDiscussionRootSuccessQuery" : "ProfileCometTimelineRoute",
260
- hashtag: null,
261
- canUserManageOffers: false,
262
- __relay_internal__pv__CometUFIIsRTAEnabledrelayprovider: false,
263
- __relay_internal__pv__IsWorkUserrelayprovider: false,
264
- __relay_internal__pv__IsMergQAPollsrelayprovider: false,
265
- __relay_internal__pv__StoriesArmadilloReplyEnabledrelayprovider: false,
266
- __relay_internal__pv__StoriesRingrelayprovider: false
267
- };
268
-
269
- // প্রমিজ চেইনিংয়ের মাধ্যমে পোস্ট প্রসেস সম্পন্ন করা হচ্ছে
270
- handleUpload(msg, form)
271
- .then(() => handleUrl(msg, form))
272
- .then(() => handleMention(msg, form))
273
- .then(() => createContent(form))
274
- .then(res => {
275
- if (res.error || res.errors) throw res;
276
- return cb(null, (res[0] || res).data.story_create.story.url);
277
- })
278
- .catch(err => {
279
- utils.error("createPost", err);
280
- return cb(err);
281
- });
282
-
283
- return rt;
284
- };
285
- };
@@ -1 +0,0 @@
1
- []
@@ -1,55 +0,0 @@
1
- "use strict";
2
-
3
- const utils = require("../utils");
4
-
5
- module.exports = function (defaultFuncs, api, ctx) {
6
- return function deleteMessage(messageOrMessages, callback) {
7
- let resolveFunc = () => {};
8
- let rejectFunc = () => {};
9
- const returnPromise = new Promise((resolve, reject) => {
10
- resolveFunc = resolve;
11
- rejectFunc = reject;
12
- });
13
-
14
- if (!callback) {
15
- callback = function (err) {
16
- if (err) return rejectFunc(err);
17
- resolveFunc();
18
- };
19
- }
20
-
21
- const form = {
22
- client: "mercury",
23
- };
24
-
25
- // ইনপুট অ্যারে না হলে সেটিকে অ্যারেতে রূপান্তর করা হচ্ছে
26
- const messages = utils.getType(messageOrMessages) !== "Array"
27
- ? [messageOrMessages]
28
- : messageOrMessages;
29
-
30
- // মডার্ন লুপ ব্যবহার করে ফর্ম অবজেক্টে আইডিগুলো সেট করা হচ্ছে
31
- messages.forEach((msgID, index) => {
32
- form[`message_ids[${index}]`] = msgID;
33
- });
34
-
35
- defaultFuncs
36
- .post(
37
- "https://www.facebook.com/ajax/mercury/delete_messages.php",
38
- ctx.jar,
39
- form
40
- )
41
- .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
42
- .then(function (resData) {
43
- if (resData.error) {
44
- throw resData;
45
- }
46
- return callback();
47
- })
48
- .catch(function (err) {
49
- utils.error("deleteMessage", err);
50
- return callback(err);
51
- });
52
-
53
- return returnPromise;
54
- };
55
- };
@@ -1,55 +0,0 @@
1
- "use strict";
2
-
3
- const utils = require("../utils");
4
-
5
- module.exports = function (defaultFuncs, api, ctx) {
6
- return function deleteThread(threadOrThreads, callback) {
7
- let resolveFunc = () => {};
8
- let rejectFunc = () => {};
9
- const returnPromise = new Promise((resolve, reject) => {
10
- resolveFunc = resolve;
11
- rejectFunc = reject;
12
- });
13
-
14
- if (!callback) {
15
- callback = function (err) {
16
- if (err) return rejectFunc(err);
17
- resolveFunc();
18
- };
19
- }
20
-
21
- const form = {
22
- client: "mercury",
23
- };
24
-
25
- // ইনপুট অ্যারে না হলে সেটিকে সিঙ্গেলেটন অ্যারেতে রূপান্তর করা হচ্ছে
26
- const threads = utils.getType(threadOrThreads) !== "Array"
27
- ? [threadOrThreads]
28
- : threadOrThreads;
29
-
30
- // মডার্ন লুপ ব্যবহার করে ফর্ম অবজেক্টে থ্রেড আইডিগুলো সেট করা হচ্ছে
31
- threads.forEach((threadID, index) => {
32
- form[`ids[${index}]`] = threadID;
33
- });
34
-
35
- defaultFuncs
36
- .post(
37
- "https://www.facebook.com/ajax/mercury/delete_thread.php",
38
- ctx.jar,
39
- form
40
- )
41
- .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
42
- .then(function (resData) {
43
- if (resData.error) {
44
- throw resData;
45
- }
46
- return callback();
47
- })
48
- .catch(function (err) {
49
- utils.error("deleteThread", err);
50
- return callback(err);
51
- });
52
-
53
- return returnPromise;
54
- };
55
- };
@@ -1,66 +0,0 @@
1
- "use strict";
2
-
3
-
4
- const utils = require("../utils.js");
5
-
6
- // নিরাপদ ফাংশন চেকিং (Reflect.apply বাগ ফিক্স করা হয়েছে)
7
- function canBeCalled(func) {
8
- return typeof func === "function";
9
- }
10
-
11
- /**
12
- * A function for editing bot's messages.
13
- * @param {string} text - The text with which the bot will edit its messages.
14
- * @param {string} messageID - The message ID of the message the bot will edit.
15
- * @param {Object} callback - Callback for the function.
16
- */
17
- module.exports = function (defaultFuncs, api, ctx) {
18
- return function editMessage(text, messageID, callback) {
19
- if (!ctx.mqttClient) {
20
- throw new Error("Not connected to MQTT");
21
- }
22
-
23
- ctx.wsReqNumber += 1;
24
- ctx.wsTaskNumber += 1;
25
-
26
- const queryPayload = {
27
- message_id: messageID,
28
- text: text,
29
- };
30
-
31
- const query = {
32
- failure_count: null,
33
- label: "742",
34
- payload: JSON.stringify(queryPayload),
35
- queue_name: "edit_message",
36
- task_id: ctx.wsTaskNumber,
37
- };
38
-
39
- // utils অবজেক্ট থেকে সঠিক ফাংশনটি কল করা হচ্ছে এবং Radix 10 ব্যবহার করা হয়েছে
40
- const offlineThreadingID = utils.generateOfflineThreadingID
41
- ? utils.generateOfflineThreadingID()
42
- : utils.generateOfflineThreadingId();
43
-
44
- const context = {
45
- app_id: "2220391788200892",
46
- payload: JSON.stringify({
47
- data_trace_id: null,
48
- epoch_id: parseInt(offlineThreadingID, 10), // বাগ ফিক্স করা হয়েছে
49
- tasks: [query],
50
- version_id: "6903494529735864",
51
- }),
52
- request_id: ctx.wsReqNumber,
53
- type: 3,
54
- };
55
-
56
- if (canBeCalled(callback)) {
57
- ctx.reqCallbacks[ctx.wsReqNumber] = callback;
58
- }
59
-
60
- // MQTT ব্রোকারে লাইটস্পিড রিকোয়েস্ট পাঠানো হচ্ছে
61
- ctx.mqttClient.publish("/ls_req", JSON.stringify(context), {
62
- qos: 1,
63
- retain: false,
64
- });
65
- };
66
- };
package/src/follow.js DELETED
@@ -1,71 +0,0 @@
1
- "use strict";
2
-
3
- const utils = require("../utils");
4
-
5
- module.exports = function (defaultFuncs, api, ctx) {
6
- return function follow(senderID, boolean, callback) {
7
- let resolveFunc = () => {};
8
- let rejectFunc = () => {};
9
- const returnPromise = new Promise((resolve, reject) => {
10
- resolveFunc = resolve;
11
- rejectFunc = reject;
12
- });
13
-
14
- // কলব্যাক না থাকলে প্রমিজ রিজেক্ট/রিসলভ সেট করা
15
- if (typeof callback !== "function") {
16
- callback = (err, data) => {
17
- if (err) return rejectFunc(err);
18
- resolveFunc(data);
19
- };
20
- }
21
-
22
- // ভেরিয়েবল নির্ধারণ (ফলো বনাম আনফলো লজিক)
23
- const friendlyName = boolean ? "CometUserFollowMutation" : "CometUserUnfollowMutation";
24
- const inputPayload = boolean
25
- ? {
26
- attribution_id_v2: "ProfileCometTimelineListViewRoot.react,comet.profile.timeline.list,via_cold_start,1717249218695,723451,250100865708545,,",
27
- is_tracking_encrypted: true,
28
- subscribe_location: "PROFILE",
29
- subscribee_id: senderID,
30
- tracking: null,
31
- actor_id: ctx.userID,
32
- client_mutation_id: "1",
33
- }
34
- : {
35
- attribution_id_v2: "ProfileCometTimelineListViewRoot.react,comet.profile.timeline.list,tap_search_bar,1717294006136,602597,250100865708545,,",
36
- is_tracking_encrypted: true,
37
- subscribe_location: "PROFILE",
38
- tracking: null,
39
- unsubscribee_id: senderID,
40
- actor_id: ctx.userID,
41
- client_mutation_id: "10",
42
- };
43
-
44
- const variablesPayload = boolean
45
- ? { input: inputPayload, scale: 1 }
46
- : { action_render_location: "WWW_COMET_FRIEND_MENU", input: inputPayload, scale: 1 };
47
-
48
- const form = {
49
- av: ctx.userID,
50
- fb_api_req_friendly_name: friendlyName,
51
- fb_api_caller_class: "RelayModern",
52
- doc_id: "25472099855769847",
53
- variables: JSON.stringify(variablesPayload),
54
- };
55
-
56
- // প্রপার সেশন জারের সাথে ফেসবুক গ্রাফকিউএল-এ রিকোয়েস্ট পাঠানো হচ্ছে
57
- defaultFuncs
58
- .post("https://www.facebook.com/api/graphql/", ctx.jar, form)
59
- .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
60
- .then((resData) => {
61
- if (resData.errors) throw resData;
62
- return callback(null, resData);
63
- })
64
- .catch((err) => {
65
- utils.error("follow", err);
66
- return callback(err);
67
- });
68
-
69
- return returnPromise;
70
- };
71
- };
@@ -1,57 +0,0 @@
1
- "use strict";
2
-
3
- const utils = require("../utils");
4
-
5
- module.exports = function (defaultFuncs, api, ctx) {
6
- return function forwardAttachment(attachmentID, userOrUsers, callback) {
7
- let resolveFunc = () => {};
8
- let rejectFunc = () => {};
9
- const returnPromise = new Promise((resolve, reject) => {
10
- resolveFunc = resolve;
11
- rejectFunc = reject;
12
- });
13
-
14
- if (!callback) {
15
- callback = function (err) {
16
- if (err) return rejectFunc(err);
17
- resolveFunc();
18
- };
19
- }
20
-
21
- const form = {
22
- attachment_id: attachmentID,
23
- };
24
-
25
- // ইনপুট অ্যারে না হলে সেটিকে অ্যারেতে রূপান্তর করা হচ্ছে
26
- const recipients = utils.getType(userOrUsers) !== "Array"
27
- ? [userOrUsers]
28
- : userOrUsers;
29
-
30
- const timestamp = Math.floor(Date.now() / 1000);
31
-
32
- // মডার্ন লুপ ব্যবহার করে রিসিপিয়েন্ট ম্যাপ অবজেক্ট জেনারেট করা হচ্ছে
33
- recipients.forEach((userID, index) => {
34
- form[`recipient_map[${timestamp + index}]`] = userID;
35
- });
36
-
37
- defaultFuncs
38
- .post(
39
- "https://www.facebook.com/mercury/attachments/forward/",
40
- ctx.jar,
41
- form
42
- )
43
- .then(utils.parseAndCheckLogin(ctx, defaultFuncs)) // ক্র্যাশ বাগটি এখানে ফিক্স করা হয়েছে (ctx.jar -> ctx)
44
- .then(function (resData) {
45
- if (resData.error) {
46
- throw resData;
47
- }
48
- return callback();
49
- })
50
- .catch(function (err) {
51
- utils.error("forwardAttachment", err);
52
- return callback(err);
53
- });
54
-
55
- return returnPromise;
56
- };
57
- };