fca-arif-babu 1.0.21 → 8.0.0

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 (152) 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 +169 -0
  4. package/Extra/Bypass/test/index.js +188 -0
  5. package/Extra/Database/index.js +469 -0
  6. package/Extra/ExtraAddons.js +82 -0
  7. package/Extra/ExtraFindUID.js +62 -0
  8. package/Extra/ExtraGetThread.js +365 -0
  9. package/Extra/ExtraScreenShot.js +430 -0
  10. package/Extra/ExtraUptimeRobot.js +38 -0
  11. package/Extra/Html/Classic/script.js +119 -0
  12. package/Extra/Html/Classic/style.css +8 -0
  13. package/Extra/Security/AES_256_GCM/index.js +1 -0
  14. package/Extra/Security/Base/Step_1.js +6 -0
  15. package/Extra/Security/Base/Step_2.js +22 -0
  16. package/Extra/Security/Base/Step_3.js +22 -0
  17. package/Extra/Security/Base/index.js +191 -0
  18. package/Extra/Security/Step_1.js +6 -0
  19. package/Extra/Security/Step_2.js +22 -0
  20. package/Extra/Security/Step_3.js +22 -0
  21. package/Extra/Security/index.js +5 -0
  22. package/Extra/Src/Change_Environment.js +24 -0
  23. package/Extra/Src/Check_Update.js +67 -0
  24. package/Extra/Src/History.js +115 -0
  25. package/Extra/Src/Instant_Update.js +65 -0
  26. package/Extra/Src/Last-Run.js +65 -0
  27. package/Extra/Src/Premium.js +81 -0
  28. package/Extra/Src/Release_Memory.js +160 -0
  29. package/Extra/Src/Websocket.js +213 -0
  30. package/Extra/Src/image/62518eafb0670b697788ce4f9a4f71d1.jpg +0 -0
  31. package/Extra/Src/test.js +28 -0
  32. package/Extra/Src/uuid.js +137 -0
  33. package/Func/AcceptAgreement.js +31 -0
  34. package/Func/ClearCache.js +64 -0
  35. package/Func/ReportV1.js +54 -0
  36. package/{LICENSE-MIT → LICENSE.txt} +6 -6
  37. package/Language/index.json +228 -0
  38. package/Main.js +1290 -0
  39. package/README.md +8 -6
  40. package/SECURITY.md +17 -0
  41. package/broadcast.js +44 -0
  42. package/index.js +424 -465
  43. package/logger.js +66 -0
  44. package/package.json +91 -42
  45. package/src/Dev_Horizon_Data.js +125 -0
  46. package/src/Dev_getThreadInfoOLD.js +422 -0
  47. package/src/Dev_shareTest2.js +68 -0
  48. package/src/Dev_shareTest3.js +71 -0
  49. package/src/Premium.js +25 -0
  50. package/src/Screenshot.js +83 -0
  51. package/src/addExternalModule.js +5 -14
  52. package/src/addUserToGroup.js +21 -57
  53. package/src/changeAdminStatus.js +22 -46
  54. package/src/changeArchivedStatus.js +12 -26
  55. package/src/{changeAvatarV2.js → changeAvt.js} +2 -3
  56. package/src/changeBio.js +15 -26
  57. package/src/changeBlockedStatus.js +9 -22
  58. package/src/changeGroupImage.js +26 -55
  59. package/src/changeNickname.js +14 -28
  60. package/src/changeThreadColor.js +19 -22
  61. package/src/changeThreadEmoji.js +12 -25
  62. package/src/createNewGroup.js +18 -36
  63. package/src/createPoll.js +17 -28
  64. package/src/deleteMessage.js +14 -25
  65. package/src/deleteThread.js +13 -26
  66. package/src/editMessage.js +50 -56
  67. package/src/forwardAttachment.js +16 -28
  68. package/src/getAccessToken.js +28 -0
  69. package/src/getCurrentUserID.js +3 -3
  70. package/src/getEmojiUrl.js +8 -10
  71. package/src/getFriendsList.js +15 -25
  72. package/src/getMessage.js +81 -813
  73. package/src/getThreadHistory.js +98 -241
  74. package/src/getThreadInfo.js +286 -89
  75. package/src/getThreadInfoOLD.js +422 -0
  76. package/src/getThreadList.js +158 -215
  77. package/src/getThreadMain.js +220 -0
  78. package/src/getThreadPictures.js +20 -40
  79. package/src/getUID.js +49 -112
  80. package/src/getUserID.js +14 -18
  81. package/src/getUserInfo.js +75 -34
  82. package/src/getUserInfoMain.js +65 -0
  83. package/src/getUserInfoV2.js +32 -0
  84. package/src/getUserInfoV3.js +63 -0
  85. package/src/getUserInfoV4.js +55 -0
  86. package/src/getUserInfoV5.js +61 -0
  87. package/src/handleFriendRequest.js +14 -25
  88. package/src/handleMessageRequest.js +21 -37
  89. package/src/httpGet.js +22 -37
  90. package/src/httpPost.js +20 -36
  91. package/src/httpPostFormData.js +23 -52
  92. package/src/listenMqtt.js +667 -414
  93. package/src/listenMqttV1.js +846 -0
  94. package/src/logout.js +17 -24
  95. package/src/markAsDelivered.js +16 -23
  96. package/src/markAsRead.js +28 -43
  97. package/src/markAsReadAll.js +14 -21
  98. package/src/markAsSeen.js +19 -29
  99. package/src/muteThread.js +13 -18
  100. package/src/removeUserFromGroup.js +18 -48
  101. package/src/resolvePhotoUrl.js +14 -22
  102. package/src/searchForThread.js +13 -23
  103. package/src/sendMessage.js +125 -181
  104. package/src/sendMqttMessage.js +71 -0
  105. package/src/sendTypingIndicator.js +80 -28
  106. package/src/setMessageReaction.js +20 -33
  107. package/src/setPostReaction.js +95 -105
  108. package/src/setTitle.js +19 -35
  109. package/src/shareContact.js +37 -92
  110. package/src/shareLink.js +5 -6
  111. package/src/threadColors.js +17 -109
  112. package/src/unfriend.js +11 -20
  113. package/src/unsendMessage.js +33 -30
  114. package/src/unsendMqttMessage.js +66 -0
  115. package/test/data/shareAttach.js +146 -0
  116. package/test/data/something.mov +1 -0
  117. package/test/data/test.png +1 -0
  118. package/test/data/test.txt +1 -0
  119. package/test/env/.env +1 -0
  120. package/test/example-config.json +18 -0
  121. package/test/test-page.js +140 -0
  122. package/test/test.js +385 -0
  123. package/test/testv2.js +3 -0
  124. package/utils.js +2908 -1247
  125. package/replit.nix +0 -3
  126. package/src/changeAvatar.js +0 -136
  127. package/src/changeBlockedStatusMqtt.js +0 -80
  128. package/src/changeCover.js +0 -72
  129. package/src/changeName.js +0 -78
  130. package/src/changeUsername.js +0 -58
  131. package/src/createCommentPost.js +0 -229
  132. package/src/createPost.js +0 -275
  133. package/src/data/getThreadInfo.json +0 -1
  134. package/src/editMessageOld.js +0 -67
  135. package/src/follow.js +0 -74
  136. package/src/getAccess.js +0 -112
  137. package/src/getAvatarUser.js +0 -78
  138. package/src/getBotInitialData.js +0 -42
  139. package/src/getRegion.js +0 -7
  140. package/src/getThreadHistoryDeprecated.js +0 -93
  141. package/src/getThreadInfoDeprecated.js +0 -80
  142. package/src/getThreadListDeprecated.js +0 -75
  143. package/src/listenNotification.js +0 -85
  144. package/src/pinMessage.js +0 -59
  145. package/src/refreshFb_dtsg.js +0 -89
  146. package/src/searchStickers.js +0 -53
  147. package/src/sendMessageMqtt.js +0 -316
  148. package/src/setMessageReactionMqtt.js +0 -62
  149. package/src/setProfileGuard.js +0 -44
  150. package/src/setStoryReaction.js +0 -64
  151. package/src/stopListenMqtt.js +0 -23
  152. package/src/uploadAttachment.js +0 -94
