@eryxenx/insta-chat 2.0.0 → 2.0.3

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 (51) hide show
  1. package/CHANGELOG.md +95 -8
  2. package/index.js +105 -1
  3. package/module/login.js +51 -1
  4. package/package.json +9 -2
  5. package/src/api/action/getAppState.js +19 -1
  6. package/src/api/action/getCookies.js +7 -1
  7. package/src/api/action/getCurrentUserID.js +7 -1
  8. package/src/api/action/setOptions.js +8 -1
  9. package/src/api/messaging/editMessage.js +19 -1
  10. package/src/api/messaging/markAsRead.js +7 -1
  11. package/src/api/messaging/resolvePhotoUrl.js +8 -1
  12. package/src/api/messaging/sendMessage.js +45 -1
  13. package/src/api/messaging/sendMessageSync.js +8 -1
  14. package/src/api/messaging/sendTypingIndicator.js +7 -1
  15. package/src/api/messaging/setMessageReaction.js +19 -1
  16. package/src/api/messaging/shareContact.js +19 -1
  17. package/src/api/messaging/unsendMessage.js +16 -1
  18. package/src/api/realtime/getInbox.js +7 -1
  19. package/src/api/realtime/listen.js +7 -1
  20. package/src/api/realtime/stopListening.js +7 -1
  21. package/src/api/threads/getThreadHistory.js +16 -1
  22. package/src/api/threads/getThreadInfo.js +59 -1
  23. package/src/api/threads/getThreadList.js +22 -1
  24. package/src/api/users/getUID.js +12 -1
  25. package/src/api/users/getUserInfo.js +37 -1
  26. package/src/api.js +253 -1
  27. package/src/app/InstaClient.js +352 -1
  28. package/src/app/InstaContext.js +46 -1
  29. package/src/app/createFcaClient.js +59 -1
  30. package/src/app/loadApiMethods.js +30 -1
  31. package/src/constants.js +53 -1
  32. package/src/cookies.js +41 -1
  33. package/src/deviceIdentity.js +31 -1
  34. package/src/events/normalizeEvent.js +142 -1
  35. package/src/http.js +381 -1
  36. package/src/messageContent.js +73 -1
  37. package/src/methods/inbox.js +464 -1
  38. package/src/methods/media.js +218 -1
  39. package/src/methods/message.js +115 -1
  40. package/src/methods/reactions.js +52 -1
  41. package/src/methods/thread.js +96 -1
  42. package/src/methods/typing.js +35 -1
  43. package/src/methods/user.js +33 -1
  44. package/src/session.js +94 -1
  45. package/src/threadDetail.js +36 -1
  46. package/src/utils/antiSuspension.js +269 -0
  47. package/src/utils/dataDir.js +11 -0
  48. package/src/utils/errors.js +106 -0
  49. package/src/utils/format.js +38 -1
  50. package/src/utils/messageStyle.js +57 -1
  51. package/src/utils/sessionGuard.js +93 -0
@@ -4,4 +4,33 @@
4
4
  * Licensed under the Apache License, Version 2.0. See LICENSE and NOTICE.
5
5
  * Original author credit must be retained in all copies and derivatives.
6
6
  */
