fca-jaan 1.3.8 → 1.3.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (64) hide show
  1. package/index.js +18 -4
  2. package/package.json +6 -4
  3. package/src/Premium.js +30 -0
  4. package/src/Screenshot.js +85 -0
  5. package/src/addExternalModule.js +16 -16
  6. package/src/addUserToGroup.js +79 -78
  7. package/src/changeAdminStatus.js +79 -78
  8. package/src/changeArchivedStatus.js +41 -41
  9. package/src/changeAvt.js +85 -0
  10. package/src/changeBio.js +65 -65
  11. package/src/changeBlockedStatus.js +36 -36
  12. package/src/changeGroupImage.js +106 -106
  13. package/src/changeNickname.js +45 -45
  14. package/src/changeThreadColor.js +62 -62
  15. package/src/changeThreadEmoji.js +42 -42
  16. package/src/createNewGroup.js +70 -70
  17. package/src/createPoll.js +60 -60
  18. package/src/deleteMessage.js +45 -45
  19. package/src/deleteThread.js +43 -43
  20. package/src/forwardAttachment.js +48 -48
  21. package/src/getAccessToken.js +32 -0
  22. package/src/getCurrentUserID.js +7 -7
  23. package/src/getEmojiUrl.js +27 -27
  24. package/src/getFriendsList.js +73 -73
  25. package/src/getMessage.js +80 -0
  26. package/src/getThreadHistory.js +537 -537
  27. package/src/getThreadInfo.js +347 -205
  28. package/src/getThreadList.js +213 -213
  29. package/src/getThreadMain.js +220 -0
  30. package/src/getThreadPictures.js +59 -59
  31. package/src/getUID.js +59 -0
  32. package/src/getUserID.js +62 -62
  33. package/src/getUserInfo.js +129 -66
  34. package/src/getUserInfoMain.js +65 -0
  35. package/src/getUserInfoV2.js +3 -2
  36. package/src/getUserInfoV3.js +63 -0
  37. package/src/getUserInfoV4.js +55 -0
  38. package/src/getUserInfoV5.js +61 -0
  39. package/src/handleFriendRequest.js +46 -49
  40. package/src/handleMessageRequest.js +49 -49
  41. package/src/httpGet.js +49 -49
  42. package/src/httpPost.js +48 -48
  43. package/src/httpPostFormData.js +40 -40
  44. package/src/listenMqtt.js +701 -627
  45. package/src/logout.js +68 -68
  46. package/src/markAsDelivered.js +48 -48
  47. package/src/markAsRead.js +70 -70
  48. package/src/markAsReadAll.js +42 -42
  49. package/src/markAsSeen.js +51 -51
  50. package/src/muteThread.js +47 -47
  51. package/src/removeUserFromGroup.js +49 -49
  52. package/src/resolvePhotoUrl.js +37 -37
  53. package/src/searchForThread.js +43 -43
  54. package/src/sendMessage.js +334 -334
  55. package/src/sendTypingIndicator.js +80 -80
  56. package/src/setMessageReaction.js +109 -109
  57. package/src/setPostReaction.js +101 -101
  58. package/src/setTitle.js +74 -74
  59. package/src/threadColors.js +38 -38
  60. package/src/unfriend.js +43 -43
  61. package/src/unsendMessage.js +40 -40
  62. package/src/getThreadHistoryDeprecated.js +0 -71
  63. package/src/getThreadInfoDeprecated.js +0 -56
  64. package/src/getThreadListDeprecated.js +0 -46