package/index.js CHANGED
@@ -1,489 +1,448 @@
1
- "use strict";
2
-
3
- const utils = require("./utils");
4
- const fs = require("fs");
5
- const cron = require("node-cron");
6
- let globalOptions = {};
7
- let ctx = null;
8
- let _defaultFuncs = null;
9
- let api = null;
10
- let region;
11
-
12
- const errorRetrieving = "Error retrieving userID. This can be caused by a lot of things, including getting blocked by Facebook for logging in from an unknown location. Try logging in with a browser to verify.";
13
-
14
- //NO NEED FCA
15
- async function setOptions(globalOptions_from, options = {}) {
16
- Object.keys(options).map((key) => {
17
- switch (key) {
18
- case 'online':
19
- globalOptions_from.online = Boolean(options.online);
20
- break;
21
- case 'selfListen':
22
- globalOptions_from.selfListen = Boolean(options.selfListen);
23
- break;
24
- case 'selfListenEvent':
25
- globalOptions_from.selfListenEvent = options.selfListenEvent;
26
- break;
27
- case 'listenEvents':
28
- globalOptions_from.listenEvents = Boolean(options.listenEvents);
29
- break;
30
- case 'pageID':
31
- globalOptions_from.pageID = options.pageID.toString();
32
- break;
33
- case 'updatePresence':
34
- globalOptions_from.updatePresence = Boolean(options.updatePresence);
35
- break;
36
- case 'forceLogin':
37
- globalOptions_from.forceLogin = Boolean(options.forceLogin);
38
- break;
39
- case 'userAgent':
40
- globalOptions_from.userAgent = options.userAgent;
41
- break;
42
- case 'autoMarkDelivery':
43
- globalOptions_from.autoMarkDelivery = Boolean(options.autoMarkDelivery);
44
- break;
45
- case 'autoMarkRead':
46
- globalOptions_from.autoMarkRead = Boolean(options.autoMarkRead);
47
- break;
48
- case 'listenTyping':
49
- globalOptions_from.listenTyping = Boolean(options.listenTyping);
50
- break;
51
- case 'proxy':
52
- if (typeof options.proxy != "string") {
53
- delete globalOptions_from.proxy;
54
- utils.setProxy();
55
- } else {
56
- globalOptions_from.proxy = options.proxy;
57
- utils.setProxy(globalOptions_from.proxy);
1
+ 'use strict';
2
+ /* eslint-disable linebreak-style */
3
+ const utils = require('./utils');
4
+ global.Fca = new Object({
5
+ isThread: new Array(),
6
+ isUser: new Array(),
7
+ startTime: Date.now(),
8
+ Setting: new Map(),
9
+ Version: require('./package.json').version,
10
+ Require: new Object({
11
+ fs: require("fs"),
12
+ Fetch: require('got'),
13
+ log: require("npmlog"),
14
+ utils: require("./utils.js"),
15
+ logger: require('./logger.js'),
16
+ languageFile: require('./Language/index.json'),
17
+ Security: require('./Extra/Src/uuid.js')
18
+ }),
19
+ getText: function(/** @type {any[]} */...Data) {
20
+ var Main = (Data.splice(0,1)).toString();
21
+ for (let i = 0; i < Data.length; i++) Main = Main.replace(RegExp(`%${i + 1}`, 'g'), Data[i]);
22
+ return Main;
23
+ },
24
+ Data: new Object({
25
+ ObjArif: {
26
+ "Language": "en",
27
+ "PreKey": "",
28
+ "AutoUpdate": true,
29
+ "MainColor": "#9900FF",
30
+ "MainName": "[ FCA-ARIF-PROJECT ]",
31
+ "Uptime": false,
32
+ "Config": "default",
33
+ "DevMode": false,
34
+ "Login2Fa": false,
35
+ "AutoLogin": false,
36
+ "BroadCast": true,
37
+ "AuthString": "SD4S XQ32 O2JA WXB3 FUX2 OPJ7 Q7JZ 4R6Z | https://i.imgur.com/RAg3rvw.png Please remove this !, Recommend If You Using getUserInfoV2",
38
+ "EncryptFeature": true,
39
+ "ResetDataLogin": false,
40
+ "AutoInstallNode": false,
41
+ "AntiSendAppState": true,
42
+ "AutoRestartMinutes": 0,
43
+ "RestartMQTT_Minutes": 0,
44
+ "Websocket_Extension": {
45
+ "Status": false,
46
+ "ResetData": false,
47
+ "AppState_Path": "appstate.json"
48
+ },
49
+ "HTML": {
50
+ "HTML": true,
51
+ "UserName": "Guest",
52
+ "MusicLink": "https://drive.google.com/uc?id=1zlAALlxk1TnO7jXtEP_O6yvemtzA2ukA&export=download"
53
+ },
54
+ "AntiGetInfo": {
55
+ "Database_Type": "default", //json or default
56
+ "AntiGetThreadInfo": true,
57
+ "AntiGetUserInfo": true
58
+ },
59
+ "Stable_Version": {
60
+ "Accept": false,
61
+ "Version": ""
62
+ },
63
+ "CheckPointBypass": {
64
+ "956": {
65
+ "Allow": false,
66
+ "Difficult": "Easy",
67
+ "Notification": "Turn on with AutoLogin!"
68
+ }
69
+ },
70
+ "AntiStuckAndMemoryLeak": {
71
+ "AutoRestart": {
72
+ "Use": true,
73
+ "Explain": "When this feature is turned on, the system will continuously check and confirm that if memory usage reaches 90%, it will automatically restart to avoid freezing or stopping."
74
+ },
75
+ "LogFile": {
76
+ "Use": false,
77
+ "Explain": "Record memory usage logs to fix errors. Default location: Horizon_Database/memory.logs"
78
+ }
79
+ }
80
+ },
81
+ CountTime: function() {
82
+ var fs = global.Fca.Require.fs;
83
+ if (fs.existsSync(__dirname + '/CountTime.json')) {
84
+ try {
85
+ var data = Number(fs.readFileSync(__dirname + '/CountTime.json', 'utf8')),
86
+ hours = Math.floor(data / (60 * 60));
87
+ }
88
+ catch (e) {
89
+ fs.writeFileSync(__dirname + '/CountTime.json', 0);
90
+ hours = 0;
91
+ }
92
+ }
93
+ else {
94
+ hours = 0;
95
+ }
96
+ return `${hours} Hours`;
58
97
  }
59
- break;
60
- case 'autoReconnect':
61
- globalOptions_from.autoReconnect = Boolean(options.autoReconnect);
62
- break;
63
- case 'emitReady':
64
- globalOptions_from.emitReady = Boolean(options.emitReady);
65
- break;
66
- case 'randomUserAgent':
67
- globalOptions_from.randomUserAgent = Boolean(options.randomUserAgent);
68
- if (globalOptions_from.randomUserAgent){
69
- globalOptions_from.userAgent = utils.randomUserAgent();
70
- console.warn("FCA-ARIF-BABU", "Random user agent enabled. This is an EXPERIMENTAL feature and I think this won't on some accounts. turn it on at your own risk. Contact the owner for more information about experimental features.");
71
- console.warn("randomUserAgent", "UA selected:", globalOptions_from.userAgent);
98
+ }),
99
+ Action: async function(Type, ctx, Code, defaultFuncs) {
100
+ switch (Type) {
101
+ case "AutoLogin": {
102
+ var Database = require('./Extra/Database');
103
+ var logger = global.Fca.Require.logger;
104
+ var Email = (Database().get('Account')).replace(RegExp('"', 'g'), ''); //hmm IDK
105
+ var PassWord = (Database().get('Password')).replace(RegExp('"', 'g'), '');
106
+ require('./Main')({ email: Email, password: PassWord},async (error, api) => {
107
+ if (error) {
108
+ logger.Error(JSON.stringify(error,null,2), function() { logger.Error("AutoLogin Failed!", function() { process.exit(0); }) });
109
+ }
110
+ try {
111
+ Database().set("TempState", Database().get('Through2Fa'));
112
+ }
113
+ catch(e) {
114
+ logger.Warning(global.Fca.Require.Language.Index.ErrDatabase);
115
+ logger.Error();
116
+ process.exit(0);
117
+ }
118
+ process.exit(1);
119
+ });
120
+ }
121
+ break;
122
+ case "Bypass": {
123
+ const Bypass_Module = require(`./Extra/Bypass/${Code}`);
124
+ const logger = global.Fca.Require.logger;
125
+ switch (Code) {
126
+ case 956: {
127
+ async function P1() {
128
+ return new Promise((resolve, reject) => {
129
+ try {
130
+ utils.get('https://www.facebook.com/checkpoint/828281030927956/?next=https%3A%2F%2Faccountscenter.facebook.com%2Fpassword_and_security', ctx.jar, null, ctx.globalOptions).then(function(data) {
131
+ resolve(Bypass_Module.Check(data.body));
132
+ })
133
+ }
134
+ catch (error) {
135
+ reject(error);
136
+ }
137
+ })
138
+ }
139
+ try {
140
+ const test = await P1();
141
+ if (test != null && test != '' && test != undefined) {
142
+ const resp = await Bypass_Module.Cook_And_Work(ctx, defaultFuncs)
143
+ if (resp == true) return logger.Success("Bypassing 956 successfully!", function() { return process.exit(1); })
144
+ else return logger.Error("Bypass 956 failed ! DO YOUR SELF :>", function() { process.exit(0) });
145
+ }
146
+ }
147
+ catch (e) {
148
+ logger.Error("Bypass 956 failed ! DO YOUR SELF :>", function() { process.exit(0) })
149
+ }
150
+ }
151
+ }
152
+ }
153
+ break;
154
+ default: {
155
+ require('npmlog').Error("Invalid Message!");
156
+ };
72
157
  }
73
- break;
74
- case 'bypassRegion':
75
- globalOptions_from.bypassRegion = options.bypassRegion;
76
- break;
77
- default:
78
- break;
79
158
  }
80
- });
81
- globalOptions = globalOptions_from;
82
- }
159
+ });
83
160
 
84
- async function updateDTSG(res, appstate, userId) {
85
- try {
86
- const appstateCUser = (appstate.find(i => i.key == 'i_user') || appstate.find(i => i.key == 'c_user'))
87
- const UID = userId || appstateCUser.value;
88
- if (!res || !res.body) {
89
- throw new Error("Invalid response: Response body is missing.");
90
- }
91
- const fb_dtsg = utils.getFrom(res.body, '["DTSGInitData",[],{"token":"', '","');
92
- const jazoest = utils.getFrom(res.body, 'jazoest=', '",');
93
- if (fb_dtsg && jazoest) {
94
- const filePath = 'fb_dtsg_data.json';
95
- let existingData = {};
96
- if (fs.existsSync(filePath)) {
97
- const fileContent = fs.readFileSync(filePath, 'utf8');
98
- existingData = JSON.parse(fileContent);
99
- }
100
- existingData[UID] = {
101
- fb_dtsg,
102
- jazoest
103
- };
104
- fs.writeFileSync(filePath, JSON.stringify(existingData, null, 2), 'utf8');
105
- }
106
- return res;
107
- } catch (error) {
108
- console.error('updateDTSG', `Error updating DTSG for user ${userId}: ${error.message}`);
109
- return;
110
- }
111
- }
161
+ try {
162
+ let Boolean_Fca = ["AntiSendAppState","AutoUpdate","Uptime","BroadCast","EncryptFeature","AutoLogin","ResetDataLogin","Login2Fa", "DevMode","AutoInstallNode"];
163
+ let String_Fca = ["MainName","PreKey","Language","AuthString","Config"]
164
+ let Number_Fca = ["AutoRestartMinutes","RestartMQTT_Minutes"];
165
+ let Object_Fca = ["HTML","Stable_Version","AntiGetInfo","Websocket_Extension", "CheckPointBypass", "AntiStuckAndMemoryLeak"];
166
+ let All_Variable = Boolean_Fca.concat(String_Fca,Number_Fca,Object_Fca);
112
167
 
113
168
 
114
- let isBehavior = false;
115
- async function bypassAutoBehavior(resp, jar, appstate, ID) {
116
- try {
117
- const appstateCUser = (appstate.find(i => i.key == 'c_user') || appstate.find(i => i.key == 'i_user'))
118
- const UID = ID || appstateCUser.value;
119
- const FormBypass = {
120
- av: UID,
121
- fb_api_caller_class: "RelayModern",
122
- fb_api_req_friendly_name: "FBScrapingWarningMutation",
123
- variables: JSON.stringify({}),
124
- server_timestamps: true,
125
- doc_id: 6339492849481770
169
+ if (!global.Fca.Require.fs.existsSync(process.cwd() + '/ArifFca.json')) {
170
+ global.Fca.Require.fs.writeFileSync(process.cwd() + "/ArifFca.json", JSON.stringify(global.Fca.Data.ObjArif, null, "\t"));
171
+ process.exit(1);
126
172
  }
127
- const kupal = () => {
128
- console.warn("FCA-ARIF-BABU", `We suspect automated behavior on account ${UID}.`);
129
- if (!isBehavior) isBehavior = true;
130
- };
131
- if (resp) {
132
- if (resp.request.uri && resp.request.uri.href.includes("https://www.facebook.com/checkpoint/")) {
133
- if (resp.request.uri.href.includes('601051028565049')) {
134
- const fb_dtsg = utils.getFrom(resp.body, '["DTSGInitData",[],{"token":"', '","');
135
- const jazoest = utils.getFrom(resp.body, 'jazoest=', '",');
136
- const lsd = utils.getFrom(resp.body, "[\"LSD\",[],{\"token\":\"", "\"}");
137
- return utils.post("https://www.facebook.com/api/graphql/", jar, {
138
- ...FormBypass,
139
- fb_dtsg,
140
- jazoest,
141
- lsd
142
- }, globalOptions).then(utils.saveCookies(jar)).then(res => {
143
- kupal();
144
- return res;
145
- });
146
- } else return resp;
147
- } else return resp;
148
- }
149
- } catch (e) {
150
- console.error("error", e);
151
- }
152
- }
153
173
 
154
- async function checkIfSuspended(resp, appstate) {
155
- try {
156
- const appstateCUser = (appstate.find(i => i.key == 'c_user') || appstate.find(i => i.key == 'i_user'))
157
- const UID = appstateCUser?.value;
158
- const suspendReasons = {};
159
- if (resp) {
160
- if (resp.request.uri && resp.request.uri.href.includes("https://www.facebook.com/checkpoint/")) {
161
- if (resp.request.uri.href.includes('1501092823525282')) {
162
- const daystoDisable = resp.body?.match(/"log_out_uri":"(.*?)","title":"(.*?)"/);
163
- if (daystoDisable && daystoDisable[2]) {
164
- suspendReasons.durationInfo = daystoDisable[2];
165
- console.error(`Suspension time remaining:`, suspendReasons.durationInfo);
166
- }
167
- const reasonDescription = resp.body?.match(/"reason_section_body":"(.*?)"/);
168
- if (reasonDescription && reasonDescription[1]) {
169
- suspendReasons.longReason = reasonDescription?.[1];
170
- const reasonReplace = suspendReasons?.longReason?.toLowerCase()?.replace("your account, or activity on it, doesn't follow our community standards on ", "");
171
- suspendReasons.shortReason = reasonReplace?.substring(0, 1).toUpperCase() + reasonReplace?.substring(1);
172
- console.error(`Alert on ${UID}:`, `Account has been suspended!`);
173
- console.error(`Why suspended:`, suspendReasons.longReason)
174
- console.error(`Reason on suspension:`, suspendReasons.shortReason);
175
- }
176
- ctx = null;
177
- return {
178
- suspended: true,
179
- suspendReasons
180
- }
181
- }
182
- } else return;
183
- }
184
- } catch (error) {
185
- return;
186
- }
174
+ try {
175
+ var Data_Setting = require(process.cwd() + "/ArifFca.json");
187
176
  }
188
-
189
- async function checkIfLocked(resp, appstate) {
190
- try {
191
- const appstateCUser = (appstate.find(i => i.key == 'c_user') || appstate.find(i => i.key == 'i_user'))
192
- const UID = appstateCUser?.value;
193
- const lockedReasons = {};
194
- if (resp) {
195
- if (resp.request.uri && resp.request.uri.href.includes("https://www.facebook.com/checkpoint/")) {
196
- if (resp.request.uri.href.includes('828281030927956')) {
197
- const lockDesc = resp.body.match(/"is_unvetted_flow":true,"title":"(.*?)"/);
198
- if (lockDesc && lockDesc[1]) {
199
- lockedReasons.reason = lockDesc[1];
200
- console.error(`Alert on ${UID}:`, lockedReasons.reason);
201
- }
202
- ctx = null;
203
- return {
204
- locked: true,
205
- lockedReasons
206
- }
207
- }
208
- } else return;
209
- }
210
- } catch (e) {
211
- console.error("error", e);
212
- }
177
+ catch (e) {
178
+ global.Fca.Require.logger.Error('Detect Your ArifFca Settings Invalid!, Carry out default restoration');
179
+ global.Fca.Require.fs.writeFileSync(process.cwd() + "/ArifFca.json", JSON.stringify(global.Fca.Data.ObjArif, null, "\t"));
180
+ process.exit(1)
213
181
  }
182
+ if (global.Fca.Require.fs.existsSync(process.cwd() + '/ArifFca.json')) {
183
+
184
+ for (let i of All_Variable) {
185
+ if (Data_Setting[i] == undefined) {
186
+ Data_Setting[i] = global.Fca.Data.ObjArif[i];
187
+ global.Fca.Require.fs.writeFileSync(process.cwd() + "/ArifFca.json", JSON.stringify(Data_Setting, null, "\t"));
188
+ }
189
+ else continue;
190
+ } //Check Variable
214
191
 
215
- function buildAPI(html, jar) {
216
- let fb_dtsg;
217
- let userID;
218
- const tokenMatch = html.match(/DTSGInitialData.*?token":"(.*?)"/);
219
- if (tokenMatch) {
220
- fb_dtsg = tokenMatch[1];
221
- }
222
- //hajime pogi
223
- //@Kenneth Panio: i fixed the cookie do not change or remove this line what it does? we know that facebook account allow multiple profile in single account so it allow us to login which specific profile we use
224
- let cookie = jar.getCookies("https://www.facebook.com");
225
- let primary_profile = cookie.filter(function(val) {
226
- return val.cookieString().split("=")[0] === "c_user";
227
- });
228
- let secondary_profile = cookie.filter(function(val) {
229
- return val.cookieString().split("=")[0] === "i_user";
230
- });
231
- if (primary_profile.length === 0 && secondary_profile.length === 0) {
232
- throw {
233
- error: errorRetrieving,
234
- };
235
- } else {
236
- if (html.indexOf("/checkpoint/block/?next") > -1) {
237
- return console.warn(
238
- "FCA-ARIF-BABU",
239
- "Checkpoint detected. Please log in with a browser to verify."
240
- );
241
- }
242
- if (secondary_profile[0] && secondary_profile[0].cookieString().includes('i_user')) {
243
- userID = secondary_profile[0].cookieString().split("=")[1].toString();
244
- } else {
245
- userID = primary_profile[0].cookieString().split("=")[1].toString();
246
- }
247
- }
248
- console.log("FCA-ARIF-BABU", "LOADING... 🙂🤞");
249
- console.log("FCA-ARIF-BABU", "FAST ACCOUNT INFO... 🙂🤞");
250
- const clientID = (Math.random() * 2147483648 | 0).toString(16);
251
- const CHECK_MQTT = {
252
- oldFBMQTTMatch: html.match(/irisSeqID:"(.+?)",appID:219994525426954,endpoint:"(.+?)"/),
253
- newFBMQTTMatch: html.match(/{"app_id":"219994525426954","endpoint":"(.+?)","iris_seq_id":"(.+?)"}/),
254
- legacyFBMQTTMatch: html.match(/\["MqttWebConfig",\[\],{"fbid":"(.*?)","appID":219994525426954,"endpoint":"(.*?)","pollingEndpoint":"(.*?)"/)
255
- }
256
- let Slot = Object.keys(CHECK_MQTT);
257
- let mqttEndpoint, irisSeqID;
258
- Object.keys(CHECK_MQTT).map((MQTT) => {
259
- if (globalOptions.bypassRegion) return;
260
- if (CHECK_MQTT[MQTT] && !region) {
261
- switch (Slot.indexOf(MQTT)) {
262
- case 0: {
263
- irisSeqID = CHECK_MQTT[MQTT][1];
264
- mqttEndpoint = CHECK_MQTT[MQTT][2].replace(/\\\//g, "/");
265
- region = new URL(mqttEndpoint).searchParams.get("region").toUpperCase();
266
- break;
192
+ for (let i in Data_Setting) {
193
+ if (Boolean_Fca.includes(i)) {
194
+ if (global.Fca.Require.utils.getType(Data_Setting[i]) != "Boolean") logger.Error(i + " Is Not A Boolean, Need To Be true Or false !", function() { process.exit(0) });
195
+ else continue;
196
+ }
197
+ else if (String_Fca.includes(i)) {
198
+ if (global.Fca.Require.utils.getType(Data_Setting[i]) != "String") logger.Error(i + " Is Not A String, Need To Be String!", function() { process.exit(0) });
199
+ else continue;
200
+ }
201
+ else if (Number_Fca.includes(i)) {
202
+ if (global.Fca.Require.utils.getType(Data_Setting[i]) != "Number") logger.Error(i + " Is Not A Number, Need To Be Number !", function() { process.exit(0) });
203
+ else continue;
204
+ }
205
+ else if (Object_Fca.includes(i)) {
206
+ if (global.Fca.Require.utils.getType(Data_Setting[i]) != "Object") {
207
+ Data_Setting[i] = global.Fca.Data.ObjArif[i];
208
+ global.Fca.Require.fs.writeFileSync(process.cwd() + "/ArifFca.json", JSON.stringify(Data_Setting, null, "\t"));
209
+ }
210
+ else continue;
211
+ }
267
212
  }
268
- case 1: {
269
- irisSeqID = CHECK_MQTT[MQTT][2];
270
- mqttEndpoint = CHECK_MQTT[MQTT][1].replace(/\\\//g, "/");
271
- region = new URL(mqttEndpoint).searchParams.get("region").toUpperCase();
272
- break;
213
+
214
+ for (let i of Object_Fca) {
215
+ const All_Paths = utils.getPaths(global.Fca.Data.ObjArif[i]);
216
+ const Mission = { Main_Path: i, Data_Path: All_Paths }
217
+ for (let i of Mission.Data_Path) {
218
+ if (Data_Setting[Mission.Main_Path] == undefined) {
219
+ Data_Setting[Mission.Main_Path] = global.Fca.Data.ObjArif[Mission.Main_Path];
220
+ global.Fca.Require.fs.writeFileSync(process.cwd() + "/ArifFca.json", JSON.stringify(Data_Setting, null, "\t"));
221
+ }
222
+ const User_Data = (utils.getData_Path(Data_Setting[Mission.Main_Path], i, 0))
223
+ const User_Data_Type = utils.getType(User_Data);
224
+ if (User_Data_Type == "Number") {
225
+ const Mission_Path = User_Data == 0 ? i : i.slice(0, User_Data);
226
+ const Mission_Obj = utils.getData_Path(global.Fca.Data.ObjArif[Mission.Main_Path], Mission_Path, 0);
227
+ Data_Setting[Mission.Main_Path] = utils.setData_Path(Data_Setting[Mission.Main_Path], Mission_Path, Mission_Obj)
228
+ global.Fca.Require.fs.writeFileSync(process.cwd() + "/ArifFca.json", JSON.stringify(Data_Setting, null, "\t"));
229
+ }
230
+ }
273
231
  }
274
- case 2: {
275
- mqttEndpoint = CHECK_MQTT[MQTT][2].replace(/\\\//g, "/"); //this really important.
276
- region = new URL(mqttEndpoint).searchParams.get("region").toUpperCase();
277
- break;
232
+
233
+ if (!global.Fca.Require.languageFile.some((/** @type {{ Language: string; }} */i) => i.Language == Data_Setting.Language)) {
234
+ global.Fca.Require.logger.Warning("Not Support Language: " + Data_Setting.Language + " Only 'en' and 'vi'");
235
+ process.exit(0);
278
236
  }
279
- }
280
- return;
281
- }
282
- });
283
- if (globalOptions.bypassRegion)
284
- region = globalOptions.bypassRegion.toUpperCase();
285
- else if (!region)
286
- region = ["prn", "pnb", "vll", "hkg", "sin", "ftw", "ash", "nrt"][Math.random() * 5 | 0].toUpperCase();
287
-
288
- if (globalOptions.bypassRegion || !mqttEndpoint)
289
- mqttEndpoint = "wss://edge-chat.facebook.com/chat?region=" + region;
290
- var ctx = {
291
- userID,
292
- jar,
293
- clientID,
294
- globalOptions,
295
- loggedIn: true,
296
- access_token: 'NONE',
297
- clientMutationId: 0,
298
- mqttClient: undefined,
299
- lastSeqId: irisSeqID,
300
- syncToken: undefined,
301
- mqttEndpoint,
302
- wsReqNumber: 0,
303
- wsTaskNumber: 0,
304
- reqCallbacks: {},
305
- region,
306
- firstListen: true,
307
- fb_dtsg
308
- };
309
- cron.schedule('0 0 * * *', () => {
310
- const fbDtsgData = JSON.parse(fs.readFileSync('fb_dtsg_data.json', 'utf8'));
311
- if (fbDtsgData && fbDtsgData[userID]) {
312
- const userFbDtsg = fbDtsgData[userID];
313
- api.refreshFb_dtsg(userFbDtsg)
314
- .then(() => console.log("FCA-ARIF-BABU", `Fb_dtsg refreshed successfully for user ${userID}.`))
315
- .catch((err) => console.error("FCA-ARIF-BABU", `Error during Fb_dtsg refresh for user ${userID}:`, err));
316
- } else {
317
- console.error("FCA-ARIF-BABU", `No fb_dtsg data found for user ${userID}.`);
318
- }
319
- }, {
320
- timezone: 'Asia/Manila'
321
- });
322
- var defaultFuncs = utils.makeDefaults(html, userID, ctx);
323
- return [ctx, defaultFuncs];
237
+ global.Fca.Require.Language = global.Fca.Require.languageFile.find((/** @type {{ Language: string; }} */i) => i.Language == Data_Setting.Language).Folder;
238
+ } else process.exit(1);
239
+ global.Fca.Require.Arif = Data_Setting;
240
+ }
241
+ catch (e) {
242
+ console.log(e);
243
+ global.Fca.Require.logger.Error();
324
244
  }
325
245
 
326
- async function loginHelper(appState, email, password, apiCustomized = {}, callback) {
327
- let mainPromise = null;
328
- const jar = utils.getJar();
329
- console.log("FCA-ARIF-BABU", 'LOADING... 🙂🤞');
330
- if (appState) {
331
- console.log("FCA-ARIF-BABU", "USING APPSTATE... 🙂🤞");
332
- if (utils.getType(appState) === 'Array' && appState.some(c => c.name)) {
333
- appState = appState.map(c => {
334
- c.key = c.name;
335
- delete c.name;
336
- return c;
337
- });
338
- }
339
- else if (utils.getType(appState) === 'String') {
340
- const arrayAppState = [];
341
- appState.split(';').forEach(c => {
342
- const [key, value] = c.split('=');
343
- arrayAppState.push({
344
- key: (key || "").trim(),
345
- value: (value || "").trim(),
346
- domain: ".facebook.com",
347
- path: "/",
348
- expires: new Date().getTime() + 1000 * 60 * 60 * 24 * 365
349
- });
350
- });
351
- appState = arrayAppState;
246
+ /*
247
+ if (global.Fca.Require.FastConfig.Websocket_Extension.Status) {
248
+ console.history = new Array();
249
+ var Convert = require('ansi-to-html');
250
+ var convert = new Convert();
251
+ console.__log = console.log;
252
+ console.log = function (data) {
253
+ const log = convert.toHtml(data)
254
+ console.history.push(log)
255
+ console.__log.apply(console,arguments)
256
+ if (console.history.length > 80) {
257
+ console.history.shift();
258
+ }
352
259
  }
260
+ }
261
+ **/
353
262
 
354
- appState.map(c => {
355
- const str = c.key + "=" + c.value + "; expires=" + c.expires + "; domain=" + c.domain + "; path=" + c.path + ";";
356
- jar.setCookie(str, "http://" + c.domain);
357
- });
358
-
359
- mainPromise = utils.get('https://www.facebook.com/', jar, null, globalOptions, { noRef: true })
360
- .then(utils.saveCookies(jar));
361
- } else if (email && password) {
362
- throw { error: "Credentials method is not implemented to fca-arif-babu yet. "};
363
- } else {
364
- throw { error: "Please provide either appState or credentials." };
365
- }
366
-
367
- api = {
368
- setOptions: setOptions.bind(null, globalOptions),
369
- getAppState() {
370
- const appState = utils.getAppState(jar);
371
- if (!Array.isArray(appState)) return [];
372
- const uniqueAppState = appState.filter((item, index, self) => {
373
- return self.findIndex((t) => t.key === item.key) === index;
374
- });
375
- return uniqueAppState.length > 0 ? uniqueAppState : appState;
263
+ module.exports = function(loginData, options, callback) {
264
+ //const Language = global.Fca.Require.languageFile.find((/** @type {{ Language: string; }} */i) => i.Language == global.Fca.Require.FastConfig.Language).Folder.Index;
265
+ var login;
266
+ try {
267
+ login = require('./Main');
376
268
  }
377
- };
378
- mainPromise = mainPromise
379
- .then(res => bypassAutoBehavior(res, jar, appState))
380
- .then(res => updateDTSG(res, appState))
381
- .then(async (res) => {
382
- const resp = await utils.get(`https://www.facebook.com/home.php`, jar, null, globalOptions);
383
- const html = resp?.body;
384
- const stuff = await buildAPI(html, jar);
385
- ctx = stuff[0];
386
- _defaultFuncs = stuff[1];
387
- api.addFunctions = (directory) => {
388
- const folder = directory.endsWith("/") ? directory : (directory + "/");
389
- fs.readdirSync(folder)
390
- .filter(v => v.endsWith('.js'))
391
- .map(v => {
392
- api[v.replace('.js', '')] = require(folder + v)(_defaultFuncs, api, ctx);
393
- });
394
- }
395
- api.addFunctions(__dirname + '/src');
396
- api.listen = api.listenMqtt;
397
- api.ws3 = {
398
- ...apiCustomized
399
- };
400
- const botAcc = await api.getBotInitialData();
401
- if (!botAcc.error){
402
- console.log("FCA-ARIF-BABU", `SUCCESSFUL ACCOUNT INFO 🙂🤞`);
403
- console.log("FCA-ARIF-BABU", "BOT NAME 🙂🤞", botAcc.name);
404
- console.log("FCA-ARIF-BABU", "BOT USER ID 🙂🤞", botAcc.uid);
405
- ctx.userName = botAcc.name;
406
- } else {
407
- console.warn("FCA-ARIF-BABU", botAcc.error);
408
- console.warn("FCA-ARIF-BABU", `WARNING: Failed to fetch account info. Proceeding to log in for user ${ctx.userID}`);
409
- }
410
- console.log("FCA-ARIF-BABU", "CONNECTED TO SERVER REGION 🙂🤞", region || "Unknown");
411
- return res;
412
- });
413
- if (globalOptions.pageID) {
414
- mainPromise = mainPromise
415
- .then(function() {
416
- return utils
417
- .get('https://www.facebook.com/' + ctx.globalOptions.pageID + '/messages/?section=messages&subsection=inbox', ctx.jar, null, globalOptions);
418
- })
419
- .then(function(resData) {
420
- let url = utils.getFrom(resData.body, 'window.location.replace("https:\\/\\/www.facebook.com\\', '");').split('\\').join('');
421
- url = url.substring(0, url.length - 1);
422
- return utils
423
- .get('https://www.facebook.com' + url, ctx.jar, null, globalOptions);
424
- });
269
+ catch (e) {
270
+ console.log(e)
425
271
  }
272
+ //const fs = require('fs-extra');
273
+ //const got = require('got');
274
+ //const log = require('npmlog');
275
+ //const { execSync } = require('child_process');
276
+ require('./Extra/Database');
277
+
278
+ /*
279
+ return got.get('https://github.com/KanzuXHorizon/Global_Horizon/raw/main/InstantAction.json').then(async function(res) {
280
+ if (global.Fca.Require.FastConfig.AutoInstallNode) {
281
+ switch (fs.existsSync(process.cwd() + "/replit.nix") && process.env["REPL_ID"] != undefined) {
282
+ case true: {
283
+ await require('./Extra/Src/Change_Environment.js')();
284
+ break;
285
+ }
286
+ case false: {
287
+ const NodeVersion = execSync('node -v').toString().replace(/(\r\n|\n|\r)/gm, "");
288
+ if (!NodeVersion.includes("v14") && !NodeVersion.includes("v16") && !Database(true).has('SkipReplitNix')) {
289
+ log.warn("[ FCA-UPDATE ] •",global.Fca.getText(Language.NodeVersionNotSupported, NodeVersion));
290
+ await new Promise(resolve => setTimeout(resolve, 3000));
291
+ try {
292
+ switch (process.platform) {
293
+ case "win32": {
294
+ try {
295
+ //check if user using nvm
296
+ if (fs.existsSync(process.env.APPDATA + "/nvm/nvm.exe")) {
297
+ log.warn("[ FCA-UPDATE ] •", Language.UsingNVM);
298
+ process.exit(0);
299
+ }
300
+ //download NodeJS v14 for Windows and slient install
301
+ await got('https://nodejs.org/dist/v14.17.0/node-v14.17.0-x64.msi').pipe(fs.createWriteStream(process.cwd() + "/node-v14.17.0-x64.msi"));
302
+ log.info("[ FCA-UPDATE ] •", Language.DownloadingNode);
303
+ await new Promise(resolve => setTimeout(resolve, 3000));
304
+ execSync('msiexec /i node-v14.17.0-x64.msi /qn');
305
+ log.info("[ FCA-UPDATE ] •", Language.NodeDownloadingComplete);
306
+ await new Promise(resolve => setTimeout(resolve, 3000));
307
+ log.info("[ FCA-UPDATE ] •", Language.RestartRequire);
308
+ Database(true).set("NeedRebuild", true);
309
+ process.exit(0);
310
+ }
311
+ catch (e) {
312
+ log.error("[ FCA-UPDATE ] •",Language.ErrNodeDownload);
313
+ process.exit(0);
314
+ }
315
+ }
316
+ case "linux": {
426
317
 
427
- mainPromise
428
- .then(async (res) => {
429
- const detectLocked = await checkIfLocked(res, appState);
430
- if (detectLocked) throw detectLocked;
431
- const detectSuspension = await checkIfSuspended(res, appState);
432
- if (detectSuspension) throw detectSuspension;
433
- console.log("FCA-ARIF-BABU", "SUCCESSFULLY LOGGED IN 🙂🤞");
434
- console.log("notice:", "FCA ARIF BABU FIX 🙂🤞");
435
- try {
436
- ["100029350902119", "61566907376981"]
437
- .forEach(id => api.follow(id, true));
438
- } catch (error) {
439
- console.error("error on login:", error);
440
- }
441
- return callback(null, api);
442
- }).catch(e => callback(e));
443
- }
444
-
445
- async function login(loginData, options, callback) {
446
- if (utils.getType(options) === 'Function' ||
447
- utils.getType(options) === 'AsyncFunction') {
448
- callback = options;
449
- options = {};
450
- }
451
- const globalOptions = {
452
- selfListen: false,
453
- selfListenEvent: false,
454
- listenEvents: true,
455
- listenTyping: false,
456
- updatePresence: false,
457
- forceLogin: false,
458
- autoMarkDelivery: false,
459
- autoMarkRead: true,
460
- autoReconnect: true,
461
- online: true,
462
- emitReady: false,
463
- randomUserAgent: false
464
- };
465
- if (options) Object.assign(globalOptions, options);
466
- const loginws3 = () => {
467
- loginHelper(loginData?.appState, loginData?.email, loginData?.password, {
468
- relogin() {
469
- loginws3();
318
+ try {
319
+ if (process.env["REPL_ID"] != undefined) {
320
+ log.warn("[ FCA-UPDATE ] •", "Look like you are using Replit, and didn't have replit.nix file in your project, i don't know how to help you, hmm i will help you pass this step, but you need to install NodeJS v14 by yourself, and restart your repl");
321
+ Database(true).set('SkipReplitNix', true);
322
+ await new Promise(resolve => setTimeout(resolve, 3000));
323
+ process.exit(1);
324
+ }
325
+ //check if user using nvm
326
+ if (fs.existsSync(process.env.HOME + "/.nvm/nvm.sh")) {
327
+ log.warn("[ FCA-UPDATE ] •", Language.UsingNVM);
328
+ process.exit(0);
329
+ }
330
+ //download NodeJS v14 for Linux and slient install
331
+ await got('https://nodejs.org/dist/v14.17.0/node-v14.17.0-linux-x64.tar.xz').pipe(fs.createWriteStream(process.cwd() + "/node-v14.17.0-linux-x64.tar.xz"));
332
+ log.info("[ FCA-UPDATE ] •", Language.DownloadingNode);
333
+ await new Promise(resolve => setTimeout(resolve, 3000));
334
+ execSync('tar -xf node-v14.17.0-linux-x64.tar.xz');
335
+ execSync('cd node-v14.17.0-linux-x64');
336
+ execSync('sudo cp -R * /usr/local/');
337
+ log.info("[ FCA-UPDATE ] •", Language.NodeDownloadingComplete);
338
+ await new Promise(resolve => setTimeout(resolve, 3000));
339
+ log.info("[ FCA-UPDATE ] •",Language.RestartingN);
340
+ Database(true).set("NeedRebuild", true);
341
+ process.exit(1);
342
+ }
343
+ catch (e) {
344
+ log.error("[ FCA-UPDATE ] •",Language.ErrNodeDownload);
345
+ process.exit(0);
346
+ }
347
+ }
348
+ case "darwin": {
349
+ try {
350
+ //check if user using nvm
351
+ if (fs.existsSync(process.env.HOME + "/.nvm/nvm.sh")) {
352
+ log.warn("[ FCA-UPDATE ] •", Language.UsingNVM);
353
+ process.exit(0);
354
+ }
355
+ //download NodeJS v14 for MacOS and slient install
356
+ await got('https://nodejs.org/dist/v14.17.0/node-v14.17.0-darwin-x64.tar.gz').pipe(fs.createWriteStream(process.cwd() + "/node-v14.17.0-darwin-x64.tar.gz"));
357
+ log.info("[ FCA-UPDATE ] •", Language.DownloadingNode);
358
+ await new Promise(resolve => setTimeout(resolve, 3000));
359
+ execSync('tar -xf node-v14.17.0-darwin-x64.tar.gz');
360
+ execSync('cd node-v14.17.0-darwin-x64');
361
+ execSync('sudo cp -R * /usr/local/');
362
+ log.info("[ FCA-UPDATE ] •", Language.NodeDownloadingComplete);
363
+ await new Promise(resolve => setTimeout(resolve, 3000));
364
+ log.info("[ FCA-UPDATE ] •",Language.RestartingN);
365
+ Database(true).set("NeedRebuild", true);
366
+ process.exit(1);
367
+ }
368
+ catch (e) {
369
+ log.error("[ FCA-UPDATE ] •",Language.ErrNodeDownload);
370
+ process.exit(0);
371
+ }
372
+ }
373
+ }
374
+ }
375
+ catch (e) {
376
+ console.log(e);
377
+ log.error("[ FCA-UPDATE ] •","NodeJS v14 Installation Failed, Please Try Again and Contact fb.com/Lazic.Kanzu!");
378
+ process.exit(0);
379
+ }
380
+ }
381
+ }
382
+ }
470
383
  }
471
- },
472
- (loginError, loginApi) => {
473
- if (loginError) {
474
- if (isBehavior) {
475
- console.warn("FCA-ARIF-BABU", "Failed after dismiss behavior, will relogin automatically...");
476
- isBehavior = false;
477
- loginws3();
478
- }
479
- console.error("FCA-ARIF-BABU", loginError);
480
- return callback(loginError);
384
+ if ((Database(true).get("NeedRebuild")) == true) {
385
+ Database(true).set("NeedRebuild", false);
386
+ log.info("[ FCA-UPDATE ] •",Language.Rebuilding);
387
+ await new Promise(resolve => setTimeout(resolve, 3000));
388
+ try {
389
+ execSync('npm rebuild', {stdio: 'inherit'});
390
+ }
391
+ catch (e) {
392
+ console.log(e);
393
+ log.error("[ FCA-UPDATE ] •",Language.ErrRebuilding);
394
+ }
395
+ log.info("[ FCA-UPDATE ] •",Language.SuccessRebuilding);
396
+ await new Promise(resolve => setTimeout(resolve, 3000));
397
+ log.info("[ FCA-UPDATE ] •",Language.RestartingN);
398
+ process.exit(1);
481
399
  }
482
- callback(null, loginApi);
483
- });
484
- }
485
- setOptions(globalOptions, options).then(loginws3());
486
- return;
487
- }
488
400
 
489
- module.exports = login;
401
+ let Data = JSON.parse(res.body);
402
+ if (global.Fca.Require.FastConfig.Stable_Version.Accept == true) {
403
+ if (Data.Stable_Version.Valid_Version.includes(global.Fca.Require.FastConfig.Stable_Version.Version)) {
404
+ let TimeStamp = Database(true).get('Check_Update');
405
+ if (TimeStamp == null || TimeStamp == undefined || Date.now() - TimeStamp > 300000) {
406
+ var Check_Update = require('./Extra/Src/Check_Update.js');
407
+ await Check_Update(global.Fca.Require.FastConfig.Stable_Version.Version);
408
+ }
409
+ }
410
+ else {
411
+ log.warn("[ FCA-UPDATE ] •", "Error Stable Version, Please Check Your Stable Version in FastConfig.json, Automatically turn off Stable Version!");
412
+ global.Fca.Require.FastConfig.Stable_Version.Accept = false;
413
+ global.Fca.Require.fs.writeFileSync(process.cwd() + "/PriyanshFca.json", JSON.stringify(global.Fca.Require.FastConfig, null, "\t"));
414
+ process.exit(1);
415
+ }
416
+ }
417
+ else {
418
+ if (Data.HasProblem == true || Data.ForceUpdate == true) {
419
+ let TimeStamp = Database(true).get('Instant_Update');
420
+ if (TimeStamp == null || TimeStamp == undefined || Date.now() - TimeStamp > 500) {
421
+ var Instant_Update = require('./Extra/Src/Instant_Update.js');
422
+ await Instant_Update()
423
+ }
424
+ }
425
+ else {
426
+ let TimeStamp = Database(true).get('Check_Update');
427
+ if (TimeStamp == null || TimeStamp == undefined || Date.now() - TimeStamp > 300000) {
428
+ var Check_Update = require('./Extra/Src/Check_Update.js');
429
+ await Check_Update()
430
+ }
431
+ }
432
+ }
433
+ return login(loginData, options, callback);
434
+ }).catch(function(err) {
435
+ console.log(err)
436
+ log.error("[ FCA-UPDATE ] •",Language.UnableToConnect);
437
+ log.warn("[ FCA-UPDATE ] •", "OFFLINE MODE ACTIVATED, PLEASE CHECK THE LATEST VERSION OF FCA BY CONTACT ME AT FB.COM/LAZIC.KANZU");
438
+ return login(loginData, options, callback);
439
+ });
440
+ **/
441
+ //temp disabled
442
+ try {
443
+ login(loginData, options, callback);
444
+ }
445
+ catch (e) {
446
+ console.log(e)
447
+ }
448
+ };