alicezetion 1.0.0 → 1.0.2
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/.cache/replit/nix/env.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} +18 -3
- 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 +27 -18
- package/utils.js +137 -61
- package/.cache/replit/modules.stamp +0 -0
- 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/alice/logout.js
CHANGED
@@ -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 logout(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
|
pmid: "0"
|
@@ -55,5 +69,7 @@ module.exports = function(defaultFuncs, bot, ctx) {
|
|
55
69
|
log.error("logout", err);
|
56
70
|
return callback(err);
|
57
71
|
});
|
72
|
+
|
73
|
+
return returnPromise;
|
58
74
|
};
|
59
75
|
};
|
@@ -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 markAsDelivered(threadID, messageID, 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
|
-
callback = function () {
|
16
|
+
callback = function (err, friendList) {
|
17
|
+
if (err) {
|
18
|
+
return rejectFunc(err);
|
19
|
+
}
|
20
|
+
resolveFunc(friendList);
|
21
|
+
};
|
10
22
|
}
|
11
23
|
|
12
24
|
if (!threadID || !messageID) {
|
@@ -35,7 +47,12 @@ module.exports = function (defaultFuncs, bot, ctx) {
|
|
35
47
|
})
|
36
48
|
.catch(function (err) {
|
37
49
|
log.error("markAsDelivered", err);
|
50
|
+
if (utils.getType(err) == "Object" && err.error === "Not logged in.") {
|
51
|
+
ctx.loggedIn = false;
|
52
|
+
}
|
38
53
|
return callback(err);
|
39
54
|
});
|
55
|
+
|
56
|
+
return returnPromise;
|
40
57
|
};
|
41
58
|
};
|
@@ -0,0 +1,80 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var utils = require("../utils");
|
4
|
+
var log = require("npmlog");
|
5
|
+
|
6
|
+
module.exports = function (defaultFuncs, api, ctx) {
|
7
|
+
return async function markAsRead(threadID, read, callback) {
|
8
|
+
if (utils.getType(read) === 'Function' || utils.getType(read) === 'AsyncFunction') {
|
9
|
+
callback = read;
|
10
|
+
read = true;
|
11
|
+
}
|
12
|
+
if (read == undefined) {
|
13
|
+
read = true;
|
14
|
+
}
|
15
|
+
|
16
|
+
if (!callback) {
|
17
|
+
callback = () => { };
|
18
|
+
}
|
19
|
+
|
20
|
+
var form = {};
|
21
|
+
|
22
|
+
if (typeof ctx.globalOptions.pageID !== 'undefined') {
|
23
|
+
form["source"] = "PagesManagerMessagesInterface";
|
24
|
+
form["request_user_id"] = ctx.globalOptions.pageID;
|
25
|
+
form["ids[" + threadID + "]"] = read;
|
26
|
+
form["watermarkTimestamp"] = new Date().getTime();
|
27
|
+
form["shouldSendReadReceipt"] = true;
|
28
|
+
form["commerce_last_message_type"] = "";
|
29
|
+
//form["titanOriginatedThreadId"] = utils.generateThreadingID(ctx.clientID);
|
30
|
+
|
31
|
+
let resData;
|
32
|
+
try {
|
33
|
+
resData = await (
|
34
|
+
defaultFuncs
|
35
|
+
.post(
|
36
|
+
"https://www.facebook.com/ajax/mercury/change_read_status.php",
|
37
|
+
ctx.jar,
|
38
|
+
form
|
39
|
+
)
|
40
|
+
.then(utils.saveCookies(ctx.jar))
|
41
|
+
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
42
|
+
);
|
43
|
+
} catch (e) {
|
44
|
+
callback(e);
|
45
|
+
return e;
|
46
|
+
}
|
47
|
+
|
48
|
+
if (resData.error) {
|
49
|
+
let err = resData.error;
|
50
|
+
log.error("markAsRead", err);
|
51
|
+
if (utils.getType(err) == "Object" && err.error === "Not logged in.") {
|
52
|
+
ctx.loggedIn = false;
|
53
|
+
}
|
54
|
+
callback(err);
|
55
|
+
return err;
|
56
|
+
}
|
57
|
+
|
58
|
+
callback();
|
59
|
+
return null;
|
60
|
+
} else {
|
61
|
+
try {
|
62
|
+
if (ctx.mqttClient) {
|
63
|
+
let err = await new Promise(r => ctx.mqttClient.publish("/mark_thread", JSON.stringify({
|
64
|
+
threadID,
|
65
|
+
mark: "read",
|
66
|
+
state: read
|
67
|
+
}), { qos: 1, retain: false }, r));
|
68
|
+
if (err) throw err;
|
69
|
+
} else {
|
70
|
+
throw {
|
71
|
+
error: "You can only use this function after you start listening."
|
72
|
+
};
|
73
|
+
}
|
74
|
+
} catch (e) {
|
75
|
+
callback(e);
|
76
|
+
return e;
|
77
|
+
}
|
78
|
+
}
|
79
|
+
};
|
80
|
+
};
|
@@ -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 markAsReadAll(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
|
-
callback = function() {
|
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 = {
|
@@ -32,5 +44,7 @@ module.exports = function(defaultFuncs, bot, ctx) {
|
|
32
44
|
log.error("markAsReadAll", err);
|
33
45
|
return callback(err);
|
34
46
|
});
|
47
|
+
|
48
|
+
return returnPromise;
|
35
49
|
};
|
36
50
|
};
|
@@ -0,0 +1,59 @@
|
|
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 markAsRead(seen_timestamp, callback) {
|
8
|
+
if (utils.getType(seen_timestamp) == "Function" ||
|
9
|
+
utils.getType(seen_timestamp) == "AsyncFunction") {
|
10
|
+
callback = seen_timestamp;
|
11
|
+
seen_timestamp = Date.now();
|
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
|
+
seen_timestamp: seen_timestamp
|
32
|
+
};
|
33
|
+
|
34
|
+
defaultFuncs
|
35
|
+
.post(
|
36
|
+
"https://www.facebook.com/ajax/mercury/mark_seen.php",
|
37
|
+
ctx.jar,
|
38
|
+
form
|
39
|
+
)
|
40
|
+
.then(utils.saveCookies(ctx.jar))
|
41
|
+
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
42
|
+
.then(function (resData) {
|
43
|
+
if (resData.error) {
|
44
|
+
throw resData;
|
45
|
+
}
|
46
|
+
|
47
|
+
return callback();
|
48
|
+
})
|
49
|
+
.catch(function (err) {
|
50
|
+
log.error("markAsSeen", err);
|
51
|
+
if (utils.getType(err) == "Object" && err.error === "Not logged in.") {
|
52
|
+
ctx.loggedIn = false;
|
53
|
+
}
|
54
|
+
return callback(err);
|
55
|
+
});
|
56
|
+
|
57
|
+
return returnPromise;
|
58
|
+
};
|
59
|
+
};
|
@@ -3,11 +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
|
// muteSecond: -1=permanent mute, 0=unmute, 60=one minute, 3600=one hour, etc.
|
8
8
|
return function muteThread(threadID, muteSeconds, callback) {
|
9
|
+
var resolveFunc = function(){};
|
10
|
+
var rejectFunc = function(){};
|
11
|
+
var returnPromise = new Promise(function (resolve, reject) {
|
12
|
+
resolveFunc = resolve;
|
13
|
+
rejectFunc = reject;
|
14
|
+
});
|
15
|
+
|
9
16
|
if (!callback) {
|
10
|
-
callback = function() {
|
17
|
+
callback = function (err, friendList) {
|
18
|
+
if (err) {
|
19
|
+
return rejectFunc(err);
|
20
|
+
}
|
21
|
+
resolveFunc(friendList);
|
22
|
+
};
|
11
23
|
}
|
12
24
|
|
13
25
|
var form = {
|
@@ -34,5 +46,7 @@ module.exports = function(defaultFuncs, bot, ctx) {
|
|
34
46
|
log.error("muteThread", err);
|
35
47
|
return callback(err);
|
36
48
|
});
|
49
|
+
|
50
|
+
return returnPromise;
|
37
51
|
};
|
38
52
|
};
|
@@ -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 removeUserFromGroup(userID, threadID, callback) {
|
8
8
|
if (
|
9
9
|
!callback &&
|
@@ -35,8 +35,20 @@ module.exports = function(defaultFuncs, bot, ctx) {
|
|
35
35
|
};
|
36
36
|
}
|
37
37
|
|
38
|
+
var resolveFunc = function(){};
|
39
|
+
var rejectFunc = function(){};
|
40
|
+
var returnPromise = new Promise(function (resolve, reject) {
|
41
|
+
resolveFunc = resolve;
|
42
|
+
rejectFunc = reject;
|
43
|
+
});
|
44
|
+
|
38
45
|
if (!callback) {
|
39
|
-
callback = function() {
|
46
|
+
callback = function (err, friendList) {
|
47
|
+
if (err) {
|
48
|
+
return rejectFunc(err);
|
49
|
+
}
|
50
|
+
resolveFunc(friendList);
|
51
|
+
};
|
40
52
|
}
|
41
53
|
|
42
54
|
var form = {
|
@@ -61,5 +73,7 @@ module.exports = function(defaultFuncs, bot, ctx) {
|
|
61
73
|
log.error("removeUserFromGroup", err);
|
62
74
|
return callback(err);
|
63
75
|
});
|
76
|
+
|
77
|
+
return returnPromise;
|
64
78
|
};
|
65
79
|
};
|
@@ -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 resolvePhotoUrl(photoID, 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
|
defaultFuncs
|
@@ -27,5 +39,7 @@ module.exports = function(defaultFuncs, bot, ctx) {
|
|
27
39
|
log.error("resolvePhotoUrl", err);
|
28
40
|
return callback(err);
|
29
41
|
});
|
42
|
+
|
43
|
+
return returnPromise;
|
30
44
|
};
|
31
45
|
};
|
@@ -2,10 +2,22 @@
|
|
2
2
|
|
3
3
|
var utils = require("../utils");
|
4
4
|
|
5
|
-
module.exports = function(defaultFuncs,
|
5
|
+
module.exports = function(defaultFuncs, api, ctx) {
|
6
6
|
return function searchForThread(name, callback) {
|
7
|
+
var resolveFunc = function(){};
|
8
|
+
var rejectFunc = function(){};
|
9
|
+
var returnPromise = new Promise(function (resolve, reject) {
|
10
|
+
resolveFunc = resolve;
|
11
|
+
rejectFunc = reject;
|
12
|
+
});
|
13
|
+
|
7
14
|
if (!callback) {
|
8
|
-
|
15
|
+
callback = function (err, friendList) {
|
16
|
+
if (err) {
|
17
|
+
return rejectFunc(err);
|
18
|
+
}
|
19
|
+
resolveFunc(friendList);
|
20
|
+
};
|
9
21
|
}
|
10
22
|
|
11
23
|
var tmpForm = {
|
@@ -35,5 +47,7 @@ module.exports = function(defaultFuncs, bot, ctx) {
|
|
35
47
|
resData.payload.mercury_payload.threads.map(utils.formatThread)
|
36
48
|
);
|
37
49
|
});
|
50
|
+
|
51
|
+
return returnPromise;
|
38
52
|
};
|
39
53
|
};
|
@@ -11,10 +11,11 @@ var allowedProperties = {
|
|
11
11
|
emoji: true,
|
12
12
|
emojiSize: true,
|
13
13
|
body: true,
|
14
|
-
mentions: true
|
14
|
+
mentions: true,
|
15
|
+
location: true,
|
15
16
|
};
|
16
17
|
|
17
|
-
module.exports = function(defaultFuncs,
|
18
|
+
module.exports = function (defaultFuncs, api, ctx) {
|
18
19
|
function uploadAttachment(attachments, callback) {
|
19
20
|
var uploads = [];
|
20
21
|
|
@@ -43,7 +44,7 @@ module.exports = function(defaultFuncs, bot, ctx) {
|
|
43
44
|
{}
|
44
45
|
)
|
45
46
|
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
46
|
-
.then(function(resData) {
|
47
|
+
.then(function (resData) {
|
47
48
|
if (resData.error) {
|
48
49
|
throw resData;
|
49
50
|
}
|
@@ -58,10 +59,10 @@ module.exports = function(defaultFuncs, bot, ctx) {
|
|
58
59
|
// resolve all promises
|
59
60
|
bluebird
|
60
61
|
.all(uploads)
|
61
|
-
.then(function(resData) {
|
62
|
+
.then(function (resData) {
|
62
63
|
callback(null, resData);
|
63
64
|
})
|
64
|
-
.catch(function(err) {
|
65
|
+
.catch(function (err) {
|
65
66
|
log.error("uploadAttachment", err);
|
66
67
|
return callback(err);
|
67
68
|
});
|
@@ -81,7 +82,7 @@ module.exports = function(defaultFuncs, bot, ctx) {
|
|
81
82
|
form
|
82
83
|
)
|
83
84
|
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
84
|
-
.then(function(resData) {
|
85
|
+
.then(function (resData) {
|
85
86
|
if (resData.error) {
|
86
87
|
return callback(resData);
|
87
88
|
}
|
@@ -92,7 +93,7 @@ module.exports = function(defaultFuncs, bot, ctx) {
|
|
92
93
|
|
93
94
|
callback(null, resData.payload.share_data.share_params);
|
94
95
|
})
|
95
|
-
.catch(function(err) {
|
96
|
+
.catch(function (err) {
|
96
97
|
log.error("getUrl", err);
|
97
98
|
return callback(err);
|
98
99
|
});
|
@@ -138,7 +139,7 @@ module.exports = function(defaultFuncs, bot, ctx) {
|
|
138
139
|
defaultFuncs
|
139
140
|
.post("https://www.facebook.com/messaging/send/", ctx.jar, form)
|
140
141
|
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
141
|
-
.then(function(resData) {
|
142
|
+
.then(function (resData) {
|
142
143
|
if (!resData) {
|
143
144
|
return callback({ error: "Send message failed." });
|
144
145
|
}
|
@@ -148,13 +149,13 @@ module.exports = function(defaultFuncs, bot, ctx) {
|
|
148
149
|
log.warn(
|
149
150
|
"sendMessage",
|
150
151
|
"Got error 1545012. This might mean that you're not part of the conversation " +
|
151
|
-
|
152
|
+
threadID
|
152
153
|
);
|
153
154
|
}
|
154
155
|
return callback(resData);
|
155
156
|
}
|
156
157
|
|
157
|
-
var messageInfo = resData.payload.actions.reduce(function(p, v) {
|
158
|
+
var messageInfo = resData.payload.actions.reduce(function (p, v) {
|
158
159
|
return (
|
159
160
|
{
|
160
161
|
threadID: v.thread_fbid,
|
@@ -166,33 +167,45 @@ module.exports = function(defaultFuncs, bot, ctx) {
|
|
166
167
|
|
167
168
|
return callback(null, messageInfo);
|
168
169
|
})
|
169
|
-
.catch(function(err) {
|
170
|
+
.catch(function (err) {
|
170
171
|
log.error("sendMessage", err);
|
172
|
+
if (utils.getType(err) == "Object" && err.error === "Not logged in.") {
|
173
|
+
ctx.loggedIn = false;
|
174
|
+
}
|
171
175
|
return callback(err);
|
172
176
|
});
|
173
177
|
}
|
174
178
|
|
175
|
-
function send(form, threadID, messageAndOTID, callback) {
|
179
|
+
function send(form, threadID, messageAndOTID, callback, isGroup) {
|
176
180
|
// We're doing a query to this to check if the given id is the id of
|
177
181
|
// a user or of a group chat. The form will be different depending
|
178
182
|
// on that.
|
179
183
|
if (utils.getType(threadID) === "Array") {
|
180
184
|
sendContent(form, threadID, false, messageAndOTID, callback);
|
181
185
|
} else {
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
186
|
+
if (utils.getType(isGroup) != "Boolean") {
|
187
|
+
api.getUserInfo(threadID, function (err, res) {
|
188
|
+
if (err) {
|
189
|
+
return callback(err);
|
190
|
+
}
|
191
|
+
sendContent(
|
192
|
+
form,
|
193
|
+
threadID,
|
194
|
+
Object.keys(res).length > 0,
|
195
|
+
messageAndOTID,
|
196
|
+
callback
|
197
|
+
);
|
198
|
+
});
|
199
|
+
} else {
|
200
|
+
sendContent(form, threadID, !isGroup, messageAndOTID, callback);
|
201
|
+
}
|
189
202
|
}
|
190
203
|
}
|
191
204
|
|
192
205
|
function handleUrl(msg, form, callback, cb) {
|
193
206
|
if (msg.url) {
|
194
207
|
form["shareable_attachment[share_type]"] = "100";
|
195
|
-
getUrl(msg.url, function(err, params) {
|
208
|
+
getUrl(msg.url, function (err, params) {
|
196
209
|
if (err) {
|
197
210
|
return callback(err);
|
198
211
|
}
|
@@ -205,6 +218,20 @@ module.exports = function(defaultFuncs, bot, ctx) {
|
|
205
218
|
}
|
206
219
|
}
|
207
220
|
|
221
|
+
function handleLocation(msg, form, callback, cb) {
|
222
|
+
if (msg.location) {
|
223
|
+
if (msg.location.latitude == null || msg.location.longitude == null) {
|
224
|
+
return callback({ error: "location property needs both latitude and longitude" });
|
225
|
+
}
|
226
|
+
|
227
|
+
form["location_attachment[coordinates][latitude]"] = msg.location.latitude;
|
228
|
+
form["location_attachment[coordinates][longitude]"] = msg.location.longitude;
|
229
|
+
form["location_attachment[is_current_location]"] = !!msg.location.current;
|
230
|
+
}
|
231
|
+
|
232
|
+
cb();
|
233
|
+
}
|
234
|
+
|
208
235
|
function handleSticker(msg, form, callback, cb) {
|
209
236
|
if (msg.sticker) {
|
210
237
|
form["sticker_id"] = msg.sticker;
|
@@ -248,12 +275,12 @@ module.exports = function(defaultFuncs, bot, ctx) {
|
|
248
275
|
msg.attachment = [msg.attachment];
|
249
276
|
}
|
250
277
|
|
251
|
-
uploadAttachment(msg.attachment, function(err, files) {
|
278
|
+
uploadAttachment(msg.attachment, function (err, files) {
|
252
279
|
if (err) {
|
253
280
|
return callback(err);
|
254
281
|
}
|
255
282
|
|
256
|
-
files.forEach(function(file) {
|
283
|
+
files.forEach(function (file) {
|
257
284
|
var key = Object.keys(file);
|
258
285
|
var type = key[0]; // image_id, file_id, etc
|
259
286
|
form["" + type + "s"].push(file[type]); // push the id
|
@@ -298,24 +325,37 @@ module.exports = function(defaultFuncs, bot, ctx) {
|
|
298
325
|
cb();
|
299
326
|
}
|
300
327
|
|
301
|
-
return function sendMessage(msg, threadID, callback, replyToMessage) {
|
328
|
+
return function sendMessage(msg, threadID, callback, replyToMessage, isGroup) {
|
329
|
+
typeof isGroup == "undefined" ? isGroup = null : "";
|
302
330
|
if (
|
303
331
|
!callback &&
|
304
332
|
(utils.getType(threadID) === "Function" ||
|
305
333
|
utils.getType(threadID) === "AsyncFunction")
|
306
334
|
) {
|
307
|
-
return
|
335
|
+
return threadID({ error: "Pass a threadID as a second argument." });
|
308
336
|
}
|
309
337
|
if (
|
310
338
|
!replyToMessage &&
|
311
339
|
utils.getType(callback) === "String"
|
312
340
|
) {
|
313
341
|
replyToMessage = callback;
|
314
|
-
callback = function() {};
|
342
|
+
callback = function () { };
|
315
343
|
}
|
316
|
-
|
344
|
+
|
345
|
+
var resolveFunc = function(){};
|
346
|
+
var rejectFunc = function(){};
|
347
|
+
var returnPromise = new Promise(function (resolve, reject) {
|
348
|
+
resolveFunc = resolve;
|
349
|
+
rejectFunc = reject;
|
350
|
+
});
|
351
|
+
|
317
352
|
if (!callback) {
|
318
|
-
callback = function() {
|
353
|
+
callback = function (err, friendList) {
|
354
|
+
if (err) {
|
355
|
+
return rejectFunc(err);
|
356
|
+
}
|
357
|
+
resolveFunc(friendList);
|
358
|
+
};
|
319
359
|
}
|
320
360
|
|
321
361
|
var msgType = utils.getType(msg);
|
@@ -342,7 +382,7 @@ module.exports = function(defaultFuncs, bot, ctx) {
|
|
342
382
|
"."
|
343
383
|
});
|
344
384
|
}
|
345
|
-
|
385
|
+
|
346
386
|
if (replyToMessage && messageIDType !== 'String') {
|
347
387
|
return callback({
|
348
388
|
error:
|
@@ -400,16 +440,20 @@ module.exports = function(defaultFuncs, bot, ctx) {
|
|
400
440
|
replied_to_message_id: replyToMessage
|
401
441
|
};
|
402
442
|
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
443
|
+
handleLocation(msg, form, callback, () =>
|
444
|
+
handleSticker(msg, form, callback, () =>
|
445
|
+
handleAttachment(msg, form, callback, () =>
|
446
|
+
handleUrl(msg, form, callback, () =>
|
447
|
+
handleEmoji(msg, form, callback, () =>
|
448
|
+
handleMention(msg, form, callback, () =>
|
449
|
+
send(form, threadID, messageAndOTID, callback, isGroup)
|
450
|
+
)
|
409
451
|
)
|
410
452
|
)
|
411
453
|
)
|
412
454
|
)
|
413
455
|
);
|
456
|
+
|
457
|
+
return returnPromise;
|
414
458
|
};
|
415
459
|
};
|