fca-priyansh 15.0.0 → 17.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. package/Extra/Balancer.js +49 -0
  2. package/Extra/Bypass/956/index.js +234 -0
  3. package/Extra/Bypass/test/aaaa.json +170 -0
  4. package/Extra/Bypass/test/index.js +188 -0
  5. package/Extra/Database/index.js +249 -140
  6. package/Extra/ExtraAddons.js +35 -33
  7. package/Extra/ExtraFindUID.js +3 -1
  8. package/Extra/ExtraGetThread.js +303 -56
  9. package/Extra/ExtraUptimeRobot.js +15 -3
  10. package/Extra/Html/Classic/script.js +3 -3
  11. package/Extra/Security/AES_256_GCM/index.js +0 -0
  12. package/Extra/Security/Base/Step_1.js +6 -0
  13. package/Extra/Security/Base/Step_2.js +22 -0
  14. package/Extra/Security/Base/Step_3.js +22 -0
  15. package/Extra/Security/Base/index.js +191 -0
  16. package/Extra/Security/Index.js +5 -146
  17. package/Extra/Security/Step_1.js +4 -9
  18. package/Extra/Security/Step_2.js +2 -0
  19. package/Extra/Security/Step_3.js +4 -2
  20. package/Extra/Src/Change_Environment.js +1 -1
  21. package/Extra/Src/Check_Update.js +67 -0
  22. package/Extra/Src/History.js +2 -2
  23. package/Extra/Src/Instant_Update.js +65 -0
  24. package/Extra/Src/Premium.js +35 -38
  25. package/Extra/Src/Release_Memory.js +160 -0
  26. package/Extra/Src/Websocket.js +213 -0
  27. package/Extra/Src/image/checkmate.jpg +0 -0
  28. package/Extra/Src/test.js +28 -0
  29. package/Extra/Src/uuid.js +1 -1
  30. package/Func/AcceptAgreement.js +4 -5
  31. package/Func/ClearCache.js +7 -7
  32. package/Func/ReportV1.js +5 -5
  33. package/LICENSE +1 -4
  34. package/Language/index.json +59 -8
  35. package/Main.js +1444 -0
  36. package/README.md +198 -1
  37. package/broadcast.js +43 -37
  38. package/index.js +305 -1709
  39. package/logger.js +4 -4
  40. package/package.json +16 -11
  41. package/src/Dev_Horizon_Data.js +3 -3
  42. package/src/Dev_getThreadInfoOLD.js +422 -0
  43. package/src/Dev_shareTest2.js +68 -0
  44. package/src/Dev_shareTest3.js +71 -0
  45. package/src/Premium.js +8 -13
  46. package/src/Screenshot.js +4 -6
  47. package/src/editMessage.js +53 -0
  48. package/src/getAccessToken.js +0 -4
  49. package/src/getFriendsList.js +1 -1
  50. package/src/getMessage.js +26 -3
  51. package/src/getThreadHistory.js +1 -1
  52. package/src/getThreadInfo.js +237 -161
  53. package/src/getThreadInfoOLD.js +422 -0
  54. package/src/getThreadMain.js +1 -1
  55. package/src/getUID.js +3 -3
  56. package/src/getUserInfo.js +56 -73
  57. package/src/getUserInfoMain.js +2 -2
  58. package/src/getUserInfoV2.js +0 -4
  59. package/src/getUserInfoV3.js +3 -3
  60. package/src/getUserInfoV4.js +5 -5
  61. package/src/getUserInfoV5.js +4 -4
  62. package/src/listenMqtt.js +905 -625
  63. package/src/listenMqttV1.js +846 -0
  64. package/src/sendMessage.js +54 -2
  65. package/src/sendMqttMessage.js +71 -0
  66. package/src/setPostReaction.js +3 -3
  67. package/src/shareContact.js +55 -0
  68. package/src/shareLink.js +58 -0
  69. package/src/unsendMessage.js +28 -20
  70. package/src/unsendMqttMessage.js +66 -0
  71. package/utils.js +1567 -138
  72. package/.gitattributes +0 -2
  73. package/gitattributes +0 -2
  74. package/gitignore.txt +0 -10