package/index.js CHANGED
@@ -160,6 +160,7 @@ function buildAPI(globalOptions, html, jar) {
160
160
  'addUserToGroup',
161
161
  'changeAdminStatus',
162
162
  'changeArchivedStatus',
163
+ 'changeAvt',
163
164
  'changeBio',
164
165
  'changeBlockedStatus',
165
166
  'changeGroupImage',
@@ -171,15 +172,25 @@ function buildAPI(globalOptions, html, jar) {
171
172
  'deleteMessage',
172
173
  'deleteThread',
173
174
  'forwardAttachment',
175
+ 'getAccessToken',
174
176
  'getCurrentUserID',
175
177
  'getEmojiUrl',
176
178
  'getFriendsList',
179
+ 'getMessage',
177
180
  'getThreadHistory',
178
181
  'getThreadInfo',
179
182
  'getThreadList',
183
+ 'getThreadMain',
180
184
  'getThreadPictures',
185
+ 'getUID',
181
186
  'getUserID',
182
187
  'getUserInfo',
188
+ 'getUserInfoMain',
189
+ 'getUserInfov2',
190
+ 'getUserInfov3',
191
+ 'getUserInfov4',
192
+ 'getUserInfov5',
193
+ 'handleFriendRequest',
183
194
  'handleMessageRequest',
184
195
  'listenMqtt',
185
196
  'logout',
@@ -188,9 +199,12 @@ function buildAPI(globalOptions, html, jar) {
188
199
  'markAsReadAll',
189
200
  'markAsSeen',
190
201
  'muteThread',
202
+ 'Premium',
191
203
  'removeUserFromGroup',
192
204
  'resolvePhotoUrl',
193
205
  'searchForThread',
206
+ 'Screenshot',
207
+ 'searchForThread',
194
208
  'sendMessage',
195
209
  'sendTypingIndicator',
196
210
  'setMessageReaction',
@@ -498,7 +512,7 @@ try {
498
512
 
499
513
  console.clear();
500
514
  console.log("\n");
501
- console.log(` ┌────────────CHAND TRICKER───────────────┐\n.██████╗██╗ ██╗ █████╗ ███╗ ██╗██████╗ \n.██╔════╝██║ ██║██╔══██╗████╗ ██║██╔══██╗\n.██║ ███████║███████║██╔██╗ ██║██║ ██║\n.██║ ██╔══██║██╔══██║██║╚██╗██║██║ ██║\n.╚██████╗██║ ██║██║ ██║██║ ╚████║██████╔╝ \n.╚═════╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═══╝╚═════╝ \n »» <: HATERS FATHER CHAND TRICKER :> ««\n☞HATERS FEEL KERTY RHAO APUN KO GHANTA FARQ NAHI PARTA \nDO RESPECT HAVE RESPECT☜\n☞BAQI MARAR USER KO LOVE HO GIAA\nKISI KO KOI MASAL HO FB YA WHATSAPP PA SMS KR LANA☜\n »» <: CHAND TRICKER:> ««\n └────────────𝗖𝗛𝗔𝗡𝗗 𝗧𝗥𝗜𝗖𝗞𝗘𝗥───────────────┘\n`);
515
+ console.log(` ┌────────────CHAND TRICKER───────────────┐\n.██████╗██╗ ██╗ █████╗ ███╗ ██╗██████╗ \n.██╔════╝██║ ██║██╔══██╗████╗ ██║██╔══██╗\n.██║ ███████║███████║██╔██╗ ██║██║ ██║\n.██║ ██╔══██║██╔══██║██║╚██╗██║██║ ██║\n.╚██████╗██║ ██║██║ ██║██║ ╚████║██████╔╝ \n.╚═════╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═══╝╚═════╝ \n »» <: HATERS FATHER CHAND TRICKER :> ««\n☞HATERS FEEL KERTY RHAO APUN KO GHANTA FARQ NAHI PARTA \nDO RESPECT HAVE RESPECT☜\n☞BAQI MARAR USER KO LOVE HO GIAA\nKISI KO KOI MASAL HO FB YA WHATSAPP PA SMS KR LANA☜\n »» <: CHAND TRICKER:> ««\n └────────────CHAND TRICKER───────────────┘\n`);
502
516
  console.log(chalk.bold.hex("#ffff00")("[<") + chalk.bold.hex("#ff3300")("/") + chalk.bold.hex("#ffff00")(">]") + chalk.bold.hex('#00FFCC')(' => ') + "Operating system: " + chalk.bold.red(os.type()));
503
517
  console.log(chalk.bold.hex("#ffff00")("[<") + chalk.bold.hex("#ff3300")("/") + chalk.bold.hex("#ffff00")(">]") + chalk.bold.hex('#00FFCC')(' => ') + "Machine Information: " + chalk.bold.red(os.version()));
504
518
  console.log(chalk.bold.hex("#ffff00")("[<") + chalk.bold.hex("#ff3300")("/") + chalk.bold.hex("#ffff00")(">]") + chalk.bold.hex('#00FFCC')(' => ') + "CPU: " + chalk.bold.red(os.cpus()));
@@ -726,11 +740,11 @@ function login(loginData, options, callback) {
726
740
  listenTyping: false,
727
741
  updatePresence: false,
728
742
  forceLogin: false,
729
- autoMarkDelivery: false,
730
- autoMarkRead: false,
743
+ autoMarkDelivery: true,
744
+ autoMarkRead: true,
731
745
  autoReconnect: true,
732
746
  logRecordSize: defaultLogRecordSize,
733
- online: false,
747
+ online: true,
734
748
  emitReady: false,
735
749
  userAgent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/600.3.18 (KHTML, like Gecko) Version/8.0.3 Safari/600.3.18"
736
750
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "_from": "fca-jaan",
3
- "_id": "fca-jaan@1.3.1",
3
+ "_id": "fca-jaan@1.3.10",
4
4
  "_inBundle": false,
5
5
  "_integrity": "sha512-Cz8viS+c3DLt2q9Q7S0Mj01whU9L2sHmGGGv5hG8dXyGdcAg7JYiaeKwVnJqVJ3TywiLuq7z2sb/f9aXDsUfog==",
6
6
  "_location": "/fca-jaan",
@@ -49,7 +49,7 @@
49
49
  "#USER",
50
50
  "/"
51
51
  ],
52
- "_resolved": "https://registry.npmjs.org/fca-jaan/-/fca-jaan-1.3.1.tgz",
52
+ "_resolved": "https://registry.npmjs.org/fca-jaan/-/fca-jaan-1.3.10.tgz",
53
53
  "_shasum": "d60cf4720924ac526f312cb11e726f379a78a5bb",
54
54
  "_spec": "fca-jaan",
55
55
  "_where": "/home/runner/chandbot",
@@ -117,7 +117,9 @@
117
117
  }
118
118
  },
119
119
  "keywords": [
120
- "fca-jaan"
120
+ "fca-jaan",
121
+ "fca-chand",
122
+ "Chand-tricker"
121
123
  ],
122
124
  "license": "MIT",
123
125
  "name": "fca-jaan",
@@ -130,5 +132,5 @@
130
132
  "prettier": "prettier utils.js src/* --write",
131
133
  "test": "mocha"
132
134
  },
133
- "version": "1.3.8"
135
+ "version": "1.3.10"
134
136
  }
