ayman-fca 1.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 (124) hide show
  1. package/README.md +81 -0
  2. package/func/checkUpdate.js +13 -0
  3. package/func/logAdapter.js +30 -0
  4. package/func/logger.js +66 -0
  5. package/index.d.ts +751 -0
  6. package/index.js +15 -0
  7. package/module/config.js +38 -0
  8. package/module/login.js +111 -0
  9. package/module/loginHelper.js +1296 -0
  10. package/module/options.js +37 -0
  11. package/package.json +78 -0
  12. package/src/api/action/addExternalModule.js +19 -0
  13. package/src/api/action/changeAvatar.js +137 -0
  14. package/src/api/action/changeBio.js +48 -0
  15. package/src/api/action/enableAutoSaveAppState.js +72 -0
  16. package/src/api/action/getCurrentUserID.js +11 -0
  17. package/src/api/action/handleFriendRequest.js +33 -0
  18. package/src/api/action/logout.js +76 -0
  19. package/src/api/action/refreshFb_dtsg.js +62 -0
  20. package/src/api/action/setPostReaction.js +106 -0
  21. package/src/api/action/story.js +118 -0
  22. package/src/api/action/unfriend.js +30 -0
  23. package/src/api/http/httpGet.js +28 -0
  24. package/src/api/http/httpPost.js +32 -0
  25. package/src/api/http/postFormData.js +23 -0
  26. package/src/api/messaging/J +1 -0
  27. package/src/api/messaging/addUserToGroup.js +70 -0
  28. package/src/api/messaging/changeAdminStatus.js +72 -0
  29. package/src/api/messaging/changeArchivedStatus.js +31 -0
  30. package/src/api/messaging/changeBlockedStatus.js +27 -0
  31. package/src/api/messaging/changeGroupImage.js +91 -0
  32. package/src/api/messaging/changeNickname.js +70 -0
  33. package/src/api/messaging/changeThreadColor.js +44 -0
  34. package/src/api/messaging/changeThreadEmoji.js +111 -0
  35. package/src/api/messaging/createNewGroup.js +50 -0
  36. package/src/api/messaging/createPoll.js +52 -0
  37. package/src/api/messaging/createThemeAI.js +98 -0
  38. package/src/api/messaging/deleteMessage.js +73 -0
  39. package/src/api/messaging/deleteThread.js +29 -0
  40. package/src/api/messaging/editMessage.js +67 -0
  41. package/src/api/messaging/forwardAttachment.js +55 -0
  42. package/src/api/messaging/forwardMessage.js +73 -0
  43. package/src/api/messaging/getEmojiUrl.js +29 -0
  44. package/src/api/messaging/getFriendsList.js +82 -0
  45. package/src/api/messaging/getMessage.js +829 -0
  46. package/src/api/messaging/getThemePictures.js +62 -0
  47. package/src/api/messaging/groupActions.js +119 -0
  48. package/src/api/messaging/handleMessageRequest.js +31 -0
  49. package/src/api/messaging/markAsDelivered.js +31 -0
  50. package/src/api/messaging/markAsRead.js +88 -0
  51. package/src/api/messaging/markAsReadAll.js +28 -0
  52. package/src/api/messaging/markAsSeen.js +30 -0
  53. package/src/api/messaging/muteThread.js +27 -0
  54. package/src/api/messaging/notes.js +101 -0
  55. package/src/api/messaging/removeUserFromGroup.js +51 -0
  56. package/src/api/messaging/resolvePhotoUrl.js +29 -0
  57. package/src/api/messaging/scheduler.js +100 -0
  58. package/src/api/messaging/searchForThread.js +32 -0
  59. package/src/api/messaging/sendMessage.js +270 -0
  60. package/src/api/messaging/sendTypingIndicator.js +62 -0
  61. package/src/api/messaging/setMessageReaction.js +91 -0
  62. package/src/api/messaging/setTitle.js +86 -0
  63. package/src/api/messaging/shareContact.js +47 -0
  64. package/src/api/messaging/threadColors.js +128 -0
  65. package/src/api/messaging/unsendMessage.js +73 -0
  66. package/src/api/messaging/uploadAttachment.js +492 -0
  67. package/src/api/socket/core/connectMqtt.js +259 -0
  68. package/src/api/socket/core/emitAuth.js +79 -0
  69. package/src/api/socket/core/getSeqID.js +170 -0
  70. package/src/api/socket/core/getTaskResponseData.js +27 -0
  71. package/src/api/socket/core/parseDelta.js +377 -0
  72. package/src/api/socket/detail/buildStream.js +215 -0
  73. package/src/api/socket/detail/constants.js +29 -0
  74. package/src/api/socket/listenMqtt.js +377 -0
  75. package/src/api/socket/middleware/index.js +80 -0
  76. package/src/api/threads/getThreadHistory.js +664 -0
  77. package/src/api/threads/getThreadInfo.js +296 -0
  78. package/src/api/threads/getThreadList.js +293 -0
  79. package/src/api/threads/getThreadPictures.js +43 -0
  80. package/src/api/user/J +1 -0
  81. package/src/api/user/getUserID.js +48 -0
  82. package/src/api/user/getUserInfo.js +402 -0
  83. package/src/api/user/getUserInfoV2.js +134 -0
  84. package/src/core/sendReqMqtt.js +69 -0
  85. package/src/database/helpers.js +36 -0
  86. package/src/database/models/index.js +55 -0
  87. package/src/database/models/thread.js +44 -0
  88. package/src/database/models/user.js +39 -0
  89. package/src/database/threadData.js +92 -0
  90. package/src/database/userData.js +88 -0
  91. package/src/remote/remoteClient.js +71 -0
  92. package/src/utils/broadcast.js +62 -0
  93. package/src/utils/client.js +10 -0
  94. package/src/utils/constants.js +53 -0
  95. package/src/utils/cookies.js +73 -0
  96. package/src/utils/format/attachment.js +357 -0
  97. package/src/utils/format/cookie.js +9 -0
  98. package/src/utils/format/date.js +50 -0
  99. package/src/utils/format/decode.js +44 -0
  100. package/src/utils/format/delta.js +194 -0
  101. package/src/utils/format/ids.js +64 -0
  102. package/src/utils/format/index.js +64 -0
  103. package/src/utils/format/message.js +88 -0
  104. package/src/utils/format/presence.js +132 -0
  105. package/src/utils/format/readTyp.js +44 -0
  106. package/src/utils/format/thread.js +42 -0
  107. package/src/utils/format/utils.js +141 -0
  108. package/src/utils/headers.js +96 -0
  109. package/src/utils/loginParser/autoLogin.js +125 -0
  110. package/src/utils/loginParser/helpers.js +43 -0
  111. package/src/utils/loginParser/index.js +10 -0
  112. package/src/utils/loginParser/parseAndCheckLogin.js +220 -0
  113. package/src/utils/loginParser/textUtils.js +28 -0
  114. package/src/utils/request/H +1 -0
  115. package/src/utils/request/client.js +33 -0
  116. package/src/utils/request/config.js +25 -0
  117. package/src/utils/request/defaults.js +40 -0
  118. package/src/utils/request/helpers.js +31 -0
  119. package/src/utils/request/index.js +12 -0
  120. package/src/utils/request/methods.js +92 -0
  121. package/src/utils/request/proxy.js +23 -0
  122. package/src/utils/request/retry.js +87 -0
  123. package/src/utils/request/sanitize.js +41 -0
  124. package/src/utils/sessionKeeper.js +275 -0