@@ -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
+ };
@@ -217,4 +217,4 @@ module.exports = function(defaultFuncs, api, ctx) {
217
217
  });
218
218
  return returnPromise;
219
219
  };
220
- };
220
+ };
package/src/getUID.js CHANGED
@@ -24,7 +24,7 @@ module.exports = function (_defaultFuncs, api, _ctx) {
24
24
  var LinkSplit = Link.split('/');
25
25
  if (LinkSplit.indexOf("https:") == 0) {
26
26
  if (!isNaN(LinkSplit[3]) && !Link.split('=')[1] && !isNaN(Link.split('=')[1])) {
27
- api.sendMessage('Wrong Link, Link Should Have The Following Format: facebook.com/Priyanshu.Official.Rajput',global.Fca.Data.event.threadID,global.Fca.Data.event.messageID);
27
+ api.sendMessage('Sai Link, Link Cần Định Dạng Như Sau: facebook.com/Lazic.Kanzu',global.Fca.Data.event.threadID,global.Fca.Data.event.messageID);
28
28
  callback(null, String(4));
29
29
  }
30
30
  else if (!isNaN(Link.split('=')[1]) && Link.split('=')[1]) {
@@ -48,7 +48,7 @@ module.exports = function (_defaultFuncs, api, _ctx) {
48
48
  }
49
49
  else {
50
50
  callback(null, null);
51
- api.sendMessage('Sai Link, Link Cần Là Link Của Facebook',global.Fca.Data.event.threadID,global.Fca.Data.event.messageID)
51
+ api.sendMessage('Sai Link, Link Cần Là Link Của Facebook',global.Fca.Data.event.threadID,global.Fca.Data.event.messageID);
52
52
  }
53
53
  }
54
54
  catch (e) {
@@ -56,4 +56,4 @@ module.exports = function (_defaultFuncs, api, _ctx) {
56
56
  }
57
57
  return returnPromise;
58
58
  };
59
- };
59
+ };
@@ -28,6 +28,7 @@ function formatData(data) {
28
28
  }
29
29
 
