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.
Files changed (155) hide show
  1. package/dist/apis/sendMessage.d.ts +5 -0
  2. package/dist/apis/sendMessage.js +31 -11
  3. package/dist/cjs/apis/acceptFriendRequest.cjs +33 -0
  4. package/dist/cjs/apis/addGroupBlockedMember.cjs +33 -0
  5. package/dist/cjs/apis/addGroupDeputy.cjs +36 -0
  6. package/dist/cjs/apis/addPollOptions.cjs +31 -0
  7. package/dist/cjs/apis/addQuickMessage.cjs +65 -0
  8. package/dist/cjs/apis/addReaction.cjs +297 -0
  9. package/dist/cjs/apis/addUnreadMark.cjs +65 -0
  10. package/dist/cjs/apis/addUserToGroup.cjs +39 -0
  11. package/dist/cjs/apis/blockUser.cjs +33 -0
  12. package/dist/cjs/apis/blockViewFeed.cjs +35 -0
  13. package/dist/cjs/apis/changeAccountAvatar.cjs +56 -0
  14. package/dist/cjs/apis/changeFriendAlias.cjs +32 -0
  15. package/dist/cjs/apis/changeGroupAvatar.cjs +47 -0
  16. package/dist/cjs/apis/changeGroupName.cjs +37 -0
  17. package/dist/cjs/apis/changeGroupOwner.cjs +36 -0
  18. package/dist/cjs/apis/createAutoReply.cjs +42 -0
  19. package/dist/cjs/apis/createCatalog.cjs +34 -0
  20. package/dist/cjs/apis/createGroup.cjs +48 -0
  21. package/dist/cjs/apis/createNote.cjs +52 -0
  22. package/dist/cjs/apis/createPoll.cjs +45 -0
  23. package/dist/cjs/apis/createProductCatalog.cjs +55 -0
  24. package/dist/cjs/apis/createReminder.cjs +76 -0
  25. package/dist/cjs/apis/custom.cjs +19 -0
  26. package/dist/cjs/apis/deleteAutoReply.cjs +34 -0
  27. package/dist/cjs/apis/deleteAvatar.cjs +32 -0
  28. package/dist/cjs/apis/deleteCatalog.cjs +33 -0
  29. package/dist/cjs/apis/deleteChat.cjs +63 -0
  30. package/dist/cjs/apis/deleteGroupInviteBox.cjs +32 -0
  31. package/dist/cjs/apis/deleteMessage.cjs +65 -0
  32. package/dist/cjs/apis/deleteProductCatalog.cjs +36 -0
  33. package/dist/cjs/apis/disableGroupLink.cjs +29 -0
  34. package/dist/cjs/apis/disperseGroup.cjs +33 -0
  35. package/dist/cjs/apis/editNote.cjs +51 -0
  36. package/dist/cjs/apis/editReminder.cjs +74 -0
  37. package/dist/cjs/apis/enableGroupLink.cjs +30 -0
  38. package/dist/cjs/apis/fetchAccountInfo.cjs +15 -0
  39. package/dist/cjs/apis/findUser.cjs +45 -0
  40. package/dist/cjs/apis/forwardAttachment.cjs +85 -0
  41. package/dist/cjs/apis/forwardMessage.cjs +122 -0
  42. package/dist/cjs/apis/getAliasList.cjs +33 -0
  43. package/dist/cjs/apis/getAllFriends.cjs +37 -0
  44. package/dist/cjs/apis/getAllGroups.cjs +15 -0
  45. package/dist/cjs/apis/getArchivedChatList.cjs +28 -0
  46. package/dist/cjs/apis/getAutoDeleteChat.cjs +26 -0
  47. package/dist/cjs/apis/getAutoReplyList.cjs +29 -0
  48. package/dist/cjs/apis/getAvatarList.cjs +33 -0
  49. package/dist/cjs/apis/getBizAccount.cjs +32 -0
  50. package/dist/cjs/apis/getCatalogList.cjs +37 -0
  51. package/dist/cjs/apis/getContext.cjs +9 -0
  52. package/dist/cjs/apis/getCookie.cjs +14 -0
  53. package/dist/cjs/apis/getFriendBoardList.cjs +31 -0
  54. package/dist/cjs/apis/getFriendOnlines.cjs +40 -0
  55. package/dist/cjs/apis/getFriendRecommendations.cjs +32 -0
  56. package/dist/cjs/apis/getFriendRequestStatus.cjs +30 -0
  57. package/dist/cjs/apis/getGroupBlockedMember.cjs +34 -0
  58. package/dist/cjs/apis/getGroupInfo.cjs +37 -0
  59. package/dist/cjs/apis/getGroupInviteBoxInfo.cjs +43 -0
  60. package/dist/cjs/apis/getGroupInviteBoxList.cjs +36 -0
  61. package/dist/cjs/apis/getGroupLinkDetail.cjs +30 -0
  62. package/dist/cjs/apis/getGroupLinkInfo.cjs +33 -0
  63. package/dist/cjs/apis/getGroupMembersInfo.cjs +29 -0
  64. package/dist/cjs/apis/getHiddenConversations.cjs +28 -0
  65. package/dist/cjs/apis/getLabels.cjs +33 -0
  66. package/dist/cjs/apis/getLastMessage.cjs +25 -0
  67. package/dist/cjs/apis/getListBoard.cjs +58 -0
  68. package/dist/cjs/apis/getListReminder.cjs +60 -0
  69. package/dist/cjs/apis/getMute.cjs +27 -0
  70. package/dist/cjs/apis/getOwnId.cjs +9 -0
  71. package/dist/cjs/apis/getPendingGroupMembers.cjs +32 -0
  72. package/dist/cjs/apis/getPinConversations.cjs +27 -0
  73. package/dist/cjs/apis/getPollDetail.cjs +35 -0
  74. package/dist/cjs/apis/getProductCatalogList.cjs +38 -0
  75. package/dist/cjs/apis/getQR.cjs +34 -0
  76. package/dist/cjs/apis/getQuickMessageList.cjs +29 -0
  77. package/dist/cjs/apis/getRecommendFriends.cjs +25 -0
  78. package/dist/cjs/apis/getRelatedFriendGroup.cjs +35 -0
  79. package/dist/cjs/apis/getReminder.cjs +30 -0
  80. package/dist/cjs/apis/getReminderResponses.cjs +29 -0
  81. package/dist/cjs/apis/getSentFriendRequest.cjs +29 -0
  82. package/dist/cjs/apis/getSettings.cjs +25 -0
  83. package/dist/cjs/apis/getStickers.cjs +45 -0
  84. package/dist/cjs/apis/getStickersDetail.cjs +45 -0
  85. package/dist/cjs/apis/getUnreadMark.cjs +35 -0
  86. package/dist/cjs/apis/getUserInfo.cjs +47 -0
  87. package/dist/cjs/apis/inviteUserToGroups.cjs +35 -0
  88. package/dist/cjs/apis/joinGroupInviteBox.cjs +30 -0
  89. package/dist/cjs/apis/joinGroupLink.cjs +32 -0
  90. package/dist/cjs/apis/keepAlive.cjs +27 -0
  91. package/dist/cjs/apis/lastOnline.cjs +31 -0
  92. package/dist/cjs/apis/leaveGroup.cjs +38 -0
  93. package/dist/cjs/apis/lockPoll.cjs +33 -0
  94. package/dist/cjs/apis/parseLink.cjs +32 -0
  95. package/dist/cjs/apis/rejectFriendRequest.cjs +32 -0
  96. package/dist/cjs/apis/removeFriend.cjs +33 -0
  97. package/dist/cjs/apis/removeFriendAlias.cjs +29 -0
  98. package/dist/cjs/apis/removeGroupBlockedMember.cjs +33 -0
  99. package/dist/cjs/apis/removeGroupDeputy.cjs +35 -0
  100. package/dist/cjs/apis/removeQuickMessage.cjs +32 -0
  101. package/dist/cjs/apis/removeReminder.cjs +53 -0
  102. package/dist/cjs/apis/removeUnreadMark.cjs +63 -0
  103. package/dist/cjs/apis/removeUserFromGroup.cjs +39 -0
  104. package/dist/cjs/apis/resetHiddenConversPin.cjs +25 -0
  105. package/dist/cjs/apis/reuseAvatar.cjs +31 -0
  106. package/dist/cjs/apis/reviewPendingMemberRequest.cjs +33 -11
  107. package/dist/cjs/apis/sendBankCard.cjs +50 -0
  108. package/dist/cjs/apis/sendCard.cjs +72 -0
  109. package/dist/cjs/apis/sendDeliveredEvent.cjs +68 -0
  110. package/dist/cjs/apis/sendFriendRequest.cjs +44 -0
  111. package/dist/cjs/apis/sendLink.cjs +70 -0
  112. package/dist/cjs/apis/sendMessage.cjs +437 -11
  113. package/dist/cjs/apis/sendReport.cjs +48 -10
  114. package/dist/cjs/apis/sendSeenEvent.cjs +76 -0
  115. package/dist/cjs/apis/sendSticker.cjs +69 -0
  116. package/dist/cjs/apis/sendTypingEvent.cjs +46 -0
  117. package/dist/cjs/apis/sendVideo.cjs +131 -0
  118. package/dist/cjs/apis/sendVoice.cjs +86 -0
  119. package/dist/cjs/apis/setArchivedConversations.cjs +39 -0
  120. package/dist/cjs/apis/setHiddenConversations.cjs +52 -0
  121. package/dist/cjs/apis/setMute.cjs +57 -10
  122. package/dist/cjs/apis/setPinnedConversations.cjs +47 -0
  123. package/dist/cjs/apis/sharePoll.cjs +33 -0
  124. package/dist/cjs/apis/unblockUser.cjs +33 -0
  125. package/dist/cjs/apis/undo.cjs +55 -0
  126. package/dist/cjs/apis/undoFriendRequest.cjs +32 -0
  127. package/dist/cjs/apis/updateActiveStatus.cjs +32 -0
  128. package/dist/cjs/apis/updateAutoDeleteChat.cjs +35 -10
  129. package/dist/cjs/apis/updateAutoReply.cjs +43 -0
  130. package/dist/cjs/apis/updateCatalog.cjs +35 -0
  131. package/dist/cjs/apis/updateGroupSettings.cjs +48 -0
  132. package/dist/cjs/apis/updateHiddenConversPin.cjs +35 -0
  133. package/dist/cjs/apis/updateLabels.cjs +39 -0
  134. package/dist/cjs/apis/updateLang.cjs +27 -11
  135. package/dist/cjs/apis/updateProductCatalog.cjs +56 -0
  136. package/dist/cjs/apis/updateProfile.cjs +48 -0
  137. package/dist/cjs/apis/updateQuickMessage.cjs +66 -0
  138. package/dist/cjs/apis/updateSettings.cjs +77 -11
  139. package/dist/cjs/apis/uploadAttachment.cjs +208 -0
  140. package/dist/cjs/apis/uploadProductPhoto.cjs +50 -0
  141. package/dist/cjs/apis/votePoll.cjs +34 -0
  142. package/dist/cjs/apis.cjs +292 -0
  143. package/dist/cjs/context.cjs +15 -0
  144. package/dist/cjs/core/enums/common.cjs +14 -0
  145. package/dist/cjs/core/utils/index.cjs +33 -0
  146. package/dist/cjs/models/GroupEvent.cjs +2 -4
  147. package/dist/cjs/utils.cjs +229 -3
  148. package/dist/cjs/zalo.cjs +18 -7
  149. package/dist/index.d.ts +1 -0
  150. package/dist/models/GroupEvent.d.ts +2 -2
  151. package/dist/models/GroupEvent.js +2 -4
  152. package/dist/models/Message.d.ts +6 -0
  153. package/dist/zalo.d.ts +17 -10
  154. package/dist/zalo.js +19 -8
  155. 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('crypto-js');
4
- require('json-bigint');
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;