alicezetion 1.0.0 → 1.0.1
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/.cache/replit/__replit_disk_meta.json +1 -1
- package/alice/addExternalModule.js +19 -0
- package/alice/{add.js → addUserToGroup.js} +16 -2
- package/alice/{admin.js → changeAdminStatus.js} +17 -3
- package/alice/{archive.js → changeArchivedStatus.js} +16 -2
- package/alice/changeBio.js +77 -0
- package/alice/changeBlockedStatus.js +47 -0
- package/alice/{gcimage.js → changeGroupImage.js} +16 -2
- package/alice/{nickname.js → changeNickname.js} +17 -2
- package/alice/changeThreadColor.js +71 -0
- package/alice/{emoji.js → changeThreadEmoji.js} +16 -2
- package/alice/createNewGroup.js +86 -0
- package/alice/{poll.js → createPoll.js} +18 -2
- package/alice/{deletemsg.js → deleteMessage.js} +15 -2
- package/alice/{deletegc.js → deleteThread.js} +15 -2
- package/alice/{forward.js → forwardAttachment.js} +16 -3
- package/alice/{id.js → getCurrentUserID.js} +1 -1
- package/alice/{friend.js → getFriendsList.js} +17 -3
- package/alice/{history.js → getThreadHistory.js} +19 -6
- package/alice/{gchistorydeprecated.js → getThreadHistoryDeprecated.js} +18 -1
- package/alice/{gcinfo.js → getThreadInfo.js} +49 -13
- package/alice/{gcinfodeprecated.js → getThreadInfoDeprecated.js} +17 -2
- package/alice/{gclist.js → getThreadList.js} +27 -9
- package/alice/{gclistdeprecated.js → getThreadListDeprecated.js} +1 -1
- package/alice/{gcimg.js → getThreadPictures.js} +15 -2
- package/alice/{userid.js → getUserID.js} +16 -2
- package/alice/{userinfo.js → getUserInfo.js} +17 -2
- package/alice/handleFriendRequest.js +61 -0
- package/alice/{msgrequest.js → handleMessageRequest.js} +16 -2
- package/alice/httpGet.js +52 -0
- package/alice/httpPost.js +52 -0
- package/alice/listenMqtt.js +363 -134
- package/alice/logout.js +18 -2
- package/alice/{delivered.js → markAsDelivered.js} +19 -2
- package/alice/markAsRead.js +80 -0
- package/alice/{seen.js → markAsReadAll.js} +16 -2
- package/alice/markAsSeen.js +59 -0
- package/alice/{mute.js → muteThread.js} +16 -2
- package/alice/{kick.js → removeUserFromGroup.js} +16 -2
- package/alice/{resolveimgurl.js → resolvePhotoUrl.js} +16 -2
- package/alice/{gcsearch.js → searchForThread.js} +16 -2
- package/alice/{chat.js → sendMessage.js} +78 -34
- package/alice/sendTypingIndicator.js +103 -0
- package/alice/{react.js → setMessageReaction.js} +39 -4
- package/alice/setPostReaction.js +76 -0
- package/alice/{title.js → setTitle.js} +16 -3
- package/alice/threadColors.js +57 -0
- package/alice/unfriend.js +52 -0
- package/alice/{unsend.js → unsendMessage.js} +16 -2
- package/index.js +324 -143
- package/package.json +19 -10
- package/utils.js +137 -61
- package/README.md +0 -40
- package/alice/block.js +0 -72
- package/alice/color.js +0 -53
- package/alice/gcolor.js +0 -22
- package/alice/listen.js +0 -553
- package/alice/read.js +0 -52
- package/alice/typeindicator.js +0 -77
- /package/alice/{emojiurl.js → getEmojiUrl.js} +0 -0
package/package.json
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
{
|
2
2
|
"name": "alicezetion",
|
3
|
-
"version": "1.0.
|
4
|
-
"description": "
|
3
|
+
"version": "1.0.1",
|
4
|
+
"description": "messenger bot api",
|
5
5
|
"main": "index.js",
|
6
6
|
"scripts": {
|
7
|
-
"test": "
|
7
|
+
"test": "mocha",
|
8
8
|
"lint": "./node_modules/.bin/eslint **.js",
|
9
9
|
"prettier": "prettier utils.js src/* --write"
|
10
10
|
},
|
@@ -13,9 +13,9 @@
|
|
13
13
|
"url": "https://github.com/LeiamNashRebirth"
|
14
14
|
},
|
15
15
|
"keywords": [
|
16
|
-
"bot",
|
17
16
|
"messenger",
|
18
|
-
"
|
17
|
+
"facebook",
|
18
|
+
"bot",
|
19
19
|
"leiamnash",
|
20
20
|
"alicezetion"
|
21
21
|
],
|
@@ -26,24 +26,26 @@
|
|
26
26
|
},
|
27
27
|
"homepage": "https://web.leiamnash.repl.co/npm",
|
28
28
|
"dependencies": {
|
29
|
-
"bluebird": "^
|
29
|
+
"bluebird": "^2.11.0",
|
30
30
|
"cheerio": "^0.22.0",
|
31
|
+
"https-proxy-agent": "^4.0.0",
|
31
32
|
"mqtt": "^3.0.0",
|
32
33
|
"npmlog": "^1.2.0",
|
33
34
|
"request": "^2.53.0",
|
34
35
|
"websocket-stream": "^5.5.0"
|
35
36
|
},
|
36
37
|
"engines": {
|
37
|
-
"node": ">=
|
38
|
+
"node": ">=10.x"
|
38
39
|
},
|
39
40
|
"devDependencies": {
|
40
|
-
"eslint": "^
|
41
|
+
"eslint": "^7.5.0",
|
41
42
|
"mocha": "^7.0.1",
|
42
43
|
"prettier": "^1.11.1"
|
43
44
|
},
|
44
45
|
"eslintConfig": {
|
45
46
|
"env": {
|
46
47
|
"es6": true,
|
48
|
+
"es2017": true,
|
47
49
|
"node": true
|
48
50
|
},
|
49
51
|
"extends": "eslint:recommended",
|
@@ -62,9 +64,16 @@
|
|
62
64
|
"no-unused-vars": [
|
63
65
|
1,
|
64
66
|
{
|
65
|
-
"argsIgnorePattern": "^_"
|
67
|
+
"argsIgnorePattern": "^_",
|
68
|
+
"varsIgnorePattern": "^_"
|
69
|
+
}
|
70
|
+
],
|
71
|
+
"no-empty": [
|
72
|
+
"error",
|
73
|
+
{
|
74
|
+
"allowEmptyCatch": true
|
66
75
|
}
|
67
76
|
]
|
68
77
|
}
|
69
78
|
}
|
70
|
-
|
79
|
+
}
|
package/utils.js
CHANGED
@@ -1,11 +1,25 @@
|
|
1
|
+
/* eslint-disable no-prototype-builtins */
|
1
2
|
"use strict";
|
2
3
|
|
3
4
|
var bluebird = require("bluebird");
|
4
|
-
var request = bluebird.promisify(require("request").defaults({ jar: true })
|
5
|
+
var request = bluebird.promisify(require("request").defaults({ jar: true }));
|
5
6
|
var stream = require("stream");
|
6
7
|
var log = require("npmlog");
|
8
|
+
var querystring = require("querystring");
|
9
|
+
var url = require("url");
|
10
|
+
|
11
|
+
function setProxy(url) {
|
12
|
+
if (typeof url == undefined)
|
13
|
+
return request = bluebird.promisify(require("request").defaults({
|
14
|
+
jar: true,
|
15
|
+
}));
|
16
|
+
return request = bluebird.promisify(require("request").defaults({
|
17
|
+
jar: true,
|
18
|
+
proxy: url
|
19
|
+
}));
|
20
|
+
}
|
7
21
|
|
8
|
-
function getHeaders(url, options) {
|
22
|
+
function getHeaders(url, options, ctx, customHeader) {
|
9
23
|
var headers = {
|
10
24
|
"Content-Type": "application/x-www-form-urlencoded",
|
11
25
|
Referer: "https://www.facebook.com/",
|
@@ -14,6 +28,12 @@ function getHeaders(url, options) {
|
|
14
28
|
"User-Agent": options.userAgent,
|
15
29
|
Connection: "keep-alive"
|
16
30
|
};
|
31
|
+
if (customHeader) {
|
32
|
+
Object.assign(headers, customHeader);
|
33
|
+
}
|
34
|
+
if (ctx && ctx.region) {
|
35
|
+
headers["X-MSGR-Region"] = ctx.region;
|
36
|
+
}
|
17
37
|
|
18
38
|
return headers;
|
19
39
|
}
|
@@ -27,7 +47,7 @@ function isReadableStream(obj) {
|
|
27
47
|
);
|
28
48
|
}
|
29
49
|
|
30
|
-
function get(url, jar, qs, options) {
|
50
|
+
function get(url, jar, qs, options, ctx) {
|
31
51
|
// I'm still confused about this
|
32
52
|
if (getType(qs) === "Object") {
|
33
53
|
for (var prop in qs) {
|
@@ -37,7 +57,7 @@ function get(url, jar, qs, options) {
|
|
37
57
|
}
|
38
58
|
}
|
39
59
|
var op = {
|
40
|
-
headers: getHeaders(url, options),
|
60
|
+
headers: getHeaders(url, options, ctx),
|
41
61
|
timeout: 60000,
|
42
62
|
qs: qs,
|
43
63
|
url: url,
|
@@ -46,14 +66,14 @@ function get(url, jar, qs, options) {
|
|
46
66
|
gzip: true
|
47
67
|
};
|
48
68
|
|
49
|
-
return request(op).then(function(res) {
|
69
|
+
return request(op).then(function (res) {
|
50
70
|
return res[0];
|
51
71
|
});
|
52
72
|
}
|
53
73
|
|
54
|
-
function post(url, jar, form, options) {
|
74
|
+
function post(url, jar, form, options, ctx, customHeader) {
|
55
75
|
var op = {
|
56
|
-
headers: getHeaders(url, options),
|
76
|
+
headers: getHeaders(url, options, ctx, customHeader),
|
57
77
|
timeout: 60000,
|
58
78
|
url: url,
|
59
79
|
method: "POST",
|
@@ -62,13 +82,13 @@ function post(url, jar, form, options) {
|
|
62
82
|
gzip: true
|
63
83
|
};
|
64
84
|
|
65
|
-
return request(op).then(function(res) {
|
85
|
+
return request(op).then(function (res) {
|
66
86
|
return res[0];
|
67
87
|
});
|
68
88
|
}
|
69
89
|
|
70
|
-
function postFormData(url, jar, form, qs, options) {
|
71
|
-
var headers = getHeaders(url, options);
|
90
|
+
function postFormData(url, jar, form, qs, options, ctx) {
|
91
|
+
var headers = getHeaders(url, options, ctx);
|
72
92
|
headers["Content-Type"] = "multipart/form-data";
|
73
93
|
var op = {
|
74
94
|
headers: headers,
|
@@ -81,7 +101,7 @@ function postFormData(url, jar, form, qs, options) {
|
|
81
101
|
gzip: true
|
82
102
|
};
|
83
103
|
|
84
|
-
return request(op).then(function(res) {
|
104
|
+
return request(op).then(function (res) {
|
85
105
|
return res[0];
|
86
106
|
});
|
87
107
|
}
|
@@ -162,7 +182,7 @@ var j = {
|
|
162
182
|
Z:
|
163
183
|
"%2c%22sb%22%3a1%2c%22t%22%3a%5b%5d%2c%22f%22%3anull%2c%22uct%22%3a0%2c%22s%22%3a0%2c%22blo%22%3a0%7d%2c%22bl%22%3a%7b%22ac%22%3a"
|
164
184
|
};
|
165
|
-
(function() {
|
185
|
+
(function () {
|
166
186
|
var l = [];
|
167
187
|
for (var m in j) {
|
168
188
|
i[j[m]] = m;
|
@@ -174,18 +194,19 @@ var j = {
|
|
174
194
|
|
175
195
|
function presenceEncode(str) {
|
176
196
|
return encodeURIComponent(str)
|
177
|
-
.replace(/([_A-Z])|%../g, function(m, n) {
|
197
|
+
.replace(/([_A-Z])|%../g, function (m, n) {
|
178
198
|
return n ? "%" + n.charCodeAt(0).toString(16) : m;
|
179
199
|
})
|
180
200
|
.toLowerCase()
|
181
|
-
.replace(h, function(m) {
|
201
|
+
.replace(h, function (m) {
|
182
202
|
return i[m];
|
183
203
|
});
|
184
204
|
}
|
185
205
|
|
206
|
+
// eslint-disable-next-line no-unused-vars
|
186
207
|
function presenceDecode(str) {
|
187
208
|
return decodeURIComponent(
|
188
|
-
str.replace(/[_A-Z]/g, function(m) {
|
209
|
+
str.replace(/[_A-Z]/g, function (m) {
|
189
210
|
return j[m];
|
190
211
|
})
|
191
212
|
);
|
@@ -237,7 +258,7 @@ function getGUID() {
|
|
237
258
|
/** @type {number} */
|
238
259
|
var sectionLength = Date.now();
|
239
260
|
/** @type {string} */
|
240
|
-
var id = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(c) {
|
261
|
+
var id = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function (c) {
|
241
262
|
/** @type {number} */
|
242
263
|
var r = Math.floor((sectionLength + Math.random() * 16) % 16);
|
243
264
|
/** @type {number} */
|
@@ -265,7 +286,17 @@ function _formatAttachment(attachment1, attachment2) {
|
|
265
286
|
type = "StickerAttachment";
|
266
287
|
blob = attachment1.sticker_attachment;
|
267
288
|
} else if (!type && attachment1.extensible_attachment) {
|
268
|
-
|
289
|
+
if (
|
290
|
+
attachment1.extensible_attachment.story_attachment &&
|
291
|
+
attachment1.extensible_attachment.story_attachment.target &&
|
292
|
+
attachment1.extensible_attachment.story_attachment.target.__typename &&
|
293
|
+
attachment1.extensible_attachment.story_attachment.target.__typename === "MessageLocation"
|
294
|
+
) {
|
295
|
+
type = "MessageLocation";
|
296
|
+
} else {
|
297
|
+
type = "ExtensibleAttachment";
|
298
|
+
}
|
299
|
+
|
269
300
|
blob = attachment1.extensible_attachment;
|
270
301
|
}
|
271
302
|
// TODO: Determine whether "sticker", "photo", "file" etc are still used
|
@@ -506,6 +537,49 @@ function _formatAttachment(attachment1, attachment2) {
|
|
506
537
|
spriteURI: blob.sprite_image, // @Legacy
|
507
538
|
spriteURI2x: blob.sprite_image_2x // @Legacy
|
508
539
|
};
|
540
|
+
case "MessageLocation":
|
541
|
+
var urlAttach = blob.story_attachment.url;
|
542
|
+
var mediaAttach = blob.story_attachment.media;
|
543
|
+
|
544
|
+
var u = querystring.parse(url.parse(urlAttach).query).u;
|
545
|
+
var where1 = querystring.parse(url.parse(u).query).where1;
|
546
|
+
var address = where1.split(", ");
|
547
|
+
|
548
|
+
var latitude;
|
549
|
+
var longitude;
|
550
|
+
|
551
|
+
try {
|
552
|
+
latitude = Number.parseFloat(address[0]);
|
553
|
+
longitude = Number.parseFloat(address[1]);
|
554
|
+
} catch (err) {
|
555
|
+
/* empty */
|
556
|
+
}
|
557
|
+
|
558
|
+
var imageUrl;
|
559
|
+
var width;
|
560
|
+
var height;
|
561
|
+
|
562
|
+
if (mediaAttach && mediaAttach.image) {
|
563
|
+
imageUrl = mediaAttach.image.uri;
|
564
|
+
width = mediaAttach.image.width;
|
565
|
+
height = mediaAttach.image.height;
|
566
|
+
}
|
567
|
+
|
568
|
+
return {
|
569
|
+
type: "location",
|
570
|
+
ID: blob.legacy_attachment_id,
|
571
|
+
latitude: latitude,
|
572
|
+
longitude: longitude,
|
573
|
+
image: imageUrl,
|
574
|
+
width: width,
|
575
|
+
height: height,
|
576
|
+
url: u || urlAttach,
|
577
|
+
address: where1,
|
578
|
+
|
579
|
+
facebookUrl: blob.story_attachment.url, // @Legacy
|
580
|
+
target: blob.story_attachment.target, // @Legacy
|
581
|
+
styleList: blob.story_attachment.style_list // @Legacy
|
582
|
+
};
|
509
583
|
case "ExtensibleAttachment":
|
510
584
|
return {
|
511
585
|
type: "share",
|
@@ -544,7 +618,7 @@ function _formatAttachment(attachment1, attachment2) {
|
|
544
618
|
: blob.story_attachment.media.playable_url,
|
545
619
|
|
546
620
|
subattachments: blob.story_attachment.subattachments,
|
547
|
-
properties: blob.story_attachment.properties.reduce(function(obj, cur) {
|
621
|
+
properties: blob.story_attachment.properties.reduce(function (obj, cur) {
|
548
622
|
obj[cur.key] = cur.value.text;
|
549
623
|
return obj;
|
550
624
|
}, {}),
|
@@ -570,12 +644,12 @@ function _formatAttachment(attachment1, attachment2) {
|
|
570
644
|
default:
|
571
645
|
throw new Error(
|
572
646
|
"unrecognized attach_file of type " +
|
573
|
-
|
574
|
-
|
575
|
-
|
576
|
-
|
577
|
-
|
578
|
-
|
647
|
+
type +
|
648
|
+
"`" +
|
649
|
+
JSON.stringify(attachment1, null, 4) +
|
650
|
+
" attachment2: " +
|
651
|
+
JSON.stringify(attachment2, null, 4) +
|
652
|
+
"`"
|
579
653
|
);
|
580
654
|
}
|
581
655
|
}
|
@@ -583,16 +657,16 @@ function _formatAttachment(attachment1, attachment2) {
|
|
583
657
|
function formatAttachment(attachments, attachmentIds, attachmentMap, shareMap) {
|
584
658
|
attachmentMap = shareMap || attachmentMap;
|
585
659
|
return attachments
|
586
|
-
? attachments.map(function(val, i) {
|
587
|
-
|
588
|
-
|
589
|
-
|
590
|
-
|
591
|
-
|
592
|
-
|
593
|
-
|
594
|
-
|
595
|
-
|
660
|
+
? attachments.map(function (val, i) {
|
661
|
+
if (
|
662
|
+
!attachmentMap ||
|
663
|
+
!attachmentIds ||
|
664
|
+
!attachmentMap[attachmentIds[i]]
|
665
|
+
) {
|
666
|
+
return _formatAttachment(val);
|
667
|
+
}
|
668
|
+
return _formatAttachment(val, attachmentMap[attachmentIds[i]]);
|
669
|
+
})
|
596
670
|
: [];
|
597
671
|
}
|
598
672
|
|
@@ -649,9 +723,9 @@ function formatMessage(m) {
|
|
649
723
|
? originalMessage.group_thread_info.participant_names
|
650
724
|
: [originalMessage.sender_name.split(" ")[0]],
|
651
725
|
participantIDs: originalMessage.group_thread_info
|
652
|
-
? originalMessage.group_thread_info.participant_ids.map(function(v) {
|
653
|
-
|
654
|
-
|
726
|
+
? originalMessage.group_thread_info.participant_ids.map(function (v) {
|
727
|
+
return formatID(v.toString());
|
728
|
+
})
|
655
729
|
: [formatID(originalMessage.sender_fbid)],
|
656
730
|
body: originalMessage.body || "",
|
657
731
|
threadID: formatID(
|
@@ -862,17 +936,17 @@ function makeParsable(html) {
|
|
862
936
|
function arrToForm(form) {
|
863
937
|
return arrayToObject(
|
864
938
|
form,
|
865
|
-
function(v) {
|
939
|
+
function (v) {
|
866
940
|
return v.name;
|
867
941
|
},
|
868
|
-
function(v) {
|
942
|
+
function (v) {
|
869
943
|
return v.val;
|
870
944
|
}
|
871
945
|
);
|
872
946
|
}
|
873
947
|
|
874
948
|
function arrayToObject(arr, getKey, getValue) {
|
875
|
-
return arr.reduce(function(acc, val) {
|
949
|
+
return arr.reduce(function (acc, val) {
|
876
950
|
acc[getKey(val)] = getValue(val);
|
877
951
|
return acc;
|
878
952
|
}, {});
|
@@ -958,21 +1032,22 @@ function makeDefaults(html, userID, ctx) {
|
|
958
1032
|
return newObj;
|
959
1033
|
}
|
960
1034
|
|
961
|
-
function postWithDefaults(url, jar, form) {
|
962
|
-
return post(url, jar, mergeWithDefaults(form), ctx.globalOptions);
|
1035
|
+
function postWithDefaults(url, jar, form, ctxx) {
|
1036
|
+
return post(url, jar, mergeWithDefaults(form), ctx.globalOptions, ctxx || ctx);
|
963
1037
|
}
|
964
1038
|
|
965
|
-
function getWithDefaults(url, jar, qs) {
|
966
|
-
return get(url, jar, mergeWithDefaults(qs), ctx.globalOptions);
|
1039
|
+
function getWithDefaults(url, jar, qs, ctxx) {
|
1040
|
+
return get(url, jar, mergeWithDefaults(qs), ctx.globalOptions, ctxx || ctx);
|
967
1041
|
}
|
968
1042
|
|
969
|
-
function postFormDataWithDefault(url, jar, form, qs) {
|
1043
|
+
function postFormDataWithDefault(url, jar, form, qs, ctxx) {
|
970
1044
|
return postFormData(
|
971
1045
|
url,
|
972
1046
|
jar,
|
973
1047
|
mergeWithDefaults(form),
|
974
1048
|
mergeWithDefaults(qs),
|
975
|
-
ctx.globalOptions
|
1049
|
+
ctx.globalOptions,
|
1050
|
+
ctxx || ctx
|
976
1051
|
);
|
977
1052
|
}
|
978
1053
|
|
@@ -987,8 +1062,8 @@ function parseAndCheckLogin(ctx, defaultFuncs, retryCount) {
|
|
987
1062
|
if (retryCount == undefined) {
|
988
1063
|
retryCount = 0;
|
989
1064
|
}
|
990
|
-
return function(data) {
|
991
|
-
return bluebird.try(function() {
|
1065
|
+
return function (data) {
|
1066
|
+
return bluebird.try(function () {
|
992
1067
|
log.verbose("parseAndCheckLogin", data.body);
|
993
1068
|
if (data.statusCode >= 500 && data.statusCode < 600) {
|
994
1069
|
if (retryCount >= 5) {
|
@@ -1004,12 +1079,12 @@ function parseAndCheckLogin(ctx, defaultFuncs, retryCount) {
|
|
1004
1079
|
log.warn(
|
1005
1080
|
"parseAndCheckLogin",
|
1006
1081
|
"Got status code " +
|
1007
|
-
|
1008
|
-
|
1009
|
-
|
1010
|
-
|
1011
|
-
|
1012
|
-
|
1082
|
+
data.statusCode +
|
1083
|
+
" - " +
|
1084
|
+
retryCount +
|
1085
|
+
". attempt to retry in " +
|
1086
|
+
retryTime +
|
1087
|
+
" milliseconds..."
|
1013
1088
|
);
|
1014
1089
|
var url =
|
1015
1090
|
data.request.uri.protocol +
|
@@ -1022,7 +1097,7 @@ function parseAndCheckLogin(ctx, defaultFuncs, retryCount) {
|
|
1022
1097
|
) {
|
1023
1098
|
return bluebird
|
1024
1099
|
.delay(retryTime)
|
1025
|
-
.then(function() {
|
1100
|
+
.then(function () {
|
1026
1101
|
return defaultFuncs.postFormData(
|
1027
1102
|
url,
|
1028
1103
|
ctx.jar,
|
@@ -1034,7 +1109,7 @@ function parseAndCheckLogin(ctx, defaultFuncs, retryCount) {
|
|
1034
1109
|
} else {
|
1035
1110
|
return bluebird
|
1036
1111
|
.delay(retryTime)
|
1037
|
-
.then(function() {
|
1112
|
+
.then(function () {
|
1038
1113
|
return defaultFuncs.post(url, ctx.jar, data.request.formData);
|
1039
1114
|
})
|
1040
1115
|
.then(parseAndCheckLogin(ctx, defaultFuncs, retryCount));
|
@@ -1043,8 +1118,8 @@ function parseAndCheckLogin(ctx, defaultFuncs, retryCount) {
|
|
1043
1118
|
if (data.statusCode !== 200)
|
1044
1119
|
throw new Error(
|
1045
1120
|
"parseAndCheckLogin got status code: " +
|
1046
|
-
|
1047
|
-
|
1121
|
+
data.statusCode +
|
1122
|
+
". Bailing out of trying to parse response."
|
1048
1123
|
);
|
1049
1124
|
|
1050
1125
|
var res = null;
|
@@ -1108,9 +1183,9 @@ function parseAndCheckLogin(ctx, defaultFuncs, retryCount) {
|
|
1108
1183
|
}
|
1109
1184
|
|
1110
1185
|
function saveCookies(jar) {
|
1111
|
-
return function(res) {
|
1186
|
+
return function (res) {
|
1112
1187
|
var cookies = res.headers["set-cookie"] || [];
|
1113
|
-
cookies.forEach(function(c) {
|
1188
|
+
cookies.forEach(function (c) {
|
1114
1189
|
if (c.indexOf(".facebook.com") > -1) {
|
1115
1190
|
jar.setCookie(c, "https://www.facebook.com");
|
1116
1191
|
}
|
@@ -1278,6 +1353,7 @@ module.exports = {
|
|
1278
1353
|
formatDate,
|
1279
1354
|
decodeClientPayload,
|
1280
1355
|
getAppState,
|
1281
|
-
getAdminTextMessageType
|
1356
|
+
getAdminTextMessageType,
|
1357
|
+
setProxy
|
1282
1358
|
};
|
1283
1359
|
|
package/README.md
DELETED
@@ -1,40 +0,0 @@
|
|
1
|
-
<p align="center">
|
2
|
-
|
3
|
-
<img src="https://i.imgur.com/GYRjw6F.jpg" alt="LeiamNashProject">
|
4
|
-
AliceZetion <br> a fake http tool that can trigger facebook, it uses get and post method to make your account functionable on messenger</p>
|
5
|
-
|
6
|
-
<br>
|
7
|
-
take note:<br>this project is not supported to mirai, c3c, goat and other systems who used fca before<br><br>i am not responsible if your account gets banned for spammy activities
|
8
|
-
|
9
|
-
<br> <br> features:<br>• philippines server<br>• safari agent<br>• fast and secure<br>• flexible user agent
|
10
|
-
|
11
|
-
<br> <br>
|
12
|
-
|
13
|
-
installation
|
14
|
-
```js
|
15
|
-
npm i alicezetion
|
16
|
-
```
|
17
|
-
|
18
|
-
<br>
|
19
|
-
|
20
|
-
calling a variable
|
21
|
-
```js
|
22
|
-
const login = require("alicezetion");
|
23
|
-
```
|
24
|
-
|
25
|
-
<br>
|
26
|
-
|
27
|
-
too lazy to write some documents cause this project is only for alice if you want to use this the normal bot response will be:
|
28
|
-
|
29
|
-
```js
|
30
|
-
bot.chat("TEXT", threadID, messageID);
|
31
|
-
```
|
32
|
-
|
33
|
-
|
34
|
-
<br>
|
35
|
-
<p align="center">
|
36
|
-
AliceZetion is a package backend for your system, it scarpe on facebook to support fake http login
|
37
|
-
</p>
|
38
|
-
|
39
|
-
|
40
|
-
<br> • [LeiamNash](https://www.facebook.com/LeiamNashRebrth)
|
package/alice/block.js
DELETED
@@ -1,72 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
|
3
|
-
var utils = require("../utils");
|
4
|
-
var log = require("npmlog");
|
5
|
-
|
6
|
-
module.exports = function(defaultFuncs, bot, ctx) {
|
7
|
-
return function changeBlockedStatus(userID, block, callback) {
|
8
|
-
if (!callback) {
|
9
|
-
callback = function() {};
|
10
|
-
}
|
11
|
-
if (block) {
|
12
|
-
defaultFuncs
|
13
|
-
.post(
|
14
|
-
"https://www.facebook.com/nfx/block_messages/?thread_fbid=" +
|
15
|
-
userID +
|
16
|
-
"&location=www_chat_head",
|
17
|
-
ctx.jar,
|
18
|
-
{}
|
19
|
-
)
|
20
|
-
.then(utils.saveCookies(ctx.jar))
|
21
|
-
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
22
|
-
.then(function(resData) {
|
23
|
-
if (resData.error) {
|
24
|
-
throw resData;
|
25
|
-
}
|
26
|
-
defaultFuncs
|
27
|
-
.post(
|
28
|
-
"https://www.facebook.com" +
|
29
|
-
/action="(.+?)"+?/
|
30
|
-
.exec(resData.jsmods.markup[0][1].__html)[1]
|
31
|
-
.replace(/&/g, "&"),
|
32
|
-
ctx.jar,
|
33
|
-
{}
|
34
|
-
)
|
35
|
-
.then(utils.saveCookies(ctx.jar))
|
36
|
-
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
37
|
-
.then(function(_resData) {
|
38
|
-
if (_resData.error) {
|
39
|
-
throw _resData;
|
40
|
-
}
|
41
|
-
return callback();
|
42
|
-
});
|
43
|
-
})
|
44
|
-
.catch(function(err) {
|
45
|
-
log.error("changeBlockedStatus", err);
|
46
|
-
return callback(err);
|
47
|
-
});
|
48
|
-
} else {
|
49
|
-
defaultFuncs
|
50
|
-
.post(
|
51
|
-
"https://www.facebook.com/ajax/nfx/messenger_undo_block.php?story_location=messenger&context=%7B%22reportable_ent_token%22%3A%22" +
|
52
|
-
userID +
|
53
|
-
"%22%2C%22initial_action_name%22%3A%22BLOCK_MESSAGES%22%7D&",
|
54
|
-
ctx.jar,
|
55
|
-
{}
|
56
|
-
)
|
57
|
-
.then(utils.saveCookies(ctx.jar))
|
58
|
-
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
59
|
-
.then(function(resData) {
|
60
|
-
if (resData.error) {
|
61
|
-
throw resData;
|
62
|
-
}
|
63
|
-
|
64
|
-
return callback();
|
65
|
-
})
|
66
|
-
.catch(function(err) {
|
67
|
-
log.error("changeBlockedStatus", err);
|
68
|
-
return callback(err);
|
69
|
-
});
|
70
|
-
}
|
71
|
-
};
|
72
|
-
};
|
package/alice/color.js
DELETED
@@ -1,53 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
|
3
|
-
var utils = require("../utils");
|
4
|
-
var log = require("npmlog");
|
5
|
-
|
6
|
-
module.exports = function(defaultFuncs, bot, ctx) {
|
7
|
-
return function changeThreadColor(color, threadID, callback) {
|
8
|
-
if (!callback) {
|
9
|
-
callback = function() {};
|
10
|
-
}
|
11
|
-
|
12
|
-
var validatedColor = color !== null ? color.toLowerCase() : color; // API only accepts lowercase letters in hex string
|
13
|
-
var colorList = Object.keys(api.threadColors).map(function(name) {
|
14
|
-
return api.threadColors[name];
|
15
|
-
});
|
16
|
-
if (!colorList.includes(validatedColor)) {
|
17
|
-
throw {
|
18
|
-
error:
|
19
|
-
"The color you are trying to use is not a valid thread color. Use api.threadColors to find acceptable values."
|
20
|
-
};
|
21
|
-
}
|
22
|
-
|
23
|
-
var form = {
|
24
|
-
color_choice: validatedColor,
|
25
|
-
thread_or_other_fbid: threadID
|
26
|
-
};
|
27
|
-
|
28
|
-
defaultFuncs
|
29
|
-
.post(
|
30
|
-
"https://www.facebook.com/messaging/save_thread_color/?source=thread_settings&dpr=1",
|
31
|
-
ctx.jar,
|
32
|
-
form
|
33
|
-
)
|
34
|
-
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
35
|
-
.then(function(resData) {
|
36
|
-
if (resData.error === 1357031) {
|
37
|
-
throw {
|
38
|
-
error:
|
39
|
-
"Trying to change colors of a chat that doesn't exist. Have at least one message in the thread before trying to change the colors."
|
40
|
-
};
|
41
|
-
}
|
42
|
-
if (resData.error) {
|
43
|
-
throw resData;
|
44
|
-
}
|
45
|
-
|
46
|
-
return callback();
|
47
|
-
})
|
48
|
-
.catch(function(err) {
|
49
|
-
log.error("changeThreadColor", err);
|
50
|
-
return callback(err);
|
51
|
-
});
|
52
|
-
};
|
53
|
-
};
|
package/alice/gcolor.js
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
|
3
|
-
module.exports = function(defaultFuncs, bot, ctx) {
|
4
|
-
// Currently the only colors that can be passed to api.changeThreadColor(); may change if Facebook adds more
|
5
|
-
return {
|
6
|
-
MessengerBlue: null,
|
7
|
-
Viking: "#44bec7",
|
8
|
-
GoldenPoppy: "#ffc300",
|
9
|
-
RadicalRed: "#fa3c4c",
|
10
|
-
Shocking: "#d696bb",
|
11
|
-
PictonBlue: "#6699cc",
|
12
|
-
FreeSpeechGreen: "#13cf13",
|
13
|
-
Pumpkin: "#ff7e29",
|
14
|
-
LightCoral: "#e68585",
|
15
|
-
MediumSlateBlue: "#7646ff",
|
16
|
-
DeepSkyBlue: "#20cef5",
|
17
|
-
Fern: "#67b868",
|
18
|
-
Cameo: "#d4a88c",
|
19
|
-
BrilliantRose: "#ff5ca1",
|
20
|
-
BilobaFlower: "#a695c7"
|
21
|
-
};
|
22
|
-
};
|