30
30
  module.exports = function (defaultFuncs, api, ctx) {
31
+ const Database = require('../Extra/Database');
31
32
  return function getUserInfo(id, callback) {
32
33
  var resolveFunc = function () { };
33
34
  var rejectFunc = function () { };
@@ -44,86 +45,68 @@ module.exports = function (defaultFuncs, api, ctx) {
44
45
  }
45
46
 
46
47
  if (utils.getType(id) !== "Array") id = [id];
47
-
48
- var respone = [];
49
- var Nope = [];
50
- if (global.Fca.Data.Userinfo != undefined && global.Fca.Data.Userinfo.length != 0) {
51
- if (id.length == 1) {
52
- if (global.Fca.Data.Userinfo[0].some(i => i.id == id[0])) {
53
- var Format = {}
54
- Format[id[0]] = global.Fca.Data.Userinfo[0].find(i => i.id == id[0])
55
- callback(null,Format);
56
- }
57
- else {
58
- Nope.push(id[0]);
59
- }
60
- }
61
- else for (let ii of id) {
62
- if (global.Fca.Data.Userinfo[0].some(i => i.id == ii)) {
63
- let Format = {}
64
- Format[id[ii]] = global.Fca.Data.Userinfo[0].find(i => i.id == ii);
65
- respone.push(Format);
66
- }
67
- else {
68
- Nope.push(ii);
69
- }
48
+ if (utils.getType(global.Fca.Data.Userinfo) == "Array" || global.Fca.Data.Userinfo == undefined) global.Fca.Data.Userinfo = new Map();
49
+ if (global.Fca.Data.AlreadyGetInfo != true) {
50
+ if (Database(true).has('UserInfo') == false) {
51
+ Database(true).set('UserInfo', []);
52
+ global.Fca.Data.AlreadyGetInfo = true;
70
53
  }
71
- if (Nope.length > 0 && respone > 0) {
72
- var form = {};
73
- Nope.map(function (v, i) {
74
- form["ids[" + i + "]"] = v;
75
- });
76
- defaultFuncs
77
- .post("https://www.facebook.com/chat/user_info/", ctx.jar, form)
78
- .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
79
- .then(function (resData) {
80
- if (resData.error) throw resData;
81
- respone.push(formatData(resData.payload.profiles));
82
- callback(null, respone);
83
- })
84
- .catch(function (err) {
85
- log.error("getUserInfo", "Lỗi: getUserInfo Có Thể Do Bạn Spam Quá Nhiều !,Hãy Thử Lại !");
86
- return callback(err, respone);
87
- });
88
- return returnPromise;
54
+ }
55
+ var AlreadyGet = [];
56
+ var NeedGet = [];
57
+ if (global.Fca.Data.Userinfo != undefined && global.Fca.Data.Userinfo.size != undefined) {
58
+ for (let idu of id) {
59
+ if (global.Fca.Data.Userinfo.has(idu)) {
60
+ let Format = {};
61
+ Format[idu] = global.Fca.Data.Userinfo.get(idu);
62
+ AlreadyGet.push(Format);
63
+ } else {
64
+ const DatabaseUser = Database(true).get('UserInfo') || [];
65
+ const databaseUser = DatabaseUser.find(user => user.id === idu);
66
+ let Format = {};
67
+ Format[idu] = databaseUser;
68
+ if (databaseUser) {
69
+ AlreadyGet.push(Format);
70
+ } else {
71
+ NeedGet.push(idu);
72
+ }
73
+ }
89
74
  }
90
- else if (Nope.length > 0 && respone <= 0) {
91
- let form = {};
92
- Nope.map(function (v, i) {
93
- form["ids[" + i + "]"] = v;
94
- });
95
- defaultFuncs
96
- .post("https://www.facebook.com/chat/user_info/", ctx.jar, form)
97
- .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
98
- .then(function (resData) {
99
- if (resData.error) throw resData;
100
- callback(null, formatData(resData.payload.profiles));
101
- })
102
- .catch(function (err) {
103
- log.error("getUserInfo", "Lỗi: getUserInfo Có Thể Do Bạn Spam Quá Nhiều !,Hãy Thử Lại !");
104
- return callback(err, respone);
105
- });
106
- return returnPromise;
107
- };
108
- return returnPromise
75
+
109
76
  }
110
- else {
77
+
78
+ if (NeedGet.length > 0) {
111
79
  let form = {};
112
- id.map(function (v, i) {
80
+ NeedGet.map(function (v, i) {
113
81
  form["ids[" + i + "]"] = v;
114
82
  });
115
- defaultFuncs
116
- .post("https://www.facebook.com/chat/user_info/", ctx.jar, form)
83
+ defaultFuncs
84
+ .post("https://www.facebook.com/chat/user_info/", ctx.jar, form)
117
85
  .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
118
- .then(function (resData) {
119
- if (resData.error) throw resData;
120
- callback(null, formatData(resData.payload.profiles));
121
- })
122
- .catch(function (err) {
123
- log.error("getUserInfo", "Lỗi: getUserInfo Thể Do Bạn Spam Quá Nhiều !,Hãy Thử Lại !");
124
- callback(err, formatData(resData.payload.profiles));
125
- });
126
- return returnPromise;
86
+ .then(function (resData) {
87
+ if (resData.error) throw resData;
88
+ if (AlreadyGet.length > 0) {
89
+ AlreadyGet.push(formatData(resData.payload.profiles));
90
+ }
91
+ else if (AlreadyGet.length <= 0 && NeedGet.length == 1) {
92
+ AlreadyGet = formatData(resData.payload.profiles);
93
+ }
94
+ else {
95
+ AlreadyGet.push(formatData(resData.payload.profiles));
96
+ }
97
+ callback(null, AlreadyGet);
98
+ })
99
+ .catch(function (err) {
100
+ log.error("getUserInfo", "Lỗi: getUserInfo Có Thể Do Bạn Spam Quá Nhiều !,Hãy Thử Lại !");
101
+ callback(err, null);
102
+ });
103
+ }
104
+ else if (AlreadyGet.length == 1) {
105
+ callback(null,AlreadyGet[0]);
106
+ }
107
+ else if (AlreadyGet.length > 1) {
108
+ callback(null, AlreadyGet);
127
109
  }
110
+ return returnPromise;
128
111
  };
129
112
  };
@@ -57,9 +57,9 @@ module.exports = function (defaultFuncs, api, ctx) {
57
57
  return callback(null, formatData(resData.payload.profiles));
58
58
  })
59
59
  .catch(function (err) {
60
- log.error("getUserInfo", "Error: getUserInfo Maybe You Spam Too Much!,Try Again !");
60
+ log.error("getUserInfo", "Lỗi: getUserInfo Thể Do Bạn Spam Quá Nhiều !,Hãy Thử Lại !");
61
61
  return callback(err);
62
62
  });
63
63
  return returnPromise;
64
64
  };
65
- };
65
+ };
@@ -1,10 +1,6 @@
1
1
  /* eslint-disable linebreak-style */
2
2
  "use strict";
3
3
 
4
- var utils = require("../utils");
5
- var log = require("npmlog");
6
-
7
-
8
4
  module.exports = function (defaultFuncs, api, ctx) {
9
5
  return function getUserInfoV2(id, callback) {
10
6
  var resolveFunc = function () { };
@@ -32,7 +32,7 @@ var form = {
32
32
  "id": String(id)
33
33
  }),
34
34
  "doc_id": 5092283120862795
35
- }
35
+ };
36
36
  try {
37
37
  defaultFuncs
38
38
  .post("https://www.facebook.com/api/graphql/", ctx.jar, form)
@@ -51,7 +51,7 @@ try {
51
51
  }
52
52
  })