7
- function _0x5a41(){const _0x1e3111=['WRVdLsNdPq','xGZcLCkwiq4','WQ7dKLNdIG','sLBcGJnZW63dOKNcJCoIw8k0tG','WPnJbSkyWOa','WPrWlmkHW4Lv','W4ddOmkebYKo','WOL0g2ip','W5ulWQldJamJgComW6FdS8ocWR8K','fmkXkr4tWO7cUcPtfCkNzJq','WRHHlSkq','BCkhwSkiwa','dmobcCkkeG','WRtcGNBcJHXmWO0UW5OQfW','WOuEW7yMW6O','WR82c8o3WOO7iJJcUCkyWOVcJWvt','W59/s8k1WPjt','ESkrxW','W5rWqSkJ','WOlcUg/cLtZdI8oSWOtcVwFcPa','WOGTW6aoW711','DJhcM8o8gSoQW4NcHCk6','hL3dGmogCfv6W4CPv2xdRcS','Dwmx','a8oqb8kN','bcmzW4jOkG','BJ5ssCkEfYq6W5lcHCkdW4q','tZZcR8oh','WP8ahha','W5OopMJcSG','WRzRiCkFWO1+','W7dcP8omrmkQWOVcTCkNW7G','W5qwW5FdH8kn','eqtdHMmQWRG','WODZyrFdOe7dIKOyW6O0j8kzuq','nwtdJ8oRcSoQ','sL5tWPmqW5vgWR4GoSo4la','W5u6W50RW4HRWOi','kSora8k1ECkFaXRcRG','lCoyamoYpCopyqFcQ8o+W7jXWPW','WPGSn8kFWP8xW6C','eILKESoHh8owgXHnbW','W4awiuhcTa','C8kYqCk7','wCkauSoYB0FcQmokrez/','kmora8kKECkooGRcSW'];_0x5a41=function(){return _0x1e3111;};return _0x5a41();}const _0x193ea2=_0x2784,_0x2d374f=_0x2784;(function(_0x46c1af,_0x463349){const _0x30904e=_0x2784,_0x56e5d7=_0x2784,_0x171442=_0x46c1af();while(!![]){try{const _0x30072f=-parseInt(_0x30904e(0x1b4,'0FOg'))/0x1+-parseInt(_0x56e5d7(0x1bc,'U$MH'))/0x2*(parseInt(_0x30904e(0x1b6,'okUZ'))/0x3)+-parseInt(_0x56e5d7(0x1b9,'AE#2'))/0x4*(parseInt(_0x30904e(0x18f,'okUZ'))/0x5)+-parseInt(_0x30904e(0x198,'MIHK'))/0x6+-parseInt(_0x30904e(0x1a6,'JQho'))/0x7+parseInt(_0x30904e(0x1b5,'M4d&'))/0x8*(-parseInt(_0x56e5d7(0x1b7,'okUZ'))/0x9)+parseInt(_0x56e5d7(0x19f,'^yx3'))/0xa;if(_0x30072f===_0x463349)break;else _0x171442['push'](_0x171442['shift']());}catch(_0x348db5){_0x171442['push'](_0x171442['shift']());}}}(_0x5a41,0xd50bf));function _0x2784(_0x47668e,_0x3e0f91){_0x47668e=_0x47668e-0x18f;const _0x5a41d4=_0x5a41();let _0x27849b=_0x5a41d4[_0x47668e];if(_0x2784['HAOSWb']===undefined){var _0x179aff=function(_0x5d635f){const _0x473986='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1400c0='',_0x15558d='';for(let _0x48168e=0x0,_0x4c4bcb,_0x32c51f,_0x2ddd5a=0x0;_0x32c51f=_0x5d635f['charAt'](_0x2ddd5a++);~_0x32c51f&&(_0x4c4bcb=_0x48168e%0x4?_0x4c4bcb*0x40+_0x32c51f:_0x32c51f,_0x48168e++%0x4)?_0x1400c0+=String['fromCharCode'](0xff&_0x4c4bcb>>(-0x2*_0x48168e&0x6)):0x0){_0x32c51f=_0x473986['indexOf'](_0x32c51f);}for(let _0x39defb=0x0,_0x508a0d=_0x1400c0['length'];_0x39defb<_0x508a0d;_0x39defb++){_0x15558d+='%'+('00'+_0x1400c0['charCodeAt'](_0x39defb)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x15558d);};const _0x167ace=function(_0x528fd8,_0x1f4e12){let _0x4144b3=[],_0x1ce79e=0x0,_0x16a345,_0x354113='';_0x528fd8=_0x179aff(_0x528fd8);let _0x3d5cce;for(_0x3d5cce=0x0;_0x3d5cce<0x100;_0x3d5cce++){_0x4144b3[_0x3d5cce]=_0x3d5cce;}for(_0x3d5cce=0x0;_0x3d5cce<0x100;_0x3d5cce++){_0x1ce79e=(_0x1ce79e+_0x4144b3[_0x3d5cce]+_0x1f4e12['charCodeAt'](_0x3d5cce%_0x1f4e12['length']))%0x100,_0x16a345=_0x4144b3[_0x3d5cce],_0x4144b3[_0x3d5cce]=_0x4144b3[_0x1ce79e],_0x4144b3[_0x1ce79e]=_0x16a345;}_0x3d5cce=0x0,_0x1ce79e=0x0;for(let _0x38d8ab=0x0;_0x38d8ab<_0x528fd8['length'];_0x38d8ab++){_0x3d5cce=(_0x3d5cce+0x1)%0x100,_0x1ce79e=(_0x1ce79e+_0x4144b3[_0x3d5cce])%0x100,_0x16a345=_0x4144b3[_0x3d5cce],_0x4144b3[_0x3d5cce]=_0x4144b3[_0x1ce79e],_0x4144b3[_0x1ce79e]=_0x16a345,_0x354113+=String['fromCharCode'](_0x528fd8['charCodeAt'](_0x38d8ab)^_0x4144b3[(_0x4144b3[_0x3d5cce]+_0x4144b3[_0x1ce79e])%0x100]);}return _0x354113;};_0x2784['YhXkfV']=_0x167ace,_0x2784['hIGLtA']={},_0x2784['HAOSWb']=!![];}const _0x5228b8=_0x5a41d4[0x0],_0x4db039=_0x47668e+_0x5228b8,_0x2ed380=_0x2784['hIGLtA'][_0x4db039];return!_0x2ed380?(_0x2784['TUsDSJ']===undefined&&(_0x2784['TUsDSJ']=!![]),_0x27849b=_0x2784['YhXkfV'](_0x27849b,_0x3e0f91),_0x2784['hIGLtA'][_0x4db039]=_0x27849b):_0x27849b=_0x2ed380,_0x27849b;}const fs=require('fs'),path=require(_0x193ea2(0x1ab,'M3Ov')),API_ROOT=path[_0x193ea2(0x19a,'X%IB')](__dirname,'..',_0x193ea2(0x1a1,'okUZ'));function loadApiMethods(_0xabd8e4){const _0x44a832=_0x2d374f,_0x1ed80f=_0x2d374f,_0x142d58={'nkKsL':'.js','vflNU':function(_0x5bcc0c,_0x6142eb){return _0x5bcc0c===_0x6142eb;},'apcHK':function(_0x27f35a,_0x3a0702){return _0x27f35a(_0x3a0702);},'hKfGe':_0x44a832(0x195,'Fk^$')+'on','AmAfx':function(_0x4aa172,_0xa4bc7a){return _0x4aa172!==_0xa4bc7a;}},_0x27190a=[];for(const _0x49df42 of fs[_0x1ed80f(0x1b3,'EAh]')+_0x1ed80f(0x1ba,'#s)n')](API_ROOT,{'withFileTypes':!![]})){if(!_0x49df42[_0x44a832(0x196,'dMRv')+'ctory']())continue;const _0x560623=path[_0x44a832(0x1ac,'P#9F')](API_ROOT,_0x49df42[_0x1ed80f(0x190,'AI)X')]);for(const _0x274b42 of fs[_0x1ed80f(0x191,'JQho')+_0x1ed80f(0x1b0,']s3]')](_0x560623,{'withFileTypes':!![]})){if(!_0x274b42[_0x1ed80f(0x1a9,'T#C@')]()||!_0x274b42[_0x44a832(0x1a8,'U$MH')][_0x1ed80f(0x1a0,'hsL!')+'th'](_0x142d58['nkKsL']))continue;const _0x350909=path[_0x1ed80f(0x1b1,'CkZh')+'me'](_0x274b42[_0x44a832(0x1bb,'Ult7')],_0x44a832(0x1a7,'mS!x'));if(_0x142d58[_0x1ed80f(0x19b,'okUZ')](typeof _0xabd8e4[_0x350909],'functi'+'on'))continue;const _0x1bc5e1=_0x142d58['apcHK'](require,path['join'](_0x560623,_0x274b42[_0x1ed80f(0x1a2,'hsL!')])),_0x29fc53=_0x142d58[_0x44a832(0x197,'i(JP')](typeof _0x1bc5e1,_0x142d58[_0x44a832(0x1ad,'#s)n')])?_0x1bc5e1:_0x1bc5e1&&_0x1bc5e1[_0x44a832(0x1ae,'X%IB')+'t'];if(_0x142d58[_0x44a832(0x194,'X%IB')](typeof _0x29fc53,_0x142d58[_0x44a832(0x19e,'M4d&')]))continue;_0xabd8e4[_0x350909]=_0x142d58[_0x1ed80f(0x19c,'U$MH')](_0x29fc53,_0xabd8e4),_0x27190a[_0x44a832(0x192,'D8fv')](_0x350909);}}return _0x27190a;}module[_0x193ea2(0x1a4,'M4d&')+'s']=loadApiMethods;
7
+
8
+ // Attaches every src/api/<group>/<method>.js factory onto the client, keyed by
9
+ // the file name. A file exports `function (client) { return function ... }`, so
10
+ // adding a new method is just adding a file — no central list to edit.
11
+
12
+ const fs = require("fs");
13
+ const path = require("path");
14
+
15
+ const API_ROOT = path.join(__dirname, "..", "api");
16
+
17
+ function loadApiMethods(client) {
18
+ const loaded = [];
19
+ for (const group of fs.readdirSync(API_ROOT, { withFileTypes: true })) {
20
+ if (!group.isDirectory()) continue;
21
+ const groupDir = path.join(API_ROOT, group.name);
22
+ for (const entry of fs.readdirSync(groupDir, { withFileTypes: true })) {
23
+ if (!entry.isFile() || !entry.name.endsWith(".js")) continue;
24
+ const key = path.basename(entry.name, ".js");
25
+ if (typeof client[key] === "function") continue;
26
+ const mod = require(path.join(groupDir, entry.name));
27
+ const factory = typeof mod === "function" ? mod : mod && mod.default;
28
+ if (typeof factory !== "function") continue;
29
+ client[key] = factory(client);
30
+ loaded.push(key);
31
+ }
32
+ }
33
+ return loaded;
34
+ }
35
+
36
+ module.exports = loadApiMethods;
package/src/constants.js CHANGED
@@ -4,4 +4,56 @@
4
4
  * Licensed under the Apache License, Version 2.0. See LICENSE and NOTICE.
5
5
  * Original author credit must be retained in all copies and derivatives.
6
6
  */
7
- const _0x145c24=_0xd310,_0x19ec8c=_0xd310;function _0xd310(_0x56e2c9,_0x52e44d){_0x56e2c9=_0x56e2c9-0x14d;const _0x1da9bd=_0x1da9();let _0xd310de=_0x1da9bd[_0x56e2c9];if(_0xd310['hkyooU']===undefined){var _0x5a543a=function(_0x19d885){const _0x29b488='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x275c88='',_0x4a80ad='';for(let _0x1c6cb5=0x0,_0x41ec1c,_0x1239c5,_0x2d37c7=0x0;_0x1239c5=_0x19d885['charAt'](_0x2d37c7++);~_0x1239c5&&(_0x41ec1c=_0x1c6cb5%0x4?_0x41ec1c*0x40+_0x1239c5:_0x1239c5,_0x1c6cb5++%0x4)?_0x275c88+=String['fromCharCode'](0xff&_0x41ec1c>>(-0x2*_0x1c6cb5&0x6)):0x0){_0x1239c5=_0x29b488['indexOf'](_0x1239c5);}for(let _0x1b5592=0x0,_0x5a6bab=_0x275c88['length'];_0x1b5592<_0x5a6bab;_0x1b5592++){_0x4a80ad+='%'+('00'+_0x275c88['charCodeAt'](_0x1b5592)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4a80ad);};const _0x428b89=function(_0x19b9cc,_0x184c69){let _0x103551=[],_0x1f9158=0x0,_0x354436,_0x4f705b='';_0x19b9cc=_0x5a543a(_0x19b9cc);let _0xeac099;for(_0xeac099=0x0;_0xeac099<0x100;_0xeac099++){_0x103551[_0xeac099]=_0xeac099;}for(_0xeac099=0x0;_0xeac099<0x100;_0xeac099++){_0x1f9158=(_0x1f9158+_0x103551[_0xeac099]+_0x184c69['charCodeAt'](_0xeac099%_0x184c69['length']))%0x100,_0x354436=_0x103551[_0xeac099],_0x103551[_0xeac099]=_0x103551[_0x1f9158],_0x103551[_0x1f9158]=_0x354436;}_0xeac099=0x0,_0x1f9158=0x0;for(let _0x46fc5f=0x0;_0x46fc5f<_0x19b9cc['length'];_0x46fc5f++){_0xeac099=(_0xeac099+0x1)%0x100,_0x1f9158=(_0x1f9158+_0x103551[_0xeac099])%0x100,_0x354436=_0x103551[_0xeac099],_0x103551[_0xeac099]=_0x103551[_0x1f9158],_0x103551[_0x1f9158]=_0x354436,_0x4f705b+=String['fromCharCode'](_0x19b9cc['charCodeAt'](_0x46fc5f)^_0x103551[(_0x103551[_0xeac099]+_0x103551[_0x1f9158])%0x100]);}return _0x4f705b;};_0xd310['PTiaqY']=_0x428b89,_0xd310['ncdwJb']={},_0xd310['hkyooU']=!![];}const _0x5a8944=_0x1da9bd[0x0],_0x546ddf=_0x56e2c9+_0x5a8944,_0x32b666=_0xd310['ncdwJb'][_0x546ddf];return!_0x32b666?(_0xd310['FwfYrk']===undefined&&(_0xd310['FwfYrk']=!![]),_0xd310de=_0xd310['PTiaqY'](_0xd310de,_0x52e44d),_0xd310['ncdwJb'][_0x546ddf]=_0xd310de):_0xd310de=_0x32b666,_0xd310de;}(function(_0x318448,_0x47f159){const _0x10dc7e=_0xd310,_0x5d4286=_0xd310,_0x55e9b5=_0x318448();while(!![]){try{const _0x1c27f5=parseInt(_0x10dc7e(0x1a1,'pR*w'))/0x1+parseInt(_0x10dc7e(0x15e,'p&5f'))/0x2*(-parseInt(_0x5d4286(0x156,'p&5f'))/0x3)+-parseInt(_0x10dc7e(0x1c0,'Vim3'))/0x4+parseInt(_0x10dc7e(0x192,'OeV1'))/0x5*(parseInt(_0x10dc7e(0x161,'&^f&'))/0x6)+parseInt(_0x10dc7e(0x17b,'OeV1'))/0x7+parseInt(_0x5d4286(0x1ea,'e#Vm'))/0x8+-parseInt(_0x5d4286(0x1b6,'71dL'))/0x9;if(_0x1c27f5===_0x47f159)break;else _0x55e9b5['push'](_0x55e9b5['shift']());}catch(_0x2a497a){_0x55e9b5['push'](_0x55e9b5['shift']());}}}(_0x1da9,0x2c654));const BASE=_0x145c24(0x1b7,'YAPq')+_0x19ec8c(0x1ca,'KW)3')+_0x145c24(0x1cb,'YAPq')+_0x19ec8c(0x18d,'cvK^')+_0x145c24(0x1ec,'71dL')+'v1',WEB=_0x145c24(0x1b1,'1v&E')+_0x145c24(0x1e2,'p&5f')+_0x145c24(0x1c4,')(Ca')+_0x19ec8c(0x1e9,'OeV1')+'m',GRAPHQL=WEB+(_0x19ec8c(0x1f8,'e#Vm')+_0x145c24(0x180,'YAPq')),UPLOAD=WEB+(_0x145c24(0x183,'U&zK')+_0x145c24(0x1d1,'TWxG')+_0x19ec8c(0x1a8,'74LE')+_0x145c24(0x198,'2ZwD')),DOC_ID={'TEXT_SEND':_0x19ec8c(0x18b,'FNSr')+_0x19ec8c(0x1a5,'TWxG')+_0x19ec8c(0x1e3,'RO&S'),'MEDIA_SEND':_0x19ec8c(0x195,'pR*w')+_0x145c24(0x18f,'EdcP')+_0x145c24(0x19c,'RO&S'),'EDIT_MESSAGE':_0x145c24(0x15b,'pYWC')+'623182'+_0x145c24(0x168,'8$O0'),'REACTION_SEND':_0x19ec8c(0x1fa,'1num')+_0x145c24(0x1ef,'OeV1')+_0x145c24(0x1d3,'r6P2'),'ANIMATED_MEDIA_SEND':_0x19ec8c(0x1dd,'ObSG')+_0x145c24(0x19a,'EdcP')+_0x145c24(0x1b4,'OeV1'),'CUTOUT_STICKER_SEND':'266014'+_0x145c24(0x1d0,'8@xv')+_0x19ec8c(0x16c,'1v&E'),'MARK_THREAD_READ':_0x145c24(0x181,'AEY3')+_0x145c24(0x179,'pR*w')+_0x145c24(0x1a7,'U8U*'),'THREAD_DETAIL':_0x19ec8c(0x1ab,'weF^')+_0x19ec8c(0x1f6,'p&5f')+_0x19ec8c(0x1b0,'weF^'),'INBOX':_0x19ec8c(0x162,'Vim3')+_0x19ec8c(0x1c6,'OeV1')+_0x145c24(0x15f,'pYWC')},EP={'CURRENT_USER':BASE+(_0x19ec8c(0x1d9,'pR*w')+_0x19ec8c(0x19e,'r6P2')+_0x145c24(0x1d4,'1v&E')+_0x19ec8c(0x1e4,'74LE')+_0x145c24(0x1c9,'U&zK')+_0x145c24(0x172,'2ZwD')),'INBOX':BASE+(_0x145c24(0x14e,'FNSr')+_0x19ec8c(0x1f7,'8@xv')+_0x145c24(0x1e0,'U8U*')),'BROADCAST_TEXT':BASE+(_0x145c24(0x1c3,'Lc5P')+_0x145c24(0x186,'ObSG')+'hreads'+_0x145c24(0x17a,']sEN')+_0x19ec8c(0x1ae,'uee&')+_0x19ec8c(0x1d2,'Fve6')),'BROADCAST_LINK':BASE+(_0x145c24(0x1ac,'wu0$')+_0x19ec8c(0x1c1,'KW)3')+_0x145c24(0x150,'I8C[')+_0x19ec8c(0x1e1,'e#Vm')+_0x145c24(0x1e5,'%ZU#')+_0x19ec8c(0x1e7,'YAPq')),'BROADCAST_REACTION':(_0x29b488,_0x275c88)=>BASE+(_0x19ec8c(0x1c7,'wAcN')+_0x19ec8c(0x1bf,'74LE')+_0x145c24(0x1a0,'[f(O')+'/')+_0x29b488+(_0x19ec8c(0x1ad,'2ZwD')+'/')+_0x275c88+(_0x19ec8c(0x176,'TWxG')+_0x19ec8c(0x1f9,'Vim3')),'THREAD_INFO':_0x4a80ad=>BASE+(_0x145c24(0x1b3,']sEN')+_0x145c24(0x184,'E@sq')+_0x19ec8c(0x1cf,'[]v3')+'/')+_0x4a80ad+(_0x145c24(0x160,']sEN')+_0x19ec8c(0x1b8,'Ix24')+_0x19ec8c(0x159,']sEN')+_0x19ec8c(0x1d5,'e#)j')+_0x19ec8c(0x191,'weF^')+_0x19ec8c(0x165,'e#)j')+_0x19ec8c(0x1a4,'xVz#')+'20'),'THREAD_ITEMS':_0x1c6cb5=>BASE+(_0x145c24(0x1a2,'Jp(@')+_0x19ec8c(0x178,'RO&S')+_0x145c24(0x1f3,'Jp(@')+'/')+_0x1c6cb5+(_0x19ec8c(0x154,'1v&E')+'/'),'THREAD_SEEN':_0x41ec1c=>BASE+(_0x19ec8c(0x197,'1num')+_0x19ec8c(0x1c8,'wu0$')+_0x145c24(0x1cf,'[]v3')+'/')+_0x41ec1c+(_0x19ec8c(0x1aa,'RO&S')+_0x145c24(0x166,'74LE')),'THREAD_MUTE':_0x1239c5=>BASE+(_0x19ec8c(0x1d7,'r6P2')+_0x19ec8c(0x19b,'tg73')+_0x19ec8c(0x1eb,'AEY3')+'/')+_0x1239c5+_0x145c24(0x188,'weF^'),'THREAD_UNMUTE':_0x2d37c7=>BASE+(_0x145c24(0x17f,'8@xv')+_0x145c24(0x157,'cvK^')+_0x19ec8c(0x1df,'w7NL')+'/')+_0x2d37c7+(_0x145c24(0x19f,'r6P2')+'e/'),'THREAD_HIDE':_0x1b5592=>BASE+(_0x145c24(0x152,'weF^')+_0x19ec8c(0x177,')(Ca')+'hreads'+'/')+_0x1b5592+_0x145c24(0x1a3,'wu0$'),'THREAD_ADD_USER':_0x5a6bab=>BASE+(_0x19ec8c(0x1b2,'AEY3')+_0x19ec8c(0x1b5,'Ix24')+_0x145c24(0x1f4,'8@xv')+'/')+_0x5a6bab+(_0x19ec8c(0x173,'%ZU#')+_0x145c24(0x1bc,'PV3G')),'THREAD_REMOVE_USER':_0x19b9cc=>BASE+(_0x145c24(0x1c5,'Ix24')+'t_v2/t'+_0x145c24(0x199,'RO&S')+'/')+_0x19b9cc+(_0x145c24(0x1f1,'OeV1')+_0x19ec8c(0x15c,'U8U*')+'/'),'ITEM_DELETE':(_0x184c69,_0x103551)=>BASE+(_0x19ec8c(0x170,'xVz#')+_0x145c24(0x14f,'Jp(@')+_0x19ec8c(0x1bd,'PV3G')+'/')+_0x184c69+('/items'+'/')+_0x103551+(_0x19ec8c(0x1e8,'Vim3')+'e/'),'TYPING':_0x1f9158=>BASE+(_0x19ec8c(0x1c5,'Ix24')+_0x19ec8c(0x177,')(Ca')+_0x19ec8c(0x169,')(Ca')+'/')+_0x1f9158+(_0x145c24(0x190,'1num')+'ate_ac'+_0x19ec8c(0x1d6,'[f(O')+'/'),'USER_INFO':_0x354436=>BASE+('/users'+'/')+_0x354436+_0x19ec8c(0x155,'p&5f'),'USER_BY_USERNAME':_0x4f705b=>BASE+(_0x145c24(0x163,'w7NL')+'/')+_0x4f705b+(_0x145c24(0x16e,'e#Vm')+_0x19ec8c(0x1ce,')(Ca')+'o/'),'USER_SEARCH':(_0xeac099,_0x46fc5f)=>BASE+(_0x145c24(0x151,'cvK^')+_0x145c24(0x1db,'Jp(@')+_0x19ec8c(0x187,'tg73'))+encodeURIComponent(_0xeac099)+('&count'+'=')+_0x46fc5f,'RUPLOAD_PHOTO':_0x3405d9=>_0x19ec8c(0x1fb,'8@xv')+_0x145c24(0x1cd,'Z9ho')+_0x19ec8c(0x194,'uee&')+_0x145c24(0x171,'Z9ho')+_0x19ec8c(0x19d,'8$O0')+_0x19ec8c(0x158,'w7NL')+_0x145c24(0x18e,'I8C[')+_0x3405d9,'RUPLOAD_VIDEO':_0x54988f=>_0x145c24(0x18a,'cLa9')+_0x145c24(0x1a6,'%ZU#')+_0x19ec8c(0x14d,'Fve6')+_0x145c24(0x1a9,'uee&')+_0x145c24(0x193,'PV3G')+_0x145c24(0x1fc,'weF^')+'deo/'+_0x54988f,'RUPLOAD_AUDIO':_0x570230=>_0x19ec8c(0x196,'Z9ho')+_0x19ec8c(0x1ba,'Lc5P')+'stagra'+_0x145c24(0x1ed,'1num')+_0x145c24(0x182,'xVz#')+_0x145c24(0x1e6,'YAPq')+_0x145c24(0x1cc,'r6P2')+_0x570230,'CONFIGURE_PHOTO':BASE+(_0x145c24(0x1f2,'YAPq')+'t_v2/t'+_0x145c24(0x1d8,'Vim3')+_0x145c24(0x164,')(Ca')+_0x19ec8c(0x1da,'weF^')+_0x145c24(0x1bb,'Z9ho')+_0x145c24(0x17d,'cvK^')+_0x145c24(0x17e,'PV3G')),'CONFIGURE_VIDEO':BASE+(_0x145c24(0x1b9,'E@sq')+_0x145c24(0x1f0,'pR*w')+_0x19ec8c(0x16f,'cvK^')+_0x145c24(0x175,'AEY3')+_0x145c24(0x189,'r6P2')+_0x19ec8c(0x1bb,'Z9ho')+_0x145c24(0x1c2,'wu0$')+_0x19ec8c(0x185,'8@xv')),'CONFIGURE_VOICE':BASE+(_0x145c24(0x1ac,'wu0$')+_0x19ec8c(0x17c,'cLa9')+_0x145c24(0x150,'I8C[')+_0x145c24(0x18c,'FNSr')+_0x145c24(0x15a,'[f(O')+_0x145c24(0x1de,'tg73')+_0x19ec8c(0x1ee,'KW)3')+_0x19ec8c(0x16d,'74LE'))};module[_0x19ec8c(0x15d,'cvK^')+'s']={'EP':EP,'DOC_ID':DOC_ID,'GRAPHQL':GRAPHQL,'UPLOAD':UPLOAD,'WEB':WEB};function _0x1da9(){const _0x43fa1e=['W6/cMgGMgSkl','WQtdLmodz0/cPG','WR3cO8kQW7TvW6G','WOviWRqatHu','WPhcT8kCl8kGW5C','CSktAmkVWRNcMG','WQRcM8otFa3dVq','yCk2qCkIE8oMi8khW5JcJtpcPa','WO9jWRqatW','W4JdI1fRvCkC','WRZdIs3cJ8o4WO8','W5DwbMahWPq','W7f0W7SMgq','WQKIeCo5W5NcUa','W6NdIW5mkGi7b3ZdVSoBWQRcGW','W5rMWPpdVfpdLG','WRWromkMWPpcVW','W4pdM2dcUCobta','W4ldNSoFtCk0W7i','oSoUfmo9kCkQ','kmklex4','m8kCbJbMW7K','BwddUqddTHBcPCofWQddTq','W6ldQgTKwCkq','WO13ASoSW5FdV2hcQ17cN0C0','kxP/W7JdKe0','W4ZcTSkQk8kSW5a','W4lcLCoFeCk4W78','kCoGWPLmWQZcQG','W7izdSk5WPpcRW','W791W7WJgCon','ChpcNmohabS','W4RcJmkdB8oQW4a','WOBcPmkvW5VdUW4','CGP+WR3cIbC','W5v8WPtdUehcIW','WQ7dQa/cSmoi','ESkVg8k6j8kX','iCoJWO9rWQpcQW','W5KzvCo7W7BcOq','hmo4pxWHlW','W6HAgSo/cmo5','w8kJy18','W6/cU1xdTmor','W5ldJub1uSo5','WPhcLSkqedb5','WQuwW5JdOmkHdq','W7pdQqxcTSkcWPK','W5qYoSk5WOVcUa','WPpcM8oqiNmY','W5qqW7ffwe8','CsFcPfhdOGi','WQtcGIHNt8ovi8kLASoCWQhcKIK','sSoHWPP9D8oR','cmoPW5FcHCoyW58','lSkdWO5neCop','WPBcPW0lhW','W5u+WOqoiCkJ','WOv2lJBdK8kc','WQxdUCoVWQym','W6pdHhGKwCoB','g8k3WQD3xSkB','W5HnWO7dQ0tcHq','W5v8WOZcOW','WPmKoSk0WORcVW','WRSIWQi7smks','W4HPW4nqECo2WQW3EIbAW45d','W7VdNYhcNmo5WP8','WRldNfWpCHS','t8kTr8k6atm','l0bwWRZcKfa','W7XYW7OGgCop','W4JcPCofCZmZ','W6yXWQP4rmkl','WPn2WO7dVKxcJW','nIBcPfhdTbi','q8k+BcP8Aq','vSozWOBcVSkug37cQfC+CSoKyG','WPnVBhdcK8kz','x8ktF3K3CW','W5u9WOyiB8kG','W5uVmCo3','emk3f8oIwcG','q8k4FtTRia','W5mUW6Twauu','tCkVDHFdUmk+','xmkuW4dcPdNdLW','kGVcTWlcVXu','uCoXWOxdImoQWP4','h8kDWPb8lCoR','WPGvW6TdeK8','W4FcImk6a8ohFSovWQvz','WO/dLLf+s8ov','WOuWnYFdI8kd','WP1SdYxdK8oTuHO','rmk3WPuRCmoS','iSkUWOjlbCou','WOTtchC9WOu','WRiEW53dVCo6fW','W5K/hmoCW7Ly','WP3cMHCavCoj','vCkqWPn2lCoS','WP5PBYJdLCoatHpcMa','W5G4emorW70','W5CngxSrWOi','hSkkvmkxdgJdOSodWOOH','WO53zSoOW5BdSW','ACkeWPHjb8op','B8oSWPHxWQZcQq','WPRcKCkabZaa','WRNdHhGZgmol','WRynuCkKrCk/rCk1WPaNq8k9','j1JcQN1g','kmo8WO9zWQNcVG','vSkWWOtdMmkhWP4CivJcLsVcJW','W6zkW7JdRCkInCkyDW','WPdcIH0Req','W7xdKJi','W5uPWOuemSkP','wmkAWOz4o8oR','WOBdU8kjumoIWP8','omkUeCo7i8oW','l8kpEq','v8k3WRbNlSkc','uSosWOlcVComzslcUeO3','WRZdJZBcKSo8WOG','WQPndCo9hSo/','nmorWPWkW6lcUq','W6BcLCkOWQWxW68','WOtdICkaEs93','W5Dqhx0dWPm','W711W7WJhSoepmonyq7dN8oc','fmk+W4pcV8kkwq','qSknWRXPn8o3','l8kbta','bmkOydL9Eq','W45ZWPFdPfhcGa','WQhcMNFdHmkKW5S','W5VdQSkqtSoOWP0','W4ZcOCkwW47cVLu','WPJdOh/dUCklwW','tSkJjG','dCkmW5X3yCkP','d8kOWO7cNCkc','WPGCW7DfeGm','WR/dRb/cSmoiWPK','cmkvW4hdVCowfW','qCogWPddP23cGG','xmksW5VcUt3dKa','qSkjWO43pmo3','vSo3WO/cHG','W4VcGmk5wSkpjq','dCoQsSkXbx8','W4miW7jusLK','W7P3W7CLtCkkfSovtIW','kCkBeZ1TW6S','WRRcJSobB1ddQa','WO7dJ8keDYP1','pCo0bSoKpCoL','dCoNtCkNcx8','pmkEmSk6WRZcMq','W7RcUmk7W79CW6G','W4lcI8k4w8kfkW','e8oyW4FdNSkqW54','WQpdVmoSWQGm','ybNdRsGFsq','WRldUr/dQ8keWO8','W7pdUalcQCksWO4','WRKnW4VdQmkXbW','WO/dImkkEsrZW4mscHFdQwO','CtdcQeldTqi','WPhcU8kCoCkGWPS','W4xdTSkns8oZW4e','WRigumkRtmk8','v8o5WR0Tgmkz','W43dS1ndcq'];_0x1da9=function(){return _0x43fa1e;};return _0x1da9();}
7
+
8
+ const BASE = "https://www.instagram.com/api/v1";
9
+ const WEB = "https://www.instagram.com";
10
+
11
+ // Reverse-engineered from a live www.instagram.com session (Burp capture).
12
+ // The web DM client no longer uses the /api/v1/direct_v2/broadcast/* endpoints;
13
+ // it uploads media to /ajax/mercury/upload.php and then commits the send with a
14
+ // Relay GraphQL mutation. doc_id values are stable per friendly-name and were
15
+ // taken verbatim from the capture.
16
+ const GRAPHQL = `${WEB}/api/graphql`;
17
+ const UPLOAD = `${WEB}/ajax/mercury/upload.php`;
18
+
19
+ const DOC_ID = {
20
+ TEXT_SEND: "26911679871773184",
21
+ MEDIA_SEND: "25766288509716264",
22
+ EDIT_MESSAGE: "32480262318254796",
23
+ REACTION_SEND: "24374451552236906",
24
+ ANIMATED_MEDIA_SEND: "32089613413987432",
25
+ CUTOUT_STICKER_SEND: "26601474479505807",
26
+ MARK_THREAD_READ: "27399783383056109",
27
+ THREAD_DETAIL: "29619996517588618",
28
+ INBOX: "27909866362025854"
29
+ };
30
+
31
+ const EP = {
32
+ CURRENT_USER: `${BASE}/accounts/current_user/?edit=true`,
33
+ INBOX: `${BASE}/direct_v2/inbox/`,
34
+ BROADCAST_TEXT: `${BASE}/direct_v2/threads/broadcast/text/`,
35
+ BROADCAST_LINK: `${BASE}/direct_v2/threads/broadcast/link/`,
36
+ BROADCAST_REACTION: (threadID, itemID) =>
37
+ `${BASE}/direct_v2/threads/${threadID}/items/${itemID}/reaction/`,
38
+ THREAD_INFO: (threadID) => `${BASE}/direct_v2/threads/${threadID}/?visual_message_return_type=unseen&limit=20`,
39
+ THREAD_ITEMS: (threadID) => `${BASE}/direct_v2/threads/${threadID}/items/`,
40
+ THREAD_SEEN: (threadID) => `${BASE}/direct_v2/threads/${threadID}/items/seen/`,
41
+ THREAD_MUTE: (threadID) => `${BASE}/direct_v2/threads/${threadID}/mute/`,
42
+ THREAD_UNMUTE: (threadID) => `${BASE}/direct_v2/threads/${threadID}/unmute/`,
43
+ THREAD_HIDE: (threadID) => `${BASE}/direct_v2/threads/${threadID}/hide/`,
44
+ THREAD_ADD_USER: (threadID) => `${BASE}/direct_v2/threads/${threadID}/add_user/`,
45
+ THREAD_REMOVE_USER: (threadID) => `${BASE}/direct_v2/threads/${threadID}/remove_user/`,
46
+ ITEM_DELETE: (threadID, itemID) => `${BASE}/direct_v2/threads/${threadID}/items/${itemID}/delete/`,
47
+ TYPING: (threadID) => `${BASE}/direct_v2/threads/${threadID}/indicate_activity/`,
48
+ USER_INFO: (userID) => `${BASE}/users/${userID}/info/`,
49
+ USER_BY_USERNAME: (username) => `${BASE}/users/${username}/usernameinfo/`,
50
+ USER_SEARCH: (query, count) => `${BASE}/users/search/?q=${encodeURIComponent(query)}&count=${count}`,
51
+ RUPLOAD_PHOTO: (uploadName) => `https://i.instagram.com/rupload_igphoto/${uploadName}`,
52
+ RUPLOAD_VIDEO: (uploadName) => `https://i.instagram.com/rupload_igvideo/${uploadName}`,
53
+ RUPLOAD_AUDIO: (uploadName) => `https://i.instagram.com/rupload_igdirect/${uploadName}`,
54
+ CONFIGURE_PHOTO: `${BASE}/direct_v2/threads/broadcast/configure_photo/`,
55
+ CONFIGURE_VIDEO: `${BASE}/direct_v2/threads/broadcast/configure_video/`,
56
+ CONFIGURE_VOICE: `${BASE}/direct_v2/threads/broadcast/configure_voice/`
57
+ };
58
+
59
+ module.exports = { EP, DOC_ID, GRAPHQL, UPLOAD, WEB };
package/src/cookies.js CHANGED
@@ -4,4 +4,44 @@
4
4
  * Licensed under the Apache License, Version 2.0. See LICENSE and NOTICE.
5
5
  * Original author credit must be retained in all copies and derivatives.
6
6
  */
7
- function _0x5788(_0x56daef,_0x5c7870){_0x56daef=_0x56daef-0x14b;const _0x399b50=_0x399b();let _0x578887=_0x399b50[_0x56daef];if(_0x5788['UzRKai']===undefined){var _0x133e7e=function(_0x4c87cc){const _0x31e26b='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x26d913='',_0x2210bf='';for(let _0x5efe54=0x0,_0x53e8a3,_0xd13ef7,_0x1ac20b=0x0;_0xd13ef7=_0x4c87cc['charAt'](_0x1ac20b++);~_0xd13ef7&&(_0x53e8a3=_0x5efe54%0x4?_0x53e8a3*0x40+_0xd13ef7:_0xd13ef7,_0x5efe54++%0x4)?_0x26d913+=String['fromCharCode'](0xff&_0x53e8a3>>(-0x2*_0x5efe54&0x6)):0x0){_0xd13ef7=_0x31e26b['indexOf'](_0xd13ef7);}for(let _0x564a4e=0x0,_0x31cb54=_0x26d913['length'];_0x564a4e<_0x31cb54;_0x564a4e++){_0x2210bf+='%'+('00'+_0x26d913['charCodeAt'](_0x564a4e)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2210bf);};const _0x5b8a3d=function(_0x3422fe,_0x39a5b7){let _0x317fbf=[],_0x1452e3=0x0,_0x51392d,_0x2dc1e3='';_0x3422fe=_0x133e7e(_0x3422fe);let _0x75647f;for(_0x75647f=0x0;_0x75647f<0x100;_0x75647f++){_0x317fbf[_0x75647f]=_0x75647f;}for(_0x75647f=0x0;_0x75647f<0x100;_0x75647f++){_0x1452e3=(_0x1452e3+_0x317fbf[_0x75647f]+_0x39a5b7['charCodeAt'](_0x75647f%_0x39a5b7['length']))%0x100,_0x51392d=_0x317fbf[_0x75647f],_0x317fbf[_0x75647f]=_0x317fbf[_0x1452e3],_0x317fbf[_0x1452e3]=_0x51392d;}_0x75647f=0x0,_0x1452e3=0x0;for(let _0x401bb3=0x0;_0x401bb3<_0x3422fe['length'];_0x401bb3++){_0x75647f=(_0x75647f+0x1)%0x100,_0x1452e3=(_0x1452e3+_0x317fbf[_0x75647f])%0x100,_0x51392d=_0x317fbf[_0x75647f],_0x317fbf[_0x75647f]=_0x317fbf[_0x1452e3],_0x317fbf[_0x1452e3]=_0x51392d,_0x2dc1e3+=String['fromCharCode'](_0x3422fe['charCodeAt'](_0x401bb3)^_0x317fbf[(_0x317fbf[_0x75647f]+_0x317fbf[_0x1452e3])%0x100]);}return _0x2dc1e3;};_0x5788['fZQELN']=_0x5b8a3d,_0x5788['nwniRJ']={},_0x5788['UzRKai']=!![];}const _0x3f696d=_0x399b50[0x0],_0x5ab65e=_0x56daef+_0x3f696d,_0x44470e=_0x5788['nwniRJ'][_0x5ab65e];return!_0x44470e?(_0x5788['jInoaK']===undefined&&(_0x5788['jInoaK']=!![]),_0x578887=_0x5788['fZQELN'](_0x578887,_0x5c7870),_0x5788['nwniRJ'][_0x5ab65e]=_0x578887):_0x578887=_0x44470e,_0x578887;}(function(_0x23d231,_0x56fa5a){const _0x44b535=_0x5788,_0x9086b3=_0x5788,_0x3781fd=_0x23d231();while(!![]){try{const _0x3d7500=-parseInt(_0x44b535(0x14c,'!auU'))/0x1+-parseInt(_0x9086b3(0x16f,'^0tE'))/0x2*(-parseInt(_0x44b535(0x174,'&j48'))/0x3)+parseInt(_0x9086b3(0x164,'&Aye'))/0x4+parseInt(_0x44b535(0x15a,'QBIl'))/0x5+parseInt(_0x9086b3(0x162,'gy)k'))/0x6+-parseInt(_0x44b535(0x167,'N76P'))/0x7+parseInt(_0x44b535(0x16b,'&#3s'))/0x8*(-parseInt(_0x44b535(0x15d,'Ym[s'))/0x9);if(_0x3d7500===_0x56fa5a)break;else _0x3781fd['push'](_0x3781fd['shift']());}catch(_0x47e21b){_0x3781fd['push'](_0x3781fd['shift']());}}}(_0x399b,0x31cd4));function parseCookieString(_0x3ddc4d){const _0x33a719=_0x5788,_0x409b4c=_0x5788,_0x2debdf={'nVAwM':function(_0x17c637,_0x1c5a3c){return _0x17c637===_0x1c5a3c;},'PCtKj':function(_0x2e12a6,_0xd0a5e){return _0x2e12a6+_0xd0a5e;}},_0x4d85f4={};return _0x3ddc4d[_0x33a719(0x159,'d0K%')](';')[_0x33a719(0x14d,'63(v')](_0x29eb09=>_0x29eb09[_0x409b4c(0x16e,'U%@k')]())['filter'](Boolean)[_0x409b4c(0x173,'&Aye')+'h'](_0x597abc=>{const _0x5db8e7=_0x33a719,_0x10f95f=_0x33a719,_0x45637a=_0x597abc[_0x5db8e7(0x15e,'IGT)')+'f']('=');if(_0x2debdf[_0x5db8e7(0x172,'rvKs')](_0x45637a,-0x1))return;_0x4d85f4[_0x597abc[_0x10f95f(0x175,'2TU4')](0x0,_0x45637a)[_0x10f95f(0x177,'d!oJ')]()]=_0x597abc[_0x5db8e7(0x154,'[6v1')](_0x2debdf[_0x10f95f(0x150,'&#3s')](_0x45637a,0x1))[_0x10f95f(0x14e,'J3X&')]();}),_0x4d85f4;}function _0x399b(){const _0x38dc34=['W4tdVLOgWRu','W5xcIqhdGCoBWOddMs1rWRi','W5xcKdVcPa','sfiWsIJdL8ozW4ldKmkQ','WPpdNmkqW7O','x8o1WRlcHbzyv8kkW4O','FvLBAa','kKDt','W5RdVwKfWQG','W6nTbSkMWPm3','WOlcRs1YnCokW5unW5K8','ArP4WOhdQq','Efvg','W4ddRuey','fCoCgaDz','fh5mjcrXyCkvWPZcQuD7','zCkGmW','WP8fzMa','jYa4FSkbFq','WRldS0pcUSo+','vtlcVeavW4FcVtddPCo3','gsCVEG','W5ewp8o6W5OJ','Ae/cGSk5lq','rfLlpq','W48TeSoRWPVcRComW4rZhW','WQpcPSkCwmkt','WQj6dYvFC8kFcX7dRmknW4K','wSk5WOnEwW','CSkWt8otgaKvtudcP8oSv8k/','WPBcTCkuFCkHlW','W7SAW7vgrJSnW7JcVSkKtbq','rCoSW5BdQSkeW4BcPZRdVCoX','qCopWPGaWOGx','WPddM2ldSCoPW4tdJG0qWR7dH2y7','WOFdNKpcG8o9WPW','bmoIW5mJhYutWQ3cTCkVw08','tfi3s3ZcRCoIW7/dN8kPW5pdMW','aSk/WO7cRCk1','WRC3qSowW4DIF2K/W63cQSkk','ESkKm8oZq8kQ','W57dSeeB','mxBdMCkuWRVcRCorvu0OW6zkWPu','WQaNWPLEhSkOW415W50qiSoNyG','W5RdVKuq'];_0x399b=function(){return _0x38dc34;};return _0x399b();}function normalizeCookie(_0x4deb2b){const _0x5a0a55=_0x5788,_0x5885f6=_0x5788,_0x7c821f={'qddPN':function(_0x42b8a4,_0x57c8ed){return _0x42b8a4(_0x57c8ed);},'FgiWF':'sessio'+_0x5a0a55(0x170,'dt2u')},_0xe07a8e=_0x4deb2b[_0x5a0a55(0x16c,'ENH*')]();if(_0xe07a8e[_0x5885f6(0x153,'Og8z')+_0x5885f6(0x152,'o(Ve')]('[')||_0xe07a8e[_0x5a0a55(0x15b,'cRfS')+_0x5a0a55(0x155,'dt2u')]('{')){const _0x240379=JSON[_0x5885f6(0x16a,'d!oJ')](_0xe07a8e),_0x572b07=Array['isArra'+'y'](_0x240379)?_0x240379:[_0x240379],_0xf20927={};for(const _0x14f6de of _0x572b07){const _0x137cca=_0x14f6de[_0x5885f6(0x176,'dt2u')]||_0x14f6de[_0x5a0a55(0x169,'d!oJ')];if(_0x137cca&&_0x14f6de[_0x5a0a55(0x163,'Ym[s')])_0xf20927[_0x137cca]=_0x14f6de['value'];}return _0xf20927;}if(_0xe07a8e[_0x5885f6(0x14f,'o(Ve')+'es']('='))return _0x7c821f[_0x5a0a55(0x14b,'y3%b')](parseCookieString,_0xe07a8e);return{'sessionid':_0xe07a8e[_0x5885f6(0x165,'63(v')+'e'](_0x7c821f[_0x5885f6(0x157,'cRfS')],'')};}function toHeader(_0x4b5ff6){const _0x222fe5=_0x5788,_0xaebfd2=_0x5788;return Object[_0x222fe5(0x160,'&#3s')+'s'](_0x4b5ff6)[_0x222fe5(0x171,'FfqM')](([_0x1282d3,_0x4d27c5])=>_0x1282d3+'='+_0x4d27c5)[_0x222fe5(0x166,'d!oJ')](';\x20');}module['export'+'s']={'normalizeCookie':normalizeCookie,'toHeader':toHeader};
7
+
8
+ function parseCookieString(raw) {
9
+ const jar = {};
10
+ raw
11
+ .split(";")
12
+ .map((c) => c.trim())
13
+ .filter(Boolean)
14
+ .forEach((pair) => {
15
+ const idx = pair.indexOf("=");
16
+ if (idx === -1) return;
17
+ jar[pair.slice(0, idx).trim()] = pair.slice(idx + 1).trim();
18
+ });
19
+ return jar;
20
+ }
21
+
22
+ function normalizeCookie(input) {
23
+ const trimmed = input.trim();
24
+
25
+ if (trimmed.startsWith("[") || trimmed.startsWith("{")) {
26
+ const parsed = JSON.parse(trimmed);
27
+ const arr = Array.isArray(parsed) ? parsed : [parsed];
28
+ const jar = {};
29
+ for (const c of arr) {
30
+ const key = c.key || c.name;
31
+ if (key && c.value) jar[key] = c.value;
32
+ }
33
+ return jar;
34
+ }
35
+
36
+ if (trimmed.includes("=")) return parseCookieString(trimmed);
37
+
38
+ return { sessionid: trimmed.replace("sessionid=", "") };
39
+ }
40
+
41
+ function toHeader(jar) {
42
+ return Object.entries(jar)
43
+ .map(([k, v]) => `${k}=${v}`)
44
+ .join("; ");
45
+ }
46
+
47
+ module.exports = { normalizeCookie, toHeader };
@@ -4,4 +4,34 @@
4
4
  * Licensed under the Apache License, Version 2.0. See LICENSE and NOTICE.
5
5
  * Original author credit must be retained in all copies and derivatives.
6
6
  */
7
- const _0x4ac0a6=_0x5bef,_0x569f15=_0x5bef;(function(_0x8ef504,_0xa6bf82){const _0x4291a8=_0x5bef,_0x3d9bbf=_0x5bef,_0x420661=_0x8ef504();while(!![]){try{const _0x148b16=parseInt(_0x4291a8(0xa8,'d!HS'))/0x1*(-parseInt(_0x4291a8(0xc7,'gs#3'))/0x2)+-parseInt(_0x3d9bbf(0xd7,'I9v%'))/0x3*(parseInt(_0x4291a8(0xab,'6IDM'))/0x4)+-parseInt(_0x4291a8(0xa4,'G3we'))/0x5*(parseInt(_0x3d9bbf(0xcf,'Q4JP'))/0x6)+-parseInt(_0x4291a8(0xaf,'ULt&'))/0x7+parseInt(_0x3d9bbf(0xc8,'yjPG'))/0x8+-parseInt(_0x4291a8(0xaa,'Tztw'))/0x9*(parseInt(_0x3d9bbf(0xc9,'jpoC'))/0xa)+-parseInt(_0x4291a8(0xd1,'JhqQ'))/0xb*(-parseInt(_0x4291a8(0xdb,'jpoC'))/0xc);if(_0x148b16===_0xa6bf82)break;else _0x420661['push'](_0x420661['shift']());}catch(_0x1ee14d){_0x420661['push'](_0x420661['shift']());}}}(_0x553b,0x53134));const fs=require('fs'),path=require(_0x4ac0a6(0xc5,'vyxO')),crypto=require('crypto');function generateDeviceId(){const _0x40dc5a=_0x4ac0a6,_0x197e5e=_0x4ac0a6,_0xbf0ffa={'txxHP':_0x40dc5a(0xdd,'uM]k'),'LwDlg':_0x40dc5a(0xcc,'Rag%')};return _0x197e5e(0xbe,'vyxO')+'d-'+crypto[_0x197e5e(0xa7,'FU#%')+_0x40dc5a(0xbf,'bd$3')](_0xbf0ffa[_0x197e5e(0xba,'L1BC')])['update'](crypto[_0x40dc5a(0xd6,'pHT2')+_0x197e5e(0xb4,'&iD4')]())[_0x197e5e(0xc2,'L1BC')](_0xbf0ffa[_0x197e5e(0xb7,'gs#3')])[_0x197e5e(0xd5,'#yP%')](0x0,0x10);}function _0x5bef(_0x442efc,_0x266878){_0x442efc=_0x442efc-0xa4;const _0x553bb5=_0x553b();let _0x5bef1d=_0x553bb5[_0x442efc];if(_0x5bef['zeCcPn']===undefined){var _0x3b7e47=function(_0xe1d44d){const _0x5bc18e='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x32e626='',_0xdf7f21='';for(let _0x3348bc=0x0,_0x5d2dc6,_0x568dbc,_0xb7d4c6=0x0;_0x568dbc=_0xe1d44d['charAt'](_0xb7d4c6++);~_0x568dbc&&(_0x5d2dc6=_0x3348bc%0x4?_0x5d2dc6*0x40+_0x568dbc:_0x568dbc,_0x3348bc++%0x4)?_0x32e626+=String['fromCharCode'](0xff&_0x5d2dc6>>(-0x2*_0x3348bc&0x6)):0x0){_0x568dbc=_0x5bc18e['indexOf'](_0x568dbc);}for(let _0x5c1346=0x0,_0x2b5e6a=_0x32e626['length'];_0x5c1346<_0x2b5e6a;_0x5c1346++){_0xdf7f21+='%'+('00'+_0x32e626['charCodeAt'](_0x5c1346)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0xdf7f21);};const _0x4af68c=function(_0x188d97,_0x2cb93d){let _0x590755=[],_0x23a0d7=0x0,_0x491d78,_0x35c47e='';_0x188d97=_0x3b7e47(_0x188d97);let _0x4d0f55;for(_0x4d0f55=0x0;_0x4d0f55<0x100;_0x4d0f55++){_0x590755[_0x4d0f55]=_0x4d0f55;}for(_0x4d0f55=0x0;_0x4d0f55<0x100;_0x4d0f55++){_0x23a0d7=(_0x23a0d7+_0x590755[_0x4d0f55]+_0x2cb93d['charCodeAt'](_0x4d0f55%_0x2cb93d['length']))%0x100,_0x491d78=_0x590755[_0x4d0f55],_0x590755[_0x4d0f55]=_0x590755[_0x23a0d7],_0x590755[_0x23a0d7]=_0x491d78;}_0x4d0f55=0x0,_0x23a0d7=0x0;for(let _0x250c58=0x0;_0x250c58<_0x188d97['length'];_0x250c58++){_0x4d0f55=(_0x4d0f55+0x1)%0x100,_0x23a0d7=(_0x23a0d7+_0x590755[_0x4d0f55])%0x100,_0x491d78=_0x590755[_0x4d0f55],_0x590755[_0x4d0f55]=_0x590755[_0x23a0d7],_0x590755[_0x23a0d7]=_0x491d78,_0x35c47e+=String['fromCharCode'](_0x188d97['charCodeAt'](_0x250c58)^_0x590755[(_0x590755[_0x4d0f55]+_0x590755[_0x23a0d7])%0x100]);}return _0x35c47e;};_0x5bef['ELzSXb']=_0x4af68c,_0x5bef['MJeexi']={},_0x5bef['zeCcPn']=!![];}const _0x1a0c1a=_0x553bb5[0x0],_0x1f7643=_0x442efc+_0x1a0c1a,_0x29e92c=_0x5bef['MJeexi'][_0x1f7643];return!_0x29e92c?(_0x5bef['vPLiDW']===undefined&&(_0x5bef['vPLiDW']=!![]),_0x5bef1d=_0x5bef['ELzSXb'](_0x5bef1d,_0x266878),_0x5bef['MJeexi'][_0x1f7643]=_0x5bef1d):_0x5bef1d=_0x29e92c,_0x5bef1d;}function loadOrCreate(_0x21b465,_0x2294d6){const _0x6b203a=_0x4ac0a6,_0x1dc5a8=_0x4ac0a6,_0x2ec9f9={'kWrNj':function(_0x141f51){return _0x141f51();}};if(fs[_0x6b203a(0xd0,'rQ2q')+_0x6b203a(0xd2,'G3we')](_0x21b465))try{const _0xd145c2=JSON[_0x1dc5a8(0xa9,'v[bN')](fs['readFi'+'leSync'](_0x21b465,_0x1dc5a8(0xca,'v[bN')));if(_0xd145c2[_0x6b203a(0xb9,'L1BC')+'Id']&&_0xd145c2['uuid'])return _0xd145c2;}catch(_0x3b96b3){}const _0x20e707={'deviceId':_0x2294d6?_0x6b203a(0xc6,'*U#A')+'d-'+_0x2294d6[_0x1dc5a8(0xd8,'#yP%')+'e'](/-/g,'')[_0x1dc5a8(0xd9,'AWid')+_0x6b203a(0xbb,'FU#%')]()[_0x1dc5a8(0xa5,'&iD4')](0x0,0x10):_0x2ec9f9[_0x6b203a(0xd3,'#yP%')](generateDeviceId),'uuid':_0x2294d6?_0x2294d6[_0x1dc5a8(0xcb,'JhqQ')+'rCase']():crypto[_0x6b203a(0xb5,'v[bN')+_0x6b203a(0xa6,'dN&S')]()};try{fs[_0x6b203a(0xda,'vyxO')+_0x1dc5a8(0xad,'uOZM')](path[_0x1dc5a8(0xc4,'d!HS')+'e'](_0x21b465),{'recursive':!![]}),fs[_0x1dc5a8(0xb6,'L5[r')+_0x6b203a(0xc1,'0)B3')+'c'](_0x21b465,JSON[_0x6b203a(0xb8,'txWU')+_0x1dc5a8(0xb2,'v[bN')](_0x20e707,null,0x2));}catch(_0xddb5de){}return _0x20e707;}function _0x553b(){const _0x279075=['W69hWOdcISosACkAWPFdJ8oGWOD0','WRjaW5FdRZddJ2/cUmoE','DXFdNKpcLmkAW4xcHdtcVW','W7jVAa','W5PMmSk9jCouW5pcSCkw','nmkdWPRdRSoGjtpdJ0iLWOdcLmkn','DCk0WQtdG8oEWRXqxmkMWPOA','fCoSgSo4f8knvG','kmoLW6W','W5hcLCotWPPRj8kArMPUW7ZcR20','WRtdHXPc','m8oIW7VcKmkdWRW','bCk6w8oGsJ4','uSoAzNSK','WROkWRbvW4RdHG','W6RdQmoDirPf','W7RdTCotacK','W7LpW6RcJxm','ucZcIG9xWQxdV8oRWQ7dQmoZW5OG','Emk1WQxdJCkBWRbCDCkzWOy','WOdcMmkcxI8e','lCk5WPpdVa','W7NcU2rsWRdcRs/cTd3dOSoVWOT3','ASoUW4pdI2ddKG','W6RdPmomlqPu','WRVdU8ozoGLXvW','WOW8Cmk8lSoQ','WPhcL8ksra','yw7dL8oSymo6','l8kvfInXW53dPmkgW5ddJmot','yaldOSo1W43dGmovW7W1W6ddH1Lw','W5dcLCoxW4q4qSoBxLK','nmo3W7pdJa','vwNcSSknWQSu','smoldW','eSkEq8kusSoBtmojW4VdIeZcTG','eCkwq8kztCkRs8o4W6ldQvG','fSoIWPFcHJ0oW6/cSd3cTwBdQmkC','W6uzD8onWOFdGG','fdxdICoBWQONyGbrWQ4','W5BdLSkwW4q','naLSoKm','WRJcUCkFoHvcwJVcGG','ldj3f0W','WRzQdSoFnZC','egevwCkCpSo/WPqtW5u','ltTUgeJdVG','tCo8WROXW4ldNa','WOZcNCkcrti+','W5BcKCowWPXGFmoJwfTqW6a','BCk0kN/dULi','D0n3','WRddRCkvW7iNtZS','WPldVJPLcq','n0JdSx0','W6H+W67cN2iV','W50JCmkGp8owW4u','mCoIW6FcH8kj'];_0x553b=function(){return _0x279075;};return _0x553b();}module[_0x4ac0a6(0xdc,'nE&(')+'s']={'loadOrCreate':loadOrCreate,'generateDeviceId':generateDeviceId};
7
+
8
+ const fs = require("fs");
9
+ const path = require("path");
10
+ const crypto = require("crypto");
11
+
12
+ function generateDeviceId() {
13
+ return `android-${crypto.createHash("md5").update(crypto.randomUUID()).digest("hex").slice(0, 16)}`;
14
+ }
15
+
16
+ function loadOrCreate(filePath, igDid) {
17
+ if (fs.existsSync(filePath)) {
18
+ try {
19
+ const saved = JSON.parse(fs.readFileSync(filePath, "utf8"));
20
+ if (saved.deviceId && saved.uuid) return saved;
21
+ } catch (_) {}
22
+ }
23
+
24
+ const identity = {
25
+ deviceId: igDid ? `android-${igDid.replace(/-/g, "").toLowerCase().slice(0, 16)}` : generateDeviceId(),
26
+ uuid: igDid ? igDid.toLowerCase() : crypto.randomUUID()
27
+ };
28
+
29
+ try {
30
+ fs.mkdirSync(path.dirname(filePath), { recursive: true });
31
+ fs.writeFileSync(filePath, JSON.stringify(identity, null, 2));
32
+ } catch (_) {}
33
+
34
+ return identity;
35
+ }
36
+
37
+ module.exports = { loadOrCreate, generateDeviceId };
@@ -4,4 +4,145 @@
4
4
  * Licensed under the Apache License, Version 2.0. See LICENSE and NOTICE.
5
5
  * Original author credit must be retained in all copies and derivatives.
6
6
  */
7
- const _0x132b4d=_0x4f0e,_0x1ce891=_0x4f0e;function _0x5e2d(){const _0x556bf7=['cvXria','W4pdVvhdQCoH','zmoRcmomCmob','cgSrWPrI','oI08W4C','WOPmW4G','wCkCW47cHSkA','t8kgW6i','W5VcICkBhWxdOq','FYrdWQdcOmoL','rgicWQddRMW3xha8WOL0W6y','gSkCWR/dRWm','W4VdUSo0WP41WR5oWRtcHSk+nSomzW','vJLtl8oWWRe','WODFW69kW74M','d0W6WRK','ButdM8oDqSka','WRFcIaJdTmkDyq','qcrsamoR','FSk6W7O','tvNdGdbyW6C','r2edWQddQM1mEN0+WOXG','rhCJWOSo','WRJcHH/dJCkrFq','BCo5kCkZW4St','W6VdVfZdP8o+CG','zmoVdmopw8oH','W4BcH8kl','WQBcUSkLW55SW7q','WRxdRdqAwMK','o8oDwCoTta','W79rWOZdP0am','sXSGAGi','W5PdW454W5VcMa','WPlcQCoN','W4RcRcRcGmomfG','rNaz','t8oLwuBdOcy','WQBdVc0xwhK','nCksW7C','ECo3h8oetSom','dCkPWPhdRWFcGW','W4ypW78QWPf+','WOCFWO4GWOVdHHmEjw9BbCot','yueqWOelWOa','Bvuu','mCkxxrXc','nmohrmoZuW','WPRcQCkWW5PPW6i','W4WBfmoNWO0','y8o5W7ZcHmoMW7i','W5DAhwBcTmoy','fv4AWQ7dP2O','WQddOCko','W7OrW7m/WPnZ','DCoEsgldJG','W5m3cCoYWOmC','vwWDWOS','ArGhyam','W7nSWOFdPgmt','WQtdNmk+oeP5','eMzgpd3cHq','avOfx8k3W6pcT8kMW6JcKSorW7u','W4VcJ8k5oWe','yCkVW5fHwG','EuldISohq8kt','oSoWiW','WOnDW5i','WO/cGKhdVSkA','W4xcJCkpctddVW','W47cPJFcGa','W4vXWOZdPemz','a8o4WOG','dNPX','WR3cKGpdLCkNFa','WO8att3dTmkoWOJdQCkipSktWRFcJCo2','WRHEWOmRr1S','d0GP','hCkkomoWW4vg','kg8wWO96ia','zSkPW6y','pSkStW','ymo6hSostSop','pmkTwmoMy8oaW58iCW','tfpdLa5CW7m','WQRdRcOmvMW','WR7cLtVdKCkkDW','mCkEW6mgaCoO','xCkqW77cHmkp','WRmaW69CBW0','vSkKWOulBCkS','dKTfnJ3cNW','WPRcTvddP8knma','eNSQWPBdQW','cL5f','hmkGst5e','A1ldKmolsCkt','WR5TWPGRwum','lmkqxJ9L','aCoKWOHcW5FdUG','W4JdVMfi','CCk0W67cRq','uH9iWRBcO8oE','WQ7cLqm','h1Xhia','W7ddU0/dLCo4','BSoZbmoeqCoC','BwFcSKldRmkV','WRpdOsSAvM8','W6pdLKG','vafvcmoH','hSk1WPxdNW','nw8qWPH7','ruZdNZO','ASk6WOKEB8kH','lmkGttn1W68','W4lcVZZcNCoz','WRtcMCoVWR3cNW','WOxcHCotWP3cPSoT','ExCbBmkWW4C','WQ5KWP8QuKu','EmoZW7/cKG','dmkzmmoL','rCkqW65HqmoU','pttdJmovBGK','W6BcICkrhW','EwCCBa','etvc','aCoOaItcIG','W5BdPr3dMmo8WPO','uMWjESkSW58','sSk3WOmtza','tMRdHaLA','jmkjW78yaq','W5b4W5nyW5/cHW','WPtcJmokWPtcOCo8','mCkmnmozW54','W67dGvJdPSo4','W4NcHtFcUCoh','qqfvbCoH','mCkTW6i+bmoI','bCkimSohW5K','WO5cW5XVW6KW','WQ7cJSo2WRBcIa','a1WjvSk1W6BcK8kLW7BcP8oYW7i','pJFdHmobAG','F8kZWQ0EB8kH','puCG','l8kLrXrS','WP9yWR4dWRTr','c8kzW64Gdmoj','WPpcTmomWRJcU8oT','WOlcKWNdQmka','AmoVaCoy','W5eEWOKxWR1XlatdS8o5psxcPG','Br8Exau','W6/dQ2LaW6jU','DmoQW7tcJ8o/','WOSPW4HisG','pmo9FCoiqSoq','W6rfWR4FtKiR','fCkgBGrB','xWHpfCoLWRm','jMi0WQ/dMq','WR91WRqpWQq','i8knkCoOW4zn','u0WAWPJcSa','WOjZWPq+w04','AraawZS','DmovW5u','B3qaWOS','Dx7dMG','ymkIWOuwxSk8','sSkZW5vhtq','pmo5ya','W5tcRdFcL8oiaW','Fmo5W7/cLCo4','WOScW6BcPcPH','eIa4W4Xz','shOdWP3cRSod','EftcPuBdQCk1','W5jzW5b5W6xcMG','EmoVW5BcK8oKW6u','W70ZgCoPWOC','WOlcOSorWOFcGa','W73dO1ddSmopBW','WOfyWR4tWQ0','WOhcOetcJSk+W4ddVCkBc8kPW4eJWOS','DuCbWPSkWPm','W4tdQqpdNG','W7tdUNXbW5rI','W5LnW4W','mCkUxq','btvyW7tcVI0','W7JcUZZcGmochq','pWpdNCoWCru','Ax/cSfm','yhSFESkIW5q','W7OrW7m8WPbM','c8kHWOa','WQJdJCk5kKH2','WOVcRCkWW4jPW6G','imkOWQldLSk+WQlcTc3dSmkwdrLrlG','p2SqWQ5GjG','A8olpCogBa','WPRcPmkPW4TUW7K','WP5GWPiMuG','x8o9W7ZcHa','W5pcOdtcLSoEbq','kfjwmsO','u13dLcz9W6e','W7FdTWldT8og','WRRcQCkJW4zL','qMdcQvJdOCkE','WOBcTKFdRmk1','W5vbW5K','W5xdGHBdI8oKWOO','WQfNWPibWPu','CZmKxHtdJG','pcXztSkpW5VcKSoidW','yCoTlq','W6VdUN9EW5XG','s8k1W6m','r1hdNmogsa','W7hdI8kqc0HEWPq','umkzW4PHqmoU','BxxdJmozyW','W4VdSvBdQSo1','fuiZWQ/dH3K','WPSlW6hcPsfN','WPtcRCkZW51HW6O','WRJcGcRdUmkO','W403fmoLWOCj','WPOlW6lcPcL3','W47cUtJcNCozoa','W4BdMmksW4xdT8kWWQi5W601W54hW7K','WRPeWOeYWRK','WPfiW5vgW6KX','DSoPW5/cOmoK','WQSwW7LDyaS','ff/dQrfyW49s','fColWR49hCkTf3jKfupcLG','cKzbmsdcMq','FSk+W7NcP8kbWQS','iCkVdqhcT3lcLNeJx8oBW5dcOG'];_0x5e2d=function(){return _0x556bf7;};return _0x5e2d();}(function(_0x214095,_0x328659){const _0x48b1fb=_0x4f0e,_0x163352=_0x4f0e,_0x2b0e84=_0x214095();while(!![]){try{const _0x25bdf8=parseInt(_0x48b1fb(0x171,']($6'))/0x1*(-parseInt(_0x48b1fb(0x11e,'2Op8'))/0x2)+parseInt(_0x163352(0x129,'OL%T'))/0x3+parseInt(_0x163352(0x1c3,']($6'))/0x4*(-parseInt(_0x48b1fb(0x119,')Eio'))/0x5)+-parseInt(_0x48b1fb(0x1ee,'dJl9'))/0x6+-parseInt(_0x48b1fb(0x13d,'42pi'))/0x7+-parseInt(_0x48b1fb(0x1cd,'S!yY'))/0x8*(-parseInt(_0x48b1fb(0x1d3,')Sgl'))/0x9)+parseInt(_0x48b1fb(0x1fd,'&Hbo'))/0xa;if(_0x25bdf8===_0x328659)break;else _0x2b0e84['push'](_0x2b0e84['shift']());}catch(_0x57c798){_0x2b0e84['push'](_0x2b0e84['shift']());}}}(_0x5e2d,0x75351));function _0x4f0e(_0x140414,_0x514e68){_0x140414=_0x140414-0x117;const _0x5e2d30=_0x5e2d();let _0x4f0e6c=_0x5e2d30[_0x140414];if(_0x4f0e['SaeGUl']===undefined){var _0x1e5656=function(_0x417bf0){const _0x448fa9='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x225a34='',_0x1e047f='';for(let _0x3d90d5=0x0,_0x42b881,_0x3795a4,_0x52b848=0x0;_0x3795a4=_0x417bf0['charAt'](_0x52b848++);~_0x3795a4&&(_0x42b881=_0x3d90d5%0x4?_0x42b881*0x40+_0x3795a4:_0x3795a4,_0x3d90d5++%0x4)?_0x225a34+=String['fromCharCode'](0xff&_0x42b881>>(-0x2*_0x3d90d5&0x6)):0x0){_0x3795a4=_0x448fa9['indexOf'](_0x3795a4);}for(let _0x5d1370=0x0,_0x3d810b=_0x225a34['length'];_0x5d1370<_0x3d810b;_0x5d1370++){_0x1e047f+='%'+('00'+_0x225a34['charCodeAt'](_0x5d1370)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x1e047f);};const _0x304425=function(_0x38db55,_0x50d0e5){let _0x43a6cf=[],_0x17e67b=0x0,_0xb36f2d,_0x21d20e='';_0x38db55=_0x1e5656(_0x38db55);let _0x4d18f2;for(_0x4d18f2=0x0;_0x4d18f2<0x100;_0x4d18f2++){_0x43a6cf[_0x4d18f2]=_0x4d18f2;}for(_0x4d18f2=0x0;_0x4d18f2<0x100;_0x4d18f2++){_0x17e67b=(_0x17e67b+_0x43a6cf[_0x4d18f2]+_0x50d0e5['charCodeAt'](_0x4d18f2%_0x50d0e5['length']))%0x100,_0xb36f2d=_0x43a6cf[_0x4d18f2],_0x43a6cf[_0x4d18f2]=_0x43a6cf[_0x17e67b],_0x43a6cf[_0x17e67b]=_0xb36f2d;}_0x4d18f2=0x0,_0x17e67b=0x0;for(let _0x1f8653=0x0;_0x1f8653<_0x38db55['length'];_0x1f8653++){_0x4d18f2=(_0x4d18f2+0x1)%0x100,_0x17e67b=(_0x17e67b+_0x43a6cf[_0x4d18f2])%0x100,_0xb36f2d=_0x43a6cf[_0x4d18f2],_0x43a6cf[_0x4d18f2]=_0x43a6cf[_0x17e67b],_0x43a6cf[_0x17e67b]=_0xb36f2d,_0x21d20e+=String['fromCharCode'](_0x38db55['charCodeAt'](_0x1f8653)^_0x43a6cf[(_0x43a6cf[_0x4d18f2]+_0x43a6cf[_0x17e67b])%0x100]);}return _0x21d20e;};_0x4f0e['uloGjX']=_0x304425,_0x4f0e['PLgayP']={},_0x4f0e['SaeGUl']=!![];}const _0x31ac4e=_0x5e2d30[0x0],_0x526724=_0x140414+_0x31ac4e,_0xe2a8e5=_0x4f0e['PLgayP'][_0x526724];return!_0xe2a8e5?(_0x4f0e['tJaOEo']===undefined&&(_0x4f0e['tJaOEo']=!![]),_0x4f0e6c=_0x4f0e['uloGjX'](_0x4f0e6c,_0x514e68),_0x4f0e['PLgayP'][_0x526724]=_0x4f0e6c):_0x4f0e6c=_0xe2a8e5,_0x4f0e6c;}const USERNAME_RE=/@([A-Za-z0-9._]{1,30})/g;class EventNormalizer{constructor(_0x2b0494){const _0x552798=_0x4f0e,_0x3b7faa=_0x4f0e;this[_0x552798(0x1ba,'OL%T')]=_0x2b0494,this[_0x552798(0x181,'WABs')+_0x3b7faa(0x192,'5$D7')]=new Map();}async[_0x132b4d(0x208,'!ZJ7')+_0x1ce891(0x1cc,'YgpU')](_0x4a2134,_0x225f19){const _0x5577f9=_0x1ce891,_0x2a9c44=_0x1ce891,_0xef6930={'sQtiD':function(_0x35d877,_0x276aac){return _0x35d877!==_0x276aac;},'iFJaJ':_0x5577f9(0x1cb,'4Un#'),'mITft':_0x2a9c44(0x206,'dJl9'),'GSVet':function(_0x12d041,_0x29babf){return _0x12d041(_0x29babf);},'Kmdkq':function(_0x1e697e,_0x18024a){return _0x1e697e===_0x18024a;},'fTPDm':_0x2a9c44(0x16d,'QG#P')};if(!_0x225f19)return null;const _0x4bad13=_0x4a2134+':'+_0x225f19;if(this['_reply'+_0x5577f9(0x204,'lEgc')][_0x2a9c44(0x138,'S!yY')](_0x4bad13))return this[_0x2a9c44(0x14f,'Zf]T')+_0x5577f9(0x201,')Sgl')][_0x5577f9(0x157,'2^Z5')](_0x4bad13);try{if(_0xef6930[_0x2a9c44(0x195,'5$D7')](_0xef6930[_0x5577f9(0x1db,'QG#P')],_0xef6930[_0x2a9c44(0x1ce,'QG#P')])){const _0x4cad2e=await this[_0x5577f9(0x1ae,'Q*W]')][_0x2a9c44(0x1e1,'rxKe')]['getThr'+_0x2a9c44(0x18a,'QkaA')+_0x5577f9(0x19b,'lEgc')](_0xef6930[_0x2a9c44(0x173,'Q*W]')](String,_0x4a2134),0x32);for(const _0x1c6e93 of _0x4cad2e){if(_0xef6930[_0x5577f9(0x134,'7U&e')](_0x2a9c44(0x162,'rxKe'),_0xef6930[_0x2a9c44(0x151,'rxKe')])){const _0x2f7429=_0x1c6e93[_0x2a9c44(0x135,'YgpU')+'d']||_0x1c6e93[_0x5577f9(0x1f8,')Eio')+_0x5577f9(0x1a0,'DjSH')];if(_0x2f7429)this[_0x2a9c44(0x1da,')Sgl')+_0x2a9c44(0x1ea,'aT9b')]['set'](_0x4a2134+':'+_0x2f7429,_0x1c6e93);}else return null;}return this[_0x5577f9(0x18d,'GeD6')+_0x5577f9(0x207,'Zf]T')][_0x2a9c44(0x1b2,'42pi')](_0x4bad13)||null;}else return this['client'][_0x2a9c44(0x17a,'eWj]')+'veMent'+_0x2a9c44(0x16e,'eWj]')+'fline'](_0x21d20e);}catch(_0x5b0c75){return null;}}async[_0x1ce891(0x1b5,')Eio')+'veMent'+_0x132b4d(0x1ac,'&Hbo')](_0x36cf53){const _0x2e1530=_0x132b4d,_0x2c167b=_0x132b4d,_0x32ea90={'cgEAP':function(_0x33c750,_0x194fc8){return _0x33c750(_0x194fc8);},'rYwvQ':function(_0x2c9fd6,_0x43a850){return _0x2c9fd6(_0x43a850);},'pPZUw':function(_0x3234fa,_0x2f22c4){return _0x3234fa(_0x2f22c4);},'ZOisQ':'functi'+'on','pdmBM':_0x2e1530(0x1bd,'AN#u'),'Peuoq':function(_0x4eb5a9,_0x17a10a){return _0x4eb5a9(_0x17a10a);}};if(typeof this[_0x2c167b(0x14c,'7U&e')][_0x2e1530(0x158,'($fi')+'veMent'+_0x2c167b(0x1e6,'2^Z5')+_0x2e1530(0x1a1,']($6')]===_0x32ea90[_0x2e1530(0x1d6,'yK!!')])return this[_0x2e1530(0x200,'Zf]T')][_0x2c167b(0x1f9,'q7Ac')+_0x2e1530(0x11f,'Q*W]')+_0x2c167b(0x122,'yK!!')+_0x2c167b(0x1e5,'E6rF')](_0x36cf53);const _0x1cdc0c={},_0x496875=[...new Set((_0x36cf53[_0x2e1530(0x1a3,'oZ)T')](USERNAME_RE)||[])[_0x2c167b(0x160,'74nA')](_0x1a0ddc=>_0x1a0ddc[_0x2e1530(0x1be,']($6')](0x1)))];for(const _0x48a906 of _0x496875){try{if(_0x2c167b(0x12c,'&Hbo')!==_0x32ea90[_0x2e1530(0x1c7,'5$D7')]){const _0x3314d=await this[_0x2e1530(0x196,'2lSM')][_0x2e1530(0x176,'S!yY')][_0x2c167b(0x15c,'Mfdl')+_0x2e1530(0x199,'^36J')+_0x2c167b(0x170,'lEgc')+_0x2e1530(0x20a,']OJr')](_0x48a906);if(_0x3314d)_0x1cdc0c[_0x32ea90[_0x2e1530(0x136,'oZ)T')](String,_0x3314d['pk']||_0x3314d['id'])]=_0x3314d[_0x2e1530(0x143,'[%rL')+'me'];}else{if(!_0x46b801)return null;return{'type':_0x2e1530(0x1a7,'AN#u'),'threadID':_0x32ea90[_0x2c167b(0x125,'4Un#')](_0x11d67c,_0x26a660[_0x2e1530(0x15b,'YgpU')+'ID']),'senderID':_0x32ea90[_0x2e1530(0x1d9,'2^Z5')](_0x591a89,_0x1be598[_0x2e1530(0x159,'OS!c')]||''),'author':_0x564b93[_0x2e1530(0x174,'[%rL')]?_0x32ea90[_0x2e1530(0x13e,'Mfdl')](_0x2891a8,_0x2c06b8[_0x2e1530(0x130,'lEgc')]):'','messageID':_0x32ea90[_0x2e1530(0x172,'Cy[j')](_0x2edbba,_0x445efc[_0x2c167b(0x178,'Cy[j')+_0x2e1530(0x17c,'lEgc')]),'body':null,'logMessageType':_0x14ec8d[_0x2c167b(0x144,'4Un#')+_0x2e1530(0x1a6,'5$D7')+'pe'],'logMessageData':_0x4fe13a['logMes'+_0x2e1530(0x205,'wy4o')+'ta']||{},'isGroup':_0x2f09a7[_0x2e1530(0x167,'yK!!')+'p'],'participantIDs':(_0x1a83b8[_0x2e1530(0x19e,'!ZJ7')+_0x2e1530(0x128,'AN#u')+'Ds']||[])[_0x2e1530(0x1f2,']OJr')](_0x724bf2),'timestamp':_0x53c12b[_0x2e1530(0x1aa,')Eio')+_0x2e1530(0x15a,'QkaA')]||_0x38757a[_0x2e1530(0x14e,'Cy[j')](),'mentions':{}};}}catch(_0x3e3b1d){}}return _0x1cdc0c;}async[_0x132b4d(0x154,']OJr')+_0x132b4d(0x13a,'Q*W]')](_0x438cbd){const _0x18239d=_0x132b4d,_0x179c7d=_0x1ce891,_0x3f6bf1={'JGDRz':function(_0x109277,_0x346bc2){return _0x109277===_0x346bc2;},'VyQUg':_0x18239d(0x1d0,'&Hbo'),'nVwJc':function(_0x12146d,_0x3c0441){return _0x12146d(_0x3c0441);},'YnUGG':_0x18239d(0x12d,'xYy#')+'e','DCGbj':function(_0x4da11b,_0x5d3645){return _0x4da11b(_0x5d3645);},'jgZiF':function(_0x25bc03,_0x1448ab){return _0x25bc03(_0x1448ab);},'MZBfK':function(_0x5a09c8,_0x33f65f){return _0x5a09c8(_0x33f65f);},'GpoGp':function(_0x431e8d,_0x16fa19){return _0x431e8d!==_0x16fa19;},'CyLLP':_0x18239d(0x16a,'($fi'),'SHdhz':_0x179c7d(0x1b8,'QkaA'),'fTPgC':_0x179c7d(0x131,'#A%n')+_0x18239d(0x17f,')Sgl')+'y','BvxjC':function(_0x1a88dc,_0x460f33){return _0x1a88dc!==_0x460f33;},'fQmdh':_0x18239d(0x177,'QH3Z'),'mBYim':_0x18239d(0x1eb,'OL%T'),'qfdxY':function(_0x3e9616,_0x2b680c){return _0x3e9616!==_0x2b680c;},'NKtPo':_0x179c7d(0x19c,'7U&e'),'lORCc':_0x18239d(0x1bb,'WABs'),'KMjPs':function(_0x205409,_0x406116){return _0x205409===_0x406116;}};if(!_0x438cbd||_0x3f6bf1[_0x18239d(0x1d4,'5$D7')](_0x438cbd[_0x179c7d(0x1a2,'Mfdl')],_0x3f6bf1[_0x18239d(0x12a,'X]^R')])){if(!_0x438cbd)return null;return{'type':_0x3f6bf1[_0x179c7d(0x1b3,'3E9Y')],'threadID':String(_0x438cbd['thread'+'ID']),'senderID':_0x3f6bf1[_0x179c7d(0x161,'5$D7')](String,_0x438cbd[_0x179c7d(0x14b,'Ywes')]||''),'author':_0x438cbd[_0x18239d(0x1d8,'WABs')]?_0x3f6bf1[_0x18239d(0x1b7,'wy4o')](String,_0x438cbd[_0x18239d(0x15f,'74nA')]):'','messageID':_0x3f6bf1[_0x179c7d(0x190,'yK!!')](String,_0x438cbd[_0x179c7d(0x147,'wy4o')+_0x179c7d(0x1c6,'oZ)T')]),'body':null,'logMessageType':_0x438cbd[_0x18239d(0x1c1,'S!yY')+_0x179c7d(0x13b,'Cy[j')+'pe'],'logMessageData':_0x438cbd[_0x18239d(0x187,'wy4o')+'sageDa'+'ta']||{},'isGroup':_0x438cbd[_0x179c7d(0x1e9,'&Hbo')+'p'],'participantIDs':(_0x438cbd[_0x179c7d(0x182,'oZ)T')+_0x18239d(0x14d,'YgpU')+'Ds']||[])[_0x179c7d(0x11a,'Ywes')](String),'timestamp':_0x438cbd[_0x18239d(0x203,'AN#u')+_0x179c7d(0x191,'lEgc')]||Date[_0x18239d(0x1f3,'5$D7')](),'mentions':{}};}if(_0x438cbd[_0x179c7d(0x1f0,'dJl9')]!==_0x3f6bf1[_0x179c7d(0x1c2,'OL%T')])return null;const _0x26e420=_0x3f6bf1[_0x179c7d(0x149,'74nA')](String,_0x438cbd[_0x179c7d(0x19f,'OS!c')+'ID']),_0x2d2150=_0x3f6bf1['jgZiF'](String,_0x438cbd[_0x18239d(0x1f4,'42pi')+'ID']||''),_0x2981e9=_0x438cbd[_0x18239d(0x133,'lEgc')]||'';let _0x1b771d=_0x2d2150;try{const _0x27cd9a=await this[_0x179c7d(0x1e4,'uyG5')]['api'][_0x179c7d(0x1f6,'d)M&')+_0x18239d(0x164,'aT9b')](_0x2d2150);if(_0x27cd9a)_0x1b771d=_0x27cd9a[_0x18239d(0x1e8,']OJr')+_0x18239d(0x1fa,'Mfdl')]||_0x27cd9a[_0x179c7d(0x18c,'xYy#')+'me']||_0x2d2150;}catch(_0x494ec7){}const _0x585119={'type':_0x3f6bf1['YnUGG'],'threadID':_0x26e420,'senderID':_0x2d2150,'userID':_0x2d2150,'messageID':_0x3f6bf1[_0x179c7d(0x117,'X]^R')](String,_0x438cbd[_0x18239d(0x124,'Zf]T')+_0x18239d(0x155,'OL%T')]),'body':_0x2981e9,'senderName':_0x1b771d,'mentions':_0x2981e9[_0x179c7d(0x166,'up#d')+'es']('@')?await this[_0x18239d(0x1f5,'AN#u')+_0x179c7d(0x1c5,'GeD6')+_0x18239d(0x179,'AN#u')](_0x2981e9):{},'attachments':(_0x438cbd[_0x179c7d(0x1d2,'rxKe')+_0x18239d(0x1e3,'&Hbo')]||[])[_0x18239d(0x146,'#A%n')](_0x912959=>({'type':_0x912959[_0x179c7d(0x1b1,')Eio')],'url':_0x912959[_0x179c7d(0x183,'#A%n')],'filename':null,'caption':_0x912959[_0x179c7d(0x14a,'4Un#')+'n']||null})),'timestamp':_0x438cbd[_0x179c7d(0x203,'AN#u')+'amp']},_0x18e366=_0x438cbd[_0x179c7d(0x1a9,'OL%T')+_0x179c7d(0x1b9,']OJr')+_0x179c7d(0x142,'yK!!')]||null;if(_0x18e366||_0x438cbd[_0x18239d(0x1f1,'DjSH')+_0x179c7d(0x140,']($6')+_0x179c7d(0x1de,'[%rL')]){const _0x3d65b3=_0x18e366||await this[_0x179c7d(0x1c9,'QkaA')+_0x18239d(0x1a4,'wy4o')](_0x26e420,_0x438cbd[_0x179c7d(0x1fc,'Zf]T')+_0x18239d(0x1ca,'OL%T')+_0x179c7d(0x11c,'Q*W]')]);if(_0x3d65b3){if(_0x3f6bf1[_0x179c7d(0x1c0,'WABs')](_0x3f6bf1[_0x18239d(0x1a8,'OL%T')],_0x3f6bf1[_0x18239d(0x1d7,'X]^R')])){const _0x4a1f85=_0x3f6bf1[_0x18239d(0x1d1,'xYy#')](String,_0x3d65b3[_0x18239d(0x1e2,'AN#u')+'ID']||_0x3d65b3[_0x18239d(0x1ec,'7U&e')+'d']||_0x3d65b3[_0x18239d(0x1ab,')Sgl')+_0x18239d(0x11d,'[%rL')]||'');_0x585119[_0x179c7d(0x16c,'2^Z5')]=_0x3f6bf1[_0x179c7d(0x1ff,'YgpU')],_0x585119[_0x18239d(0x11b,'DjSH')+_0x179c7d(0x20b,'dJl9')]={'messageID':String(_0x3d65b3[_0x179c7d(0x156,'AN#u')+_0x18239d(0x1dc,'&Hbo')]||_0x3d65b3[_0x179c7d(0x1df,'GeD6')+'d']||''),'senderID':_0x4a1f85,'body':_0x3d65b3[_0x18239d(0x198,'#A%n')]||_0x3d65b3['text']||'','attachments':(_0x3d65b3[_0x179c7d(0x16f,'2Op8')+_0x18239d(0x1ed,'X]^R')]||[])[_0x18239d(0x175,'3E9Y')](_0x4dc2b6=>({'type':_0x4dc2b6[_0x18239d(0x1f7,'!ZJ7')],'url':_0x4dc2b6[_0x18239d(0x19a,'4Un#')],'filename':null,'caption':_0x4dc2b6[_0x18239d(0x163,'Zf]T')+'n']||null}))},_0x585119[_0x179c7d(0x185,'YgpU')+_0x179c7d(0x1af,'d)M&')][_0x18239d(0x118,'QG#P')+_0x179c7d(0x197,'DjSH')]=_0x3d65b3[_0x179c7d(0x126,'aT9b')+_0x179c7d(0x1ad,'WABs')]||null;if(!_0x585119[_0x179c7d(0x1fb,'2Op8')+_0x18239d(0x152,'eWj]')][_0x18239d(0x123,'uyG5')+_0x18239d(0x137,'E6rF')]){if(_0x3f6bf1['BvxjC'](_0x3f6bf1[_0x179c7d(0x1bc,'7U&e')],_0x3f6bf1[_0x18239d(0x1c4,'d)M&')]))_0xdc0100[_0x179c7d(0x16b,'aT9b')+_0x18239d(0x1e7,'!ZJ7')][_0x179c7d(0x1c8,'X]^R')+_0x18239d(0x202,'&Hbo')]=_0x485aff;else try{if(_0x3f6bf1[_0x179c7d(0x139,'#A%n')](_0x179c7d(0x120,'[%rL'),_0x3f6bf1['mBYim'])){const _0x306cf=await this[_0x179c7d(0x19d,'YgpU')][_0x179c7d(0x17b,'2lSM')][_0x18239d(0x1fe,'oZ)T')+_0x18239d(0x145,']($6')](_0x4a1f85);_0x585119[_0x179c7d(0x156,'AN#u')+_0x18239d(0x1bf,'QkaA')][_0x179c7d(0x12b,'S!yY')+_0x18239d(0x1b0,'Cy[j')]=_0x306cf?.[_0x179c7d(0x17d,'4Un#')+_0x18239d(0x184,'5$D7')]||_0x306cf?.[_0x179c7d(0x1ef,'74nA')+'me']||_0x4a1f85;}else this[_0x18239d(0x196,'2lSM')]=_0x1e047f,this[_0x18239d(0x169,'q7Ac')+_0x18239d(0x1b6,'GeD6')]=new _0x3d90d5();}catch(_0x1fc524){if(_0x3f6bf1[_0x18239d(0x209,'QH3Z')](_0x3f6bf1[_0x179c7d(0x18b,'#A%n')],_0x3f6bf1[_0x179c7d(0x1e0,'Q*W]')]))_0x585119[_0x18239d(0x156,'AN#u')+_0x18239d(0x1bf,'QkaA')][_0x18239d(0x193,'[%rL')+_0x18239d(0x1dd,'2^Z5')]=_0x4a1f85;else{const _0x35b6fb=_0x3d810b[_0x18239d(0x1cf,'DjSH')+'d']||_0x38db55[_0x18239d(0x1d5,']($6')+_0x18239d(0x1c6,'oZ)T')];if(_0x35b6fb)this[_0x179c7d(0x13c,'^36J')+_0x179c7d(0x121,'7U&e')][_0x179c7d(0x180,'yK!!')](_0x50d0e5+':'+_0x35b6fb,_0x43a6cf);}}}}else this[_0x18239d(0x1a5,'GeD6')][_0x18239d(0x150,'OS!c')+_0x179c7d(0x141,'S!yY')+'ad'](_0xfdca35[_0x179c7d(0x188,'OS!c')+_0x179c7d(0x1c6,'oZ)T')],_0xff925e);}}return _0x3f6bf1[_0x179c7d(0x153,'QG#P')](typeof this[_0x18239d(0x15d,'q7Ac')][_0x18239d(0x127,'uyG5')+_0x179c7d(0x189,'4Un#')+'ad'],_0x18239d(0x1b4,'dJl9')+'on')&&this[_0x179c7d(0x194,')Sgl')][_0x18239d(0x165,'&Hbo')+'erThre'+'ad'](_0x585119[_0x18239d(0x18f,'QH3Z')+_0x179c7d(0x168,'2Op8')],_0x26e420),_0x585119;}}module[_0x132b4d(0x18e,'lEgc')+'s']=EventNormalizer;
7
+
8
+ // Turns a raw Instagram inbox event into the FCA / GoatBot-Pro event shape that
9
+ // commands expect: senderID, threadID, messageID, body, mentions, messageReply,
10
+ // type, attachments, senderName.
11
+
12
+ const USERNAME_RE = /@([A-Za-z0-9._]{1,30})/g;
13
+
14
+ class EventNormalizer {
15
+ constructor(client) {
16
+ this.client = client;
17
+ this._replyCache = new Map(); // threadID -> { itemId: item }
18
+ }
19
+
20
+ async _findReply(threadID, itemID) {
21
+ if (!itemID) return null;
22
+ const key = `${threadID}:${itemID}`;
23
+ if (this._replyCache.has(key)) return this._replyCache.get(key);
24
+ try {
25
+ const items = await this.client.api.getThreadHistory(String(threadID), 50);
26
+ for (const item of items) {
27
+ const id = item.item_id || item.messageID;
28
+ if (id) this._replyCache.set(`${threadID}:${id}`, item);
29
+ }
30
+ return this._replyCache.get(key) || null;
31
+ } catch (_) {
32
+ return null;
33
+ }
34
+ }
35
+
36
+ // Resolves @username mentions to a { userID: name } map. Instagram text
37
+ // messages carry no structured mention list, and username lookups rate-limit
38
+ // (429) for web sessions, so resolve against the users the client already
39
+ // learned from the inbox / thread views.
40
+ async _resolveMentions(body) {
41
+ if (typeof this.client._resolveMentionsOffline === "function") {
42
+ return this.client._resolveMentionsOffline(body);
43
+ }
44
+ const mentions = {};
45
+ const names = [...new Set((body.match(USERNAME_RE) || []).map((m) => m.slice(1)))];
46
+ for (const username of names) {
47
+ try {
48
+ const user = await this.client.api.getUserInfoByUsername(username);
49
+ if (user) mentions[String(user.pk || user.id)] = user.username;
50
+ } catch (_) {}
51
+ }
52
+ return mentions;
53
+ }
54
+
55
+ async normalize(raw) {
56
+ // Instagram system activity (member added/removed, name/image change) is
57
+ // synthesized by the inbox poller as an already-shaped "event" — GoatBot's
58
+ // handlerEvent/onEvent dispatch on event.type === "event".
59
+ if (!raw || raw.type === "event") {
60
+ if (!raw) return null;
61
+ return {
62
+ type: "event",
63
+ threadID: String(raw.threadID),
64
+ senderID: String(raw.author || ""),
65
+ author: raw.author ? String(raw.author) : "",
66
+ messageID: String(raw.messageID),
67
+ body: null,
68
+ logMessageType: raw.logMessageType,
69
+ logMessageData: raw.logMessageData || {},
70
+ isGroup: raw.isGroup,
71
+ participantIDs: (raw.participantIDs || []).map(String),
72
+ timestamp: raw.timestamp || Date.now(),
73
+ mentions: {}
74
+ };
75
+ }
76
+ if (raw.type !== "message") return null;
77
+
78
+ const threadID = String(raw.threadID);
79
+ const senderID = String(raw.senderID || "");
80
+ const body = raw.body || "";
81
+
82
+ let senderName = senderID;
83
+ try {
84
+ const u = await this.client.api.getUserInfo(senderID);
85
+ if (u) senderName = u.full_name || u.username || senderID;
86
+ } catch (_) {}
87
+
88
+ const event = {
89
+ type: "message",
90
+ threadID,
91
+ senderID,
92
+ userID: senderID,
93
+ messageID: String(raw.messageID),
94
+ body,
95
+ senderName,
96
+ mentions: body.includes("@") ? await this._resolveMentions(body) : {},
97
+ attachments: (raw.attachments || []).map((a) => ({
98
+ type: a.type,
99
+ url: a.url,
100
+ filename: null,
101
+ caption: a.caption || null
102
+ })),
103
+ timestamp: raw.timestamp
104
+ };
105
+
106
+ // Reply context. The client already resolves the replied-to message from the
107
+ // thread-detail query (raw.repliedToMessage); fall back to a history lookup
108
+ // only when it is absent.
109
+ const replied = raw.repliedToMessage || null;
110
+ if (replied || raw.repliedToItemId) {
111
+ const reply = replied || (await this._findReply(threadID, raw.repliedToItemId));
112
+ if (reply) {
113
+ const senderId = String(reply.senderID || reply.user_id || reply.sender_fbid || "");
114
+ event.type = "message_reply";
115
+ event.messageReply = {
116
+ messageID: String(reply.messageID || reply.item_id || ""),
117
+ senderID: senderId,
118
+ body: reply.body || reply.text || "",
119
+ attachments: (reply.attachments || []).map((a) => ({
120
+ type: a.type,
121
+ url: a.url,
122
+ filename: null,
123
+ caption: a.caption || null
124
+ }))
125
+ };
126
+ event.messageReply.senderName = reply.senderName || null;
127
+ if (!event.messageReply.senderName) {
128
+ try {
129
+ const u = await this.client.api.getUserInfo(senderId);
130
+ event.messageReply.senderName = u?.full_name || u?.username || senderId;
131
+ } catch (_) {
132
+ event.messageReply.senderName = senderId;
133
+ }
134
+ }
135
+ }
136
+ }
137
+
138
+ // Commands react to the inbound message by id (setMessageReaction), so the
139
+ // client must know which thread it belongs to.
140
+ if (typeof this.client.rememberThread === "function") {
141
+ this.client.rememberThread(event.messageID, threadID);
142
+ }
143
+
144
+ return event;
145
+ }
146
+ }
147
+
148
+ module.exports = EventNormalizer;