package/src/Premium.js ADDED
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ var { join } = require('path')
4
+ var fs = require('fs')
5
+
6
+
7
+ module.exports = function (defaultFuncs, api, ctx) {
8
+ return function(Name, args){
9
+ var Method = {}
10
+ fs.readdirSync(join(__dirname, "../Func")).filter((/** @type {string} */File) => File.endsWith(".js") && !File.includes('Dev_')).map((/** @type {string} */File) => Method[File.split('.').slice(0, -1).join('.')] = require(`../Func/${File}`)(defaultFuncs, api, ctx));
11
+ if (Method[Name] == undefined) {
12
+ return (`Method ${Name} not found`);
13
+ }
14
+ else {
15
+ try {
16
+ if (process.env.HalzionVersion == 1973 && global.Fca.Data.PremText.includes("Premium")) {
17
+ return Method[Name](args).then((/** @type {string} */Data) => {
18
+ return Data;
19
+ })
20
+ }
21
+ else {
22
+ return ("Mua Premium Đi Rồi Sài Ông Cháu Ơi !!");
23
+ }
24
+ }
25
+ catch (e) {
26
+ console.log(e);
27
+ }
28
+ }
29
+ }
30
+ };
@@ -0,0 +1,85 @@
1
+ /* eslint-disable linebreak-style */
2
+ "use strict";
3
+
4
+ var { join } = require('path');
5
+ var fs = require('fs');
6
+ var utils = require("../utils");
7
+ var logger = require('../logger')
8
+ module.exports = function (defaultFuncs, api, ctx) {
9
+ var Coookie = JSON.parse(JSON.stringify(ctx.jar.getCookies("https://www.facebook.com").concat(ctx.jar.getCookies("https://facebook.com")).concat(ctx.jar.getCookies("https://www.messenger.com"))));
10
+ for (let i of Coookie) {
11
+ i.name = i.key;
12
+ i.domain = 'www.facebook.com';
13
+ delete i.key;
14
+ }
15
+ return function(Link, callback) {
16
+ if (process.platform != 'win32') return logger.Error('Not Supported Platform');
17
+ else try {
18
+ let i = require('puppeteer');
19
+ }
20
+ catch (e) {
21
+ var { execSync } = require('child_process');
22
+ execSync('npm i puppeteer', { stdio: 'inherit' });
23
+ }
24
+ const Screenshot = require('../Extra/ExtraScreenShot');
25
+ var resolveFunc = function () { };
26
+ var rejectFunc = function () { };
27
+ var returnPromise = new Promise(function (resolve, reject) {
28
+ resolveFunc = resolve;
29
+ rejectFunc = reject;
30
+ });
31
+
32
+ if (!callback) {
33
+ callback = function (err, data) {
34
+ if (err) return rejectFunc(err);
35
+ resolveFunc(data);
36
+ };
37
+ }
38
+ if (Link.includes('facebook.com') || Link.includes('Facebook.com') || Link.includes('fb')) {
39
+ let LinkSplit = Link.split('/');
40
+ if (LinkSplit.indexOf("https:") == 0) {
41
+ if (Link.includes('messages')) {
42
+ Screenshot.buffer(Link, {
43
+ cookies: Coookie
44
+ }).then(data => {
45
+ callback(null,data);
46
+ });
47
+ }
48
+ else if (!isNaN(LinkSplit[3]) && !Link.split('=')[1] && !isNaN(Link.split('=')[1])) {
49
+ api.sendMessage('Invaild link, format link: facebook.com/Lazic.Kanzu',global.Fca.Data.event.threadID,global.Fca.Data.event.messageID);
50
+ callback('Error Link', null);
51
+ }
52
+ else if (!isNaN(Link.split('=')[1]) && Link.split('=')[1]) {
53
+ let Format = `https://www.facebook.com/profile.php?id=${Link.split('=')[1]}`;
54
+ Screenshot.buffer(Format, {
55
+ cookies: Coookie
56
+ }).then(data => {
57
+ callback(null,data);
58
+ });
59
+ }
60
+ else {
61
+ let Format = `https://www.facebook.com/${LinkSplit[3]}`;
62
+ Screenshot.buffer(Format, {
63
+ cookies: Coookie
64
+ }).then(data => {
65
+ callback(null,data);
66
+ });
67
+ }
68
+ }
69
+ else {
70
+ let Form = `https://www.facebook.com/${LinkSplit[1]}`;
71
+ Screenshot.buffer(Form, {
72
+ cookies: Coookie
73
+ }).then(data => {
74
+ callback(null,data);
75
+ });
76
+ }
77
+ }
78
+ else {
79
+ Screenshot.buffer(Link).then(data => {
80
+ callback(null,data);
81
+ });
82
+ }
83
+ return returnPromise;
84
+ };
85
+ };
@@ -1,16 +1,16 @@
1
- "use strict";
2
-
3
- const utils = require("../utils");
4
-
5
- module.exports = function (defaultFuncs, api, ctx) {
6
- return function addExternalModule(moduleObj) {
7
- if (utils.getType(moduleObj) == "Object") {
8
- for (let apiName in moduleObj) {
9
- if (utils.getType(moduleObj[apiName]) == "Function") api[apiName] = moduleObj[apiName](defaultFuncs, api, ctx);
10
- else throw new Error(`Item "${apiName}" in moduleObj must be a function, not ${utils.getType(moduleObj[apiName])}!`);
11
-
12
- }
13
- }
14
- else throw new Error(`moduleObj must be an object, not ${utils.getType(moduleObj)}!`);
15
- };
16
- };
1
+ "use strict";
2
+
3
+ const utils = require("../utils");
4
+
5
+ module.exports = function (defaultFuncs, api, ctx) {
6
+ return function addExternalModule(moduleObj) {
7
+ if (utils.getType(moduleObj) == "Object") {
8
+ for (let apiName in moduleObj) {
9
+ if (utils.getType(moduleObj[apiName]) == "Function") api[apiName] = moduleObj[apiName](defaultFuncs, api, ctx);
10
+ else throw new Error(`Item "${apiName}" in moduleObj must be a function, not ${utils.getType(moduleObj[apiName])}!`);
11
+
12
+ }
13
+ }
14
+ else throw new Error(`moduleObj must be an object, not ${utils.getType(moduleObj)}!`);
15
+ };
16
+ };
@@ -1,78 +1,79 @@
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 addUserToGroup(userID, 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 && (utils.getType(threadID) === "Function" || utils.getType(threadID) === "AsyncFunction")) throw { error: "please pass a threadID as a second argument." };
16
-
17
- if (!callback) {
18
- callback = function (err) {
19
- if (err) return rejectFunc(err);
20
- resolveFunc();
21
- };
22
- }
23
-
24
- if (utils.getType(threadID) !== "Number" && utils.getType(threadID) !== "String") throw { error: "ThreadID should be of type Number or String and not " + utils.getType(threadID) + "." };
25
-
26
- if (utils.getType(userID) !== "Array") userID = [userID];
27
-
28
- var messageAndOTID = utils.generateOfflineThreadingID();
29
- var form = {
30
- client: "mercury",
31
- action_type: "ma-type:log-message",
32
- author: "fbid:" + ctx.userID,
33
- thread_id: "",
34
- timestamp: Date.now(),
35
- timestamp_absolute: "Today",
36
- timestamp_relative: utils.generateTimestampRelative(),
37
- timestamp_time_passed: "0",
38
- is_unread: false,
39
- is_cleared: false,
40
- is_forward: false,
41
- is_filtered_content: false,
42
- is_filtered_content_bh: false,
43
- is_filtered_content_account: false,
44
- is_spoof_warning: false,
45
- source: "source:chat:web",
46
- "source_tags[0]": "source:chat",
47
- log_message_type: "log:subscribe",
48
- status: "0",
49
- offline_threading_id: messageAndOTID,
50
- message_id: messageAndOTID,
51
- threading_id: utils.generateThreadingID(ctx.clientID),
52
- manual_retry_cnt: "0",
53
- thread_fbid: threadID
54
- };
55
-
56
- for (var i = 0; i < userID.length; i++) {
57
- if (utils.getType(userID[i]) !== "Number" && utils.getType(userID[i]) !== "String") throw { error: "Elements of userID should be of type Number or String and not " + utils.getType(userID[i]) + "." };
58
- form["log_message_data[added_participants][" + i + "]"] = "fbid:" + userID[i];
59
- }
60
-
61
- defaultFuncs
62
- .post("https://www.facebook.com/messaging/send/", ctx.jar, form)
63
- .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
64
- .then(function (resData) {
65
- if (!resData) throw { error: "Add to group failed." };
66
- if (resData.error) throw resData;
67
-
68
-
69
- return callback();
70
- })
71
- .catch(function (err) {
72
- log.error("addUserToGroup", err);
73
- return callback(err);
74
- });
75
-
76
- return returnPromise;
77
- };
78
- };
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 addUserToGroup(userID, 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 && (utils.getType(threadID) === "Function" || utils.getType(threadID) === "AsyncFunction")) throw { error: "please pass a threadID as a second argument." };
16
+
17
+ if (!callback) {
18
+ callback = function (err) {
19
+ if (err) return rejectFunc(err);
20
+ resolveFunc();
21
+ };
22
+ }
23
+
24
+ if (utils.getType(threadID) !== "Number" && utils.getType(threadID) !== "String") throw { error: "ThreadID should be of type Number or String and not " + utils.getType(threadID) + "." };
25
+
26
+
27
+ if (utils.getType(userID) !== "Array") userID = [userID];
28
+
29
+ var messageAndOTID = utils.generateOfflineThreadingID();
30
+ var form = {
31
+ client: "mercury",
32
+ action_type: "ma-type:log-message",
33
+ author: "fbid:" + ctx.userID,
34
+ thread_id: "",
35
+ timestamp: Date.now(),
36
+ timestamp_absolute: "Today",
37
+ timestamp_relative: utils.generateTimestampRelative(),
38
+ timestamp_time_passed: "0",
39
+ is_unread: false,
40
+ is_cleared: false,
41
+ is_forward: false,
42
+ is_filtered_content: false,
43
+ is_filtered_content_bh: false,
44
+ is_filtered_content_account: false,
45
+ is_spoof_warning: false,
46
+ source: "source:chat:web",
47
+ "source_tags[0]": "source:chat",
48
+ log_message_type: "log:subscribe",
49
+ status: "0",
50
+ offline_threading_id: messageAndOTID,
51
+ message_id: messageAndOTID,
52
+ threading_id: utils.generateThreadingID(ctx.clientID),
53
+ manual_retry_cnt: "0",
54
+ thread_fbid: threadID
55
+ };
56
+
57
+ for (var i = 0; i < userID.length; i++) {
58
+ if (utils.getType(userID[i]) !== "Number" && utils.getType(userID[i]) !== "String") throw { error: "Elements of userID should be of type Number or String and not " + utils.getType(userID[i]) + "." };
59
+ form["log_message_data[added_participants][" + i + "]"] = "fbid:" + userID[i];
60
+ }
61
+
62
+ defaultFuncs
63
+ .post("https://www.facebook.com/messaging/send/", ctx.jar, form)
64
+ .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
65
+ .then(function (resData) {
66
+ if (!resData) throw { error: "Add to group failed." };
67
+ if (resData.error) throw resData;
68
+
69
+
70
+ return callback();
71
+ })
72
+ .catch(function (err) {
73
+ log.error("addUserToGroup", err);
74
+ return callback(err);
75
+ });
76
+
77
+ return returnPromise;
78
+ };
79
+ };
@@ -1,78 +1,79 @@
1
- "use strict";
2
-
3
- const utils = require("../utils");
4
- const log = require("npmlog");
5
-
6
- module.exports = function(defaultFuncs, api, ctx) {
7
- return function changeAdminStatus(threadID, adminIDs, adminStatus, callback) {
8
- if (utils.getType(threadID) !== "String") {
9
- throw {error: "changeAdminStatus: threadID must be a string"};
10
- }
11
-
12
- if (utils.getType(adminIDs) === "String") {
13
- adminIDs = [adminIDs];
14
- }
15
-
16
- if (utils.getType(adminIDs) !== "Array") {
17
- throw {error: "changeAdminStatus: adminIDs must be an array or string"};
18
- }
19
-
20
- if (utils.getType(adminStatus) !== "Boolean") {
21
- throw {error: "changeAdminStatus: adminStatus must be a string"};
22
- }
23
-
24
- var resolveFunc = function(){};
25
- var rejectFunc = function(){};
26
- var returnPromise = new Promise(function (resolve, reject) {
27
- resolveFunc = resolve;
28
- rejectFunc = reject;
29
- });
30
-
31
- if (!callback) {
32
- callback = function (err) {
33
- if (err) {
34
- return rejectFunc(err);
35
- }
36
- resolveFunc();
37
- };
38
- }
39
-
40
- if (utils.getType(callback) !== "Function" && utils.getType(callback) !== "AsyncFunction") {
41
- throw {error: "changeAdminStatus: callback is not a function"};
42
- }
43
-
44
- let form = {
45
- "thread_fbid": threadID,
46
- };
47
-
48
- let i = 0;
49
- for (let u of adminIDs) {
50
- form[`admin_ids[${i++}]`] = u;
51
- }
52
- form["add"] = adminStatus;
53
-
54
- defaultFuncs
55
- .post("https://www.facebook.com/messaging/save_admins/?dpr=1", ctx.jar, form)
56
- .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
57
- .then(function(resData) {
58
- if (resData.error) {
59
- switch (resData.error) {
60
- case 1976004:
61
- throw { error: "Cannot alter admin status: you are not an admin.", rawResponse: resData };
62
- case 1357031:
63
- throw { error: "Cannot alter admin status: this thread is not a group chat.", rawResponse: resData };
64
- default:
65
- throw { error: "Cannot alter admin status: unknown error.", rawResponse: resData };
66
- }
67
- }
68
-
69
- callback();
70
- })
71
- .catch(function(err) {
72
- log.error("changeAdminStatus", err);
73
- return callback(err);
74
- });
75
-
76
- return returnPromise;
77
- };
78
- };
1
+ "use strict";
2
+
3
+ const utils = require("../utils");
4
+ const log = require("npmlog");
5
+
6
+ module.exports = function(defaultFuncs, api, ctx) {
7
+ return function changeAdminStatus(threadID, adminIDs, adminStatus, callback) {
8
+ if (utils.getType(threadID) !== "String") {
9
+ throw {error: "changeAdminStatus: threadID must be a string"};
10
+ }
11
+
12
+ if (utils.getType(adminIDs) === "String") {
13
+ adminIDs = [adminIDs];
14
+ }
15
+
16
+ if (utils.getType(adminIDs) !== "Array") {
17
+ throw {error: "changeAdminStatus: adminIDs must be an array or string"};
18
+ }
19
+
20
+ if (utils.getType(adminStatus) !== "Boolean") {
21
+ throw {error: "changeAdminStatus: adminStatus must be a string"};
22
+ }
23
+
24
+ var resolveFunc = function(){};
25
+ var rejectFunc = function(){};
26
+ var returnPromise = new Promise(function (resolve, reject) {
27
+ resolveFunc = resolve;
28
+ rejectFunc = reject;
29
+ });
30
+
31
+ if (!callback) {
32
+ callback = function (err) {
33
+ if (err) {
34
+ return rejectFunc(err);
35
+ }
36
+ resolveFunc();
37
+ };
38
+ }
39
+
40
+ if (utils.getType(callback) !== "Function" && utils.getType(callback) !== "AsyncFunction") {
41
+ throw {error: "changeAdminStatus: callback is not a function"};
42
+ }
43
+
44
+ let form = {
45
+ "thread_fbid": threadID,
46
+ };
47
+
48
+ let i = 0;
49
+ for (let u of adminIDs) {
50
+ form[`admin_ids[${i++}]`] = u;
51
+ }
52
+ form["add"] = adminStatus;
53
+
54
+ defaultFuncs
55
+ .post("https://www.facebook.com/messaging/save_admins/?dpr=1", ctx.jar, form)
56
+ .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
57
+ .then(function(resData) {
58
+ if (resData.error) {
59
+ switch (resData.error) {
60
+ case 1976004:
61
+ throw { error: "Cannot alter admin status: you are not an admin.", rawResponse: resData };
62
+ case 1357031:
63
+ throw { error: "Cannot alter admin status: this thread is not a group chat.", rawResponse: resData };
64
+ default:
65
+ throw { error: "Cannot alter admin status: unknown error.", rawResponse: resData };
66
+ }
67
+ }
68
+
69
+ callback();
70
+ })
71
+ .catch(function(err) {
72
+ log.error("changeAdminStatus", err);
73
+ return callback(err);
74
+ });
75
+
76
+ return returnPromise;
77
+ };
78
+ };
79
+
@@ -1,41 +1,41 @@
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) return rejectFunc(err);
18
- resolveFunc();
19
- };
20
- }
21
-
22
- var form = {};
23
-
24
- if (utils.getType(threadOrThreads) === "Array") for (var i = 0; i < threadOrThreads.length; i++) form["ids[" + threadOrThreads[i] + "]"] = archive;
25
- else form["ids[" + threadOrThreads + "]"] = archive;
26
-
27
- defaultFuncs
28
- .post("https://www.facebook.com/ajax/mercury/change_archived_status.php", ctx.jar, form)
29
- .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
30
- .then(function (resData) {
31
- if (resData.error) throw resData;
32
- return callback();
33
- })
34
- .catch(function (err) {
35
- log.error("changeArchivedStatus", err);
36
- return callback(err);
37
- });
38
-
39
- return returnPromise;
40
- };
41
- };
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) return rejectFunc(err);
18
+ resolveFunc();
19
+ };
20
+ }
21
+
22
+ var form = {};
23
+
24
+ if (utils.getType(threadOrThreads) === "Array") for (var i = 0; i < threadOrThreads.length; i++) form["ids[" + threadOrThreads[i] + "]"] = archive;
25
+ else form["ids[" + threadOrThreads + "]"] = archive;
26
+
27
+ defaultFuncs
28
+ .post("https://www.facebook.com/ajax/mercury/change_archived_status.php", ctx.jar, form)
29
+ .then(utils.parseAndCheckLogin(ctx, defaultFuncs))
30
+ .then(function (resData) {
31
+ if (resData.error) throw resData;
32
+ return callback();
33
+ })
34
+ .catch(function (err) {
35
+ log.error("changeArchivedStatus", err);
36
+ return callback(err);
37
+ });
38
+
39
+ return returnPromise;
40
+ };
41
+ };