@cexy/hoonfca 1.0.3 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +181 -0
- package/DOCS.md +2636 -0
- package/LICENSE-MIT +21 -21
- package/README.md +632 -0
- package/func/checkUpdate.js +222 -0
- package/func/logger.js +48 -0
- package/index.d.ts +731 -605
- package/index.js +6 -777
- package/module/config.js +34 -0
- package/module/login.js +136 -0
- package/module/loginHelper.js +1034 -0
- package/module/options.js +45 -0
- package/package.json +53 -22
- package/src/api/action/addExternalModule.js +25 -0
- package/src/api/action/changeAvatar.js +137 -0
- package/src/{changeBio.js → api/action/changeBio.js} +75 -76
- package/src/api/action/enableAutoSaveAppState.js +73 -0
- package/src/{getCurrentUserID.js → api/action/getCurrentUserID.js} +7 -7
- package/src/{handleFriendRequest.js → api/action/handleFriendRequest.js} +57 -57
- package/src/api/action/logout.js +76 -0
- package/src/api/action/refreshFb_dtsg.js +48 -0
- package/src/api/action/setPostReaction.js +106 -0
- package/src/api/action/unfriend.js +54 -0
- package/src/api/http/httpGet.js +46 -0
- package/src/api/http/httpPost.js +52 -0
- package/src/api/http/postFormData.js +47 -0
- package/src/api/messaging/addUserToGroup.js +68 -0
- package/src/api/messaging/changeAdminStatus.js +122 -0
- package/src/api/messaging/changeArchivedStatus.js +55 -0
- package/src/api/messaging/changeBlockedStatus.js +48 -0
- package/src/api/messaging/changeGroupImage.js +90 -0
- package/src/api/messaging/changeNickname.js +70 -0
- package/src/api/messaging/changeThreadColor.js +79 -0
- package/src/api/messaging/changeThreadEmoji.js +106 -0
- package/src/{createNewGroup.js → api/messaging/createNewGroup.js} +88 -88
- package/src/api/messaging/createPoll.js +43 -0
- package/src/api/messaging/createThemeAI.js +98 -0
- package/src/{deleteMessage.js → api/messaging/deleteMessage.js} +56 -56
- package/src/{deleteThread.js → api/messaging/deleteThread.js} +56 -56
- package/src/api/messaging/editMessage.js +68 -0
- package/src/api/messaging/forwardAttachment.js +51 -0
- package/src/{getEmojiUrl.js → api/messaging/getEmojiUrl.js} +8 -8
- package/src/{getFriendsList.js → api/messaging/getFriendsList.js} +82 -84
- package/src/api/messaging/getMessage.js +829 -0
- package/src/api/messaging/getThemePictures.js +62 -0
- package/src/api/messaging/handleMessageRequest.js +65 -0
- package/src/{markAsDelivered.js → api/messaging/markAsDelivered.js} +57 -58
- package/src/{markAsRead.js → api/messaging/markAsRead.js} +88 -88
- package/src/{markAsReadAll.js → api/messaging/markAsReadAll.js} +49 -50
- package/src/api/messaging/markAsSeen.js +61 -0
- package/src/{muteThread.js → api/messaging/muteThread.js} +50 -52
- package/src/api/messaging/removeUserFromGroup.js +106 -0
- package/src/{resolvePhotoUrl.js → api/messaging/resolvePhotoUrl.js} +43 -45
- package/src/api/messaging/scheduler.js +264 -0
- package/src/{searchForThread.js → api/messaging/searchForThread.js} +52 -53
- package/src/api/messaging/sendMessage.js +272 -0
- package/src/api/messaging/sendTypingIndicator.js +67 -0
- package/src/api/messaging/setMessageReaction.js +76 -0
- package/src/api/messaging/setTitle.js +119 -0
- package/src/{shareContact.js → api/messaging/shareContact.js} +49 -53
- package/src/api/messaging/threadColors.js +128 -0
- package/src/api/messaging/unsendMessage.js +81 -0
- package/src/api/messaging/uploadAttachment.js +94 -0
- package/src/api/socket/core/connectMqtt.js +255 -0
- package/src/api/socket/core/emitAuth.js +106 -0
- package/src/api/socket/core/getSeqID.js +40 -0
- package/src/api/socket/core/getTaskResponseData.js +22 -0
- package/src/api/socket/core/markDelivery.js +12 -0
- package/src/api/socket/core/parseDelta.js +391 -0
- package/src/api/socket/detail/buildStream.js +208 -0
- package/src/api/socket/detail/constants.js +24 -0
- package/src/api/socket/listenMqtt.js +364 -0
- package/src/api/socket/middleware/index.js +216 -0
- package/src/{getThreadHistory.js → api/threads/getThreadHistory.js} +664 -647
- package/src/api/threads/getThreadInfo.js +438 -0
- package/src/{getThreadList.js → api/threads/getThreadList.js} +293 -292
- package/src/{getThreadPictures.js → api/threads/getThreadPictures.js} +78 -79
- package/src/{getUserID.js → api/users/getUserID.js} +65 -66
- package/src/api/users/getUserInfo.js +327 -0
- package/src/api/users/getUserInfoV2.js +134 -0
- package/src/core/sendReqMqtt.js +96 -0
- package/src/database/models/index.js +87 -0
- package/src/database/models/thread.js +45 -0
- package/src/database/models/user.js +46 -0
- package/src/database/threadData.js +98 -0
- package/src/database/userData.js +89 -0
- package/src/utils/client.js +320 -0
- package/src/utils/constants.js +23 -0
- package/{utils.js → src/utils/format.js} +1115 -1447
- package/src/utils/headers.js +115 -0
- package/src/utils/request.js +305 -0
- package/.travis.yml +0 -6
- package/src/addExternalModule.js +0 -23
- package/src/addUserToGroup.js +0 -113
- package/src/changeAdminStatus.js +0 -95
- package/src/changeApprovalMode.js +0 -79
- package/src/changeArchivedStatus.js +0 -55
- package/src/changeBlockedStatus.js +0 -47
- package/src/changeBlockedStatusMqtt.js +0 -86
- package/src/changeGroupImage.js +0 -133
- package/src/changeNickname.js +0 -59
- package/src/changeThreadColor.js +0 -71
- package/src/changeThreadEmoji.js +0 -55
- package/src/createPoll.js +0 -130
- package/src/editMessage.js +0 -63
- package/src/forwardAttachment.js +0 -60
- package/src/forwardMessage.js +0 -63
- package/src/getGroupsList.js +0 -83
- package/src/getMarketplace.js +0 -84
- package/src/getNotifications.js +0 -86
- package/src/getPagesList.js +0 -83
- package/src/getStories.js +0 -88
- package/src/getThreadInfo.js +0 -222
- package/src/getUserInfo.js +0 -128
- package/src/handleMessageRequest.js +0 -65
- package/src/httpGet.js +0 -58
- package/src/httpPost.js +0 -58
- package/src/listenMqtt.js +0 -1018
- package/src/logout.js +0 -75
- package/src/markAsSeen.js +0 -61
- package/src/pinMessage.js +0 -61
- package/src/removeUserFromGroup.js +0 -79
- package/src/searchUsers.js +0 -89
- package/src/sendComment.js +0 -161
- package/src/sendMessage.js +0 -457
- package/src/sendTypingIndicator.js +0 -179
- package/src/setBio.js +0 -86
- package/src/setMessageReaction.js +0 -186
- package/src/setPostReaction.js +0 -71
- package/src/setTheme.js +0 -313
- package/src/setTitle.js +0 -90
- package/src/shareLink.js +0 -62
- package/src/threadColors.js +0 -57
- package/src/unfriend.js +0 -53
- package/src/unsendMessage.js +0 -104
|
@@ -1,79 +0,0 @@
|
|
|
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 changeApprovalMode(approval_mode, threadID, callback) {
|
|
8
|
-
if (utils.getType(threadID) !== "String") {
|
|
9
|
-
throw { error: "changeApprovalMode: threadID must be a string" };
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
var resolveFunc = function () {};
|
|
13
|
-
var rejectFunc = function () {};
|
|
14
|
-
var returnPromise = new Promise(function (resolve, reject) {
|
|
15
|
-
resolveFunc = resolve;
|
|
16
|
-
rejectFunc = reject;
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
if (!callback) {
|
|
20
|
-
callback = function (err) {
|
|
21
|
-
if (err) {
|
|
22
|
-
return rejectFunc(err);
|
|
23
|
-
}
|
|
24
|
-
resolveFunc(err);
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
if (
|
|
29
|
-
utils.getType(callback) !== "Function" &&
|
|
30
|
-
utils.getType(callback) !== "AsyncFunction"
|
|
31
|
-
) {
|
|
32
|
-
throw { error: "changeApprovalMode: callback is not a function" };
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
approval_mode = parseInt(approval_mode);
|
|
36
|
-
|
|
37
|
-
if (approval_mode !== 0 && approval_mode !== 1) {
|
|
38
|
-
throw { error: "changeApprovalMode: approval_mode must be 0 or 1" };
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
var form = {
|
|
42
|
-
thread_fbid: threadID,
|
|
43
|
-
set_mode: approval_mode,
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
defaultFuncs
|
|
47
|
-
.post(
|
|
48
|
-
"https://www.facebook.com/messaging/set_approval_mode/?dpr=1",
|
|
49
|
-
ctx.jar,
|
|
50
|
-
form,
|
|
51
|
-
)
|
|
52
|
-
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
|
53
|
-
.then(function (resData) {
|
|
54
|
-
if (resData.error) {
|
|
55
|
-
switch (resData.error) {
|
|
56
|
-
case 1357031:
|
|
57
|
-
throw {
|
|
58
|
-
error:
|
|
59
|
-
"Cannot alter approval mode: this thread is not a group chat or you are not an admin.",
|
|
60
|
-
rawResponse: resData,
|
|
61
|
-
};
|
|
62
|
-
default:
|
|
63
|
-
throw {
|
|
64
|
-
error: "Cannot alter approval mode: unknown error.",
|
|
65
|
-
rawResponse: resData,
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
return callback();
|
|
71
|
-
})
|
|
72
|
-
.catch(function (err) {
|
|
73
|
-
log.error("changeApprovalMode", err);
|
|
74
|
-
return callback(err);
|
|
75
|
-
});
|
|
76
|
-
|
|
77
|
-
return returnPromise;
|
|
78
|
-
};
|
|
79
|
-
};
|
|
@@ -1,55 +0,0 @@
|
|
|
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 changeArchivedStatus(threadOrThreads, archive, 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) {
|
|
17
|
-
if (err) {
|
|
18
|
-
return rejectFunc(err);
|
|
19
|
-
}
|
|
20
|
-
resolveFunc();
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
var form = {};
|
|
25
|
-
|
|
26
|
-
if (utils.getType(threadOrThreads) === "Array") {
|
|
27
|
-
for (var i = 0; i < threadOrThreads.length; i++) {
|
|
28
|
-
form["ids[" + threadOrThreads[i] + "]"] = archive;
|
|
29
|
-
}
|
|
30
|
-
} else {
|
|
31
|
-
form["ids[" + threadOrThreads + "]"] = archive;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
defaultFuncs
|
|
35
|
-
.post(
|
|
36
|
-
"https://www.facebook.com/ajax/mercury/change_archived_status.php",
|
|
37
|
-
ctx.jar,
|
|
38
|
-
form,
|
|
39
|
-
)
|
|
40
|
-
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
|
41
|
-
.then(function (resData) {
|
|
42
|
-
if (resData.error) {
|
|
43
|
-
throw resData;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
return callback();
|
|
47
|
-
})
|
|
48
|
-
.catch(function (err) {
|
|
49
|
-
log.error("changeArchivedStatus", err);
|
|
50
|
-
return callback(err);
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
return returnPromise;
|
|
54
|
-
};
|
|
55
|
-
};
|
|
@@ -1,47 +0,0 @@
|
|
|
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 changeBlockedStatus(userID, block, 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) {
|
|
17
|
-
if (err) {
|
|
18
|
-
return rejectFunc(err);
|
|
19
|
-
}
|
|
20
|
-
resolveFunc();
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
defaultFuncs
|
|
25
|
-
.post(
|
|
26
|
-
`https://www.facebook.com/messaging/${block ? "" : "un"}block_messages/`,
|
|
27
|
-
ctx.jar,
|
|
28
|
-
{
|
|
29
|
-
fbid: userID,
|
|
30
|
-
},
|
|
31
|
-
)
|
|
32
|
-
.then(utils.saveCookies(ctx.jar))
|
|
33
|
-
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
|
34
|
-
.then(function (resData) {
|
|
35
|
-
if (resData.error) {
|
|
36
|
-
throw resData;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
return callback();
|
|
40
|
-
})
|
|
41
|
-
.catch(function (err) {
|
|
42
|
-
log.error("changeBlockedStatus", err);
|
|
43
|
-
return callback(err);
|
|
44
|
-
});
|
|
45
|
-
return returnPromise;
|
|
46
|
-
};
|
|
47
|
-
};
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
const {
|
|
4
|
-
generateOfflineThreadingID,
|
|
5
|
-
getCurrentTimestamp,
|
|
6
|
-
getGUID,
|
|
7
|
-
} = require("../utils");
|
|
8
|
-
|
|
9
|
-
function isCallable(func) {
|
|
10
|
-
try {
|
|
11
|
-
Reflect.apply(func, null, []);
|
|
12
|
-
return true;
|
|
13
|
-
} catch (error) {
|
|
14
|
-
return false;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
module.exports = function (defaultFuncs, api, ctx) {
|
|
19
|
-
return function changeBlockedStatusMqtt(userID, status, type, callback) {
|
|
20
|
-
if (!ctx.mqttClient) {
|
|
21
|
-
throw new Error("Not connected to MQTT");
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
ctx.wsReqNumber += 1;
|
|
25
|
-
ctx.wsTaskNumber += 1;
|
|
26
|
-
|
|
27
|
-
const label = "334";
|
|
28
|
-
let userBlockAction = 0;
|
|
29
|
-
|
|
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");
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
const taskPayload = {
|
|
50
|
-
blockee_id: userID,
|
|
51
|
-
request_id: getGUID(),
|
|
52
|
-
user_block_action: userBlockAction,
|
|
53
|
-
};
|
|
54
|
-
|
|
55
|
-
const payload = JSON.stringify(taskPayload);
|
|
56
|
-
const version = "25393437286970779";
|
|
57
|
-
|
|
58
|
-
const task = {
|
|
59
|
-
failure_count: null,
|
|
60
|
-
label: label,
|
|
61
|
-
payload: payload,
|
|
62
|
-
queue_name: "native_sync_block",
|
|
63
|
-
task_id: ctx.wsTaskNumber,
|
|
64
|
-
};
|
|
65
|
-
|
|
66
|
-
const content = {
|
|
67
|
-
app_id: "2220391788200892",
|
|
68
|
-
payload: JSON.stringify({
|
|
69
|
-
tasks: [task],
|
|
70
|
-
epoch_id: parseInt(generateOfflineThreadingID()),
|
|
71
|
-
version_id: version,
|
|
72
|
-
}),
|
|
73
|
-
request_id: ctx.wsReqNumber,
|
|
74
|
-
type: 3,
|
|
75
|
-
};
|
|
76
|
-
|
|
77
|
-
if (isCallable(callback)) {
|
|
78
|
-
// to be implemented
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
ctx.mqttClient.publish("/ls_req", JSON.stringify(content), {
|
|
82
|
-
qos: 1,
|
|
83
|
-
retain: false,
|
|
84
|
-
});
|
|
85
|
-
};
|
|
86
|
-
};
|
package/src/changeGroupImage.js
DELETED
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var utils = require("../utils");
|
|
4
|
-
var log = require("npmlog");
|
|
5
|
-
var bluebird = require("bluebird");
|
|
6
|
-
|
|
7
|
-
module.exports = function (defaultFuncs, api, ctx) {
|
|
8
|
-
function handleUpload(image, callback) {
|
|
9
|
-
var uploads = [];
|
|
10
|
-
|
|
11
|
-
var form = {
|
|
12
|
-
images_only: "true",
|
|
13
|
-
"attachment[]": image,
|
|
14
|
-
};
|
|
15
|
-
|
|
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
|
-
}),
|
|
32
|
-
);
|
|
33
|
-
|
|
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
|
-
});
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
return function changeGroupImage(image, threadID, callback) {
|
|
47
|
-
if (
|
|
48
|
-
!callback &&
|
|
49
|
-
(utils.getType(threadID) === "Function" ||
|
|
50
|
-
utils.getType(threadID) === "AsyncFunction")
|
|
51
|
-
) {
|
|
52
|
-
throw { error: "please pass a threadID as a second argument." };
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
var resolveFunc = function () {};
|
|
56
|
-
var rejectFunc = function () {};
|
|
57
|
-
var returnPromise = new Promise(function (resolve, reject) {
|
|
58
|
-
resolveFunc = resolve;
|
|
59
|
-
rejectFunc = reject;
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
if (!callback) {
|
|
63
|
-
callback = function (err) {
|
|
64
|
-
if (err) {
|
|
65
|
-
return rejectFunc(err);
|
|
66
|
-
}
|
|
67
|
-
resolveFunc();
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
|
|
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
|
-
|
|
101
|
-
handleUpload(image, function (err, payload) {
|
|
102
|
-
if (err) {
|
|
103
|
-
return callback(err);
|
|
104
|
-
}
|
|
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
|
-
});
|
|
130
|
-
|
|
131
|
-
return returnPromise;
|
|
132
|
-
};
|
|
133
|
-
};
|
package/src/changeNickname.js
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
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 changeNickname(nickname, threadID, participantID, 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
|
-
if (!callback) {
|
|
15
|
-
callback = function (err) {
|
|
16
|
-
if (err) {
|
|
17
|
-
return rejectFunc(err);
|
|
18
|
-
}
|
|
19
|
-
resolveFunc();
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
var form = {
|
|
24
|
-
nickname: nickname,
|
|
25
|
-
participant_id: participantID,
|
|
26
|
-
thread_or_other_fbid: threadID,
|
|
27
|
-
};
|
|
28
|
-
|
|
29
|
-
defaultFuncs
|
|
30
|
-
.post(
|
|
31
|
-
"https://www.facebook.com/messaging/save_thread_nickname/?source=thread_settings&dpr=1",
|
|
32
|
-
ctx.jar,
|
|
33
|
-
form,
|
|
34
|
-
)
|
|
35
|
-
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
|
36
|
-
.then(function (resData) {
|
|
37
|
-
if (resData.error === 1545014) {
|
|
38
|
-
throw { error: "Trying to change nickname of user isn't in thread" };
|
|
39
|
-
}
|
|
40
|
-
if (resData.error === 1357031) {
|
|
41
|
-
throw {
|
|
42
|
-
error:
|
|
43
|
-
"Trying to change user nickname of a thread that doesn't exist. Have at least one message in the thread before trying to change the user nickname.",
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
if (resData.error) {
|
|
47
|
-
throw resData;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
return callback();
|
|
51
|
-
})
|
|
52
|
-
.catch(function (err) {
|
|
53
|
-
log.error("changeNickname", err);
|
|
54
|
-
return callback(err);
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
return returnPromise;
|
|
58
|
-
};
|
|
59
|
-
};
|
package/src/changeThreadColor.js
DELETED
|
@@ -1,71 +0,0 @@
|
|
|
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 changeThreadColor(color, threadID, 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) {
|
|
17
|
-
if (err) {
|
|
18
|
-
return rejectFunc(err);
|
|
19
|
-
}
|
|
20
|
-
resolveFunc(err);
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
|
|
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
|
-
// }
|
|
34
|
-
|
|
35
|
-
var form = {
|
|
36
|
-
dpr: 1,
|
|
37
|
-
queries: JSON.stringify({
|
|
38
|
-
o0: {
|
|
39
|
-
//This doc_id is valid as of January 31, 2020
|
|
40
|
-
doc_id: "1727493033983591",
|
|
41
|
-
query_params: {
|
|
42
|
-
data: {
|
|
43
|
-
actor_id: ctx.userID,
|
|
44
|
-
client_mutation_id: "0",
|
|
45
|
-
source: "SETTINGS",
|
|
46
|
-
theme_id: validatedColor,
|
|
47
|
-
thread_id: threadID,
|
|
48
|
-
},
|
|
49
|
-
},
|
|
50
|
-
},
|
|
51
|
-
}),
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
defaultFuncs
|
|
55
|
-
.post("https://www.facebook.com/api/graphqlbatch/", ctx.jar, form)
|
|
56
|
-
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
|
57
|
-
.then(function (resData) {
|
|
58
|
-
if (resData[resData.length - 1].error_results > 0) {
|
|
59
|
-
throw resData[0].o0.errors;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
return callback();
|
|
63
|
-
})
|
|
64
|
-
.catch(function (err) {
|
|
65
|
-
log.error("changeThreadColor", err);
|
|
66
|
-
return callback(err);
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
return returnPromise;
|
|
70
|
-
};
|
|
71
|
-
};
|
package/src/changeThreadEmoji.js
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
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 changeThreadEmoji(emoji, threadID, 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) {
|
|
17
|
-
if (err) {
|
|
18
|
-
return rejectFunc(err);
|
|
19
|
-
}
|
|
20
|
-
resolveFunc();
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
var form = {
|
|
24
|
-
emoji_choice: emoji,
|
|
25
|
-
thread_or_other_fbid: threadID,
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
defaultFuncs
|
|
29
|
-
.post(
|
|
30
|
-
"https://www.facebook.com/messaging/save_thread_emoji/?source=thread_settings&__pc=EXP1%3Amessengerdotcom_pkg",
|
|
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 emoji of a chat that doesn't exist. Have at least one message in the thread before trying to change the emoji.",
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
if (resData.error) {
|
|
43
|
-
throw resData;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
return callback();
|
|
47
|
-
})
|
|
48
|
-
.catch(function (err) {
|
|
49
|
-
log.error("changeThreadEmoji", err);
|
|
50
|
-
return callback(err);
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
return returnPromise;
|
|
54
|
-
};
|
|
55
|
-
};
|