@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.
- package/CHANGELOG.md +95 -8
- package/index.js +105 -1
- package/module/login.js +51 -1
- package/package.json +9 -2
- package/src/api/action/getAppState.js +19 -1
- package/src/api/action/getCookies.js +7 -1
- package/src/api/action/getCurrentUserID.js +7 -1
- package/src/api/action/setOptions.js +8 -1
- package/src/api/messaging/editMessage.js +19 -1
- package/src/api/messaging/markAsRead.js +7 -1
- package/src/api/messaging/resolvePhotoUrl.js +8 -1
- package/src/api/messaging/sendMessage.js +45 -1
- package/src/api/messaging/sendMessageSync.js +8 -1
- package/src/api/messaging/sendTypingIndicator.js +7 -1
- package/src/api/messaging/setMessageReaction.js +19 -1
- package/src/api/messaging/shareContact.js +19 -1
- package/src/api/messaging/unsendMessage.js +16 -1
- package/src/api/realtime/getInbox.js +7 -1
- package/src/api/realtime/listen.js +7 -1
- package/src/api/realtime/stopListening.js +7 -1
- package/src/api/threads/getThreadHistory.js +16 -1
- package/src/api/threads/getThreadInfo.js +59 -1
- package/src/api/threads/getThreadList.js +22 -1
- package/src/api/users/getUID.js +12 -1
- package/src/api/users/getUserInfo.js +37 -1
- package/src/api.js +253 -1
- package/src/app/InstaClient.js +352 -1
- package/src/app/InstaContext.js +46 -1
- package/src/app/createFcaClient.js +59 -1
- package/src/app/loadApiMethods.js +30 -1
- package/src/constants.js +53 -1
- package/src/cookies.js +41 -1
- package/src/deviceIdentity.js +31 -1
- package/src/events/normalizeEvent.js +142 -1
- package/src/http.js +381 -1
- package/src/messageContent.js +73 -1
- package/src/methods/inbox.js +464 -1
- package/src/methods/media.js +218 -1
- package/src/methods/message.js +115 -1
- package/src/methods/reactions.js +52 -1
- package/src/methods/thread.js +96 -1
- package/src/methods/typing.js +35 -1
- package/src/methods/user.js +33 -1
- package/src/session.js +94 -1
- package/src/threadDetail.js +36 -1
- package/src/utils/antiSuspension.js +269 -0
- package/src/utils/dataDir.js +11 -0
- package/src/utils/errors.js +106 -0
- package/src/utils/format.js +38 -1
- package/src/utils/messageStyle.js +57 -1
- 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
|
-
|
|
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
|
-
|
|
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 };
|
package/src/deviceIdentity.js
CHANGED
|
@@ -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
|
-
|
|
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;
|