package/index.js ADDED
@@ -0,0 +1,15 @@
1
+ // ============================================================
2
+ // AYMAN-FCA v2.0
3
+ // Facebook Chat API for Node.js
4
+ // © 2025 Ayman. All Rights Reserved.
5
+ // جميع الحقوق محفوظة لأيمن
6
+ //
7
+ // مكتبة مخصصة لبوت KIRA
8
+ // تدوم بـ AppState واحد شهراً أو أكثر
9
+ // ============================================================
10
+
11
+ const login = require("./module/login");
12
+
13
+ module.exports = login;
14
+ module.exports.login = login;
15
+ module.exports.default = login;
@@ -0,0 +1,38 @@
1
+ // ============================================================
2
+ // AYMAN-FCA v2.0 — Config Loader
3
+ // © 2025 Ayman. All Rights Reserved.
4
+ // ============================================================
5
+ "use strict";
6
+
7
+ const fs = require("fs");
8
+ const path = require("path");
9
+ const logger = require("../func/logger");
10
+
11
+ const defaultConfig = {
12
+ autoUpdate: false,
13
+ autoLogin: false,
14
+ apiServer: "",
15
+ apiKey: "",
16
+ credentials: { email: "", password: "", twofactor: "" },
17
+ mqtt: { enabled: true, reconnectInterval: 3600 },
18
+ antiGetInfo: { AntiGetThreadInfo: false, AntiGetUserInfo: false },
19
+ remoteControl:{ enabled: false, url: "", token: "", autoReconnect: true }
20
+ };
21
+
22
+ function loadConfig() {
23
+ const configPath = path.join(process.cwd(), "fca-config.json");
24
+ let config;
25
+ if (!fs.existsSync(configPath)) {
26
+ config = defaultConfig;
27
+ } else {
28
+ try {
29
+ config = Object.assign({}, defaultConfig, JSON.parse(fs.readFileSync(configPath, "utf8")));
30
+ } catch (err) {
31
+ logger(`[ AYMAN ] خطأ في قراءة fca-config.json: ${err.message}`, "error");
32
+ config = defaultConfig;
33
+ }
34
+ }
35
+ return { config, configPath };
36
+ }
37
+
38
+ module.exports = { loadConfig, defaultConfig };
@@ -0,0 +1,111 @@
1
+ // ============================================================
2
+ // AYMAN-FCA v2.0 — Login Entry Point
3
+ // © 2025 Ayman. All Rights Reserved.
4
+ //
5
+ // نقطة الدخول الرئيسية للمكتبة
6
+ // تدمج: Session Keeper + Anti-Crash + Auto-Save
7
+ // ============================================================
8
+ "use strict";
9
+
10
+ const { getType } = require("../src/utils/format");
11
+ const { setOptions }= require("./options");
12
+ const { loadConfig }= require("./config");
13
+ const loginHelper = require("./loginHelper");
14
+ const logger = require("../func/logger");
15
+
16
+ const { config } = loadConfig();
17
+ global.fca = { config };
18
+
19
+ // ✅ حماية عالمية من الكراش — مرة واحدة فقط
20
+ if (!global.fca._handlersInstalled) {
21
+ global.fca._handlersInstalled = true;
22
+
23
+ process.on("unhandledRejection", (reason) => {
24
+ try {
25
+ if (!reason || typeof reason !== "object") return;
26
+ const code = reason.code || reason.cause?.code;
27
+ const msg = reason.message || String(reason);
28
+
29
+ if (msg.includes("No Sequelize instance passed")) return;
30
+ if (
31
+ code === "UND_ERR_CONNECT_TIMEOUT" || code === "ETIMEDOUT" ||
32
+ code === "ECONNREFUSED" || code === "ENOTFOUND" || code === "ECONNRESET" ||
33
+ msg.includes("Connect Timeout") || msg.includes("fetch failed")
34
+ ) {
35
+ logger(`[ AYMAN ] خطأ شبكة (لن يوقف البوت): ${msg}`, "warn");
36
+ return;
37
+ }
38
+
39
+ logger(`[ AYMAN ] Promise غير معالجة: ${reason?.message || String(reason)}`, "error");
40
+ } catch (_) {}
41
+ });
42
+
43
+ process.on("uncaughtException", (error) => {
44
+ try {
45
+ const msg = error.message || String(error);
46
+ const code = error.code;
47
+
48
+ if (msg.includes("No Sequelize instance passed")) return;
49
+ if (
50
+ code === "UND_ERR_CONNECT_TIMEOUT" || code === "ETIMEDOUT" ||
51
+ msg.includes("Connect Timeout") || msg.includes("fetch failed")
52
+ ) {
53
+ logger(`[ AYMAN ] خطأ شبكة uncaught (لن يوقف البوت): ${msg}`, "warn");
54
+ return;
55
+ }
56
+
57
+ logger(`[ AYMAN ] خطأ غير متوقع (البوت يستمر): ${msg}`, "error");
58
+ } catch (_) {}
59
+ });
60
+ }
61
+
62
+ function login(loginData, options, callback) {
63
+ if (getType(options) === "Function" || getType(options) === "AsyncFunction") {
64
+ callback = options;
65
+ options = {};
66
+ }
67
+
68
+ const globalOptions = {
69
+ selfListen: false,
70
+ selfListenEvent: false,
71
+ listenEvents: false,
72
+ listenTyping: false,
73
+ updatePresence: false,
74
+ forceLogin: false,
75
+ autoMarkRead: false,
76
+ autoReconnect: true,
77
+ online: true,
78
+ emitReady: false,
79
+ userAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"
80
+ };
81
+
82
+ setOptions(globalOptions, options);
83
+
84
+ let prCallback = null, resolveFunc = null, rejectFunc = null, returnPromise = null;
85
+
86
+ if (getType(callback) !== "Function" && getType(callback) !== "AsyncFunction") {
87
+ returnPromise = new Promise((resolve, reject) => {
88
+ resolveFunc = resolve;
89
+ rejectFunc = reject;
90
+ });
91
+ prCallback = (error, api) => error ? rejectFunc(error) : resolveFunc(api);
92
+ callback = prCallback;
93
+ }
94
+
95
+ // ✅ بدون autoUpdate — إقلاع فوري
96
+ const proceed = () =>
97
+ loginHelper(
98
+ loginData.appState,
99
+ loginData.Cookie,
100
+ loginData.email,
101
+ loginData.password,
102
+ globalOptions,
103
+ callback,
104
+ prCallback
105
+ );
106
+
107
+ proceed();
108
+ return returnPromise;
109
+ }
110
+
111
+ module.exports = login;