53
53
  .catch(function (err) {
54
- log.error("getUserInfo", "Lỗi: getUserInfo Maybe You Spam Too Much!,Try Again !");
54
+ log.error("getUserInfo", "Lỗi: getUserInfo Thể Do Bạn Spam Quá Nhiều !,Hãy Thử Lại !");
55
55
  return callback(err);
56
56
  });
57
57
  }
@@ -60,4 +60,4 @@ try {
60
60
  }
61
61
  return returnPromise;
62
62
  };
63
- };
63
+ };
@@ -32,18 +32,18 @@ module.exports = function (defaultFuncs, api, ctx) {
32
32
  }),
33
33
  doc_id: 7188178894556645
34
34
  };
35
- console.log(form)
35
+ console.log(form);
36
36
  try {
37
37
  defaultFuncs
38
38
  .post("https://www.facebook.com/api/graphql/", ctx.jar, form)
39
39
  .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
40
40
  .then(function (resData) {
41
41
  if (resData.error) throw resData;
42
- callback(null,resData.data.viewer.chat_sidebar_contact_nodes[0])
42
+ callback(null,resData.data.viewer.chat_sidebar_contact_nodes[0]);
43
43
  })
44
44
  .catch(function (err) {
45
- console.log(err)
46
- log.error("getUserInfo", "Error: getUserInfo Maybe You Spam Too Much!,Try Again !");
45
+ console.log(err);
46
+ log.error("getUserInfo", "Lỗi: getUserInfo Thể Do Bạn Spam Quá Nhiều !,Hãy Thử Lại !");
47
47
  return callback(err);
48
48
  });
49
49
  }
@@ -52,4 +52,4 @@ try {
52
52
  }
53
53
  return returnPromise;
54
54
  };
55
- };
55
+ };