zalo-toolkit 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/dist/apis/sendMessage.d.ts +5 -0
- package/dist/apis/sendMessage.js +31 -11
- package/dist/cjs/apis/acceptFriendRequest.cjs +33 -0
- package/dist/cjs/apis/addGroupBlockedMember.cjs +33 -0
- package/dist/cjs/apis/addGroupDeputy.cjs +36 -0
- package/dist/cjs/apis/addPollOptions.cjs +31 -0
- package/dist/cjs/apis/addQuickMessage.cjs +65 -0
- package/dist/cjs/apis/addReaction.cjs +297 -0
- package/dist/cjs/apis/addUnreadMark.cjs +65 -0
- package/dist/cjs/apis/addUserToGroup.cjs +39 -0
- package/dist/cjs/apis/blockUser.cjs +33 -0
- package/dist/cjs/apis/blockViewFeed.cjs +35 -0
- package/dist/cjs/apis/changeAccountAvatar.cjs +56 -0
- package/dist/cjs/apis/changeFriendAlias.cjs +32 -0
- package/dist/cjs/apis/changeGroupAvatar.cjs +47 -0
- package/dist/cjs/apis/changeGroupName.cjs +37 -0
- package/dist/cjs/apis/changeGroupOwner.cjs +36 -0
- package/dist/cjs/apis/createAutoReply.cjs +42 -0
- package/dist/cjs/apis/createCatalog.cjs +34 -0
- package/dist/cjs/apis/createGroup.cjs +48 -0
- package/dist/cjs/apis/createNote.cjs +52 -0
- package/dist/cjs/apis/createPoll.cjs +45 -0
- package/dist/cjs/apis/createProductCatalog.cjs +55 -0
- package/dist/cjs/apis/createReminder.cjs +76 -0
- package/dist/cjs/apis/custom.cjs +19 -0
- package/dist/cjs/apis/deleteAutoReply.cjs +34 -0
- package/dist/cjs/apis/deleteAvatar.cjs +32 -0
- package/dist/cjs/apis/deleteCatalog.cjs +33 -0
- package/dist/cjs/apis/deleteChat.cjs +63 -0
- package/dist/cjs/apis/deleteGroupInviteBox.cjs +32 -0
- package/dist/cjs/apis/deleteMessage.cjs +65 -0
- package/dist/cjs/apis/deleteProductCatalog.cjs +36 -0
- package/dist/cjs/apis/disableGroupLink.cjs +29 -0
- package/dist/cjs/apis/disperseGroup.cjs +33 -0
- package/dist/cjs/apis/editNote.cjs +51 -0
- package/dist/cjs/apis/editReminder.cjs +74 -0
- package/dist/cjs/apis/enableGroupLink.cjs +30 -0
- package/dist/cjs/apis/fetchAccountInfo.cjs +15 -0
- package/dist/cjs/apis/findUser.cjs +45 -0
- package/dist/cjs/apis/forwardAttachment.cjs +85 -0
- package/dist/cjs/apis/forwardMessage.cjs +122 -0
- package/dist/cjs/apis/getAliasList.cjs +33 -0
- package/dist/cjs/apis/getAllFriends.cjs +37 -0
- package/dist/cjs/apis/getAllGroups.cjs +15 -0
- package/dist/cjs/apis/getArchivedChatList.cjs +28 -0
- package/dist/cjs/apis/getAutoDeleteChat.cjs +26 -0
- package/dist/cjs/apis/getAutoReplyList.cjs +29 -0
- package/dist/cjs/apis/getAvatarList.cjs +33 -0
- package/dist/cjs/apis/getBizAccount.cjs +32 -0
- package/dist/cjs/apis/getCatalogList.cjs +37 -0
- package/dist/cjs/apis/getContext.cjs +9 -0
- package/dist/cjs/apis/getCookie.cjs +14 -0
- package/dist/cjs/apis/getFriendBoardList.cjs +31 -0
- package/dist/cjs/apis/getFriendOnlines.cjs +40 -0
- package/dist/cjs/apis/getFriendRecommendations.cjs +32 -0
- package/dist/cjs/apis/getFriendRequestStatus.cjs +30 -0
- package/dist/cjs/apis/getGroupBlockedMember.cjs +34 -0
- package/dist/cjs/apis/getGroupInfo.cjs +37 -0
- package/dist/cjs/apis/getGroupInviteBoxInfo.cjs +43 -0
- package/dist/cjs/apis/getGroupInviteBoxList.cjs +36 -0
- package/dist/cjs/apis/getGroupLinkDetail.cjs +30 -0
- package/dist/cjs/apis/getGroupLinkInfo.cjs +33 -0
- package/dist/cjs/apis/getGroupMembersInfo.cjs +29 -0
- package/dist/cjs/apis/getHiddenConversations.cjs +28 -0
- package/dist/cjs/apis/getLabels.cjs +33 -0
- package/dist/cjs/apis/getLastMessage.cjs +25 -0
- package/dist/cjs/apis/getListBoard.cjs +58 -0
- package/dist/cjs/apis/getListReminder.cjs +60 -0
- package/dist/cjs/apis/getMute.cjs +27 -0
- package/dist/cjs/apis/getOwnId.cjs +9 -0
- package/dist/cjs/apis/getPendingGroupMembers.cjs +32 -0
- package/dist/cjs/apis/getPinConversations.cjs +27 -0
- package/dist/cjs/apis/getPollDetail.cjs +35 -0
- package/dist/cjs/apis/getProductCatalogList.cjs +38 -0
- package/dist/cjs/apis/getQR.cjs +34 -0
- package/dist/cjs/apis/getQuickMessageList.cjs +29 -0
- package/dist/cjs/apis/getRecommendFriends.cjs +25 -0
- package/dist/cjs/apis/getRelatedFriendGroup.cjs +35 -0
- package/dist/cjs/apis/getReminder.cjs +30 -0
- package/dist/cjs/apis/getReminderResponses.cjs +29 -0
- package/dist/cjs/apis/getSentFriendRequest.cjs +29 -0
- package/dist/cjs/apis/getSettings.cjs +25 -0
- package/dist/cjs/apis/getStickers.cjs +45 -0
- package/dist/cjs/apis/getStickersDetail.cjs +45 -0
- package/dist/cjs/apis/getUnreadMark.cjs +35 -0
- package/dist/cjs/apis/getUserInfo.cjs +47 -0
- package/dist/cjs/apis/inviteUserToGroups.cjs +35 -0
- package/dist/cjs/apis/joinGroupInviteBox.cjs +30 -0
- package/dist/cjs/apis/joinGroupLink.cjs +32 -0
- package/dist/cjs/apis/keepAlive.cjs +27 -0
- package/dist/cjs/apis/lastOnline.cjs +31 -0
- package/dist/cjs/apis/leaveGroup.cjs +38 -0
- package/dist/cjs/apis/lockPoll.cjs +33 -0
- package/dist/cjs/apis/parseLink.cjs +32 -0
- package/dist/cjs/apis/rejectFriendRequest.cjs +32 -0
- package/dist/cjs/apis/removeFriend.cjs +33 -0
- package/dist/cjs/apis/removeFriendAlias.cjs +29 -0
- package/dist/cjs/apis/removeGroupBlockedMember.cjs +33 -0
- package/dist/cjs/apis/removeGroupDeputy.cjs +35 -0
- package/dist/cjs/apis/removeQuickMessage.cjs +32 -0
- package/dist/cjs/apis/removeReminder.cjs +53 -0
- package/dist/cjs/apis/removeUnreadMark.cjs +63 -0
- package/dist/cjs/apis/removeUserFromGroup.cjs +39 -0
- package/dist/cjs/apis/resetHiddenConversPin.cjs +25 -0
- package/dist/cjs/apis/reuseAvatar.cjs +31 -0
- package/dist/cjs/apis/reviewPendingMemberRequest.cjs +33 -11
- package/dist/cjs/apis/sendBankCard.cjs +50 -0
- package/dist/cjs/apis/sendCard.cjs +72 -0
- package/dist/cjs/apis/sendDeliveredEvent.cjs +68 -0
- package/dist/cjs/apis/sendFriendRequest.cjs +44 -0
- package/dist/cjs/apis/sendLink.cjs +70 -0
- package/dist/cjs/apis/sendMessage.cjs +437 -11
- package/dist/cjs/apis/sendReport.cjs +48 -10
- package/dist/cjs/apis/sendSeenEvent.cjs +76 -0
- package/dist/cjs/apis/sendSticker.cjs +69 -0
- package/dist/cjs/apis/sendTypingEvent.cjs +46 -0
- package/dist/cjs/apis/sendVideo.cjs +131 -0
- package/dist/cjs/apis/sendVoice.cjs +86 -0
- package/dist/cjs/apis/setArchivedConversations.cjs +39 -0
- package/dist/cjs/apis/setHiddenConversations.cjs +52 -0
- package/dist/cjs/apis/setMute.cjs +57 -10
- package/dist/cjs/apis/setPinnedConversations.cjs +47 -0
- package/dist/cjs/apis/sharePoll.cjs +33 -0
- package/dist/cjs/apis/unblockUser.cjs +33 -0
- package/dist/cjs/apis/undo.cjs +55 -0
- package/dist/cjs/apis/undoFriendRequest.cjs +32 -0
- package/dist/cjs/apis/updateActiveStatus.cjs +32 -0
- package/dist/cjs/apis/updateAutoDeleteChat.cjs +35 -10
- package/dist/cjs/apis/updateAutoReply.cjs +43 -0
- package/dist/cjs/apis/updateCatalog.cjs +35 -0
- package/dist/cjs/apis/updateGroupSettings.cjs +48 -0
- package/dist/cjs/apis/updateHiddenConversPin.cjs +35 -0
- package/dist/cjs/apis/updateLabels.cjs +39 -0
- package/dist/cjs/apis/updateLang.cjs +27 -11
- package/dist/cjs/apis/updateProductCatalog.cjs +56 -0
- package/dist/cjs/apis/updateProfile.cjs +48 -0
- package/dist/cjs/apis/updateQuickMessage.cjs +66 -0
- package/dist/cjs/apis/updateSettings.cjs +77 -11
- package/dist/cjs/apis/uploadAttachment.cjs +208 -0
- package/dist/cjs/apis/uploadProductPhoto.cjs +50 -0
- package/dist/cjs/apis/votePoll.cjs +34 -0
- package/dist/cjs/apis.cjs +292 -0
- package/dist/cjs/context.cjs +15 -0
- package/dist/cjs/core/enums/common.cjs +14 -0
- package/dist/cjs/core/utils/index.cjs +33 -0
- package/dist/cjs/models/GroupEvent.cjs +2 -4
- package/dist/cjs/utils.cjs +229 -3
- package/dist/cjs/zalo.cjs +18 -7
- package/dist/index.d.ts +1 -0
- package/dist/models/GroupEvent.d.ts +2 -2
- package/dist/models/GroupEvent.js +2 -4
- package/dist/models/Message.d.ts +6 -0
- package/dist/zalo.d.ts +17 -10
- package/dist/zalo.js +19 -8
- package/package.json +1 -1
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var ZaloApiError = require('../Errors/ZaloApiError.cjs');
|
|
4
|
+
var utils = require('../utils.cjs');
|
|
5
|
+
|
|
6
|
+
const removeFriendAliasFactory = utils.apiFactory()((api, _ctx, utils) => {
|
|
7
|
+
const serviceURL = utils.makeURL(`${api.zpwServiceMap.alias[0]}/api/alias/remove`);
|
|
8
|
+
/**
|
|
9
|
+
* Remove friend's alias
|
|
10
|
+
*
|
|
11
|
+
* @param friendId friend id
|
|
12
|
+
*
|
|
13
|
+
* @throws {ZaloApiError}
|
|
14
|
+
*/
|
|
15
|
+
return async function removeFriendAlias(friendId) {
|
|
16
|
+
const params = {
|
|
17
|
+
friendId: friendId,
|
|
18
|
+
};
|
|
19
|
+
const encryptedParams = utils.encodeAES(JSON.stringify(params));
|
|
20
|
+
if (!encryptedParams)
|
|
21
|
+
throw new ZaloApiError.ZaloApiError('Failed to encrypt params');
|
|
22
|
+
const response = await utils.request(utils.makeURL(serviceURL, { params: encryptedParams }), {
|
|
23
|
+
method: 'GET',
|
|
24
|
+
});
|
|
25
|
+
return utils.resolve(response);
|
|
26
|
+
};
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
exports.removeFriendAliasFactory = removeFriendAliasFactory;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var ZaloApiError = require('../Errors/ZaloApiError.cjs');
|
|
4
|
+
var utils = require('../utils.cjs');
|
|
5
|
+
|
|
6
|
+
const removeGroupBlockedMemberFactory = utils.apiFactory()((api, _, utils) => {
|
|
7
|
+
const serviceURL = utils.makeURL(`${api.zpwServiceMap.group[0]}/api/group/blockedmems/remove`);
|
|
8
|
+
/**
|
|
9
|
+
* Remove group blocked member
|
|
10
|
+
*
|
|
11
|
+
* @param memberId member id(s)
|
|
12
|
+
* @param groupId group id
|
|
13
|
+
*
|
|
14
|
+
* @throws {ZaloApiError}
|
|
15
|
+
*/
|
|
16
|
+
return async function removeGroupBlockedMember(memberId, groupId) {
|
|
17
|
+
if (!Array.isArray(memberId))
|
|
18
|
+
memberId = [memberId];
|
|
19
|
+
const params = {
|
|
20
|
+
grid: groupId,
|
|
21
|
+
members: memberId,
|
|
22
|
+
};
|
|
23
|
+
const encryptedParams = utils.encodeAES(JSON.stringify(params));
|
|
24
|
+
if (!encryptedParams)
|
|
25
|
+
throw new ZaloApiError.ZaloApiError('Failed to encrypt params');
|
|
26
|
+
const response = await utils.request(utils.makeURL(serviceURL, { params: encryptedParams }), {
|
|
27
|
+
method: 'GET',
|
|
28
|
+
});
|
|
29
|
+
return utils.resolve(response);
|
|
30
|
+
};
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
exports.removeGroupBlockedMemberFactory = removeGroupBlockedMemberFactory;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var ZaloApiError = require('../Errors/ZaloApiError.cjs');
|
|
4
|
+
var utils = require('../utils.cjs');
|
|
5
|
+
|
|
6
|
+
const removeGroupDeputyFactory = utils.apiFactory()((api, ctx, utils) => {
|
|
7
|
+
const serviceURL = utils.makeURL(`${api.zpwServiceMap.group[0]}/api/group/admins/remove`);
|
|
8
|
+
/**
|
|
9
|
+
* Remove group deputy
|
|
10
|
+
*
|
|
11
|
+
* @param memberId user Id or list of user Ids
|
|
12
|
+
* @param groupId group Id
|
|
13
|
+
*
|
|
14
|
+
* @throws {ZaloApiError}
|
|
15
|
+
*
|
|
16
|
+
*/
|
|
17
|
+
return async function removeGroupDeputy(memberId, groupId) {
|
|
18
|
+
if (!Array.isArray(memberId))
|
|
19
|
+
memberId = [memberId];
|
|
20
|
+
const params = {
|
|
21
|
+
grid: groupId,
|
|
22
|
+
members: memberId,
|
|
23
|
+
imei: ctx.imei,
|
|
24
|
+
};
|
|
25
|
+
const encryptedParams = utils.encodeAES(JSON.stringify(params));
|
|
26
|
+
if (!encryptedParams)
|
|
27
|
+
throw new ZaloApiError.ZaloApiError('Failed to encrypt params');
|
|
28
|
+
const response = await utils.request(utils.makeURL(serviceURL, { params: encryptedParams }), {
|
|
29
|
+
method: 'GET',
|
|
30
|
+
});
|
|
31
|
+
return utils.resolve(response);
|
|
32
|
+
};
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
exports.removeGroupDeputyFactory = removeGroupDeputyFactory;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var ZaloApiError = require('../Errors/ZaloApiError.cjs');
|
|
4
|
+
var utils = require('../utils.cjs');
|
|
5
|
+
|
|
6
|
+
const removeQuickMessageFactory = utils.apiFactory()((api, _ctx, utils) => {
|
|
7
|
+
const serviceURL = utils.makeURL(`${api.zpwServiceMap.quick_message[0]}/api/quickmessage/delete`);
|
|
8
|
+
/**
|
|
9
|
+
* Remove quick message
|
|
10
|
+
*
|
|
11
|
+
* @param itemIds - The id(s) of the quick message(s) to remove (number or number[])
|
|
12
|
+
*
|
|
13
|
+
* @note Zalo might throw an error with code 212 if the item does not exist
|
|
14
|
+
*
|
|
15
|
+
* @throws {ZaloApiError}
|
|
16
|
+
*/
|
|
17
|
+
return async function removeQuickMessage(itemIds) {
|
|
18
|
+
const idsArray = Array.isArray(itemIds) ? itemIds : [itemIds];
|
|
19
|
+
const params = {
|
|
20
|
+
itemIds: idsArray,
|
|
21
|
+
};
|
|
22
|
+
const encryptedParams = utils.encodeAES(JSON.stringify(params));
|
|
23
|
+
if (!encryptedParams)
|
|
24
|
+
throw new ZaloApiError.ZaloApiError('Failed to encrypt params');
|
|
25
|
+
const response = await utils.request(utils.makeURL(serviceURL, { params: encryptedParams }), {
|
|
26
|
+
method: 'GET',
|
|
27
|
+
});
|
|
28
|
+
return utils.resolve(response);
|
|
29
|
+
};
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
exports.removeQuickMessageFactory = removeQuickMessageFactory;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var ZaloApiError = require('../Errors/ZaloApiError.cjs');
|
|
4
|
+
require('../models/AutoReply.cjs');
|
|
5
|
+
require('../models/Board.cjs');
|
|
6
|
+
var Enum = require('../models/Enum.cjs');
|
|
7
|
+
require('../models/FriendEvent.cjs');
|
|
8
|
+
require('../models/Group.cjs');
|
|
9
|
+
require('../models/GroupEvent.cjs');
|
|
10
|
+
var utils = require('../utils.cjs');
|
|
11
|
+
require('../models/Reaction.cjs');
|
|
12
|
+
require('../models/Reminder.cjs');
|
|
13
|
+
require('../models/ZBusiness.cjs');
|
|
14
|
+
|
|
15
|
+
const removeReminderFactory = utils.apiFactory()((api, ctx, utils) => {
|
|
16
|
+
const serviceURL = {
|
|
17
|
+
[Enum.ThreadType.User]: utils.makeURL(`${api.zpwServiceMap.group_board[0]}/api/board/oneone/remove`),
|
|
18
|
+
[Enum.ThreadType.Group]: utils.makeURL(`${api.zpwServiceMap.group_board[0]}/api/board/topic/remove`),
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Remove a reminder in a (user/group)
|
|
22
|
+
*
|
|
23
|
+
* @param reminderId Reminder ID to remove reminder from
|
|
24
|
+
* @param threadId (User/Group) ID to remove reminder from
|
|
25
|
+
* @param type Thread type (User or Group)
|
|
26
|
+
*
|
|
27
|
+
* @throws {ZaloApiError}
|
|
28
|
+
*/
|
|
29
|
+
return async function removeReminder(reminderId, threadId, type = Enum.ThreadType.User) {
|
|
30
|
+
const params = type === Enum.ThreadType.User
|
|
31
|
+
? {
|
|
32
|
+
uid: threadId,
|
|
33
|
+
reminderId: reminderId,
|
|
34
|
+
}
|
|
35
|
+
: {
|
|
36
|
+
grid: threadId,
|
|
37
|
+
topicId: reminderId,
|
|
38
|
+
imei: ctx.imei,
|
|
39
|
+
};
|
|
40
|
+
const encryptedParams = utils.encodeAES(JSON.stringify(params));
|
|
41
|
+
if (!encryptedParams)
|
|
42
|
+
throw new ZaloApiError.ZaloApiError('Failed to encrypt params');
|
|
43
|
+
const response = await utils.request(serviceURL[type], {
|
|
44
|
+
method: 'POST',
|
|
45
|
+
body: new URLSearchParams({
|
|
46
|
+
params: encryptedParams,
|
|
47
|
+
}),
|
|
48
|
+
});
|
|
49
|
+
return utils.resolve(response);
|
|
50
|
+
};
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
exports.removeReminderFactory = removeReminderFactory;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var ZaloApiError = require('../Errors/ZaloApiError.cjs');
|
|
4
|
+
require('../models/AutoReply.cjs');
|
|
5
|
+
require('../models/Board.cjs');
|
|
6
|
+
var Enum = require('../models/Enum.cjs');
|
|
7
|
+
require('../models/FriendEvent.cjs');
|
|
8
|
+
require('../models/Group.cjs');
|
|
9
|
+
require('../models/GroupEvent.cjs');
|
|
10
|
+
var utils = require('../utils.cjs');
|
|
11
|
+
require('../models/Reaction.cjs');
|
|
12
|
+
require('../models/Reminder.cjs');
|
|
13
|
+
require('../models/ZBusiness.cjs');
|
|
14
|
+
|
|
15
|
+
const removeUnreadMarkFactory = utils.apiFactory()((api, ctx, utils) => {
|
|
16
|
+
const serviceURL = utils.makeURL(`${api.zpwServiceMap.conversation[0]}/api/conv/removeUnreadMark`);
|
|
17
|
+
/**
|
|
18
|
+
* Remove unread mark from conversation
|
|
19
|
+
*
|
|
20
|
+
* @param threadId Thread ID
|
|
21
|
+
* @param type Thread type (User/Group)
|
|
22
|
+
*
|
|
23
|
+
* @throws {ZaloApiError}
|
|
24
|
+
*/
|
|
25
|
+
return async function removeUnreadMark(threadId, type = Enum.ThreadType.User) {
|
|
26
|
+
const timestamp = Date.now();
|
|
27
|
+
const isGroup = type === Enum.ThreadType.Group;
|
|
28
|
+
const requestParams = {
|
|
29
|
+
param: JSON.stringify({
|
|
30
|
+
[isGroup ? 'convsGroup' : 'convsUser']: [threadId],
|
|
31
|
+
[isGroup ? 'convsUser' : 'convsGroup']: [],
|
|
32
|
+
[isGroup ? 'convsGroupData' : 'convsUserData']: [
|
|
33
|
+
{
|
|
34
|
+
id: threadId,
|
|
35
|
+
ts: timestamp,
|
|
36
|
+
},
|
|
37
|
+
],
|
|
38
|
+
[isGroup ? 'convsUserData' : 'convsGroupData']: [],
|
|
39
|
+
}),
|
|
40
|
+
};
|
|
41
|
+
const encryptedParams = utils.encodeAES(JSON.stringify(requestParams));
|
|
42
|
+
if (!encryptedParams)
|
|
43
|
+
throw new ZaloApiError.ZaloApiError('Failed to encrypt params');
|
|
44
|
+
const response = await utils.request(serviceURL, {
|
|
45
|
+
method: 'POST',
|
|
46
|
+
body: new URLSearchParams({
|
|
47
|
+
params: encryptedParams,
|
|
48
|
+
}),
|
|
49
|
+
});
|
|
50
|
+
return utils.resolve(response, (result) => {
|
|
51
|
+
const data = result.data;
|
|
52
|
+
if (typeof data.data === 'string') {
|
|
53
|
+
return {
|
|
54
|
+
data: JSON.parse(data.data),
|
|
55
|
+
status: data.status,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
return result.data;
|
|
59
|
+
});
|
|
60
|
+
};
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
exports.removeUnreadMarkFactory = removeUnreadMarkFactory;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var ZaloApiError = require('../Errors/ZaloApiError.cjs');
|
|
4
|
+
var utils = require('../utils.cjs');
|
|
5
|
+
|
|
6
|
+
const removeUserFromGroupFactory = utils.apiFactory()((api, ctx, utils) => {
|
|
7
|
+
const serviceURL = utils.makeURL(`${api.zpwServiceMap.group[0]}/api/group/kickout`);
|
|
8
|
+
/**
|
|
9
|
+
* Remove user from existing group
|
|
10
|
+
*
|
|
11
|
+
* @param memberId User ID or list of user IDs to remove
|
|
12
|
+
* @param groupId Group ID
|
|
13
|
+
*
|
|
14
|
+
* @note Zalo might throw an error with code 165 if the user is not in the group, 166 if you don't have enough permissions or is not in the group
|
|
15
|
+
*
|
|
16
|
+
* @throws {ZaloApiError}
|
|
17
|
+
*/
|
|
18
|
+
return async function removeUserFromGroup(memberId, groupId) {
|
|
19
|
+
if (!Array.isArray(memberId))
|
|
20
|
+
memberId = [memberId];
|
|
21
|
+
const params = {
|
|
22
|
+
grid: groupId,
|
|
23
|
+
members: memberId,
|
|
24
|
+
imei: ctx.imei,
|
|
25
|
+
};
|
|
26
|
+
const encryptedParams = utils.encodeAES(JSON.stringify(params));
|
|
27
|
+
if (!encryptedParams)
|
|
28
|
+
throw new ZaloApiError.ZaloApiError('Failed to encrypt params');
|
|
29
|
+
const response = await utils.request(serviceURL, {
|
|
30
|
+
method: 'POST',
|
|
31
|
+
body: new URLSearchParams({
|
|
32
|
+
params: encryptedParams,
|
|
33
|
+
}),
|
|
34
|
+
});
|
|
35
|
+
return utils.resolve(response);
|
|
36
|
+
};
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
exports.removeUserFromGroupFactory = removeUserFromGroupFactory;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var ZaloApiError = require('../Errors/ZaloApiError.cjs');
|
|
4
|
+
var utils = require('../utils.cjs');
|
|
5
|
+
|
|
6
|
+
const resetHiddenConversPinFactory = utils.apiFactory()((api, _ctx, utils) => {
|
|
7
|
+
const serviceURL = utils.makeURL(`${api.zpwServiceMap.conversation[0]}/api/hiddenconvers/reset`);
|
|
8
|
+
/**
|
|
9
|
+
* Reset hidden conversation pin
|
|
10
|
+
*
|
|
11
|
+
* @throws {ZaloApiError}
|
|
12
|
+
*/
|
|
13
|
+
return async function resetHiddenConversPin() {
|
|
14
|
+
const params = {};
|
|
15
|
+
const encryptedParams = utils.encodeAES(JSON.stringify(params));
|
|
16
|
+
if (!encryptedParams)
|
|
17
|
+
throw new ZaloApiError.ZaloApiError('Failed to encrypt params');
|
|
18
|
+
const response = await utils.request(utils.makeURL(serviceURL, { params: encryptedParams }), {
|
|
19
|
+
method: 'GET',
|
|
20
|
+
});
|
|
21
|
+
return utils.resolve(response);
|
|
22
|
+
};
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
exports.resetHiddenConversPinFactory = resetHiddenConversPinFactory;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var ZaloApiError = require('../Errors/ZaloApiError.cjs');
|
|
4
|
+
var utils = require('../utils.cjs');
|
|
5
|
+
|
|
6
|
+
const reuseAvatarFactory = utils.apiFactory()((api, ctx, utils) => {
|
|
7
|
+
const serviceURL = utils.makeURL(`${api.zpwServiceMap.profile[0]}/api/social/reuse-avatar`);
|
|
8
|
+
/**
|
|
9
|
+
* Reuse avatar
|
|
10
|
+
*
|
|
11
|
+
* @param photoId photo id from getAvatarList api
|
|
12
|
+
*
|
|
13
|
+
* @throws {ZaloApiError}
|
|
14
|
+
*/
|
|
15
|
+
return async function reuseAvatar(photoId) {
|
|
16
|
+
const params = {
|
|
17
|
+
photoId: photoId,
|
|
18
|
+
isPostSocial: 0,
|
|
19
|
+
imei: ctx.imei,
|
|
20
|
+
};
|
|
21
|
+
const encryptedParams = utils.encodeAES(JSON.stringify(params));
|
|
22
|
+
if (!encryptedParams)
|
|
23
|
+
throw new ZaloApiError.ZaloApiError('Failed to encrypt params');
|
|
24
|
+
const response = await utils.request(utils.makeURL(serviceURL, { params: encryptedParams }), {
|
|
25
|
+
method: 'GET',
|
|
26
|
+
});
|
|
27
|
+
return utils.resolve(response);
|
|
28
|
+
};
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
exports.reuseAvatarFactory = reuseAvatarFactory;
|
|
@@ -1,16 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
require('
|
|
4
|
-
require('
|
|
5
|
-
require('node:crypto');
|
|
6
|
-
require('node:fs');
|
|
7
|
-
require('node:path');
|
|
8
|
-
require('pako');
|
|
9
|
-
require('spark-md5');
|
|
10
|
-
require('tough-cookie');
|
|
11
|
-
require('sharp');
|
|
12
|
-
require('../models/FriendEvent.cjs');
|
|
13
|
-
require('../models/GroupEvent.cjs');
|
|
3
|
+
var ZaloApiError = require('../Errors/ZaloApiError.cjs');
|
|
4
|
+
var utils = require('../utils.cjs');
|
|
14
5
|
|
|
15
6
|
exports.ReviewPendingMemberRequestStatus = void 0;
|
|
16
7
|
(function (ReviewPendingMemberRequestStatus) {
|
|
@@ -19,3 +10,34 @@ exports.ReviewPendingMemberRequestStatus = void 0;
|
|
|
19
10
|
ReviewPendingMemberRequestStatus[ReviewPendingMemberRequestStatus["ALREADY_IN_GROUP"] = 178] = "ALREADY_IN_GROUP";
|
|
20
11
|
ReviewPendingMemberRequestStatus[ReviewPendingMemberRequestStatus["INSUFFICIENT_PERMISSION"] = 166] = "INSUFFICIENT_PERMISSION";
|
|
21
12
|
})(exports.ReviewPendingMemberRequestStatus || (exports.ReviewPendingMemberRequestStatus = {}));
|
|
13
|
+
const reviewPendingMemberRequestFactory = utils.apiFactory()((api, _, utils) => {
|
|
14
|
+
const serviceURL = utils.makeURL(`${api.zpwServiceMap.group[0]}/api/group/pending-mems/review`);
|
|
15
|
+
/**
|
|
16
|
+
* Review pending member(s) request
|
|
17
|
+
*
|
|
18
|
+
* @param payload - The payload containing data to review the pending member(s) request
|
|
19
|
+
* @param groupId - The id of the group to review the pending member(s) request
|
|
20
|
+
*
|
|
21
|
+
* @note Only the group leader and deputy group leader can review
|
|
22
|
+
*
|
|
23
|
+
* @throws {ZaloApiError}
|
|
24
|
+
*/
|
|
25
|
+
return async function reviewPendingMemberRequest(payload, groupId) {
|
|
26
|
+
if (!Array.isArray(payload.members))
|
|
27
|
+
payload.members = [payload.members];
|
|
28
|
+
const params = {
|
|
29
|
+
grid: groupId,
|
|
30
|
+
members: payload.members,
|
|
31
|
+
isApprove: payload.isApprove ? 1 : 0, // 1: approve, 0: reject
|
|
32
|
+
};
|
|
33
|
+
const encryptedParams = utils.encodeAES(JSON.stringify(params));
|
|
34
|
+
if (!encryptedParams)
|
|
35
|
+
throw new ZaloApiError.ZaloApiError('Failed to encrypt params');
|
|
36
|
+
const response = await utils.request(utils.makeURL(serviceURL, { params: encryptedParams }), {
|
|
37
|
+
method: 'GET',
|
|
38
|
+
});
|
|
39
|
+
return utils.resolve(response);
|
|
40
|
+
};
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
exports.reviewPendingMemberRequestFactory = reviewPendingMemberRequestFactory;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var ZaloApiError = require('../Errors/ZaloApiError.cjs');
|
|
4
|
+
require('../models/AutoReply.cjs');
|
|
5
|
+
require('../models/Board.cjs');
|
|
6
|
+
var Enum = require('../models/Enum.cjs');
|
|
7
|
+
require('../models/FriendEvent.cjs');
|
|
8
|
+
require('../models/Group.cjs');
|
|
9
|
+
require('../models/GroupEvent.cjs');
|
|
10
|
+
var utils = require('../utils.cjs');
|
|
11
|
+
require('../models/Reaction.cjs');
|
|
12
|
+
require('../models/Reminder.cjs');
|
|
13
|
+
require('../models/ZBusiness.cjs');
|
|
14
|
+
|
|
15
|
+
const sendBankCardFactory = utils.apiFactory()((api, ctx, utils) => {
|
|
16
|
+
const serviceURL = utils.makeURL(`${api.zpwServiceMap.zimsg[0]}/api/transfer/card`);
|
|
17
|
+
/**
|
|
18
|
+
* Send bank card
|
|
19
|
+
*
|
|
20
|
+
* @param payload The payload containing the bank card information
|
|
21
|
+
* @param threadId The ID of the thread to send the bank card to
|
|
22
|
+
* @param type The type of thread to send the bank card to
|
|
23
|
+
*
|
|
24
|
+
* @throws {ZaloApiError}
|
|
25
|
+
*/
|
|
26
|
+
return async function sendBankCard(payload, threadId, type = Enum.ThreadType.User) {
|
|
27
|
+
var _a;
|
|
28
|
+
const params = {
|
|
29
|
+
binBank: payload.binBank,
|
|
30
|
+
numAccBank: payload.numAccBank,
|
|
31
|
+
nameAccBank: ((_a = payload.nameAccBank) === null || _a === void 0 ? void 0 : _a.toUpperCase()) || '---',
|
|
32
|
+
cliMsgId: Date.now().toString(),
|
|
33
|
+
tsMsg: Date.now(),
|
|
34
|
+
destUid: threadId,
|
|
35
|
+
destType: type === Enum.ThreadType.Group ? 1 : 0,
|
|
36
|
+
};
|
|
37
|
+
const encryptedParams = utils.encodeAES(JSON.stringify(params));
|
|
38
|
+
if (!encryptedParams)
|
|
39
|
+
throw new ZaloApiError.ZaloApiError('Failed to encrypt params');
|
|
40
|
+
const response = await utils.request(serviceURL, {
|
|
41
|
+
method: 'POST',
|
|
42
|
+
body: new URLSearchParams({
|
|
43
|
+
params: encryptedParams,
|
|
44
|
+
}),
|
|
45
|
+
});
|
|
46
|
+
return utils.resolve(response);
|
|
47
|
+
};
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
exports.sendBankCardFactory = sendBankCardFactory;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var ZaloApiError = require('../Errors/ZaloApiError.cjs');
|
|
4
|
+
require('../models/AutoReply.cjs');
|
|
5
|
+
require('../models/Board.cjs');
|
|
6
|
+
var Enum = require('../models/Enum.cjs');
|
|
7
|
+
require('../models/FriendEvent.cjs');
|
|
8
|
+
require('../models/Group.cjs');
|
|
9
|
+
require('../models/GroupEvent.cjs');
|
|
10
|
+
var utils = require('../utils.cjs');
|
|
11
|
+
require('../models/Reaction.cjs');
|
|
12
|
+
require('../models/Reminder.cjs');
|
|
13
|
+
require('../models/ZBusiness.cjs');
|
|
14
|
+
|
|
15
|
+
const sendCardFactory = utils.apiFactory()((api, ctx, utils) => {
|
|
16
|
+
const serviceURL = {
|
|
17
|
+
[Enum.ThreadType.User]: utils.makeURL(`${api.zpwServiceMap.file[0]}/api/message/forward`),
|
|
18
|
+
[Enum.ThreadType.Group]: utils.makeURL(`${api.zpwServiceMap.file[0]}/api/group/forward`),
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Send a card to a User - Group
|
|
22
|
+
*
|
|
23
|
+
* @param userId Unique ID for Card
|
|
24
|
+
* @param phoneNumber Optional phone number for sending card to a User
|
|
25
|
+
* @param ttl Time to live in milliseconds (default: 0)
|
|
26
|
+
* @param threadId ID of the conversation
|
|
27
|
+
* @param type Message type (User or GroupMessage)
|
|
28
|
+
*
|
|
29
|
+
* @throws {ZaloApiError}
|
|
30
|
+
*
|
|
31
|
+
*/
|
|
32
|
+
return async function sendCard(options, threadId, type = Enum.ThreadType.User) {
|
|
33
|
+
var _a;
|
|
34
|
+
const data = await api.getQR(options.userId);
|
|
35
|
+
const QRCodeURL = data[options.userId];
|
|
36
|
+
const clientId = Date.now().toString();
|
|
37
|
+
const params = {
|
|
38
|
+
ttl: (_a = options.ttl) !== null && _a !== void 0 ? _a : 0,
|
|
39
|
+
msgType: 6,
|
|
40
|
+
clientId: clientId,
|
|
41
|
+
msgInfo: {
|
|
42
|
+
contactUid: options.userId,
|
|
43
|
+
qrCodeUrl: QRCodeURL,
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
if (options.phoneNumber) {
|
|
47
|
+
params.msgInfo.phone = options.phoneNumber;
|
|
48
|
+
}
|
|
49
|
+
if (type == Enum.ThreadType.Group) {
|
|
50
|
+
params.visibility = 0;
|
|
51
|
+
params.grid = threadId;
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
params.toId = threadId;
|
|
55
|
+
params.imei = ctx.imei;
|
|
56
|
+
}
|
|
57
|
+
const msgInfoStringified = JSON.stringify(params.msgInfo);
|
|
58
|
+
params.msgInfo = msgInfoStringified;
|
|
59
|
+
const encryptedParams = utils.encodeAES(JSON.stringify(params));
|
|
60
|
+
if (!encryptedParams)
|
|
61
|
+
throw new ZaloApiError.ZaloApiError('Failed to encrypt params');
|
|
62
|
+
const response = await utils.request(serviceURL[type], {
|
|
63
|
+
method: 'POST',
|
|
64
|
+
body: new URLSearchParams({
|
|
65
|
+
params: encryptedParams,
|
|
66
|
+
}),
|
|
67
|
+
});
|
|
68
|
+
return utils.resolve(response);
|
|
69
|
+
};
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
exports.sendCardFactory = sendCardFactory;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var ZaloApiError = require('../Errors/ZaloApiError.cjs');
|
|
4
|
+
var context = require('../context.cjs');
|
|
5
|
+
require('../models/AutoReply.cjs');
|
|
6
|
+
require('../models/Board.cjs');
|
|
7
|
+
var Enum = require('../models/Enum.cjs');
|
|
8
|
+
require('../models/FriendEvent.cjs');
|
|
9
|
+
require('../models/Group.cjs');
|
|
10
|
+
require('../models/GroupEvent.cjs');
|
|
11
|
+
var utils = require('../utils.cjs');
|
|
12
|
+
require('../models/Reaction.cjs');
|
|
13
|
+
require('../models/Reminder.cjs');
|
|
14
|
+
require('../models/ZBusiness.cjs');
|
|
15
|
+
|
|
16
|
+
const sendDeliveredEventFactory = utils.apiFactory()((api, ctx, utils) => {
|
|
17
|
+
const serviceURL = {
|
|
18
|
+
[Enum.ThreadType.User]: utils.makeURL(`${api.zpwServiceMap.chat[0]}/api/message/deliveredv2`),
|
|
19
|
+
[Enum.ThreadType.Group]: utils.makeURL(`${api.zpwServiceMap.group[0]}/api/group/deliveredv2`),
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Send message delivered event
|
|
23
|
+
*
|
|
24
|
+
* @param isSeen Whether the message is seen or not
|
|
25
|
+
* @param messages List of messages to send delivered event
|
|
26
|
+
* @param type Messages type (User or Group), defaults to User
|
|
27
|
+
*
|
|
28
|
+
* @throws {ZaloApiError}
|
|
29
|
+
*/
|
|
30
|
+
return async function sendDeliveredEvent(isSeen, messages, type = Enum.ThreadType.User) {
|
|
31
|
+
if (!messages)
|
|
32
|
+
throw new ZaloApiError.ZaloApiError('messages are missing or not in a valid array format.');
|
|
33
|
+
if (!Array.isArray(messages))
|
|
34
|
+
messages = [messages];
|
|
35
|
+
if (messages.length === 0 || messages.length > context.MAX_MESSAGES_PER_SEND)
|
|
36
|
+
throw new ZaloApiError.ZaloApiError('messages must contain between 1 and 50 messages.');
|
|
37
|
+
// 27/02/2025
|
|
38
|
+
// This can send messages from multiple groups, but to prevent potential issues,
|
|
39
|
+
// we will restrict it to sending messages only within the same group.
|
|
40
|
+
const idTo = messages[0].idTo;
|
|
41
|
+
if (type === Enum.ThreadType.Group && !messages.every((msg) => msg.idTo === idTo))
|
|
42
|
+
throw new ZaloApiError.ZaloApiError('All messages must have the same idTo for Group thread');
|
|
43
|
+
const msgInfos = Object.assign({ seen: isSeen ? 1 : 0, data: messages.map((msg) => ({
|
|
44
|
+
cmi: msg.cliMsgId,
|
|
45
|
+
gmi: msg.msgId,
|
|
46
|
+
si: msg.uidFrom,
|
|
47
|
+
di: msg.idTo === ctx.uid ? '0' : msg.idTo,
|
|
48
|
+
mt: msg.msgType,
|
|
49
|
+
st: msg.st || 0 === msg.st ? 0 : -1,
|
|
50
|
+
at: msg.at || 0 === msg.at ? 0 : -1,
|
|
51
|
+
cmd: msg.cmd || 0 === msg.cmd ? 0 : -1,
|
|
52
|
+
ts: parseInt(`${msg.ts}`) || 0 === parseInt(`${msg.ts}`) ? 0 : -1,
|
|
53
|
+
})) }, (type === Enum.ThreadType.User ? {} : { grid: idTo }));
|
|
54
|
+
const params = Object.assign({ msgInfos: JSON.stringify(msgInfos) }, (type === Enum.ThreadType.User ? {} : { imei: ctx.imei }));
|
|
55
|
+
const encryptedParams = utils.encodeAES(JSON.stringify(params));
|
|
56
|
+
if (!encryptedParams)
|
|
57
|
+
throw new ZaloApiError.ZaloApiError('Failed to encrypt params');
|
|
58
|
+
const response = await utils.request(serviceURL[type], {
|
|
59
|
+
method: 'POST',
|
|
60
|
+
body: new URLSearchParams({
|
|
61
|
+
params: encryptedParams,
|
|
62
|
+
}),
|
|
63
|
+
});
|
|
64
|
+
return utils.resolve(response);
|
|
65
|
+
};
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
exports.sendDeliveredEventFactory = sendDeliveredEventFactory;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var ZaloApiError = require('../Errors/ZaloApiError.cjs');
|
|
4
|
+
var utils = require('../utils.cjs');
|
|
5
|
+
|
|
6
|
+
const sendFriendRequestFactory = utils.apiFactory()((api, ctx, utils) => {
|
|
7
|
+
const serviceURL = utils.makeURL(`${api.zpwServiceMap.friend[0]}/api/friend/sendreq`);
|
|
8
|
+
/**
|
|
9
|
+
* Send a friend request to a user.
|
|
10
|
+
*
|
|
11
|
+
* @param msg message sent with friend request
|
|
12
|
+
* @param userId User ID to send friend request to
|
|
13
|
+
*
|
|
14
|
+
* @note Zalo might throw an error with code 225 if the user is already friends with you,
|
|
15
|
+
* 215 if the user might have blocked you,
|
|
16
|
+
* 222 if user has already sent you a friend request, your request will be treated as acceptance instead.
|
|
17
|
+
*
|
|
18
|
+
* @throws {ZaloApiError}
|
|
19
|
+
*/
|
|
20
|
+
return async function sendFriendRequest(msg, userId) {
|
|
21
|
+
const params = {
|
|
22
|
+
toid: userId,
|
|
23
|
+
msg: msg,
|
|
24
|
+
reqsrc: 30,
|
|
25
|
+
imei: ctx.imei,
|
|
26
|
+
language: ctx.language,
|
|
27
|
+
srcParams: JSON.stringify({
|
|
28
|
+
uidTo: userId,
|
|
29
|
+
}),
|
|
30
|
+
};
|
|
31
|
+
const encryptedParams = utils.encodeAES(JSON.stringify(params));
|
|
32
|
+
if (!encryptedParams)
|
|
33
|
+
throw new ZaloApiError.ZaloApiError('Failed to encrypt params');
|
|
34
|
+
const response = await utils.request(serviceURL, {
|
|
35
|
+
method: 'POST',
|
|
36
|
+
body: new URLSearchParams({
|
|
37
|
+
params: encryptedParams,
|
|
38
|
+
}),
|
|
39
|
+
});
|
|
40
|
+
return utils.resolve(response);
|
|
41
|
+
};
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
exports.sendFriendRequestFactory = sendFriendRequestFactory;
|