bb-fca 2.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 (253) hide show
  1. package/LICENSE-MIT +21 -0
  2. package/README.md +0 -0
  3. package/dist/core/client.js +50 -0
  4. package/dist/core/client.js.map +1 -0
  5. package/dist/core/models/buildAPI.js +103 -0
  6. package/dist/core/models/buildAPI.js.map +1 -0
  7. package/dist/core/models/loginHelper.js +209 -0
  8. package/dist/core/models/loginHelper.js.map +1 -0
  9. package/dist/core/models/setOptions.js +47 -0
  10. package/dist/core/models/setOptions.js.map +1 -0
  11. package/dist/deltas/apis/create.js +30 -0
  12. package/dist/deltas/apis/create.js.map +1 -0
  13. package/dist/deltas/apis/extra/addExternalModule.js +23 -0
  14. package/dist/deltas/apis/extra/addExternalModule.js.map +1 -0
  15. package/dist/deltas/apis/extra/getAccess.js +110 -0
  16. package/dist/deltas/apis/extra/getAccess.js.map +1 -0
  17. package/dist/deltas/apis/http/httpGet.js +57 -0
  18. package/dist/deltas/apis/http/httpGet.js.map +1 -0
  19. package/dist/deltas/apis/http/httpPost.js +57 -0
  20. package/dist/deltas/apis/http/httpPost.js.map +1 -0
  21. package/dist/deltas/apis/http/httpPostFormData.js +61 -0
  22. package/dist/deltas/apis/http/httpPostFormData.js.map +1 -0
  23. package/dist/deltas/apis/login/GetBotInfo.js +83 -0
  24. package/dist/deltas/apis/login/GetBotInfo.js.map +1 -0
  25. package/dist/deltas/apis/login/getBotInitialData.js +46 -0
  26. package/dist/deltas/apis/login/getBotInitialData.js.map +1 -0
  27. package/dist/deltas/apis/login/logout.js +54 -0
  28. package/dist/deltas/apis/login/logout.js.map +1 -0
  29. package/dist/deltas/apis/messaging/editMessage.js +64 -0
  30. package/dist/deltas/apis/messaging/editMessage.js.map +1 -0
  31. package/dist/deltas/apis/messaging/emoji.js +120 -0
  32. package/dist/deltas/apis/messaging/emoji.js.map +1 -0
  33. package/dist/deltas/apis/messaging/gcmember.js +164 -0
  34. package/dist/deltas/apis/messaging/gcmember.js.map +1 -0
  35. package/dist/deltas/apis/messaging/gcname.js +119 -0
  36. package/dist/deltas/apis/messaging/gcname.js.map +1 -0
  37. package/dist/deltas/apis/messaging/gcrule.js +144 -0
  38. package/dist/deltas/apis/messaging/gcrule.js.map +1 -0
  39. package/dist/deltas/apis/messaging/markAsDelivered.js +44 -0
  40. package/dist/deltas/apis/messaging/markAsDelivered.js.map +1 -0
  41. package/dist/deltas/apis/messaging/markAsRead.js +84 -0
  42. package/dist/deltas/apis/messaging/markAsRead.js.map +1 -0
  43. package/dist/deltas/apis/messaging/markAsReadAll.js +34 -0
  44. package/dist/deltas/apis/messaging/markAsReadAll.js.map +1 -0
  45. package/dist/deltas/apis/messaging/markAsSeen.js +64 -0
  46. package/dist/deltas/apis/messaging/markAsSeen.js.map +1 -0
  47. package/dist/deltas/apis/messaging/nickname.js +129 -0
  48. package/dist/deltas/apis/messaging/nickname.js.map +1 -0
  49. package/dist/deltas/apis/messaging/notes.js +156 -0
  50. package/dist/deltas/apis/messaging/notes.js.map +1 -0
  51. package/dist/deltas/apis/messaging/resolvePhotoUrl.js +55 -0
  52. package/dist/deltas/apis/messaging/resolvePhotoUrl.js.map +1 -0
  53. package/dist/deltas/apis/messaging/sendMessage.js +239 -0
  54. package/dist/deltas/apis/messaging/sendMessage.js.map +1 -0
  55. package/dist/deltas/apis/messaging/sendTypingIndicator.js +41 -0
  56. package/dist/deltas/apis/messaging/sendTypingIndicator.js.map +1 -0
  57. package/dist/deltas/apis/messaging/setMessageReaction.js +30 -0
  58. package/dist/deltas/apis/messaging/setMessageReaction.js.map +1 -0
  59. package/dist/deltas/apis/messaging/shareContact.js +59 -0
  60. package/dist/deltas/apis/messaging/shareContact.js.map +1 -0
  61. package/dist/deltas/apis/messaging/stickers.js +246 -0
  62. package/dist/deltas/apis/messaging/stickers.js.map +1 -0
  63. package/dist/deltas/apis/messaging/theme.js +227 -0
  64. package/dist/deltas/apis/messaging/theme.js.map +1 -0
  65. package/dist/deltas/apis/messaging/unsendMessage.js +19 -0
  66. package/dist/deltas/apis/messaging/unsendMessage.js.map +1 -0
  67. package/dist/deltas/apis/mqtt/deltas/value.js +193 -0
  68. package/dist/deltas/apis/mqtt/deltas/value.js.map +1 -0
  69. package/dist/deltas/apis/mqtt/listenMqtt.js +306 -0
  70. package/dist/deltas/apis/mqtt/listenMqtt.js.map +1 -0
  71. package/dist/deltas/apis/mqtt/listenSpeed.js +166 -0
  72. package/dist/deltas/apis/mqtt/listenSpeed.js.map +1 -0
  73. package/dist/deltas/apis/mqtt/pinMessage.js +166 -0
  74. package/dist/deltas/apis/mqtt/pinMessage.js.map +1 -0
  75. package/dist/deltas/apis/mqtt/realtime.js +160 -0
  76. package/dist/deltas/apis/mqtt/realtime.js.map +1 -0
  77. package/dist/deltas/apis/mqtt/sendMessageMqtt.js +184 -0
  78. package/dist/deltas/apis/mqtt/sendMessageMqtt.js.map +1 -0
  79. package/dist/deltas/apis/mqtt/setMessageReactionMqtt.js +57 -0
  80. package/dist/deltas/apis/mqtt/setMessageReactionMqtt.js.map +1 -0
  81. package/dist/deltas/apis/posting/comment.js +195 -0
  82. package/dist/deltas/apis/posting/comment.js.map +1 -0
  83. package/dist/deltas/apis/posting/follow.js +82 -0
  84. package/dist/deltas/apis/posting/follow.js.map +1 -0
  85. package/dist/deltas/apis/posting/friend.js +253 -0
  86. package/dist/deltas/apis/posting/friend.js.map +1 -0
  87. package/dist/deltas/apis/posting/post.js +551 -0
  88. package/dist/deltas/apis/posting/post.js.map +1 -0
  89. package/dist/deltas/apis/posting/share.js +59 -0
  90. package/dist/deltas/apis/posting/share.js.map +1 -0
  91. package/dist/deltas/apis/posting/story.js +176 -0
  92. package/dist/deltas/apis/posting/story.js.map +1 -0
  93. package/dist/deltas/apis/threads/getThreadHistory.js +233 -0
  94. package/dist/deltas/apis/threads/getThreadHistory.js.map +1 -0
  95. package/dist/deltas/apis/threads/getThreadInfo.js +197 -0
  96. package/dist/deltas/apis/threads/getThreadInfo.js.map +1 -0
  97. package/dist/deltas/apis/threads/getThreadList.js +201 -0
  98. package/dist/deltas/apis/threads/getThreadList.js.map +1 -0
  99. package/dist/deltas/apis/users/getUserInfo.js +254 -0
  100. package/dist/deltas/apis/users/getUserInfo.js.map +1 -0
  101. package/dist/index.d.ts +696 -0
  102. package/dist/types/core/client.d.ts +2 -0
  103. package/dist/types/core/models/buildAPI.d.ts +13 -0
  104. package/dist/types/core/models/loginHelper.d.ts +15 -0
  105. package/dist/types/core/models/setOptions.d.ts +2 -0
  106. package/dist/types/deltas/apis/create.d.ts +23 -0
  107. package/dist/types/deltas/apis/extra/addExternalModule.d.ts +1 -0
  108. package/dist/types/deltas/apis/extra/getAccess.d.ts +1 -0
  109. package/dist/types/deltas/apis/http/httpGet.d.ts +1 -0
  110. package/dist/types/deltas/apis/http/httpPost.d.ts +1 -0
  111. package/dist/types/deltas/apis/http/httpPostFormData.d.ts +1 -0
  112. package/dist/types/deltas/apis/login/GetBotInfo.d.ts +32 -0
  113. package/dist/types/deltas/apis/login/getBotInitialData.d.ts +1 -0
  114. package/dist/types/deltas/apis/login/logout.d.ts +7 -0
  115. package/dist/types/deltas/apis/messaging/editMessage.d.ts +7 -0
  116. package/dist/types/deltas/apis/messaging/emoji.d.ts +1 -0
  117. package/dist/types/deltas/apis/messaging/gcmember.d.ts +1 -0
  118. package/dist/types/deltas/apis/messaging/gcname.d.ts +1 -0
  119. package/dist/types/deltas/apis/messaging/gcrule.d.ts +1 -0
  120. package/dist/types/deltas/apis/messaging/markAsDelivered.d.ts +7 -0
  121. package/dist/types/deltas/apis/messaging/markAsRead.d.ts +6 -0
  122. package/dist/types/deltas/apis/messaging/markAsReadAll.d.ts +7 -0
  123. package/dist/types/deltas/apis/messaging/markAsSeen.d.ts +6 -0
  124. package/dist/types/deltas/apis/messaging/nickname.d.ts +1 -0
  125. package/dist/types/deltas/apis/messaging/notes.d.ts +14 -0
  126. package/dist/types/deltas/apis/messaging/resolvePhotoUrl.d.ts +9 -0
  127. package/dist/types/deltas/apis/messaging/sendMessage.d.ts +1 -0
  128. package/dist/types/deltas/apis/messaging/sendTypingIndicator.d.ts +6 -0
  129. package/dist/types/deltas/apis/messaging/setMessageReaction.d.ts +1 -0
  130. package/dist/types/deltas/apis/messaging/shareContact.d.ts +8 -0
  131. package/dist/types/deltas/apis/messaging/stickers.d.ts +48 -0
  132. package/dist/types/deltas/apis/messaging/theme.d.ts +1 -0
  133. package/dist/types/deltas/apis/messaging/unsendMessage.d.ts +1 -0
  134. package/dist/types/deltas/apis/mqtt/deltas/value.d.ts +2 -0
  135. package/dist/types/deltas/apis/mqtt/listenMqtt.d.ts +20 -0
  136. package/dist/types/deltas/apis/mqtt/listenSpeed.d.ts +21 -0
  137. package/dist/types/deltas/apis/mqtt/pinMessage.d.ts +1 -0
  138. package/dist/types/deltas/apis/mqtt/realtime.d.ts +1 -0
  139. package/dist/types/deltas/apis/mqtt/sendMessageMqtt.d.ts +1 -0
  140. package/dist/types/deltas/apis/mqtt/setMessageReactionMqtt.d.ts +1 -0
  141. package/dist/types/deltas/apis/posting/comment.d.ts +9 -0
  142. package/dist/types/deltas/apis/posting/follow.d.ts +14 -0
  143. package/dist/types/deltas/apis/posting/friend.d.ts +61 -0
  144. package/dist/types/deltas/apis/posting/post.d.ts +20 -0
  145. package/dist/types/deltas/apis/posting/share.d.ts +1 -0
  146. package/dist/types/deltas/apis/posting/story.d.ts +39 -0
  147. package/dist/types/deltas/apis/threads/getThreadHistory.d.ts +7 -0
  148. package/dist/types/deltas/apis/threads/getThreadInfo.d.ts +7 -0
  149. package/dist/types/deltas/apis/threads/getThreadList.d.ts +7 -0
  150. package/dist/types/deltas/apis/users/getUserInfo.d.ts +1 -0
  151. package/dist/types/utils/axios.d.ts +7 -0
  152. package/dist/types/utils/clients.d.ts +4 -0
  153. package/dist/types/utils/constants.d.ts +24 -0
  154. package/dist/types/utils/formatters/data/formatAttachment.d.ts +2 -0
  155. package/dist/types/utils/formatters/data/formatDelta.d.ts +4 -0
  156. package/dist/types/utils/formatters/index.d.ts +17 -0
  157. package/dist/types/utils/formatters/value/formatCookie.d.ts +8 -0
  158. package/dist/types/utils/formatters/value/formatDate.d.ts +6 -0
  159. package/dist/types/utils/formatters/value/formatID.d.ts +7 -0
  160. package/dist/types/utils/headers.d.ts +2 -0
  161. package/dist/types/utils/index.d.ts +75 -0
  162. package/dist/types/utils/user-agents.d.ts +9 -0
  163. package/dist/utils/axios.js +148 -0
  164. package/dist/utils/axios.js.map +1 -0
  165. package/dist/utils/clients.js +120 -0
  166. package/dist/utils/clients.js.map +1 -0
  167. package/dist/utils/constants.js +249 -0
  168. package/dist/utils/constants.js.map +1 -0
  169. package/dist/utils/formatters/data/formatAttachment.js +61 -0
  170. package/dist/utils/formatters/data/formatAttachment.js.map +1 -0
  171. package/dist/utils/formatters/data/formatDelta.js +67 -0
  172. package/dist/utils/formatters/data/formatDelta.js.map +1 -0
  173. package/dist/utils/formatters/index.js +132 -0
  174. package/dist/utils/formatters/index.js.map +1 -0
  175. package/dist/utils/formatters/value/formatCookie.js +13 -0
  176. package/dist/utils/formatters/value/formatCookie.js.map +1 -0
  177. package/dist/utils/formatters/value/formatDate.js +33 -0
  178. package/dist/utils/formatters/value/formatDate.js.map +1 -0
  179. package/dist/utils/formatters/value/formatID.js +17 -0
  180. package/dist/utils/formatters/value/formatID.js.map +1 -0
  181. package/dist/utils/headers.js +61 -0
  182. package/dist/utils/headers.js.map +1 -0
  183. package/dist/utils/index.js +105 -0
  184. package/dist/utils/index.js.map +1 -0
  185. package/dist/utils/user-agents.js +41 -0
  186. package/dist/utils/user-agents.js.map +1 -0
  187. package/examples/post.example.js +149 -0
  188. package/module/index.js +5 -0
  189. package/package.json +56 -0
  190. package/src/core/client.ts +66 -0
  191. package/src/core/models/buildAPI.ts +131 -0
  192. package/src/core/models/loginHelper.ts +226 -0
  193. package/src/core/models/setOptions.ts +48 -0
  194. package/src/deltas/apis/create.ts +28 -0
  195. package/src/deltas/apis/extra/addExternalModule.ts +23 -0
  196. package/src/deltas/apis/extra/getAccess.ts +141 -0
  197. package/src/deltas/apis/http/httpGet.ts +61 -0
  198. package/src/deltas/apis/http/httpPost.ts +61 -0
  199. package/src/deltas/apis/http/httpPostFormData.ts +67 -0
  200. package/src/deltas/apis/login/GetBotInfo.ts +88 -0
  201. package/src/deltas/apis/login/getBotInitialData.ts +42 -0
  202. package/src/deltas/apis/login/logout.ts +62 -0
  203. package/src/deltas/apis/messaging/editMessage.ts +69 -0
  204. package/src/deltas/apis/messaging/emoji.ts +135 -0
  205. package/src/deltas/apis/messaging/gcmember.ts +175 -0
  206. package/src/deltas/apis/messaging/gcname.ts +136 -0
  207. package/src/deltas/apis/messaging/gcrule.ts +152 -0
  208. package/src/deltas/apis/messaging/markAsDelivered.ts +47 -0
  209. package/src/deltas/apis/messaging/markAsRead.ts +94 -0
  210. package/src/deltas/apis/messaging/markAsReadAll.ts +38 -0
  211. package/src/deltas/apis/messaging/markAsSeen.ts +69 -0
  212. package/src/deltas/apis/messaging/nickname.ts +153 -0
  213. package/src/deltas/apis/messaging/notes.ts +165 -0
  214. package/src/deltas/apis/messaging/resolvePhotoUrl.ts +56 -0
  215. package/src/deltas/apis/messaging/sendMessage.ts +286 -0
  216. package/src/deltas/apis/messaging/sendTypingIndicator.ts +48 -0
  217. package/src/deltas/apis/messaging/setMessageReaction.ts +25 -0
  218. package/src/deltas/apis/messaging/shareContact.ts +63 -0
  219. package/src/deltas/apis/messaging/stickers.ts +255 -0
  220. package/src/deltas/apis/messaging/theme.ts +280 -0
  221. package/src/deltas/apis/messaging/unsendMessage.ts +15 -0
  222. package/src/deltas/apis/mqtt/deltas/value.ts +224 -0
  223. package/src/deltas/apis/mqtt/listenMqtt.ts +332 -0
  224. package/src/deltas/apis/mqtt/listenSpeed.ts +179 -0
  225. package/src/deltas/apis/mqtt/pinMessage.ts +135 -0
  226. package/src/deltas/apis/mqtt/realtime.ts +169 -0
  227. package/src/deltas/apis/mqtt/sendMessageMqtt.ts +206 -0
  228. package/src/deltas/apis/mqtt/setMessageReactionMqtt.ts +61 -0
  229. package/src/deltas/apis/posting/comment.ts +205 -0
  230. package/src/deltas/apis/posting/follow.ts +79 -0
  231. package/src/deltas/apis/posting/friend.ts +241 -0
  232. package/src/deltas/apis/posting/post.ts +599 -0
  233. package/src/deltas/apis/posting/share.ts +60 -0
  234. package/src/deltas/apis/posting/story.ts +207 -0
  235. package/src/deltas/apis/threads/getThreadHistory.ts +237 -0
  236. package/src/deltas/apis/threads/getThreadInfo.ts +210 -0
  237. package/src/deltas/apis/threads/getThreadList.ts +224 -0
  238. package/src/deltas/apis/users/getUserInfo.ts +244 -0
  239. package/src/types/index.d.ts +696 -0
  240. package/src/utils/axios.ts +178 -0
  241. package/src/utils/clients.ts +125 -0
  242. package/src/utils/constants.ts +281 -0
  243. package/src/utils/formatters/data/formatAttachment.ts +58 -0
  244. package/src/utils/formatters/data/formatDelta.ts +45 -0
  245. package/src/utils/formatters/index.ts +82 -0
  246. package/src/utils/formatters/value/formatCookie.ts +13 -0
  247. package/src/utils/formatters/value/formatDate.ts +34 -0
  248. package/src/utils/formatters/value/formatID.ts +14 -0
  249. package/src/utils/formatters.old.ts +1049 -0
  250. package/src/utils/headers.ts +65 -0
  251. package/src/utils/index.ts +65 -0
  252. package/src/utils/user-agents.ts +49 -0
  253. package/tsconfig.json +37 -0
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = default_1;
4
+ // @ChoruOfficial
5
+ const utils = require("../../../utils");
6
+ /**
7
+ * @param {Object} defaultFuncs
8
+ * @param {Object} api
9
+ * @param {Object} ctx
10
+ */
11
+ function default_1(defaultFuncs, api, ctx) {
12
+ /**
13
+ * Marks all messages as "seen" up to a specific timestamp.
14
+ * @param {number} [seen_timestamp=Date.now()] - The timestamp (in milliseconds) up to which messages should be marked as seen. If a function is provided, it's treated as the callback and the timestamp defaults to the current time.
15
+ * @param {Function} [callback] - The callback function.
16
+ * @returns {Promise<void>} A Promise that resolves on success or rejects with an error.
17
+ */
18
+ return async function markAsRead(seen_timestamp, callback) {
19
+ let resolveFunc = function () { };
20
+ let rejectFunc = function () { };
21
+ const returnPromise = new Promise(function (resolve, reject) {
22
+ resolveFunc = resolve;
23
+ rejectFunc = reject;
24
+ });
25
+ if (utils.getType(seen_timestamp) == "Function" || utils.getType(seen_timestamp) == "AsyncFunction") {
26
+ callback = seen_timestamp;
27
+ seen_timestamp = Date.now();
28
+ }
29
+ else if (seen_timestamp === undefined) {
30
+ seen_timestamp = Date.now();
31
+ }
32
+ if (!callback) {
33
+ callback = function (err, friendList) {
34
+ if (err) {
35
+ return rejectFunc(err);
36
+ }
37
+ resolveFunc(friendList);
38
+ };
39
+ }
40
+ const form = {
41
+ seen_timestamp: seen_timestamp,
42
+ };
43
+ try {
44
+ const resData = await defaultFuncs
45
+ .post("https://www.facebook.com/ajax/mercury/mark_seen.php", ctx.jar, form)
46
+ .then(utils.saveCookies(ctx.jar))
47
+ .then(utils.parseAndCheckLogin(ctx, defaultFuncs));
48
+ if (resData.error) {
49
+ throw resData;
50
+ }
51
+ return callback();
52
+ }
53
+ catch (err) {
54
+ utils.error("markAsSeen", err);
55
+ if (utils.getType(err) == "Object" && err.error === "Not logged in.") {
56
+ ctx.loggedIn = false;
57
+ }
58
+ return callback(err);
59
+ }
60
+ return returnPromise;
61
+ };
62
+ }
63
+ ;
64
+ //# sourceMappingURL=markAsSeen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markAsSeen.js","sourceRoot":"","sources":["../../../../src/deltas/apis/messaging/markAsSeen.ts"],"names":[],"mappings":";;AAQA,4BA4DC;AApED,iBAAiB;AACjB,wCAAyC;AAEzC;;;;GAIG;AACH,mBAAwB,YAAiB,EAAE,GAAQ,EAAE,GAAQ;IAC3D;;;;;OAKG;IACH,OAAO,KAAK,UAAU,UAAU,CAAC,cAAc,EAAE,QAAQ;QACvD,IAAI,WAAW,GAAa,cAAa,CAAC,CAAC;QAC3C,IAAI,UAAU,GAAa,cAAa,CAAC,CAAC;QAC1C,MAAM,aAAa,GAAG,IAAI,OAAO,CAAM,UAAU,OAAO,EAAE,MAAM;YAC9D,WAAW,GAAG,OAAO,CAAC;YACtB,UAAU,GAAG,MAAM,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,eAAe,EAAE,CAAC;YACpG,QAAQ,GAAG,cAAc,CAAC;YAC1B,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC9B,CAAC;aAAM,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;YACxC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC9B,CAAC;QAED,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,QAAQ,GAAG,UAAU,GAAG,EAAE,UAAU;gBAClC,IAAI,GAAG,EAAE,CAAC;oBACR,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;gBACzB,CAAC;gBACD,WAAW,CAAC,UAAU,CAAC,CAAC;YAC1B,CAAC,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG;YACX,cAAc,EAAE,cAAc;SAC/B,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,YAAY;iBAC/B,IAAI,CACH,qDAAqD,EACrD,GAAG,CAAC,GAAG,EACP,IAAI,CACL;iBACA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;iBAChC,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC;YAErD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAClB,MAAM,OAAO,CAAC;YAChB,CAAC;YAED,OAAO,QAAQ,EAAE,CAAC;QACpB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;YAC/B,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,QAAQ,IAAI,GAAG,CAAC,KAAK,KAAK,gBAAgB,EAAE,CAAC;gBACrE,GAAG,CAAC,QAAQ,GAAG,KAAK,CAAC;YACvB,CAAC;YACD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC;QAED,OAAO,aAAa,CAAC;IACvB,CAAC,CAAC;AACJ,CAAC;AAAA,CAAC"}
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = default_1;
4
+ const utils = require("../../../utils");
5
+ function default_1(defaultFuncs, api, ctx) {
6
+ /**
7
+ * Made by Choru Official
8
+ * Mqtt
9
+ * Sets a nickname for a participant in a Facebook thread via MQTT.
10
+ *
11
+ * @param {string} nickname The new nickname to set.
12
+ * @param {string} threadID The ID of the thread.
13
+ * @param {string} participantID The ID of the participant whose nickname will be changed. Defaults to the current user's ID if not provided or a function.
14
+ * @param {Function} [callback] Optional callback function to be invoked upon completion.
15
+ * @param {string} [initiatorID] The ID of the user who initiated the nickname change (e.g., from event.senderID).
16
+ * @returns {Promise<object>} A promise that resolves with a structured event object on success or rejects on error.
17
+ */
18
+ return function setNickname(nickname, threadID, participantID, callback, initiatorID) {
19
+ let _callback;
20
+ let _initiatorID;
21
+ let _resolvePromise;
22
+ let _rejectPromise;
23
+ const returnPromise = new Promise((resolve, reject) => {
24
+ _resolvePromise = resolve;
25
+ _rejectPromise = reject;
26
+ });
27
+ if (utils.getType(callback) === 'Function' ||
28
+ utils.getType(callback) === 'AsyncFunction') {
29
+ _callback = callback;
30
+ _initiatorID = initiatorID;
31
+ }
32
+ else if (utils.getType(threadID) === 'Function' ||
33
+ utils.getType(threadID) === 'AsyncFunction') {
34
+ _callback = threadID;
35
+ threadID = null;
36
+ _initiatorID = callback;
37
+ }
38
+ else if (utils.getType(participantID) === 'Function' ||
39
+ utils.getType(participantID) === 'AsyncFunction') {
40
+ _callback = participantID;
41
+ participantID = ctx.userID;
42
+ _initiatorID = callback;
43
+ }
44
+ else if (utils.getType(callback) === 'string') {
45
+ _initiatorID = callback;
46
+ _callback = undefined;
47
+ }
48
+ else {
49
+ _callback = undefined;
50
+ _initiatorID = undefined;
51
+ }
52
+ if (!_callback) {
53
+ _callback = function (__err, __data) {
54
+ if (__err)
55
+ _rejectPromise(__err);
56
+ else
57
+ _resolvePromise(__data);
58
+ };
59
+ }
60
+ else {
61
+ const originalCallback = _callback;
62
+ _callback = function (__err, __data) {
63
+ if (__err) {
64
+ originalCallback(__err);
65
+ _rejectPromise(__err);
66
+ }
67
+ else {
68
+ originalCallback(null, __data);
69
+ _resolvePromise(__data);
70
+ }
71
+ };
72
+ }
73
+ _initiatorID = _initiatorID || ctx.userID;
74
+ threadID = threadID || ctx.threadID;
75
+ participantID = participantID || ctx.userID;
76
+ if (!threadID) {
77
+ return _callback(new Error('threadID is required to set a nickname.'));
78
+ }
79
+ if (typeof nickname !== 'string') {
80
+ return _callback(new Error('nickname must be a string.'));
81
+ }
82
+ if (!ctx.mqttClient) {
83
+ return _callback(new Error('Not connected to MQTT'));
84
+ }
85
+ ctx.wsReqNumber += 1;
86
+ ctx.wsTaskNumber += 1;
87
+ const queryPayload = {
88
+ thread_key: threadID.toString(),
89
+ contact_id: participantID.toString(),
90
+ nickname: nickname,
91
+ sync_group: 1,
92
+ };
93
+ const query = {
94
+ failure_count: null,
95
+ label: '44',
96
+ payload: JSON.stringify(queryPayload),
97
+ queue_name: 'thread_participant_nickname',
98
+ task_id: ctx.wsTaskNumber,
99
+ };
100
+ const context = {
101
+ app_id: ctx.appID,
102
+ payload: {
103
+ epoch_id: parseInt(utils.generateOfflineThreadingID()),
104
+ tasks: [query],
105
+ version_id: '24631415369801570',
106
+ },
107
+ request_id: ctx.wsReqNumber,
108
+ type: 3,
109
+ };
110
+ context.payload = JSON.stringify(context.payload);
111
+ ctx.mqttClient.publish('/ls_req', JSON.stringify(context), { qos: 1, retain: false }, (err) => {
112
+ if (err) {
113
+ return _callback(new Error(`MQTT publish failed for setNickname: ${err.message || err}`));
114
+ }
115
+ const nicknameChangeEvent = {
116
+ type: 'thread_nickname_update',
117
+ threadID: threadID,
118
+ participantID: participantID,
119
+ newNickname: nickname,
120
+ senderID: _initiatorID,
121
+ BotID: ctx.userID,
122
+ timestamp: Date.now(),
123
+ };
124
+ _callback(null, nicknameChangeEvent);
125
+ });
126
+ return returnPromise;
127
+ };
128
+ }
129
+ //# sourceMappingURL=nickname.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nickname.js","sourceRoot":"","sources":["../../../../src/deltas/apis/messaging/nickname.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,156 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = default_1;
4
+ const utils = require("../../../utils");
5
+ /**
6
+ * @ChoruOfficial
7
+ * @description A module for interacting with Facebook Messenger Notes. This is not for creating notes on a user's profile page, but rather the temporary status-like notes in Messenger.
8
+ * @param {Object} defaultFuncs The default functions provided by the API wrapper.
9
+ * @param {Object} api The full API object.
10
+ * @param {Object} ctx The context object containing the user's session state (e.g., userID, jar).
11
+ * @returns {Object} An object containing methods to create, delete, recreate, and check notes.
12
+ */
13
+ function default_1(defaultFuncs, api, ctx) {
14
+ /**
15
+ * @callback notesCallback
16
+ * @param {Error|null} error An error object if the request fails, otherwise null.
17
+ * @param {Object} [data] The data returned from the API.
18
+ */
19
+ /**
20
+ * Checks for the currently active note for the logged-in user.
21
+ * @param {notesCallback} callback A callback function that is executed after the request. It receives an error object (if any) and an object representing the current note.
22
+ */
23
+ function checkNote(callback) {
24
+ if (typeof callback !== 'function') {
25
+ callback = () => { };
26
+ }
27
+ const form = {
28
+ fb_api_caller_class: 'RelayModern',
29
+ fb_api_req_friendly_name: 'MWInboxTrayNoteCreationDialogQuery',
30
+ variables: JSON.stringify({ scale: 2 }),
31
+ doc_id: '30899655739648624',
32
+ };
33
+ defaultFuncs
34
+ .post('https://www.facebook.com/api/graphql/', ctx.jar, form)
35
+ .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
36
+ .then((resData) => {
37
+ if (resData && resData.errors)
38
+ throw resData.errors[0];
39
+ const currentNote = resData?.data?.viewer?.actor?.msgr_user_rich_status;
40
+ callback(null, currentNote);
41
+ })
42
+ .catch((err) => {
43
+ utils.error('notes.checkNote', err);
44
+ callback(err);
45
+ });
46
+ }
47
+ /**
48
+ * Creates a new note with the provided text. The note lasts for 24 hours (86400 seconds).
49
+ * @param {string} text The content of the note.
50
+ * @param {notesCallback} callback A callback function that is executed after the request. It receives an error object (if any) and an object confirming the note's creation status.
51
+ */
52
+ function createNote(text, privacy = 'EVERYONE', callback) {
53
+ if (typeof callback !== 'function') {
54
+ callback = () => { };
55
+ }
56
+ const variables = {
57
+ input: {
58
+ client_mutation_id: Math.round(Math.random() * 10).toString(),
59
+ actor_id: ctx.userID,
60
+ description: text,
61
+ duration: 86400, // 24 hours in seconds
62
+ note_type: 'TEXT_NOTE',
63
+ privacy,
64
+ session_id: utils.getGUID(),
65
+ },
66
+ };
67
+ const form = {
68
+ fb_api_caller_class: 'RelayModern',
69
+ fb_api_req_friendly_name: 'MWInboxTrayNoteCreationDialogCreationStepContentMutation',
70
+ variables: JSON.stringify(variables),
71
+ doc_id: '24060573783603122',
72
+ };
73
+ defaultFuncs
74
+ .post('https://www.facebook.com/api/graphql/', ctx.jar, form)
75
+ .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
76
+ .then((resData) => {
77
+ if (resData && resData.errors)
78
+ throw resData.errors[0];
79
+ const status = resData?.data?.xfb_rich_status_create?.status;
80
+ if (!status)
81
+ throw new Error('Could not find note status in the server response.');
82
+ callback(null, status);
83
+ })
84
+ .catch((err) => {
85
+ utils.error('notes.createNote', err);
86
+ callback(err);
87
+ });
88
+ }
89
+ /**
90
+ * Deletes a specific note by its ID.
91
+ * @param {string} noteID The ID of the note to be deleted.
92
+ * @param {notesCallback} callback A callback function that is executed after the request. It receives an error object (if any) and an object confirming the deletion.
93
+ */
94
+ function deleteNote(noteID, callback) {
95
+ if (typeof callback !== 'function') {
96
+ callback = () => { };
97
+ }
98
+ const variables = {
99
+ input: {
100
+ client_mutation_id: Math.round(Math.random() * 10).toString(),
101
+ actor_id: ctx.userID,
102
+ rich_status_id: noteID,
103
+ },
104
+ };
105
+ const form = {
106
+ fb_api_caller_class: 'RelayModern',
107
+ fb_api_req_friendly_name: 'useMWInboxTrayDeleteNoteMutation',
108
+ variables: JSON.stringify(variables),
109
+ doc_id: '9532619970198958',
110
+ };
111
+ defaultFuncs
112
+ .post('https://www.facebook.com/api/graphql/', ctx.jar, form)
113
+ .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
114
+ .then((resData) => {
115
+ if (resData && resData.errors)
116
+ throw resData.errors[0];
117
+ const deletedStatus = resData?.data?.xfb_rich_status_delete;
118
+ if (!deletedStatus)
119
+ throw new Error('Could not find deletion status in the server response.');
120
+ callback(null, deletedStatus);
121
+ })
122
+ .catch((err) => {
123
+ utils.error('notes.deleteNote', err);
124
+ callback(err);
125
+ });
126
+ }
127
+ /**
128
+ * A convenience function that first deletes an old note and then creates a new one.
129
+ * @param {string} oldNoteID The ID of the note to delete.
130
+ * @param {string} newText The text for the new note.
131
+ * @param {notesCallback} callback A callback function that is executed after the request. It receives an error object (if any) and an object containing the deletion and creation statuses.
132
+ */
133
+ function recreateNote(oldNoteID, newText, callback) {
134
+ if (typeof callback !== 'function') {
135
+ callback = () => { };
136
+ }
137
+ deleteNote(oldNoteID, (err, deleted) => {
138
+ if (err) {
139
+ return callback(err);
140
+ }
141
+ createNote(newText, undefined, (err, created) => {
142
+ if (err) {
143
+ return callback(err);
144
+ }
145
+ callback(null, { deleted, created });
146
+ });
147
+ });
148
+ }
149
+ return {
150
+ create: createNote,
151
+ delete: deleteNote,
152
+ recreate: recreateNote,
153
+ check: checkNote,
154
+ };
155
+ }
156
+ //# sourceMappingURL=notes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notes.js","sourceRoot":"","sources":["../../../../src/deltas/apis/messaging/notes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = default_1;
4
+ const utils = require("../../../utils");
5
+ /**
6
+ * @module resolvePhotoUrl
7
+ * @description Fetches the direct URL of a Facebook photo using its photo ID.
8
+ * @param {Object} defaultFuncs - An object containing default request functions.
9
+ * @param {Object} api - Facebook API object (unused here but kept for compatibility).
10
+ * @param {Object} ctx - Context object containing cookies (jar) and other session info.
11
+ * @returns {Function} resolvePhotoUrl - A function that takes a photo ID and optional callback, and returns a Promise resolving to the photo URL.
12
+ */
13
+ function default_1(defaultFuncs, api, ctx) {
14
+ /**
15
+ * @function resolvePhotoUrl
16
+ * @param {string} photoID - The ID of the Facebook photo to resolve.
17
+ * @param {Function} [callback] - Optional Node-style callback function `(err, photoUrl)`.
18
+ * @returns {Promise<string>} A Promise that resolves to the direct photo URL.
19
+ */
20
+ return function resolvePhotoUrl(photoID, callback) {
21
+ let resolveFunc = function () { };
22
+ let rejectFunc = function () { };
23
+ const returnPromise = new Promise(function (resolve, reject) {
24
+ resolveFunc = resolve;
25
+ rejectFunc = reject;
26
+ });
27
+ if (!callback) {
28
+ callback = function (err, photoUrl) {
29
+ if (err) {
30
+ return rejectFunc(err);
31
+ }
32
+ resolveFunc(photoUrl);
33
+ };
34
+ }
35
+ defaultFuncs
36
+ .get("https://www.facebook.com/mercury/attachments/photo", ctx.jar, {
37
+ photo_id: photoID,
38
+ })
39
+ .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
40
+ .then((resData) => {
41
+ if (resData.error) {
42
+ throw resData;
43
+ }
44
+ const photoUrl = resData.jsmods.require[0][3][0];
45
+ return callback(null, photoUrl);
46
+ })
47
+ .catch((err) => {
48
+ utils.error("resolvePhotoUrl", err);
49
+ return callback(err);
50
+ });
51
+ return returnPromise;
52
+ };
53
+ }
54
+ ;
55
+ //# sourceMappingURL=resolvePhotoUrl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolvePhotoUrl.js","sourceRoot":"","sources":["../../../../src/deltas/apis/messaging/resolvePhotoUrl.ts"],"names":[],"mappings":";;AAUA,4BA6CC;AAvDD,wCAAyC;AAEzC;;;;;;;GAOG;AACH,mBAAwB,YAAiB,EAAE,GAAQ,EAAE,GAAQ;IAC3D;;;;;OAKG;IACH,OAAO,SAAS,eAAe,CAAC,OAAO,EAAE,QAAQ;QAC/C,IAAI,WAAW,GAAa,cAAa,CAAC,CAAC;QAC3C,IAAI,UAAU,GAAa,cAAa,CAAC,CAAC;QAC1C,MAAM,aAAa,GAAG,IAAI,OAAO,CAAM,UAAU,OAAO,EAAE,MAAM;YAC9D,WAAW,GAAG,OAAO,CAAC;YACtB,UAAU,GAAG,MAAM,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,QAAQ,GAAG,UAAU,GAAG,EAAE,QAAQ;gBAChC,IAAI,GAAG,EAAE,CAAC;oBACR,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;gBACzB,CAAC;gBACD,WAAW,CAAC,QAAQ,CAAC,CAAC;YACxB,CAAC,CAAC;QACJ,CAAC;QAED,YAAY;aACT,GAAG,CAAC,oDAAoD,EAAE,GAAG,CAAC,GAAG,EAAE;YAClE,QAAQ,EAAE,OAAO;SAClB,CAAC;aACD,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;aACjD,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;YAChB,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAClB,MAAM,OAAO,CAAC;YAChB,CAAC;YAED,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAEjD,OAAO,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAClC,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACb,KAAK,CAAC,KAAK,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;YACpC,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;QAEL,OAAO,aAAa,CAAC;IACvB,CAAC,CAAC;AACJ,CAAC;AAAA,CAAC"}
@@ -0,0 +1,239 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = default_1;
4
+ const utils = require("../../../utils");
5
+ // @NethWs3Dev
6
+ const allowedProperties = {
7
+ attachment: true,
8
+ url: true,
9
+ sticker: true,
10
+ emoji: true,
11
+ emojiSize: true,
12
+ body: true,
13
+ mentions: true,
14
+ location: true,
15
+ };
16
+ function default_1(defaultFuncs, api, ctx) {
17
+ async function uploadAttachment(attachments) {
18
+ var uploads = [];
19
+ for (var i = 0; i < attachments.length; i++) {
20
+ if (!utils.isReadableStream(attachments[i])) {
21
+ throw new Error('Attachment should be a readable stream and not ' +
22
+ utils.getType(attachments[i]) +
23
+ '.');
24
+ }
25
+ const oksir = await defaultFuncs
26
+ .postFormData('https://upload.facebook.com/ajax/mercury/upload.php', ctx.jar, {
27
+ upload_1024: attachments[i],
28
+ voice_clip: 'true',
29
+ }, {})
30
+ .then(utils.parseAndCheckLogin(ctx, defaultFuncs));
31
+ if (oksir.error) {
32
+ throw new Error(oksir.error);
33
+ }
34
+ uploads.push(oksir.payload.metadata[0]);
35
+ }
36
+ return uploads;
37
+ }
38
+ async function getUrl(url) {
39
+ const resData = await defaultFuncs
40
+ .post('https://www.facebook.com/message_share_attachment/fromURI/', ctx.jar, {
41
+ image_height: 960,
42
+ image_width: 960,
43
+ uri: url,
44
+ })
45
+ .then(utils.parseAndCheckLogin(ctx, defaultFuncs));
46
+ if (!resData || resData.error || !resData.payload) {
47
+ throw new Error(resData);
48
+ }
49
+ }
50
+ async function sendContent(form, threadID, isSingleUser, messageAndOTID, callback) {
51
+ // There are three cases here:
52
+ // 1. threadID is of type array, where we're starting a new group chat with users
53
+ // specified in the array.
54
+ // 2. User is sending a message to a specific user.
55
+ // 3. No additional form params and the message goes to an existing group chat.
56
+ if (utils.getType(threadID) === 'Array') {
57
+ for (var i = 0; i < threadID.length; i++) {
58
+ form['specific_to_list[' + i + ']'] = 'fbid:' + threadID[i];
59
+ }
60
+ form['specific_to_list[' + threadID.length + ']'] = 'fbid:' + ctx.userID;
61
+ form['client_thread_id'] = 'root:' + messageAndOTID;
62
+ utils.log('sendMessage', 'Sending message to multiple users: ' + threadID);
63
+ }
64
+ else {
65
+ // This means that threadID is the id of a user, and the chat
66
+ // is a single person chat
67
+ if (isSingleUser) {
68
+ form['specific_to_list[0]'] = 'fbid:' + threadID;
69
+ form['specific_to_list[1]'] = 'fbid:' + ctx.userID;
70
+ form['other_user_fbid'] = threadID;
71
+ }
72
+ else {
73
+ form['thread_fbid'] = threadID;
74
+ }
75
+ }
76
+ if (ctx.globalOptions.pageID) {
77
+ form['author'] = 'fbid:' + ctx.globalOptions.pageID;
78
+ form['specific_to_list[1]'] = 'fbid:' + ctx.globalOptions.pageID;
79
+ form['creator_info[creatorID]'] = ctx.userID;
80
+ form['creator_info[creatorType]'] = 'direct_admin';
81
+ form['creator_info[labelType]'] = 'sent_message';
82
+ form['creator_info[pageID]'] = ctx.globalOptions.pageID;
83
+ form['request_user_id'] = ctx.globalOptions.pageID;
84
+ form['creator_info[profileURI]'] =
85
+ 'https://www.facebook.com/profile.php?id=' + ctx.userID;
86
+ }
87
+ const resData = await defaultFuncs
88
+ .post('https://www.facebook.com/messaging/send/', ctx.jar, form)
89
+ .then(utils.parseAndCheckLogin(ctx, defaultFuncs));
90
+ if (!resData) {
91
+ throw new Error('Send message failed.');
92
+ }
93
+ if (resData.error) {
94
+ if (resData.error === 1545012) {
95
+ utils.warn('sendMessage', "Got error 1545012. This might mean that you're not part of the conversation " +
96
+ threadID);
97
+ }
98
+ throw new Error(resData);
99
+ }
100
+ const messageInfo = resData.payload.actions.reduce((p, v) => {
101
+ return {
102
+ threadID: v.thread_fbid,
103
+ messageID: v.message_id,
104
+ timestamp: v.timestamp,
105
+ };
106
+ }, null);
107
+ return messageInfo;
108
+ }
109
+ return async (msg, threadID, replyToMessage, isSingleUser = false) => {
110
+ let msgType = utils.getType(msg);
111
+ let threadIDType = utils.getType(threadID);
112
+ let messageIDType = utils.getType(replyToMessage);
113
+ if (msgType !== 'String' && msgType !== 'Object')
114
+ throw new Error('Message should be of type string or object and not ' + msgType + '.');
115
+ if (threadIDType !== 'Array' &&
116
+ threadIDType !== 'Number' &&
117
+ threadIDType !== 'String')
118
+ throw new Error('ThreadID should be of type number, string, or array and not ' +
119
+ threadIDType +
120
+ '.');
121
+ if (replyToMessage && messageIDType !== 'String')
122
+ throw new Error('MessageID should be of type string and not ' + threadIDType + '.');
123
+ if (msgType === 'String') {
124
+ msg = { body: msg };
125
+ }
126
+ let disallowedProperties = Object.keys(msg).filter((prop) => !allowedProperties[prop]);
127
+ if (disallowedProperties.length > 0) {
128
+ throw new Error('Dissallowed props: `' + disallowedProperties.join(', ') + '`');
129
+ }
130
+ let messageAndOTID = utils.generateOfflineThreadingID();
131
+ let form = {
132
+ client: 'mercury',
133
+ action_type: 'ma-type:user-generated-message',
134
+ author: 'fbid:' + ctx.userID,
135
+ timestamp: Date.now(),
136
+ timestamp_absolute: 'Today',
137
+ timestamp_relative: utils.generateTimestampRelative(),
138
+ timestamp_time_passed: '0',
139
+ is_unread: false,
140
+ is_cleared: false,
141
+ is_forward: false,
142
+ is_filtered_content: false,
143
+ is_filtered_content_bh: false,
144
+ is_filtered_content_account: false,
145
+ is_filtered_content_quasar: false,
146
+ is_filtered_content_invalid_app: false,
147
+ is_spoof_warning: false,
148
+ source: 'source:chat:web',
149
+ 'source_tags[0]': 'source:chat',
150
+ ...(msg.body && {
151
+ body: msg.body,
152
+ }),
153
+ html_body: false,
154
+ ui_push_phase: 'V3',
155
+ status: '0',
156
+ offline_threading_id: messageAndOTID,
157
+ message_id: messageAndOTID,
158
+ threading_id: utils.generateThreadingID(ctx.clientID),
159
+ 'ephemeral_ttl_mode:': '0',
160
+ manual_retry_cnt: '0',
161
+ has_attachment: !!(msg.attachment || msg.url || msg.sticker),
162
+ signatureID: utils.getSignatureID(),
163
+ ...(replyToMessage && {
164
+ replied_to_message_id: replyToMessage,
165
+ }),
166
+ };
167
+ if (msg.location) {
168
+ if (!msg.location.latitude || !msg.location.longitude)
169
+ throw new Error('location property needs both latitude and longitude');
170
+ form['location_attachment[coordinates][latitude]'] =
171
+ msg.location.latitude;
172
+ form['location_attachment[coordinates][longitude]'] =
173
+ msg.location.longitude;
174
+ form['location_attachment[is_current_location]'] = !!msg.location.current;
175
+ }
176
+ if (msg.sticker) {
177
+ form['sticker_id'] = msg.sticker;
178
+ }
179
+ if (msg.attachment) {
180
+ form.image_ids = [];
181
+ form.gif_ids = [];
182
+ form.file_ids = [];
183
+ form.video_ids = [];
184
+ form.audio_ids = [];
185
+ if (utils.getType(msg.attachment) !== 'Array') {
186
+ msg.attachment = [msg.attachment];
187
+ }
188
+ const files = await uploadAttachment(msg.attachment);
189
+ files.forEach((file) => {
190
+ const type = Object.keys(file)[0];
191
+ form['' + type + 's'].push(file[type]);
192
+ });
193
+ }
194
+ if (msg.url) {
195
+ form['shareable_attachment[share_type]'] = '100';
196
+ const params = await getUrl(msg.url);
197
+ form['shareable_attachment[share_params]'] = params;
198
+ }
199
+ if (msg.emoji) {
200
+ if (!msg.emojiSize) {
201
+ msg.emojiSize = 'medium';
202
+ }
203
+ if (msg.emojiSize !== 'small' &&
204
+ msg.emojiSize !== 'medium' &&
205
+ msg.emojiSize !== 'large') {
206
+ throw new Error('emojiSize property is invalid');
207
+ }
208
+ if (!form.body) {
209
+ throw new Error('body is not empty');
210
+ }
211
+ form.body = msg.emoji;
212
+ form['tags[0]'] = 'hot_emoji_size:' + msg.emojiSize;
213
+ }
214
+ if (msg.mentions) {
215
+ for (let i = 0; i < msg.mentions.length; i++) {
216
+ const mention = msg.mentions[i];
217
+ const tag = mention.tag;
218
+ if (typeof tag !== 'string') {
219
+ throw new Error('Mention tags must be strings.');
220
+ }
221
+ const offset = msg.body.indexOf(tag, mention.fromIndex || 0);
222
+ if (offset < 0)
223
+ utils.warn('handleMention', 'Mention for "' + tag + '" not found in message string.');
224
+ if (!mention.id)
225
+ utils.warn('handleMention', 'Mention id should be non-null.');
226
+ const id = mention.id || 0;
227
+ const emptyChar = '\u200E';
228
+ form['body'] = emptyChar + msg.body;
229
+ form['profile_xmd[' + i + '][offset]'] = offset + 1;
230
+ form['profile_xmd[' + i + '][length]'] = tag.length;
231
+ form['profile_xmd[' + i + '][id]'] = id;
232
+ form['profile_xmd[' + i + '][type]'] = 'p';
233
+ }
234
+ }
235
+ const result = await sendContent(form, threadID, isSingleUser, messageAndOTID);
236
+ return result;
237
+ };
238
+ }
239
+ //# sourceMappingURL=sendMessage.js.map