@cexy/hoonfca 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/.travis.yml +6 -0
- package/LICENSE-MIT +21 -0
- package/index.d.ts +620 -0
- package/index.js +745 -433
- package/package.json +45 -6
- package/src/addExternalModule.js +14 -16
- package/src/addUserToGroup.js +45 -30
- package/src/changeAdminStatus.js +39 -42
- package/src/changeApprovalMode.js +79 -0
- package/src/changeArchivedStatus.js +19 -15
- package/src/changeBio.js +18 -16
- package/src/changeBlockedStatus.js +14 -12
- package/src/changeBlockedStatusMqtt.js +38 -17
- package/src/changeGroupImage.js +100 -77
- package/src/changeNickname.js +12 -11
- package/src/changeThreadColor.js +25 -16
- package/src/changeThreadEmoji.js +11 -10
- package/src/createNewGroup.js +21 -14
- package/src/createPoll.js +87 -21
- package/src/deleteMessage.js +18 -17
- package/src/deleteThread.js +18 -17
- package/src/editMessage.js +28 -31
- package/src/forwardAttachment.js +22 -19
- package/src/forwardMessage.js +63 -0
- package/src/getCurrentUserID.js +4 -2
- package/src/getEmojiUrl.js +20 -9
- package/src/getFriendsList.js +21 -18
- package/src/getGroupsList.js +83 -0
- package/src/getMarketplace.js +84 -0
- package/src/getNotifications.js +86 -0
- package/src/getPagesList.js +83 -0
- package/src/getStories.js +88 -0
- package/src/getThreadHistory.js +277 -126
- package/src/getThreadInfo.js +143 -115
- package/src/getThreadList.js +216 -143
- package/src/getThreadPictures.js +26 -32
- package/src/getUserID.js +13 -14
- package/src/getUserInfo.js +107 -68
- package/src/handleFriendRequest.js +16 -15
- package/src/handleMessageRequest.js +15 -15
- package/src/httpGet.js +36 -31
- package/src/httpPost.js +36 -31
- package/src/listenMqtt.js +705 -370
- package/src/logout.js +26 -28
- package/src/markAsDelivered.js +22 -17
- package/src/markAsRead.js +63 -49
- package/src/markAsReadAll.js +17 -13
- package/src/markAsSeen.js +23 -19
- package/src/muteThread.js +17 -14
- package/src/pinMessage.js +23 -22
- package/src/removeUserFromGroup.js +42 -22
- package/src/resolvePhotoUrl.js +15 -17
- package/src/searchForThread.js +18 -20
- package/src/searchUsers.js +89 -0
- package/src/sendComment.js +161 -0
- package/src/sendMessage.js +65 -52
- package/src/sendTypingIndicator.js +173 -48
- package/src/setBio.js +86 -0
- package/src/setMessageReaction.js +76 -16
- package/src/setPostReaction.js +29 -61
- package/src/setTheme.js +313 -0
- package/src/setTitle.js +27 -37
- package/src/shareContact.js +34 -82
- package/src/shareLink.js +56 -99
- package/src/threadColors.js +35 -97
- package/src/unfriend.js +15 -20
- package/src/unsendMessage.js +71 -18
- package/utils.js +1000 -472
- package/README.md +0 -83
- package/replit.nix +0 -3
- package/src/changeAvatar.js +0 -89
- package/src/changeCover.js +0 -92
- package/src/changeName.js +0 -106
- package/src/changeUsername.js +0 -80
- package/src/createCommentPost.js +0 -196
- package/src/createPost.js +0 -285
- package/src/data/getThreadInfo.json +0 -1
- package/src/follow.js +0 -71
- package/src/getAccess.js +0 -130
- package/src/getAvatarUser.js +0 -88
- package/src/getBotInitialData.js +0 -59
- package/src/getCtx.js +0 -5
- package/src/getMessage.js +0 -827
- package/src/getOptions.js +0 -5
- package/src/getRegion.js +0 -7
- package/src/getThreadHistoryDeprecated.js +0 -95
- package/src/getThreadInfoDeprecated.js +0 -77
- package/src/getThreadListDeprecated.js +0 -86
- package/src/httpPostFormData.js +0 -58
- package/src/listenNotification.js +0 -96
- package/src/refreshFb_dtsg.js +0 -75
- package/src/searchStickers.js +0 -59
- package/src/sendMessageMqtt.js +0 -326
- package/src/setMessageReactionMqtt.js +0 -74
- package/src/setProfileGuard.js +0 -66
- package/src/setStoryReaction.js +0 -97
- package/src/stopListenMqtt.js +0 -47
- package/src/uploadAttachment.js +0 -98
|
@@ -1,10 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
const {
|
|
3
|
+
const {
|
|
4
|
+
generateOfflineThreadingID,
|
|
5
|
+
getCurrentTimestamp,
|
|
6
|
+
getGUID,
|
|
7
|
+
} = require("../utils");
|
|
4
8
|
|
|
5
|
-
// নিরাপদ ফাংশন চেকিং (আগের Reflect.apply বাগটি ফিক্স করা হয়েছে)
|
|
6
9
|
function isCallable(func) {
|
|
7
|
-
|
|
10
|
+
try {
|
|
11
|
+
Reflect.apply(func, null, []);
|
|
12
|
+
return true;
|
|
13
|
+
} catch (error) {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
8
16
|
}
|
|
9
17
|
|
|
10
18
|
module.exports = function (defaultFuncs, api, ctx) {
|
|
@@ -16,15 +24,26 @@ module.exports = function (defaultFuncs, api, ctx) {
|
|
|
16
24
|
ctx.wsReqNumber += 1;
|
|
17
25
|
ctx.wsTaskNumber += 1;
|
|
18
26
|
|
|
19
|
-
|
|
27
|
+
const label = "334";
|
|
28
|
+
let userBlockAction = 0;
|
|
20
29
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
30
|
+
switch (type) {
|
|
31
|
+
case "messenger":
|
|
32
|
+
if (status) {
|
|
33
|
+
userBlockAction = 1; // Block
|
|
34
|
+
} else {
|
|
35
|
+
userBlockAction = 0; // Unblock
|
|
36
|
+
}
|
|
37
|
+
break;
|
|
38
|
+
case "facebook":
|
|
39
|
+
if (status) {
|
|
40
|
+
userBlockAction = 3; // Block
|
|
41
|
+
} else {
|
|
42
|
+
userBlockAction = 2; // Unblock
|
|
43
|
+
}
|
|
44
|
+
break;
|
|
45
|
+
default:
|
|
46
|
+
throw new Error("Invalid type");
|
|
28
47
|
}
|
|
29
48
|
|
|
30
49
|
const taskPayload = {
|
|
@@ -33,10 +52,13 @@ module.exports = function (defaultFuncs, api, ctx) {
|
|
|
33
52
|
user_block_action: userBlockAction,
|
|
34
53
|
};
|
|
35
54
|
|
|
55
|
+
const payload = JSON.stringify(taskPayload);
|
|
56
|
+
const version = "25393437286970779";
|
|
57
|
+
|
|
36
58
|
const task = {
|
|
37
59
|
failure_count: null,
|
|
38
|
-
label:
|
|
39
|
-
payload:
|
|
60
|
+
label: label,
|
|
61
|
+
payload: payload,
|
|
40
62
|
queue_name: "native_sync_block",
|
|
41
63
|
task_id: ctx.wsTaskNumber,
|
|
42
64
|
};
|
|
@@ -45,18 +67,17 @@ module.exports = function (defaultFuncs, api, ctx) {
|
|
|
45
67
|
app_id: "2220391788200892",
|
|
46
68
|
payload: JSON.stringify({
|
|
47
69
|
tasks: [task],
|
|
48
|
-
epoch_id: parseInt(generateOfflineThreadingID()
|
|
49
|
-
version_id:
|
|
70
|
+
epoch_id: parseInt(generateOfflineThreadingID()),
|
|
71
|
+
version_id: version,
|
|
50
72
|
}),
|
|
51
73
|
request_id: ctx.wsReqNumber,
|
|
52
74
|
type: 3,
|
|
53
75
|
};
|
|
54
76
|
|
|
55
77
|
if (isCallable(callback)) {
|
|
56
|
-
|
|
78
|
+
// to be implemented
|
|
57
79
|
}
|
|
58
80
|
|
|
59
|
-
// MQTT ব্রোকারে রিকোয়েস্ট পাবলিশ করা হচ্ছে
|
|
60
81
|
ctx.mqttClient.publish("/ls_req", JSON.stringify(content), {
|
|
61
82
|
qos: 1,
|
|
62
83
|
retain: false,
|
package/src/changeGroupImage.js
CHANGED
|
@@ -1,109 +1,132 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
var utils = require("../utils");
|
|
4
|
+
var log = require("npmlog");
|
|
5
|
+
var bluebird = require("bluebird");
|
|
4
6
|
|
|
5
7
|
module.exports = function (defaultFuncs, api, ctx) {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
function handleUpload(image, callback) {
|
|
9
|
+
var uploads = [];
|
|
10
|
+
|
|
11
|
+
var form = {
|
|
10
12
|
images_only: "true",
|
|
11
13
|
"attachment[]": image,
|
|
12
14
|
};
|
|
13
15
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
uploads.push(
|
|
17
|
+
defaultFuncs
|
|
18
|
+
.postFormData(
|
|
19
|
+
"https://upload.facebook.com/ajax/mercury/upload.php",
|
|
20
|
+
ctx.jar,
|
|
21
|
+
form,
|
|
22
|
+
{},
|
|
23
|
+
)
|
|
24
|
+
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
|
25
|
+
.then(function (resData) {
|
|
26
|
+
if (resData.error) {
|
|
27
|
+
throw resData;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
return resData.payload.metadata[0];
|
|
31
|
+
}),
|
|
19
32
|
);
|
|
20
|
-
|
|
21
|
-
const checkedData = utils.parseAndCheckLogin(ctx, defaultFuncs)(resData);
|
|
22
|
-
if (checkedData.error) throw checkedData;
|
|
23
33
|
|
|
24
|
-
|
|
34
|
+
// resolve all promises
|
|
35
|
+
bluebird
|
|
36
|
+
.all(uploads)
|
|
37
|
+
.then(function (resData) {
|
|
38
|
+
callback(null, resData);
|
|
39
|
+
})
|
|
40
|
+
.catch(function (err) {
|
|
41
|
+
log.error("handleUpload", err);
|
|
42
|
+
return callback(err);
|
|
43
|
+
});
|
|
25
44
|
}
|
|
26
45
|
|
|
27
46
|
return function changeGroupImage(image, threadID, callback) {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
47
|
+
if (
|
|
48
|
+
!callback &&
|
|
49
|
+
(utils.getType(threadID) === "Function" ||
|
|
50
|
+
utils.getType(threadID) === "AsyncFunction")
|
|
51
|
+
) {
|
|
31
52
|
throw { error: "please pass a threadID as a second argument." };
|
|
32
53
|
}
|
|
33
54
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
let resolveFunc = () => {};
|
|
39
|
-
let rejectFunc = () => {};
|
|
40
|
-
const returnPromise = new Promise((resolve, reject) => {
|
|
55
|
+
var resolveFunc = function () {};
|
|
56
|
+
var rejectFunc = function () {};
|
|
57
|
+
var returnPromise = new Promise(function (resolve, reject) {
|
|
41
58
|
resolveFunc = resolve;
|
|
42
59
|
rejectFunc = reject;
|
|
43
60
|
});
|
|
44
61
|
|
|
45
62
|
if (!callback) {
|
|
46
63
|
callback = function (err) {
|
|
47
|
-
if (err)
|
|
64
|
+
if (err) {
|
|
65
|
+
return rejectFunc(err);
|
|
66
|
+
}
|
|
48
67
|
resolveFunc();
|
|
49
68
|
};
|
|
50
69
|
}
|
|
51
70
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
timestamp_relative: utils.generateTimestampRelative(),
|
|
82
|
-
timestamp_time_passed: "0",
|
|
83
|
-
};
|
|
84
|
-
|
|
85
|
-
// ১. ইমেজ আপলোড করে মেটাডাটা নেওয়া হচ্ছে
|
|
86
|
-
const uploadPayload = await handleUpload(image);
|
|
87
|
-
|
|
88
|
-
form["thread_image_id"] = uploadPayload["image_id"];
|
|
89
|
-
form["thread_id"] = threadID;
|
|
90
|
-
|
|
91
|
-
// ২. চ্যাট গ্রুপের ইমেজ সেট করার রিকোয়েস্ট
|
|
92
|
-
const resData = await defaultFuncs.post(
|
|
93
|
-
"https://www.facebook.com/messaging/set_thread_image/",
|
|
94
|
-
ctx.jar,
|
|
95
|
-
form
|
|
96
|
-
);
|
|
97
|
-
|
|
98
|
-
const checkedResult = utils.parseAndCheckLogin(ctx, defaultFuncs)(resData);
|
|
99
|
-
if (checkedResult.error) throw checkedResult;
|
|
71
|
+
var messageAndOTID = utils.generateOfflineThreadingID();
|
|
72
|
+
var form = {
|
|
73
|
+
client: "mercury",
|
|
74
|
+
action_type: "ma-type:log-message",
|
|
75
|
+
author: "fbid:" + ctx.userID,
|
|
76
|
+
author_email: "",
|
|
77
|
+
ephemeral_ttl_mode: "0",
|
|
78
|
+
is_filtered_content: false,
|
|
79
|
+
is_filtered_content_account: false,
|
|
80
|
+
is_filtered_content_bh: false,
|
|
81
|
+
is_filtered_content_invalid_app: false,
|
|
82
|
+
is_filtered_content_quasar: false,
|
|
83
|
+
is_forward: false,
|
|
84
|
+
is_spoof_warning: false,
|
|
85
|
+
is_unread: false,
|
|
86
|
+
log_message_type: "log:thread-image",
|
|
87
|
+
manual_retry_cnt: "0",
|
|
88
|
+
message_id: messageAndOTID,
|
|
89
|
+
offline_threading_id: messageAndOTID,
|
|
90
|
+
source: "source:chat:web",
|
|
91
|
+
"source_tags[0]": "source:chat",
|
|
92
|
+
status: "0",
|
|
93
|
+
thread_fbid: threadID,
|
|
94
|
+
thread_id: "",
|
|
95
|
+
timestamp: Date.now(),
|
|
96
|
+
timestamp_absolute: "Today",
|
|
97
|
+
timestamp_relative: utils.generateTimestampRelative(),
|
|
98
|
+
timestamp_time_passed: "0",
|
|
99
|
+
};
|
|
100
100
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
utils.error("changeGroupImage", err);
|
|
101
|
+
handleUpload(image, function (err, payload) {
|
|
102
|
+
if (err) {
|
|
104
103
|
return callback(err);
|
|
105
104
|
}
|
|
106
|
-
|
|
105
|
+
|
|
106
|
+
form["thread_image_id"] = payload[0]["image_id"];
|
|
107
|
+
form["thread_id"] = threadID;
|
|
108
|
+
|
|
109
|
+
defaultFuncs
|
|
110
|
+
.post(
|
|
111
|
+
"https://www.facebook.com/messaging/set_thread_image/",
|
|
112
|
+
ctx.jar,
|
|
113
|
+
form,
|
|
114
|
+
)
|
|
115
|
+
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
|
116
|
+
.then(function (resData) {
|
|
117
|
+
// check for errors here
|
|
118
|
+
|
|
119
|
+
if (resData.error) {
|
|
120
|
+
throw resData;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
return callback();
|
|
124
|
+
})
|
|
125
|
+
.catch(function (err) {
|
|
126
|
+
log.error("changeGroupImage", err);
|
|
127
|
+
return callback(err);
|
|
128
|
+
});
|
|
129
|
+
});
|
|
107
130
|
|
|
108
131
|
return returnPromise;
|
|
109
132
|
};
|
package/src/changeNickname.js
CHANGED
|
@@ -1,25 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
var utils = require("../utils");
|
|
4
|
+
var log = require("npmlog");
|
|
4
5
|
|
|
5
6
|
module.exports = function (defaultFuncs, api, ctx) {
|
|
6
7
|
return function changeNickname(nickname, threadID, participantID, callback) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
var resolveFunc = function () {};
|
|
9
|
+
var rejectFunc = function () {};
|
|
10
|
+
var returnPromise = new Promise(function (resolve, reject) {
|
|
10
11
|
resolveFunc = resolve;
|
|
11
12
|
rejectFunc = reject;
|
|
12
13
|
});
|
|
13
|
-
|
|
14
14
|
if (!callback) {
|
|
15
15
|
callback = function (err) {
|
|
16
|
-
if (err)
|
|
16
|
+
if (err) {
|
|
17
|
+
return rejectFunc(err);
|
|
18
|
+
}
|
|
17
19
|
resolveFunc();
|
|
18
20
|
};
|
|
19
21
|
}
|
|
20
22
|
|
|
21
|
-
|
|
22
|
-
nickname,
|
|
23
|
+
var form = {
|
|
24
|
+
nickname: nickname,
|
|
23
25
|
participant_id: participantID,
|
|
24
26
|
thread_or_other_fbid: threadID,
|
|
25
27
|
};
|
|
@@ -28,11 +30,10 @@ module.exports = function (defaultFuncs, api, ctx) {
|
|
|
28
30
|
.post(
|
|
29
31
|
"https://www.facebook.com/messaging/save_thread_nickname/?source=thread_settings&dpr=1",
|
|
30
32
|
ctx.jar,
|
|
31
|
-
form
|
|
33
|
+
form,
|
|
32
34
|
)
|
|
33
35
|
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
|
34
36
|
.then(function (resData) {
|
|
35
|
-
// স্ট্রিক্ট কম্প্যারিসন (===) ব্যবহার করে এরর কোড চেক করা হচ্ছে
|
|
36
37
|
if (resData.error === 1545014) {
|
|
37
38
|
throw { error: "Trying to change nickname of user isn't in thread" };
|
|
38
39
|
}
|
|
@@ -49,7 +50,7 @@ module.exports = function (defaultFuncs, api, ctx) {
|
|
|
49
50
|
return callback();
|
|
50
51
|
})
|
|
51
52
|
.catch(function (err) {
|
|
52
|
-
|
|
53
|
+
log.error("changeNickname", err);
|
|
53
54
|
return callback(err);
|
|
54
55
|
});
|
|
55
56
|
|
package/src/changeThreadColor.js
CHANGED
|
@@ -1,33 +1,42 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
var utils = require("../utils");
|
|
4
|
+
var log = require("npmlog");
|
|
4
5
|
|
|
5
6
|
module.exports = function (defaultFuncs, api, ctx) {
|
|
6
7
|
return function changeThreadColor(color, threadID, callback) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
var resolveFunc = function () {};
|
|
9
|
+
var rejectFunc = function () {};
|
|
10
|
+
var returnPromise = new Promise(function (resolve, reject) {
|
|
10
11
|
resolveFunc = resolve;
|
|
11
12
|
rejectFunc = reject;
|
|
12
13
|
});
|
|
13
14
|
|
|
14
15
|
if (!callback) {
|
|
15
16
|
callback = function (err) {
|
|
16
|
-
if (err)
|
|
17
|
-
|
|
17
|
+
if (err) {
|
|
18
|
+
return rejectFunc(err);
|
|
19
|
+
}
|
|
20
|
+
resolveFunc(err);
|
|
18
21
|
};
|
|
19
22
|
}
|
|
20
23
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
var validatedColor = color !== null ? color.toLowerCase() : color; // API only accepts lowercase letters in hex string
|
|
25
|
+
var colorList = Object.keys(api.threadColors).map(function (name) {
|
|
26
|
+
return api.threadColors[name];
|
|
27
|
+
});
|
|
28
|
+
// if (!colorList.includes(validatedColor)) {
|
|
29
|
+
// throw {
|
|
30
|
+
// error:
|
|
31
|
+
// "The color you are trying to use is not a valid thread color. Use api.threadColors to find acceptable values.",
|
|
32
|
+
// };
|
|
33
|
+
// }
|
|
26
34
|
|
|
27
|
-
|
|
35
|
+
var form = {
|
|
28
36
|
dpr: 1,
|
|
29
37
|
queries: JSON.stringify({
|
|
30
38
|
o0: {
|
|
39
|
+
//This doc_id is valid as of January 31, 2020
|
|
31
40
|
doc_id: "1727493033983591",
|
|
32
41
|
query_params: {
|
|
33
42
|
data: {
|
|
@@ -46,14 +55,14 @@ module.exports = function (defaultFuncs, api, ctx) {
|
|
|
46
55
|
.post("https://www.facebook.com/api/graphqlbatch/", ctx.jar, form)
|
|
47
56
|
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
|
48
57
|
.then(function (resData) {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
throw new utils.CustomError(resData[0].o0.errors);
|
|
58
|
+
if (resData[resData.length - 1].error_results > 0) {
|
|
59
|
+
throw resData[0].o0.errors;
|
|
52
60
|
}
|
|
61
|
+
|
|
53
62
|
return callback();
|
|
54
63
|
})
|
|
55
64
|
.catch(function (err) {
|
|
56
|
-
|
|
65
|
+
log.error("changeThreadColor", err);
|
|
57
66
|
return callback(err);
|
|
58
67
|
});
|
|
59
68
|
|
package/src/changeThreadEmoji.js
CHANGED
|
@@ -1,24 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
var utils = require("../utils");
|
|
4
|
+
var log = require("npmlog");
|
|
4
5
|
|
|
5
6
|
module.exports = function (defaultFuncs, api, ctx) {
|
|
6
7
|
return function changeThreadEmoji(emoji, threadID, callback) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
var resolveFunc = function () {};
|
|
9
|
+
var rejectFunc = function () {};
|
|
10
|
+
var returnPromise = new Promise(function (resolve, reject) {
|
|
10
11
|
resolveFunc = resolve;
|
|
11
12
|
rejectFunc = reject;
|
|
12
13
|
});
|
|
13
14
|
|
|
14
15
|
if (!callback) {
|
|
15
16
|
callback = function (err) {
|
|
16
|
-
if (err)
|
|
17
|
+
if (err) {
|
|
18
|
+
return rejectFunc(err);
|
|
19
|
+
}
|
|
17
20
|
resolveFunc();
|
|
18
21
|
};
|
|
19
22
|
}
|
|
20
|
-
|
|
21
|
-
const form = {
|
|
23
|
+
var form = {
|
|
22
24
|
emoji_choice: emoji,
|
|
23
25
|
thread_or_other_fbid: threadID,
|
|
24
26
|
};
|
|
@@ -27,11 +29,10 @@ module.exports = function (defaultFuncs, api, ctx) {
|
|
|
27
29
|
.post(
|
|
28
30
|
"https://www.facebook.com/messaging/save_thread_emoji/?source=thread_settings&__pc=EXP1%3Amessengerdotcom_pkg",
|
|
29
31
|
ctx.jar,
|
|
30
|
-
form
|
|
32
|
+
form,
|
|
31
33
|
)
|
|
32
34
|
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
|
33
35
|
.then(function (resData) {
|
|
34
|
-
// স্ট্রিক্ট কম্প্যারিসন (===) ব্যবহার করা হয়েছে
|
|
35
36
|
if (resData.error === 1357031) {
|
|
36
37
|
throw {
|
|
37
38
|
error:
|
|
@@ -45,7 +46,7 @@ module.exports = function (defaultFuncs, api, ctx) {
|
|
|
45
46
|
return callback();
|
|
46
47
|
})
|
|
47
48
|
.catch(function (err) {
|
|
48
|
-
|
|
49
|
+
log.error("changeThreadEmoji", err);
|
|
49
50
|
return callback(err);
|
|
50
51
|
});
|
|
51
52
|
|
package/src/createNewGroup.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
var utils = require("../utils");
|
|
4
|
+
var log = require("npmlog");
|
|
4
5
|
|
|
5
6
|
module.exports = function (defaultFuncs, api, ctx) {
|
|
6
7
|
return function createNewGroup(participantIDs, groupTitle, callback) {
|
|
7
|
-
|
|
8
|
-
if (utils.getType(groupTitle) === "Function") {
|
|
8
|
+
if (utils.getType(groupTitle) == "Function") {
|
|
9
9
|
callback = groupTitle;
|
|
10
10
|
groupTitle = null;
|
|
11
11
|
}
|
|
@@ -20,28 +20,35 @@ module.exports = function (defaultFuncs, api, ctx) {
|
|
|
20
20
|
};
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
var resolveFunc = function () {};
|
|
24
|
+
var rejectFunc = function () {};
|
|
25
|
+
var returnPromise = new Promise(function (resolve, reject) {
|
|
26
26
|
resolveFunc = resolve;
|
|
27
27
|
rejectFunc = reject;
|
|
28
28
|
});
|
|
29
29
|
|
|
30
30
|
if (!callback) {
|
|
31
31
|
callback = function (err, threadID) {
|
|
32
|
-
if (err)
|
|
32
|
+
if (err) {
|
|
33
|
+
return rejectFunc(err);
|
|
34
|
+
}
|
|
33
35
|
resolveFunc(threadID);
|
|
34
36
|
};
|
|
35
37
|
}
|
|
36
38
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
39
|
+
var pids = [];
|
|
40
|
+
for (var n in participantIDs) {
|
|
41
|
+
pids.push({
|
|
42
|
+
fbid: participantIDs[n],
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
pids.push({ fbid: ctx.userID });
|
|
40
46
|
|
|
41
|
-
|
|
47
|
+
var form = {
|
|
42
48
|
fb_api_caller_class: "RelayModern",
|
|
43
49
|
fb_api_req_friendly_name: "MessengerGroupCreateMutation",
|
|
44
50
|
av: ctx.userID,
|
|
51
|
+
//This doc_id is valid as of January 11th, 2020
|
|
45
52
|
doc_id: "577041672419534",
|
|
46
53
|
variables: JSON.stringify({
|
|
47
54
|
input: {
|
|
@@ -65,14 +72,14 @@ module.exports = function (defaultFuncs, api, ctx) {
|
|
|
65
72
|
if (resData.errors) {
|
|
66
73
|
throw resData;
|
|
67
74
|
}
|
|
68
|
-
// সফলভাবে গ্রুপ তৈরি হলে নতুন থ্রেড আইডি (Thread ID) রিটার্ন করা হচ্ছে
|
|
69
75
|
return callback(
|
|
70
76
|
null,
|
|
71
|
-
resData.data.messenger_group_thread_create.thread.thread_key
|
|
77
|
+
resData.data.messenger_group_thread_create.thread.thread_key
|
|
78
|
+
.thread_fbid,
|
|
72
79
|
);
|
|
73
80
|
})
|
|
74
81
|
.catch(function (err) {
|
|
75
|
-
|
|
82
|
+
log.error("createNewGroup", err);
|
|
76
83
|
return callback(err);
|
|
77
84
|
});
|
|
78
85
|
|