alicezetion 1.0.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
@@ -1,6 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
|
3
|
-
var cheerio = require("cheerio");
|
3
|
+
//var cheerio = require("cheerio");
|
4
4
|
var utils = require("../utils");
|
5
5
|
var log = require("npmlog");
|
6
6
|
|
@@ -39,10 +39,22 @@ function formatData(obj) {
|
|
39
39
|
});
|
40
40
|
}
|
41
41
|
|
42
|
-
module.exports = function(defaultFuncs,
|
42
|
+
module.exports = function(defaultFuncs, api, ctx) {
|
43
43
|
return function getFriendsList(callback) {
|
44
|
+
var resolveFunc = function(){};
|
45
|
+
var rejectFunc = function(){};
|
46
|
+
var returnPromise = new Promise(function (resolve, reject) {
|
47
|
+
resolveFunc = resolve;
|
48
|
+
rejectFunc = reject;
|
49
|
+
});
|
50
|
+
|
44
51
|
if (!callback) {
|
45
|
-
|
52
|
+
callback = function (err, friendList) {
|
53
|
+
if (err) {
|
54
|
+
return rejectFunc(err);
|
55
|
+
}
|
56
|
+
resolveFunc(friendList);
|
57
|
+
};
|
46
58
|
}
|
47
59
|
|
48
60
|
defaultFuncs
|
@@ -66,5 +78,7 @@ module.exports = function(defaultFuncs, bot, ctx) {
|
|
66
78
|
log.error("getFriendsList", err);
|
67
79
|
return callback(err);
|
68
80
|
});
|
81
|
+
|
82
|
+
return returnPromise;
|
69
83
|
};
|
70
84
|
};
|
@@ -103,7 +103,6 @@ function formatAttachmentsGraphQLResponse(attachment) {
|
|
103
103
|
duration: attachment.playable_duration_in_ms,
|
104
104
|
videoType: attachment.video_type.toLowerCase()
|
105
105
|
};
|
106
|
-
break;
|
107
106
|
case "MessageFile":
|
108
107
|
return {
|
109
108
|
type: "file",
|
@@ -364,14 +363,14 @@ function formatMessagesGraphQLResponse(data) {
|
|
364
363
|
// Give priority to stickers. They're seen as normal messages but we've
|
365
364
|
// been considering them as attachments.
|
366
365
|
var maybeStickerAttachment;
|
367
|
-
if (d.sticker
|
366
|
+
if (d.sticker) {
|
368
367
|
maybeStickerAttachment = [
|
369
368
|
{
|
370
369
|
type: "sticker",
|
371
370
|
ID: d.sticker.id,
|
372
371
|
url: d.sticker.url,
|
373
372
|
|
374
|
-
packID: d.sticker.pack
|
373
|
+
packID: d.sticker.pack.id,
|
375
374
|
spriteUrl: d.sticker.sprite_image,
|
376
375
|
spriteUrl2x: d.sticker.sprite_image_2x,
|
377
376
|
width: d.sticker.width,
|
@@ -578,15 +577,27 @@ function formatMessagesGraphQLResponse(data) {
|
|
578
577
|
return messages;
|
579
578
|
}
|
580
579
|
|
581
|
-
module.exports = function(defaultFuncs,
|
580
|
+
module.exports = function(defaultFuncs, api, ctx) {
|
582
581
|
return function getThreadHistoryGraphQL(
|
583
582
|
threadID,
|
584
583
|
amount,
|
585
584
|
timestamp,
|
586
585
|
callback
|
587
586
|
) {
|
587
|
+
var resolveFunc = function(){};
|
588
|
+
var rejectFunc = function(){};
|
589
|
+
var returnPromise = new Promise(function (resolve, reject) {
|
590
|
+
resolveFunc = resolve;
|
591
|
+
rejectFunc = reject;
|
592
|
+
});
|
593
|
+
|
588
594
|
if (!callback) {
|
589
|
-
|
595
|
+
callback = function (err, data) {
|
596
|
+
if (err) {
|
597
|
+
return rejectFunc(err);
|
598
|
+
}
|
599
|
+
resolveFunc(data);
|
600
|
+
};
|
590
601
|
}
|
591
602
|
|
592
603
|
// `queries` has to be a string. I couldn't tell from the dev console. This
|
@@ -619,7 +630,7 @@ module.exports = function(defaultFuncs, bot, ctx) {
|
|
619
630
|
// failure one.
|
620
631
|
// @TODO What do we do in this case?
|
621
632
|
if (resData[resData.length - 1].error_results !== 0) {
|
622
|
-
throw new Error("
|
633
|
+
throw new Error("There was an error_result.");
|
623
634
|
}
|
624
635
|
|
625
636
|
callback(null, formatMessagesGraphQLResponse(resData[0]));
|
@@ -628,5 +639,7 @@ module.exports = function(defaultFuncs, bot, ctx) {
|
|
628
639
|
log.error("getThreadHistoryGraphQL", err);
|
629
640
|
return callback(err);
|
630
641
|
});
|
642
|
+
|
643
|
+
return returnPromise;
|
631
644
|
};
|
632
645
|
};
|
@@ -3,8 +3,24 @@
|
|
3
3
|
var utils = require("../utils");
|
4
4
|
var log = require("npmlog");
|
5
5
|
|
6
|
-
module.exports = function(defaultFuncs,
|
6
|
+
module.exports = function(defaultFuncs, api, ctx) {
|
7
7
|
return function getThreadHistory(threadID, amount, timestamp, callback) {
|
8
|
+
var resolveFunc = function(){};
|
9
|
+
var rejectFunc = function(){};
|
10
|
+
var returnPromise = new Promise(function (resolve, reject) {
|
11
|
+
resolveFunc = resolve;
|
12
|
+
rejectFunc = reject;
|
13
|
+
});
|
14
|
+
|
15
|
+
if (!callback) {
|
16
|
+
callback = function (err, friendList) {
|
17
|
+
if (err) {
|
18
|
+
return rejectFunc(err);
|
19
|
+
}
|
20
|
+
resolveFunc(friendList);
|
21
|
+
};
|
22
|
+
}
|
23
|
+
|
8
24
|
if (!callback) {
|
9
25
|
throw { error: "getThreadHistory: need callback" };
|
10
26
|
}
|
@@ -72,5 +88,6 @@ module.exports = function(defaultFuncs, bot, ctx) {
|
|
72
88
|
return callback(err);
|
73
89
|
});
|
74
90
|
});
|
91
|
+
return returnPromise;
|
75
92
|
};
|
76
93
|
};
|
@@ -31,7 +31,12 @@ function formatEventReminders(reminder) {
|
|
31
31
|
}
|
32
32
|
|
33
33
|
function formatThreadGraphQLResponse(data) {
|
34
|
-
|
34
|
+
try{
|
35
|
+
var messageThread = data.o0.data.message_thread;
|
36
|
+
} catch (err){
|
37
|
+
console.error("GetThreadInfoGraphQL", "Can't get this thread info!");
|
38
|
+
return {err: err};
|
39
|
+
}
|
35
40
|
var threadID = messageThread.thread_key.thread_fbid
|
36
41
|
? messageThread.thread_key.thread_fbid
|
37
42
|
: messageThread.thread_key.other_user_id;
|
@@ -57,9 +62,19 @@ function formatThreadGraphQLResponse(data) {
|
|
57
62
|
return {
|
58
63
|
threadID: threadID,
|
59
64
|
threadName: messageThread.name,
|
60
|
-
participantIDs: messageThread.all_participants.
|
61
|
-
|
62
|
-
|
65
|
+
participantIDs: messageThread.all_participants.edges.map(d => d.node.messaging_actor.id),
|
66
|
+
userInfo: messageThread.all_participants.edges.map(d => ({
|
67
|
+
id: d.node.messaging_actor.id,
|
68
|
+
name: d.node.messaging_actor.name,
|
69
|
+
firstName: d.node.messaging_actor.short_name,
|
70
|
+
vanity: d.node.messaging_actor.username,
|
71
|
+
thumbSrc: d.node.messaging_actor.big_image_src.uri,
|
72
|
+
profileUrl: d.node.messaging_actor.big_image_src.uri,
|
73
|
+
gender: d.node.messaging_actor.gender,
|
74
|
+
type: d.node.messaging_actor.__typename,
|
75
|
+
isFriend: d.node.messaging_actor.is_viewer_friend,
|
76
|
+
isBirthday: !!d.node.messaging_actor.is_birthday //not sure?
|
77
|
+
})),
|
63
78
|
unreadCount: messageThread.unread_count,
|
64
79
|
messageCount: messageThread.messages_count,
|
65
80
|
timestamp: messageThread.updated_time_precise,
|
@@ -92,9 +107,15 @@ function formatThreadGraphQLResponse(data) {
|
|
92
107
|
)
|
93
108
|
: {},
|
94
109
|
adminIDs: messageThread.thread_admins,
|
110
|
+
approvalMode: Boolean(messageThread.approval_mode),
|
111
|
+
approvalQueue: messageThread.group_approval_queue.nodes.map(a => ({
|
112
|
+
inviterID: a.inviter.id,
|
113
|
+
requesterID: a.requester.id,
|
114
|
+
timestamp: a.request_timestamp,
|
115
|
+
request_source: a.request_source // @Undocumented
|
116
|
+
})),
|
95
117
|
|
96
118
|
// @Undocumented
|
97
|
-
topEmojis: messageThread.top_emojis,
|
98
119
|
reactionsMuteMode: messageThread.reactions_mute_mode.toLowerCase(),
|
99
120
|
mentionsMuteMode: messageThread.mentions_mute_mode.toLowerCase(),
|
100
121
|
isPinProtected: messageThread.is_pin_protected,
|
@@ -122,10 +143,22 @@ function formatThreadGraphQLResponse(data) {
|
|
122
143
|
};
|
123
144
|
}
|
124
145
|
|
125
|
-
module.exports = function(defaultFuncs,
|
146
|
+
module.exports = function(defaultFuncs, api, ctx) {
|
126
147
|
return function getThreadInfoGraphQL(threadID, callback) {
|
127
|
-
|
128
|
-
|
148
|
+
var resolveFunc = function(){};
|
149
|
+
var rejectFunc = function(){};
|
150
|
+
var returnPromise = new Promise(function (resolve, reject) {
|
151
|
+
resolveFunc = resolve;
|
152
|
+
rejectFunc = reject;
|
153
|
+
});
|
154
|
+
|
155
|
+
if (utils.getType(callback) != "Function" && utils.getType(callback) != "AsyncFunction") {
|
156
|
+
callback = function (err, data) {
|
157
|
+
if (err) {
|
158
|
+
return rejectFunc(err);
|
159
|
+
}
|
160
|
+
resolveFunc(data);
|
161
|
+
};
|
129
162
|
}
|
130
163
|
|
131
164
|
// `queries` has to be a string. I couldn't tell from the dev console. This
|
@@ -133,17 +166,18 @@ module.exports = function(defaultFuncs, bot, ctx) {
|
|
133
166
|
var form = {
|
134
167
|
queries: JSON.stringify({
|
135
168
|
o0: {
|
136
|
-
// This doc_id is valid as of
|
137
|
-
doc_id: "
|
169
|
+
// This doc_id is valid as of July 20th, 2020
|
170
|
+
doc_id: "3449967031715030",
|
138
171
|
query_params: {
|
139
172
|
id: threadID,
|
140
173
|
message_limit: 0,
|
141
|
-
load_messages:
|
174
|
+
load_messages: false,
|
142
175
|
load_read_receipts: false,
|
143
176
|
before: null
|
144
177
|
}
|
145
178
|
}
|
146
|
-
})
|
179
|
+
}),
|
180
|
+
batch_name: "MessengerGraphQLThreadFetcher"
|
147
181
|
};
|
148
182
|
|
149
183
|
defaultFuncs
|
@@ -157,7 +191,7 @@ module.exports = function(defaultFuncs, bot, ctx) {
|
|
157
191
|
// failure one.
|
158
192
|
// @TODO What do we do in this case?
|
159
193
|
if (resData[resData.length - 1].error_results !== 0) {
|
160
|
-
|
194
|
+
console.error("GetThreadInfo", "Well darn there was an error_result");
|
161
195
|
}
|
162
196
|
|
163
197
|
callback(null, formatThreadGraphQLResponse(resData[0]));
|
@@ -166,5 +200,7 @@ module.exports = function(defaultFuncs, bot, ctx) {
|
|
166
200
|
log.error("getThreadInfoGraphQL", err);
|
167
201
|
return callback(err);
|
168
202
|
});
|
203
|
+
|
204
|
+
return returnPromise;
|
169
205
|
};
|
170
206
|
};
|
@@ -3,9 +3,23 @@
|
|
3
3
|
var utils = require("../utils");
|
4
4
|
var log = require("npmlog");
|
5
5
|
|
6
|
-
module.exports = function(defaultFuncs,
|
6
|
+
module.exports = function(defaultFuncs, api, ctx) {
|
7
7
|
return function getThreadInfo(threadID, callback) {
|
8
|
-
|
8
|
+
var resolveFunc = function(){};
|
9
|
+
var rejectFunc = function(){};
|
10
|
+
var returnPromise = new Promise(function (resolve, reject) {
|
11
|
+
resolveFunc = resolve;
|
12
|
+
rejectFunc = reject;
|
13
|
+
});
|
14
|
+
|
15
|
+
if (!callback) {
|
16
|
+
callback = function (err, friendList) {
|
17
|
+
if (err) {
|
18
|
+
return rejectFunc(err);
|
19
|
+
}
|
20
|
+
resolveFunc(friendList);
|
21
|
+
};
|
22
|
+
}
|
9
23
|
|
10
24
|
var form = {
|
11
25
|
client: "mercury"
|
@@ -61,5 +75,6 @@ module.exports = function(defaultFuncs, bot, ctx) {
|
|
61
75
|
return callback(err);
|
62
76
|
});
|
63
77
|
});
|
78
|
+
return returnPromise;
|
64
79
|
};
|
65
80
|
};
|
@@ -9,8 +9,8 @@ function createProfileUrl(url, username, id) {
|
|
9
9
|
}
|
10
10
|
|
11
11
|
function formatParticipants(participants) {
|
12
|
-
return participants.
|
13
|
-
p = p.messaging_actor;
|
12
|
+
return participants.edges.map((p)=>{
|
13
|
+
p = p.node.messaging_actor;
|
14
14
|
switch (p["__typename"]) {
|
15
15
|
case "User":
|
16
16
|
return {
|
@@ -66,7 +66,7 @@ function formatParticipants(participants) {
|
|
66
66
|
isMessageBlockedByViewer: p.is_message_blocked_by_viewer, // true/false
|
67
67
|
};
|
68
68
|
default:
|
69
|
-
log.warn("getThreadList", "Found participant with unsupported typename. Please open an issue at https://github.com/Schmavery/
|
69
|
+
log.warn("getThreadList", "Found participant with unsupported typename. Please open an issue at https://github.com/Schmavery/fca-unofficial/issues\n" + JSON.stringify(p, null, 2));
|
70
70
|
return {
|
71
71
|
accountType: p["__typename"],
|
72
72
|
userID: utils.formatID(p.id.toString()),
|
@@ -87,7 +87,8 @@ function formatColor(color) {
|
|
87
87
|
function getThreadName(t) {
|
88
88
|
if (t.name || t.thread_key.thread_fbid) return t.name;
|
89
89
|
|
90
|
-
for (let
|
90
|
+
for (let po of t.all_participants.edges) {
|
91
|
+
let p = po.node;
|
91
92
|
if (p.messaging_actor.id === t.thread_key.other_user_id) return p.messaging_actor.name;
|
92
93
|
}
|
93
94
|
}
|
@@ -141,6 +142,7 @@ function formatThreadList(data) {
|
|
141
142
|
? (t.last_read_receipt.nodes[0]?t.last_read_receipt.nodes[0].timestamp_precise:null)
|
142
143
|
: null, // timestamp in miliseconds
|
143
144
|
cannotReplyReason: t.cannot_reply_reason, // TODO: inspect possible values
|
145
|
+
approvalMode: Boolean(t.approval_mode),
|
144
146
|
|
145
147
|
// @Legacy
|
146
148
|
participantIDs: formatParticipants(t.all_participants).map(participant => participant.userID),
|
@@ -149,7 +151,7 @@ function formatThreadList(data) {
|
|
149
151
|
});
|
150
152
|
}
|
151
153
|
|
152
|
-
module.exports = function(defaultFuncs,
|
154
|
+
module.exports = function(defaultFuncs, api, ctx) {
|
153
155
|
return function getThreadList(limit, timestamp, tags, callback) {
|
154
156
|
if (!callback && (utils.getType(tags) === "Function" || utils.getType(tags) === "AsyncFunction")) {
|
155
157
|
callback = tags;
|
@@ -168,16 +170,29 @@ module.exports = function(defaultFuncs, bot, ctx) {
|
|
168
170
|
if (utils.getType(tags) !== "Array") {
|
169
171
|
throw {error: "getThreadList: tags must be an array"};
|
170
172
|
}
|
173
|
+
|
174
|
+
var resolveFunc = function(){};
|
175
|
+
var rejectFunc = function(){};
|
176
|
+
var returnPromise = new Promise(function (resolve, reject) {
|
177
|
+
resolveFunc = resolve;
|
178
|
+
rejectFunc = reject;
|
179
|
+
});
|
180
|
+
|
171
181
|
if (utils.getType(callback) !== "Function" && utils.getType(callback) !== "AsyncFunction") {
|
172
|
-
|
182
|
+
callback = function (err, data) {
|
183
|
+
if (err) {
|
184
|
+
return rejectFunc(err);
|
185
|
+
}
|
186
|
+
resolveFunc(data);
|
187
|
+
};
|
173
188
|
}
|
174
189
|
|
175
190
|
const form = {
|
176
191
|
"av": ctx.globalOptions.pageID,
|
177
192
|
"queries": JSON.stringify({
|
178
193
|
"o0": {
|
179
|
-
// This doc_id was valid on
|
180
|
-
"doc_id": "
|
194
|
+
// This doc_id was valid on 2020-07-20
|
195
|
+
"doc_id": "3336396659757871",
|
181
196
|
"query_params": {
|
182
197
|
"limit": limit+(timestamp?1:0),
|
183
198
|
"before": timestamp,
|
@@ -186,7 +201,8 @@ module.exports = function(defaultFuncs, bot, ctx) {
|
|
186
201
|
"includeSeqID": false
|
187
202
|
}
|
188
203
|
}
|
189
|
-
})
|
204
|
+
}),
|
205
|
+
"batch_name": "MessengerGraphQLThreadlistFetcher"
|
190
206
|
};
|
191
207
|
|
192
208
|
defaultFuncs
|
@@ -216,5 +232,7 @@ module.exports = function(defaultFuncs, bot, ctx) {
|
|
216
232
|
log.error("getThreadList", err);
|
217
233
|
return callback(err);
|
218
234
|
});
|
235
|
+
|
236
|
+
return returnPromise;
|
219
237
|
};
|
220
238
|
};
|
@@ -3,7 +3,7 @@
|
|
3
3
|
var utils = require("../utils");
|
4
4
|
var log = require("npmlog");
|
5
5
|
|
6
|
-
module.exports = function(defaultFuncs,
|
6
|
+
module.exports = function(defaultFuncs, api, ctx) {
|
7
7
|
return function getThreadList(start, end, type, callback) {
|
8
8
|
if (utils.getType(callback) === "Undefined") {
|
9
9
|
if (utils.getType(end) !== "Number") {
|
@@ -3,10 +3,22 @@
|
|
3
3
|
var utils = require("../utils");
|
4
4
|
var log = require("npmlog");
|
5
5
|
|
6
|
-
module.exports = function(defaultFuncs,
|
6
|
+
module.exports = function(defaultFuncs, api, ctx) {
|
7
7
|
return function getThreadPictures(threadID, offset, limit, callback) {
|
8
|
+
var resolveFunc = function(){};
|
9
|
+
var rejectFunc = function(){};
|
10
|
+
var returnPromise = new Promise(function (resolve, reject) {
|
11
|
+
resolveFunc = resolve;
|
12
|
+
rejectFunc = reject;
|
13
|
+
});
|
14
|
+
|
8
15
|
if (!callback) {
|
9
|
-
|
16
|
+
callback = function (err, friendList) {
|
17
|
+
if (err) {
|
18
|
+
return rejectFunc(err);
|
19
|
+
}
|
20
|
+
resolveFunc(friendList);
|
21
|
+
};
|
10
22
|
}
|
11
23
|
|
12
24
|
var form = {
|
@@ -62,5 +74,6 @@ module.exports = function(defaultFuncs, bot, ctx) {
|
|
62
74
|
log.error("Error in getThreadPictures", err);
|
63
75
|
callback(err);
|
64
76
|
});
|
77
|
+
return returnPromise;
|
65
78
|
};
|
66
79
|
};
|
@@ -17,10 +17,22 @@ function formatData(data) {
|
|
17
17
|
};
|
18
18
|
}
|
19
19
|
|
20
|
-
module.exports = function(defaultFuncs,
|
20
|
+
module.exports = function(defaultFuncs, api, ctx) {
|
21
21
|
return function getUserID(name, callback) {
|
22
|
+
var resolveFunc = function(){};
|
23
|
+
var rejectFunc = function(){};
|
24
|
+
var returnPromise = new Promise(function (resolve, reject) {
|
25
|
+
resolveFunc = resolve;
|
26
|
+
rejectFunc = reject;
|
27
|
+
});
|
28
|
+
|
22
29
|
if (!callback) {
|
23
|
-
|
30
|
+
callback = function (err, friendList) {
|
31
|
+
if (err) {
|
32
|
+
return rejectFunc(err);
|
33
|
+
}
|
34
|
+
resolveFunc(friendList);
|
35
|
+
};
|
24
36
|
}
|
25
37
|
|
26
38
|
var form = {
|
@@ -48,5 +60,7 @@ module.exports = function(defaultFuncs, bot, ctx) {
|
|
48
60
|
log.error("getUserID", err);
|
49
61
|
return callback(err);
|
50
62
|
});
|
63
|
+
|
64
|
+
return returnPromise;
|
51
65
|
};
|
52
66
|
};
|
@@ -7,6 +7,7 @@ function formatData(data) {
|
|
7
7
|
var retObj = {};
|
8
8
|
|
9
9
|
for (var prop in data) {
|
10
|
+
// eslint-disable-next-line no-prototype-builtins
|
10
11
|
if (data.hasOwnProperty(prop)) {
|
11
12
|
var innerObj = data[prop];
|
12
13
|
retObj[prop] = {
|
@@ -26,10 +27,22 @@ function formatData(data) {
|
|
26
27
|
return retObj;
|
27
28
|
}
|
28
29
|
|
29
|
-
module.exports = function(defaultFuncs,
|
30
|
+
module.exports = function(defaultFuncs, api, ctx) {
|
30
31
|
return function getUserInfo(id, callback) {
|
32
|
+
var resolveFunc = function(){};
|
33
|
+
var rejectFunc = function(){};
|
34
|
+
var returnPromise = new Promise(function (resolve, reject) {
|
35
|
+
resolveFunc = resolve;
|
36
|
+
rejectFunc = reject;
|
37
|
+
});
|
38
|
+
|
31
39
|
if (!callback) {
|
32
|
-
|
40
|
+
callback = function (err, friendList) {
|
41
|
+
if (err) {
|
42
|
+
return rejectFunc(err);
|
43
|
+
}
|
44
|
+
resolveFunc(friendList);
|
45
|
+
};
|
33
46
|
}
|
34
47
|
|
35
48
|
if (utils.getType(id) !== "Array") {
|
@@ -53,5 +66,7 @@ module.exports = function(defaultFuncs, bot, ctx) {
|
|
53
66
|
log.error("getUserInfo", err);
|
54
67
|
return callback(err);
|
55
68
|
});
|
69
|
+
|
70
|
+
return returnPromise;
|
56
71
|
};
|
57
72
|
};
|
@@ -0,0 +1,61 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var utils = require("../utils");
|
4
|
+
var log = require("npmlog");
|
5
|
+
|
6
|
+
module.exports = function(defaultFuncs, api, ctx) {
|
7
|
+
return function handleFriendRequest(userID, accept, callback) {
|
8
|
+
if (utils.getType(accept) !== "Boolean") {
|
9
|
+
throw {
|
10
|
+
error: "Please pass a boolean as a second argument."
|
11
|
+
};
|
12
|
+
}
|
13
|
+
|
14
|
+
var resolveFunc = function(){};
|
15
|
+
var rejectFunc = function(){};
|
16
|
+
var returnPromise = new Promise(function (resolve, reject) {
|
17
|
+
resolveFunc = resolve;
|
18
|
+
rejectFunc = reject;
|
19
|
+
});
|
20
|
+
|
21
|
+
if (!callback) {
|
22
|
+
callback = function (err, friendList) {
|
23
|
+
if (err) {
|
24
|
+
return rejectFunc(err);
|
25
|
+
}
|
26
|
+
resolveFunc(friendList);
|
27
|
+
};
|
28
|
+
}
|
29
|
+
|
30
|
+
var form = {
|
31
|
+
viewer_id: ctx.userID,
|
32
|
+
"frefs[0]": "jwl",
|
33
|
+
floc: "friend_center_requests",
|
34
|
+
ref: "/reqs.php",
|
35
|
+
action: (accept ? "confirm" : "reject")
|
36
|
+
};
|
37
|
+
|
38
|
+
defaultFuncs
|
39
|
+
.post(
|
40
|
+
"https://www.facebook.com/requests/friends/ajax/",
|
41
|
+
ctx.jar,
|
42
|
+
form
|
43
|
+
)
|
44
|
+
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
45
|
+
.then(function(resData) {
|
46
|
+
if (resData.payload.err) {
|
47
|
+
throw {
|
48
|
+
err: resData.payload.err
|
49
|
+
};
|
50
|
+
}
|
51
|
+
|
52
|
+
return callback();
|
53
|
+
})
|
54
|
+
.catch(function(err) {
|
55
|
+
log.error("handleFriendRequest", err);
|
56
|
+
return callback(err);
|
57
|
+
});
|
58
|
+
|
59
|
+
return returnPromise;
|
60
|
+
};
|
61
|
+
};
|
@@ -3,7 +3,7 @@
|
|
3
3
|
var utils = require("../utils");
|
4
4
|
var log = require("npmlog");
|
5
5
|
|
6
|
-
module.exports = function(defaultFuncs,
|
6
|
+
module.exports = function(defaultFuncs, api, ctx) {
|
7
7
|
return function handleMessageRequest(threadID, accept, callback) {
|
8
8
|
if (utils.getType(accept) !== "Boolean") {
|
9
9
|
throw {
|
@@ -11,8 +11,20 @@ module.exports = function(defaultFuncs, bot, ctx) {
|
|
11
11
|
};
|
12
12
|
}
|
13
13
|
|
14
|
+
var resolveFunc = function(){};
|
15
|
+
var rejectFunc = function(){};
|
16
|
+
var returnPromise = new Promise(function (resolve, reject) {
|
17
|
+
resolveFunc = resolve;
|
18
|
+
rejectFunc = reject;
|
19
|
+
});
|
20
|
+
|
14
21
|
if (!callback) {
|
15
|
-
callback = function() {
|
22
|
+
callback = function (err, friendList) {
|
23
|
+
if (err) {
|
24
|
+
return rejectFunc(err);
|
25
|
+
}
|
26
|
+
resolveFunc(friendList);
|
27
|
+
};
|
16
28
|
}
|
17
29
|
|
18
30
|
var form = {
|
@@ -47,5 +59,7 @@ module.exports = function(defaultFuncs, bot, ctx) {
|
|
47
59
|
log.error("handleMessageRequest", err);
|
48
60
|
return callback(err);
|
49
61
|
});
|
62
|
+
|
63
|
+
return returnPromise;
|
50
64
|
};
|
51
65
|
};
|
package/alice/httpGet.js
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var utils = require("../utils");
|
4
|
+
var log = require("npmlog");
|
5
|
+
|
6
|
+
module.exports = function(defaultFuncs, api, ctx) {
|
7
|
+
return function httpGet(url, form, callback, notAPI) {
|
8
|
+
var resolveFunc = function(){};
|
9
|
+
var rejectFunc = function(){};
|
10
|
+
|
11
|
+
var returnPromise = new Promise(function (resolve, reject) {
|
12
|
+
resolveFunc = resolve;
|
13
|
+
rejectFunc = reject;
|
14
|
+
});
|
15
|
+
|
16
|
+
if (!callback && (utils.getType(form) == "Function" || utils.getType(form) == "AsyncFunction")) {
|
17
|
+
callback = form;
|
18
|
+
form = {};
|
19
|
+
}
|
20
|
+
|
21
|
+
form = form || {};
|
22
|
+
|
23
|
+
callback = callback || function(err, data) {
|
24
|
+
if (err) return rejectFunc(err);
|
25
|
+
resolveFunc(data);
|
26
|
+
};
|
27
|
+
|
28
|
+
if (notAPI) {
|
29
|
+
utils
|
30
|
+
.get(url, ctx.jar, form, ctx.globalOptions)
|
31
|
+
.then(function(resData) {
|
32
|
+
callback(null, resData.body.toString());
|
33
|
+
})
|
34
|
+
.catch(function(err) {
|
35
|
+
log.error("httpGet", err);
|
36
|
+
return callback(err);
|
37
|
+
});
|
38
|
+
} else {
|
39
|
+
defaultFuncs
|
40
|
+
.get(url, ctx.jar, form)
|
41
|
+
.then(function(resData) {
|
42
|
+
callback(null, resData.body.toString());
|
43
|
+
})
|
44
|
+
.catch(function(err) {
|
45
|
+
log.error("httpGet", err);
|
46
|
+
return callback(err);
|
47
|
+
});
|
48
|
+
}
|
49
|
+
|
50
|
+
return returnPromise;
|
51
|
+
};
|
52
|
+
};
|