@wxbot/wechat-api-sdk 1.0.0 → 1.0.1
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/geweChat/gewe/clientApi/gewe_ChatRoom.js +1 -1
- package/dist/geweChat/gewe/clientApi/gewe_ChatRoom.js.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +28 -1
- package/dist/index.js.map +1 -1
- package/dist/weChatBase/weChatMessage/WeChatMessageFactory.d.ts +76 -0
- package/dist/weChatBase/weChatMessage/WeChatMessageFactory.d.ts.map +1 -0
- package/dist/weChatBase/weChatMessage/WeChatMessageFactory.js +181 -0
- package/dist/weChatBase/weChatMessage/WeChatMessageFactory.js.map +1 -0
- package/dist/weChatBase/weChatMessage/types/AddFriendMessage.d.ts +67 -0
- package/dist/weChatBase/weChatMessage/types/AddFriendMessage.d.ts.map +1 -0
- package/dist/weChatBase/weChatMessage/types/AddFriendMessage.js +92 -0
- package/dist/weChatBase/weChatMessage/types/AddFriendMessage.js.map +1 -0
- package/dist/weChatBase/weChatMessage/types/ChannelsVideoMessage.d.ts +98 -0
- package/dist/weChatBase/weChatMessage/types/ChannelsVideoMessage.d.ts.map +1 -0
- package/dist/weChatBase/weChatMessage/types/ChannelsVideoMessage.js +124 -0
- package/dist/weChatBase/weChatMessage/types/ChannelsVideoMessage.js.map +1 -0
- package/dist/weChatBase/weChatMessage/types/ContactMessage.d.ts +62 -0
- package/dist/weChatBase/weChatMessage/types/ContactMessage.d.ts.map +1 -0
- package/dist/weChatBase/weChatMessage/types/ContactMessage.js +81 -0
- package/dist/weChatBase/weChatMessage/types/ContactMessage.js.map +1 -0
- package/dist/weChatBase/weChatMessage/types/EmojiMessage.d.ts +60 -0
- package/dist/weChatBase/weChatMessage/types/EmojiMessage.d.ts.map +1 -0
- package/dist/weChatBase/weChatMessage/types/EmojiMessage.js +74 -0
- package/dist/weChatBase/weChatMessage/types/EmojiMessage.js.map +1 -0
- package/dist/weChatBase/weChatMessage/types/FileMessage.d.ts +81 -0
- package/dist/weChatBase/weChatMessage/types/FileMessage.d.ts.map +1 -0
- package/dist/weChatBase/weChatMessage/types/FileMessage.js +127 -0
- package/dist/weChatBase/weChatMessage/types/FileMessage.js.map +1 -0
- package/dist/weChatBase/weChatMessage/types/GroupNoticeMessage.d.ts +52 -0
- package/dist/weChatBase/weChatMessage/types/GroupNoticeMessage.d.ts.map +1 -0
- package/dist/weChatBase/weChatMessage/types/GroupNoticeMessage.js +76 -0
- package/dist/weChatBase/weChatMessage/types/GroupNoticeMessage.js.map +1 -0
- package/dist/weChatBase/weChatMessage/types/GroupSystemMessage.d.ts +94 -0
- package/dist/weChatBase/weChatMessage/types/GroupSystemMessage.d.ts.map +1 -0
- package/dist/weChatBase/weChatMessage/types/GroupSystemMessage.js +151 -0
- package/dist/weChatBase/weChatMessage/types/GroupSystemMessage.js.map +1 -0
- package/dist/weChatBase/weChatMessage/types/ImageMessage.d.ts +63 -0
- package/dist/weChatBase/weChatMessage/types/ImageMessage.d.ts.map +1 -0
- package/dist/weChatBase/weChatMessage/types/ImageMessage.js +93 -0
- package/dist/weChatBase/weChatMessage/types/ImageMessage.js.map +1 -0
- package/dist/weChatBase/weChatMessage/types/LinkMessage.d.ts +78 -0
- package/dist/weChatBase/weChatMessage/types/LinkMessage.d.ts.map +1 -0
- package/dist/weChatBase/weChatMessage/types/LinkMessage.js +110 -0
- package/dist/weChatBase/weChatMessage/types/LinkMessage.js.map +1 -0
- package/dist/weChatBase/weChatMessage/types/LocationMessage.d.ts +67 -0
- package/dist/weChatBase/weChatMessage/types/LocationMessage.d.ts.map +1 -0
- package/dist/weChatBase/weChatMessage/types/LocationMessage.js +84 -0
- package/dist/weChatBase/weChatMessage/types/LocationMessage.js.map +1 -0
- package/dist/weChatBase/weChatMessage/types/MiniProgramMessage.d.ts +73 -0
- package/dist/weChatBase/weChatMessage/types/MiniProgramMessage.d.ts.map +1 -0
- package/dist/weChatBase/weChatMessage/types/MiniProgramMessage.js +91 -0
- package/dist/weChatBase/weChatMessage/types/MiniProgramMessage.js.map +1 -0
- package/dist/weChatBase/weChatMessage/types/PatMessage.d.ts +70 -0
- package/dist/weChatBase/weChatMessage/types/PatMessage.d.ts.map +1 -0
- package/dist/weChatBase/weChatMessage/types/PatMessage.js +101 -0
- package/dist/weChatBase/weChatMessage/types/PatMessage.js.map +1 -0
- package/dist/weChatBase/weChatMessage/types/RedPacketMessage.d.ts +93 -0
- package/dist/weChatBase/weChatMessage/types/RedPacketMessage.d.ts.map +1 -0
- package/dist/weChatBase/weChatMessage/types/RedPacketMessage.js +115 -0
- package/dist/weChatBase/weChatMessage/types/RedPacketMessage.js.map +1 -0
- package/dist/weChatBase/weChatMessage/types/ReferMessage.d.ts +63 -0
- package/dist/weChatBase/weChatMessage/types/ReferMessage.d.ts.map +1 -0
- package/dist/weChatBase/weChatMessage/types/ReferMessage.js +88 -0
- package/dist/weChatBase/weChatMessage/types/ReferMessage.js.map +1 -0
- package/dist/weChatBase/weChatMessage/types/RevokeMessage.d.ts +58 -0
- package/dist/weChatBase/weChatMessage/types/RevokeMessage.d.ts.map +1 -0
- package/dist/weChatBase/weChatMessage/types/RevokeMessage.js +82 -0
- package/dist/weChatBase/weChatMessage/types/RevokeMessage.js.map +1 -0
- package/dist/weChatBase/weChatMessage/types/TextMessage.d.ts +26 -0
- package/dist/weChatBase/weChatMessage/types/TextMessage.d.ts.map +1 -0
- package/dist/weChatBase/weChatMessage/types/TextMessage.js +43 -0
- package/dist/weChatBase/weChatMessage/types/TextMessage.js.map +1 -0
- package/dist/weChatBase/weChatMessage/types/TransferMessage.d.ts +83 -0
- package/dist/weChatBase/weChatMessage/types/TransferMessage.d.ts.map +1 -0
- package/dist/weChatBase/weChatMessage/types/TransferMessage.js +109 -0
- package/dist/weChatBase/weChatMessage/types/TransferMessage.js.map +1 -0
- package/dist/weChatBase/weChatMessage/types/VideoMessage.d.ts +56 -0
- package/dist/weChatBase/weChatMessage/types/VideoMessage.d.ts.map +1 -0
- package/dist/weChatBase/weChatMessage/types/VideoMessage.js +76 -0
- package/dist/weChatBase/weChatMessage/types/VideoMessage.js.map +1 -0
- package/dist/weChatBase/weChatMessage/types/VoiceMessage.d.ts +53 -0
- package/dist/weChatBase/weChatMessage/types/VoiceMessage.d.ts.map +1 -0
- package/dist/weChatBase/weChatMessage/types/VoiceMessage.js +73 -0
- package/dist/weChatBase/weChatMessage/types/VoiceMessage.js.map +1 -0
- package/dist/weChatBase/weChatMessage/types/index.d.ts +23 -0
- package/dist/weChatBase/weChatMessage/types/index.d.ts.map +1 -0
- package/dist/weChatBase/weChatMessage/types/index.js +42 -0
- package/dist/weChatBase/weChatMessage/types/index.js.map +1 -0
- package/dist/weChatBase/weChatMessage/weChatMessageType.d.ts +97 -3
- package/dist/weChatBase/weChatMessage/weChatMessageType.d.ts.map +1 -1
- package/dist/weChatBase/weChatMessage/weChatMessageType.js +101 -15
- package/dist/weChatBase/weChatMessage/weChatMessageType.js.map +1 -1
- package/dist/weChatBase/weChatMessage/weChatMsgBase.d.ts +3 -4
- package/dist/weChatBase/weChatMessage/weChatMsgBase.d.ts.map +1 -1
- package/dist/weChatBase/weChatMessage/weChatMsgBase.js +4 -8
- package/dist/weChatBase/weChatMessage/weChatMsgBase.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ChannelsVideoMessage = void 0;
|
|
4
|
+
const weChatMsgBase_1 = require("../weChatMsgBase");
|
|
5
|
+
const weChatMessageType_1 = require("../weChatMessageType");
|
|
6
|
+
const utils_1 = require("../../../utils");
|
|
7
|
+
/**
|
|
8
|
+
* 视频号消息类
|
|
9
|
+
* MsgType = 49, appmsg.type = 51
|
|
10
|
+
*
|
|
11
|
+
* 示例数据:
|
|
12
|
+
* {
|
|
13
|
+
* "MsgType": 49,
|
|
14
|
+
* "Content": {
|
|
15
|
+
* "string": "<?xml><msg><appmsg><type>51</type><title>...</title>..."
|
|
16
|
+
* }
|
|
17
|
+
* }
|
|
18
|
+
*/
|
|
19
|
+
class ChannelsVideoMessage extends weChatMsgBase_1.WeChatMsg {
|
|
20
|
+
constructor(data) {
|
|
21
|
+
super(data.Appid, data.api, data.Wxid, weChatMessageType_1.WeChatMessageType.AppMessage, data.Data.MsgId, data.Data.NewMsgId, data.Data.CreateTime, data.Data.FromUserName?.string || data.Data.FromUserName, data.Data.ToUserName?.string || data.Data.ToUserName, data.Data.MsgSource, data.Data.Content?.string || data.Data.Content);
|
|
22
|
+
/** 视频号信息 */
|
|
23
|
+
this.channelsInfo = {};
|
|
24
|
+
/** 应用消息子类型 */
|
|
25
|
+
this.appMsgType = weChatMessageType_1.AppMessageSubType.ChannelsVideo;
|
|
26
|
+
// 解析视频号信息
|
|
27
|
+
this.parseChannelsInfo();
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* 解析视频号信息
|
|
31
|
+
*/
|
|
32
|
+
parseChannelsInfo() {
|
|
33
|
+
try {
|
|
34
|
+
const xmlObj = (0, utils_1.getXml2Json)(this.Content);
|
|
35
|
+
if (xmlObj?.msg?.appmsg) {
|
|
36
|
+
const appmsg = xmlObj.msg.appmsg;
|
|
37
|
+
this.channelsInfo = {
|
|
38
|
+
title: appmsg.title,
|
|
39
|
+
url: appmsg.url
|
|
40
|
+
};
|
|
41
|
+
// 解析finderFeed
|
|
42
|
+
if (appmsg.finderFeed) {
|
|
43
|
+
const feed = appmsg.finderFeed;
|
|
44
|
+
this.channelsInfo.finderFeed = {
|
|
45
|
+
objectId: feed.objectId,
|
|
46
|
+
feedType: parseInt(feed.feedType) || 0,
|
|
47
|
+
nickname: feed.nickname,
|
|
48
|
+
avatar: feed.avatar,
|
|
49
|
+
desc: feed.desc,
|
|
50
|
+
mediaCount: parseInt(feed.mediaCount) || 0,
|
|
51
|
+
objectNonceId: feed.objectNonceId,
|
|
52
|
+
liveId: feed.liveId,
|
|
53
|
+
username: feed.username
|
|
54
|
+
};
|
|
55
|
+
// 解析媒体列表
|
|
56
|
+
if (feed.mediaList?.media) {
|
|
57
|
+
const mediaArray = Array.isArray(feed.mediaList.media)
|
|
58
|
+
? feed.mediaList.media
|
|
59
|
+
: [feed.mediaList.media];
|
|
60
|
+
this.channelsInfo.finderFeed.mediaList = mediaArray.map(media => ({
|
|
61
|
+
mediaType: parseInt(media.mediaType) || 0,
|
|
62
|
+
url: media.url,
|
|
63
|
+
thumbUrl: media.thumbUrl,
|
|
64
|
+
width: parseInt(media.width) || 0,
|
|
65
|
+
height: parseInt(media.height) || 0,
|
|
66
|
+
coverUrl: media.coverUrl,
|
|
67
|
+
fullCoverUrl: media.fullCoverUrl,
|
|
68
|
+
videoPlayDuration: parseInt(media.videoPlayDuration) || 0
|
|
69
|
+
}));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
console.error('解析视频号信息失败:', error);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* 获取视频号作者昵称
|
|
80
|
+
*/
|
|
81
|
+
getAuthorNickname() {
|
|
82
|
+
return this.channelsInfo.finderFeed?.nickname || '视频号作者';
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* 获取视频号描述
|
|
86
|
+
*/
|
|
87
|
+
getDescription() {
|
|
88
|
+
return this.channelsInfo.finderFeed?.desc || '';
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* 获取视频时长(秒)
|
|
92
|
+
*/
|
|
93
|
+
getVideoDuration() {
|
|
94
|
+
const mediaList = this.channelsInfo.finderFeed?.mediaList;
|
|
95
|
+
if (mediaList && mediaList.length > 0) {
|
|
96
|
+
return mediaList[0].videoPlayDuration || 0;
|
|
97
|
+
}
|
|
98
|
+
return 0;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* 判断是否为直播
|
|
102
|
+
*/
|
|
103
|
+
isLive() {
|
|
104
|
+
const feedType = this.channelsInfo.finderFeed?.feedType || 0;
|
|
105
|
+
return feedType === 1; // feedType=1 表示直播
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* 获取消息描述
|
|
109
|
+
*/
|
|
110
|
+
getContent() {
|
|
111
|
+
const author = this.getAuthorNickname();
|
|
112
|
+
const desc = this.getDescription();
|
|
113
|
+
const type = this.isLive() ? '视频号直播' : '视频号';
|
|
114
|
+
return `[${type}]${author}${desc ? `: ${desc.substring(0, 20)}...` : ''}`;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* 获取消息文本
|
|
118
|
+
*/
|
|
119
|
+
async getMsgText() {
|
|
120
|
+
return this.getContent();
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
exports.ChannelsVideoMessage = ChannelsVideoMessage;
|
|
124
|
+
//# sourceMappingURL=ChannelsVideoMessage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChannelsVideoMessage.js","sourceRoot":"","sources":["../../../../src/weChatBase/weChatMessage/types/ChannelsVideoMessage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { WeChatMsg } from "../weChatMsgBase";
|
|
2
|
+
/**
|
|
3
|
+
* 名片信息接口
|
|
4
|
+
*/
|
|
5
|
+
export interface ContactCardInfo {
|
|
6
|
+
/** 微信号username */
|
|
7
|
+
username?: string;
|
|
8
|
+
/** 昵称 */
|
|
9
|
+
nickname?: string;
|
|
10
|
+
/** 全拼 */
|
|
11
|
+
fullpy?: string;
|
|
12
|
+
/** 简拼 */
|
|
13
|
+
shortpy?: string;
|
|
14
|
+
/** 微信号alias */
|
|
15
|
+
alias?: string;
|
|
16
|
+
/** 性别 (1=男, 2=女) */
|
|
17
|
+
sex?: number;
|
|
18
|
+
/** 省份 */
|
|
19
|
+
province?: string;
|
|
20
|
+
/** 城市 */
|
|
21
|
+
city?: string;
|
|
22
|
+
/** 签名 */
|
|
23
|
+
sign?: string;
|
|
24
|
+
/** 大头像URL */
|
|
25
|
+
bigheadimgurl?: string;
|
|
26
|
+
/** 小头像URL */
|
|
27
|
+
smallheadimgurl?: string;
|
|
28
|
+
/** 加密用户名(用于添加好友) */
|
|
29
|
+
antispamticket?: string;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* 名片消息类
|
|
33
|
+
* MsgType = 42
|
|
34
|
+
*
|
|
35
|
+
* 示例数据:
|
|
36
|
+
* {
|
|
37
|
+
* "MsgType": 42,
|
|
38
|
+
* "Content": { "string": "<?xml...名片信息..." }
|
|
39
|
+
* }
|
|
40
|
+
*/
|
|
41
|
+
export declare class ContactMessage extends WeChatMsg {
|
|
42
|
+
/** 名片信息 */
|
|
43
|
+
cardInfo: ContactCardInfo;
|
|
44
|
+
constructor(data: any);
|
|
45
|
+
/**
|
|
46
|
+
* 解析名片信息
|
|
47
|
+
*/
|
|
48
|
+
private parseContactInfo;
|
|
49
|
+
/**
|
|
50
|
+
* 获取性别描述
|
|
51
|
+
*/
|
|
52
|
+
getSexText(): string;
|
|
53
|
+
/**
|
|
54
|
+
* 获取消息描述
|
|
55
|
+
*/
|
|
56
|
+
getContent(): string;
|
|
57
|
+
/**
|
|
58
|
+
* 获取消息文本
|
|
59
|
+
*/
|
|
60
|
+
getMsgText(): Promise<string>;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=ContactMessage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContactMessage.d.ts","sourceRoot":"","sources":["../../../../src/weChatBase/weChatMessage/types/ContactMessage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAI7C;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,kBAAkB;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS;IACT,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS;IACT,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS;IACT,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oBAAoB;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS;IACT,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS;IACT,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS;IACT,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa;IACb,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oBAAoB;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;GASG;AACH,qBAAa,cAAe,SAAQ,SAAS;IACzC,WAAW;IACJ,QAAQ,EAAE,eAAe,CAAM;gBAE1B,IAAI,EAAE,GAAG;IAmBrB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAyBxB;;OAEG;IACH,UAAU,IAAI,MAAM;IAWpB;;OAEG;IACM,UAAU,IAAI,MAAM;IAK7B;;OAEG;IACY,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;CAG/C"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ContactMessage = void 0;
|
|
4
|
+
const weChatMsgBase_1 = require("../weChatMsgBase");
|
|
5
|
+
const weChatMessageType_1 = require("../weChatMessageType");
|
|
6
|
+
const utils_1 = require("../../../utils");
|
|
7
|
+
/**
|
|
8
|
+
* 名片消息类
|
|
9
|
+
* MsgType = 42
|
|
10
|
+
*
|
|
11
|
+
* 示例数据:
|
|
12
|
+
* {
|
|
13
|
+
* "MsgType": 42,
|
|
14
|
+
* "Content": { "string": "<?xml...名片信息..." }
|
|
15
|
+
* }
|
|
16
|
+
*/
|
|
17
|
+
class ContactMessage extends weChatMsgBase_1.WeChatMsg {
|
|
18
|
+
constructor(data) {
|
|
19
|
+
super(data.Appid, data.api, data.Wxid, weChatMessageType_1.WeChatMessageType.Contact, data.Data.MsgId, data.Data.NewMsgId, data.Data.CreateTime, data.Data.FromUserName?.string || data.Data.FromUserName, data.Data.ToUserName?.string || data.Data.ToUserName, data.Data.MsgSource, data.Data.Content?.string || data.Data.Content);
|
|
20
|
+
/** 名片信息 */
|
|
21
|
+
this.cardInfo = {};
|
|
22
|
+
// 解析名片信息
|
|
23
|
+
this.parseContactInfo();
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* 解析名片信息
|
|
27
|
+
*/
|
|
28
|
+
parseContactInfo() {
|
|
29
|
+
try {
|
|
30
|
+
const xmlObj = (0, utils_1.getXml2Json)(this.Content);
|
|
31
|
+
if (xmlObj?.msg) {
|
|
32
|
+
const msg = xmlObj.msg;
|
|
33
|
+
this.cardInfo = {
|
|
34
|
+
username: msg.username,
|
|
35
|
+
nickname: msg.nickname,
|
|
36
|
+
fullpy: msg.fullpy,
|
|
37
|
+
shortpy: msg.shortpy,
|
|
38
|
+
alias: msg.alias,
|
|
39
|
+
sex: parseInt(msg.sex) || 0,
|
|
40
|
+
province: msg.province,
|
|
41
|
+
city: msg.city,
|
|
42
|
+
sign: msg.sign,
|
|
43
|
+
bigheadimgurl: msg.bigheadimgurl,
|
|
44
|
+
smallheadimgurl: msg.smallheadimgurl,
|
|
45
|
+
antispamticket: msg.antispamticket
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
console.error('解析名片信息失败:', error);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* 获取性别描述
|
|
55
|
+
*/
|
|
56
|
+
getSexText() {
|
|
57
|
+
switch (this.cardInfo.sex) {
|
|
58
|
+
case 1:
|
|
59
|
+
return '男';
|
|
60
|
+
case 2:
|
|
61
|
+
return '女';
|
|
62
|
+
default:
|
|
63
|
+
return '未知';
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* 获取消息描述
|
|
68
|
+
*/
|
|
69
|
+
getContent() {
|
|
70
|
+
const nickname = this.cardInfo.nickname || '未知';
|
|
71
|
+
return `[名片]${nickname}`;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* 获取消息文本
|
|
75
|
+
*/
|
|
76
|
+
async getMsgText() {
|
|
77
|
+
return this.getContent();
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
exports.ContactMessage = ContactMessage;
|
|
81
|
+
//# sourceMappingURL=ContactMessage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContactMessage.js","sourceRoot":"","sources":["../../../../src/weChatBase/weChatMessage/types/ContactMessage.ts"],"names":[],"mappings":";;;AAAA,oDAA6C;AAC7C,4DAAyD;AACzD,0CAA6C;AAgC7C;;;;;;;;;GASG;AACH,MAAa,cAAe,SAAQ,yBAAS;IAIzC,YAAY,IAAS;QACjB,KAAK,CACD,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,GAAG,EACR,IAAI,CAAC,IAAI,EACT,qCAAiB,CAAC,OAAO,EACzB,IAAI,CAAC,IAAI,CAAC,KAAK,EACf,IAAI,CAAC,IAAI,CAAC,QAAQ,EAClB,IAAI,CAAC,IAAI,CAAC,UAAU,EACpB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EACxD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EACpD,IAAI,CAAC,IAAI,CAAC,SAAS,EACnB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CACjD,CAAC;QAhBN,WAAW;QACJ,aAAQ,GAAoB,EAAE,CAAC;QAiBlC,SAAS;QACT,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC5B,CAAC;IAED;;OAEG;IACK,gBAAgB;QACpB,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,IAAA,mBAAW,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACzC,IAAI,MAAM,EAAE,GAAG,EAAE,CAAC;gBACd,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;gBACvB,IAAI,CAAC,QAAQ,GAAG;oBACZ,QAAQ,EAAE,GAAG,CAAC,QAAQ;oBACtB,QAAQ,EAAE,GAAG,CAAC,QAAQ;oBACtB,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,KAAK,EAAE,GAAG,CAAC,KAAK;oBAChB,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;oBAC3B,QAAQ,EAAE,GAAG,CAAC,QAAQ;oBACtB,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,aAAa,EAAE,GAAG,CAAC,aAAa;oBAChC,eAAe,EAAE,GAAG,CAAC,eAAe;oBACpC,cAAc,EAAE,GAAG,CAAC,cAAc;iBACrC,CAAC;YACN,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QACtC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,UAAU;QACN,QAAQ,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;YACxB,KAAK,CAAC;gBACF,OAAO,GAAG,CAAC;YACf,KAAK,CAAC;gBACF,OAAO,GAAG,CAAC;YACf;gBACI,OAAO,IAAI,CAAC;QACpB,CAAC;IACL,CAAC;IAED;;OAEG;IACM,UAAU;QACf,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,IAAI,CAAC;QAChD,OAAO,OAAO,QAAQ,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACM,KAAK,CAAC,UAAU;QACrB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;IAC7B,CAAC;CACJ;AA/ED,wCA+EC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { WeChatMsg } from "../weChatMsgBase";
|
|
2
|
+
/**
|
|
3
|
+
* Emoji表情信息接口
|
|
4
|
+
*/
|
|
5
|
+
export interface EmojiInfo {
|
|
6
|
+
/** 表情MD5 */
|
|
7
|
+
md5?: string;
|
|
8
|
+
/** 表情长度(字节) */
|
|
9
|
+
len?: number;
|
|
10
|
+
/** 表情CDN URL */
|
|
11
|
+
cdnurl?: string;
|
|
12
|
+
/** 加密URL */
|
|
13
|
+
encrypturl?: string;
|
|
14
|
+
/** AES密钥 */
|
|
15
|
+
aeskey?: string;
|
|
16
|
+
/** 外部URL */
|
|
17
|
+
externurl?: string;
|
|
18
|
+
/** 外部MD5 */
|
|
19
|
+
externmd5?: string;
|
|
20
|
+
/** 宽度 */
|
|
21
|
+
width?: number;
|
|
22
|
+
/** 高度 */
|
|
23
|
+
height?: number;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Emoji表情消息类
|
|
27
|
+
* MsgType = 47
|
|
28
|
+
*
|
|
29
|
+
* 示例数据:
|
|
30
|
+
* {
|
|
31
|
+
* "MsgType": 47,
|
|
32
|
+
* "Content": { "string": "<msg><emoji md5=\"cc567...\" .../></msg>" }
|
|
33
|
+
* }
|
|
34
|
+
*/
|
|
35
|
+
export declare class EmojiMessage extends WeChatMsg {
|
|
36
|
+
/** 表情信息 */
|
|
37
|
+
emojiInfo: EmojiInfo;
|
|
38
|
+
constructor(data: any);
|
|
39
|
+
/**
|
|
40
|
+
* 解析表情信息
|
|
41
|
+
*/
|
|
42
|
+
private parseEmojiInfo;
|
|
43
|
+
/**
|
|
44
|
+
* 获取表情数据(用于发送emoji)
|
|
45
|
+
*/
|
|
46
|
+
getEmojiData(): {
|
|
47
|
+
md5: string;
|
|
48
|
+
size: number;
|
|
49
|
+
url: string;
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* 获取消息描述
|
|
53
|
+
*/
|
|
54
|
+
getContent(): string;
|
|
55
|
+
/**
|
|
56
|
+
* 获取消息文本(返回JSON格式的emoji数据)
|
|
57
|
+
*/
|
|
58
|
+
getMsgText(): Promise<string>;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=EmojiMessage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmojiMessage.d.ts","sourceRoot":"","sources":["../../../../src/weChatBase/weChatMessage/types/EmojiMessage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAI7C;;GAEG;AACH,MAAM,WAAW,SAAS;IACtB,YAAY;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,eAAe;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,gBAAgB;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS;IACT,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS;IACT,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;GASG;AACH,qBAAa,YAAa,SAAQ,SAAS;IACvC,WAAW;IACJ,SAAS,EAAE,SAAS,CAAM;gBAErB,IAAI,EAAE,GAAG;IAmBrB;;OAEG;IACH,OAAO,CAAC,cAAc;IAsBtB;;OAEG;IACH,YAAY,IAAI;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE;IAQ1D;;OAEG;IACM,UAAU,IAAI,MAAM;IAI7B;;OAEG;IACY,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;CAG/C"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EmojiMessage = void 0;
|
|
4
|
+
const weChatMsgBase_1 = require("../weChatMsgBase");
|
|
5
|
+
const weChatMessageType_1 = require("../weChatMessageType");
|
|
6
|
+
const utils_1 = require("../../../utils");
|
|
7
|
+
/**
|
|
8
|
+
* Emoji表情消息类
|
|
9
|
+
* MsgType = 47
|
|
10
|
+
*
|
|
11
|
+
* 示例数据:
|
|
12
|
+
* {
|
|
13
|
+
* "MsgType": 47,
|
|
14
|
+
* "Content": { "string": "<msg><emoji md5=\"cc567...\" .../></msg>" }
|
|
15
|
+
* }
|
|
16
|
+
*/
|
|
17
|
+
class EmojiMessage extends weChatMsgBase_1.WeChatMsg {
|
|
18
|
+
constructor(data) {
|
|
19
|
+
super(data.Appid, data.api, data.Wxid, weChatMessageType_1.WeChatMessageType.Emoji, data.Data.MsgId, data.Data.NewMsgId, data.Data.CreateTime, data.Data.FromUserName?.string || data.Data.FromUserName, data.Data.ToUserName?.string || data.Data.ToUserName, data.Data.MsgSource, data.Data.Content?.string || data.Data.Content);
|
|
20
|
+
/** 表情信息 */
|
|
21
|
+
this.emojiInfo = {};
|
|
22
|
+
// 解析表情信息
|
|
23
|
+
this.parseEmojiInfo();
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* 解析表情信息
|
|
27
|
+
*/
|
|
28
|
+
parseEmojiInfo() {
|
|
29
|
+
try {
|
|
30
|
+
const xmlObj = (0, utils_1.getXml2Json)(this.Content);
|
|
31
|
+
if (xmlObj?.msg?.emoji) {
|
|
32
|
+
const emoji = xmlObj.msg.emoji;
|
|
33
|
+
this.emojiInfo = {
|
|
34
|
+
md5: emoji.md5,
|
|
35
|
+
len: parseInt(emoji.len) || 0,
|
|
36
|
+
cdnurl: emoji.cdnurl,
|
|
37
|
+
encrypturl: emoji.encrypturl,
|
|
38
|
+
aeskey: emoji.aeskey,
|
|
39
|
+
externurl: emoji.externurl,
|
|
40
|
+
externmd5: emoji.externmd5,
|
|
41
|
+
width: parseInt(emoji.width) || 0,
|
|
42
|
+
height: parseInt(emoji.height) || 0
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
console.error('解析emoji信息失败:', error);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* 获取表情数据(用于发送emoji)
|
|
52
|
+
*/
|
|
53
|
+
getEmojiData() {
|
|
54
|
+
return {
|
|
55
|
+
md5: this.emojiInfo.md5 || '',
|
|
56
|
+
size: this.emojiInfo.len || 0,
|
|
57
|
+
url: this.emojiInfo.cdnurl || ''
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* 获取消息描述
|
|
62
|
+
*/
|
|
63
|
+
getContent() {
|
|
64
|
+
return '[动画表情]';
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* 获取消息文本(返回JSON格式的emoji数据)
|
|
68
|
+
*/
|
|
69
|
+
async getMsgText() {
|
|
70
|
+
return JSON.stringify(this.getEmojiData());
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
exports.EmojiMessage = EmojiMessage;
|
|
74
|
+
//# sourceMappingURL=EmojiMessage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmojiMessage.js","sourceRoot":"","sources":["../../../../src/weChatBase/weChatMessage/types/EmojiMessage.ts"],"names":[],"mappings":";;;AAAA,oDAA6C;AAC7C,4DAAyD;AACzD,0CAA6C;AA0B7C;;;;;;;;;GASG;AACH,MAAa,YAAa,SAAQ,yBAAS;IAIvC,YAAY,IAAS;QACjB,KAAK,CACD,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,GAAG,EACR,IAAI,CAAC,IAAI,EACT,qCAAiB,CAAC,KAAK,EACvB,IAAI,CAAC,IAAI,CAAC,KAAK,EACf,IAAI,CAAC,IAAI,CAAC,QAAQ,EAClB,IAAI,CAAC,IAAI,CAAC,UAAU,EACpB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EACxD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EACpD,IAAI,CAAC,IAAI,CAAC,SAAS,EACnB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CACjD,CAAC;QAhBN,WAAW;QACJ,cAAS,GAAc,EAAE,CAAC;QAiB7B,SAAS;QACT,IAAI,CAAC,cAAc,EAAE,CAAC;IAC1B,CAAC;IAED;;OAEG;IACK,cAAc;QAClB,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,IAAA,mBAAW,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACzC,IAAI,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;gBACrB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;gBAC/B,IAAI,CAAC,SAAS,GAAG;oBACb,GAAG,EAAE,KAAK,CAAC,GAAG;oBACd,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;oBAC7B,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,UAAU,EAAE,KAAK,CAAC,UAAU;oBAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;oBACjC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;iBACtC,CAAC;YACN,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QACzC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,YAAY;QACR,OAAO;YACH,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE;YAC7B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;YAC7B,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE;SACnC,CAAC;IACN,CAAC;IAED;;OAEG;IACM,UAAU;QACf,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED;;OAEG;IACM,KAAK,CAAC,UAAU;QACrB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IAC/C,CAAC;CACJ;AAxED,oCAwEC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { WeChatMsg } from "../weChatMsgBase";
|
|
2
|
+
/**
|
|
3
|
+
* 文件信息接口
|
|
4
|
+
*/
|
|
5
|
+
export interface FileInfo {
|
|
6
|
+
/** 文件标题/文件名 */
|
|
7
|
+
title?: string;
|
|
8
|
+
/** 文件总长度(字节) */
|
|
9
|
+
totallen?: number;
|
|
10
|
+
/** 文件扩展名 */
|
|
11
|
+
fileext?: string;
|
|
12
|
+
/** 文件MD5 */
|
|
13
|
+
md5?: string;
|
|
14
|
+
/** CDN附件URL */
|
|
15
|
+
cdnattachurl?: string;
|
|
16
|
+
/** AES密钥 */
|
|
17
|
+
aeskey?: string;
|
|
18
|
+
/** 附件ID */
|
|
19
|
+
attachid?: string;
|
|
20
|
+
/** 文件上传令牌 */
|
|
21
|
+
fileuploadtoken?: string;
|
|
22
|
+
/** 加密版本 */
|
|
23
|
+
encryver?: string;
|
|
24
|
+
/** 覆写的新消息ID */
|
|
25
|
+
overwrite_newmsgid?: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* 文件消息类
|
|
29
|
+
* MsgType = 49, appmsg.type = 6 或 74
|
|
30
|
+
*
|
|
31
|
+
* type=74: 文件发送中通知(不可用于转发和下载)
|
|
32
|
+
* type=6: 文件发送完成(可用于转发和下载)
|
|
33
|
+
*
|
|
34
|
+
* 示例数据:
|
|
35
|
+
* {
|
|
36
|
+
* "MsgType": 49,
|
|
37
|
+
* "Content": {
|
|
38
|
+
* "string": "<?xml><msg><appmsg><type>6</type><title>file.xlsx</title>..."
|
|
39
|
+
* }
|
|
40
|
+
* }
|
|
41
|
+
*/
|
|
42
|
+
export declare class FileMessage extends WeChatMsg {
|
|
43
|
+
/** 文件信息 */
|
|
44
|
+
fileInfo: FileInfo;
|
|
45
|
+
/** 应用消息子类型 */
|
|
46
|
+
appMsgType: number;
|
|
47
|
+
/** 是否为发送完成状态 */
|
|
48
|
+
private _isComplete;
|
|
49
|
+
constructor(data: any);
|
|
50
|
+
/**
|
|
51
|
+
* 解析文件信息
|
|
52
|
+
* @returns 应用消息子类型
|
|
53
|
+
*/
|
|
54
|
+
private parseFileInfo;
|
|
55
|
+
/**
|
|
56
|
+
* 判断文件是否发送完成
|
|
57
|
+
* 只有发送完成的文件才能进行转发和下载
|
|
58
|
+
*/
|
|
59
|
+
isComplete(): boolean;
|
|
60
|
+
/**
|
|
61
|
+
* 判断文件是否正在发送中
|
|
62
|
+
*/
|
|
63
|
+
isSending(): boolean;
|
|
64
|
+
/**
|
|
65
|
+
* 获取文件大小描述
|
|
66
|
+
*/
|
|
67
|
+
getFileSizeText(): string;
|
|
68
|
+
/**
|
|
69
|
+
* 获取消息描述
|
|
70
|
+
*/
|
|
71
|
+
getContent(): string;
|
|
72
|
+
/**
|
|
73
|
+
* 获取消息文本
|
|
74
|
+
*/
|
|
75
|
+
getMsgText(): Promise<string>;
|
|
76
|
+
/**
|
|
77
|
+
* 获取文件下载URL(仅发送完成后可用)
|
|
78
|
+
*/
|
|
79
|
+
getDownloadUrl(): string | null;
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=FileMessage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileMessage.d.ts","sourceRoot":"","sources":["../../../../src/weChatBase/weChatMessage/types/FileMessage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAI7C;;GAEG;AACH,MAAM,WAAW,QAAQ;IACrB,eAAe;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,eAAe;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa;IACb,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe;IACf,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,WAAY,SAAQ,SAAS;IACtC,WAAW;IACJ,QAAQ,EAAE,QAAQ,CAAM;IAE/B,cAAc;IACP,UAAU,EAAE,MAAM,CAAC;IAE1B,gBAAgB;IAChB,OAAO,CAAC,WAAW,CAAkB;gBAEzB,IAAI,EAAE,GAAG;IAmBrB;;;OAGG;IACH,OAAO,CAAC,aAAa;IAsCrB;;;OAGG;IACH,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,eAAe,IAAI,MAAM;IAazB;;OAEG;IACM,UAAU,IAAI,MAAM;IAO7B;;OAEG;IACY,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAI5C;;OAEG;IACH,cAAc,IAAI,MAAM,GAAG,IAAI;CAOlC"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FileMessage = void 0;
|
|
4
|
+
const weChatMsgBase_1 = require("../weChatMsgBase");
|
|
5
|
+
const weChatMessageType_1 = require("../weChatMessageType");
|
|
6
|
+
const utils_1 = require("../../../utils");
|
|
7
|
+
/**
|
|
8
|
+
* 文件消息类
|
|
9
|
+
* MsgType = 49, appmsg.type = 6 或 74
|
|
10
|
+
*
|
|
11
|
+
* type=74: 文件发送中通知(不可用于转发和下载)
|
|
12
|
+
* type=6: 文件发送完成(可用于转发和下载)
|
|
13
|
+
*
|
|
14
|
+
* 示例数据:
|
|
15
|
+
* {
|
|
16
|
+
* "MsgType": 49,
|
|
17
|
+
* "Content": {
|
|
18
|
+
* "string": "<?xml><msg><appmsg><type>6</type><title>file.xlsx</title>..."
|
|
19
|
+
* }
|
|
20
|
+
* }
|
|
21
|
+
*/
|
|
22
|
+
class FileMessage extends weChatMsgBase_1.WeChatMsg {
|
|
23
|
+
constructor(data) {
|
|
24
|
+
super(data.Appid, data.api, data.Wxid, weChatMessageType_1.WeChatMessageType.AppMessage, data.Data.MsgId, data.Data.NewMsgId, data.Data.CreateTime, data.Data.FromUserName?.string || data.Data.FromUserName, data.Data.ToUserName?.string || data.Data.ToUserName, data.Data.MsgSource, data.Data.Content?.string || data.Data.Content);
|
|
25
|
+
/** 文件信息 */
|
|
26
|
+
this.fileInfo = {};
|
|
27
|
+
/** 是否为发送完成状态 */
|
|
28
|
+
this._isComplete = false;
|
|
29
|
+
// 解析文件信息
|
|
30
|
+
this.appMsgType = this.parseFileInfo();
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* 解析文件信息
|
|
34
|
+
* @returns 应用消息子类型
|
|
35
|
+
*/
|
|
36
|
+
parseFileInfo() {
|
|
37
|
+
try {
|
|
38
|
+
const xmlObj = (0, utils_1.getXml2Json)(this.Content);
|
|
39
|
+
if (xmlObj?.msg?.appmsg) {
|
|
40
|
+
const appmsg = xmlObj.msg.appmsg;
|
|
41
|
+
const appMsgType = parseInt(appmsg.type) || weChatMessageType_1.AppMessageSubType.File;
|
|
42
|
+
// 判断是否为发送完成状态
|
|
43
|
+
this._isComplete = appMsgType === weChatMessageType_1.AppMessageSubType.File;
|
|
44
|
+
this.fileInfo = {
|
|
45
|
+
title: appmsg.title
|
|
46
|
+
};
|
|
47
|
+
// 解析附件信息
|
|
48
|
+
if (appmsg.appattach) {
|
|
49
|
+
const attach = appmsg.appattach;
|
|
50
|
+
this.fileInfo.totallen = parseInt(attach.totallen) || 0;
|
|
51
|
+
this.fileInfo.fileext = attach.fileext;
|
|
52
|
+
this.fileInfo.cdnattachurl = attach.cdnattachurl;
|
|
53
|
+
this.fileInfo.aeskey = attach.aeskey;
|
|
54
|
+
this.fileInfo.attachid = attach.attachid;
|
|
55
|
+
this.fileInfo.fileuploadtoken = attach.fileuploadtoken;
|
|
56
|
+
this.fileInfo.encryver = attach.encryver;
|
|
57
|
+
this.fileInfo.overwrite_newmsgid = attach.overwrite_newmsgid;
|
|
58
|
+
}
|
|
59
|
+
// MD5信息
|
|
60
|
+
this.fileInfo.md5 = appmsg.md5;
|
|
61
|
+
return appMsgType;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
console.error('解析文件信息失败:', error);
|
|
66
|
+
}
|
|
67
|
+
return weChatMessageType_1.AppMessageSubType.File;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* 判断文件是否发送完成
|
|
71
|
+
* 只有发送完成的文件才能进行转发和下载
|
|
72
|
+
*/
|
|
73
|
+
isComplete() {
|
|
74
|
+
return this._isComplete;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* 判断文件是否正在发送中
|
|
78
|
+
*/
|
|
79
|
+
isSending() {
|
|
80
|
+
return !this._isComplete;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* 获取文件大小描述
|
|
84
|
+
*/
|
|
85
|
+
getFileSizeText() {
|
|
86
|
+
const size = this.fileInfo.totallen || 0;
|
|
87
|
+
if (size < 1024) {
|
|
88
|
+
return `${size}B`;
|
|
89
|
+
}
|
|
90
|
+
else if (size < 1024 * 1024) {
|
|
91
|
+
return `${(size / 1024).toFixed(2)}KB`;
|
|
92
|
+
}
|
|
93
|
+
else if (size < 1024 * 1024 * 1024) {
|
|
94
|
+
return `${(size / (1024 * 1024)).toFixed(2)}MB`;
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
return `${(size / (1024 * 1024 * 1024)).toFixed(2)}GB`;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* 获取消息描述
|
|
102
|
+
*/
|
|
103
|
+
getContent() {
|
|
104
|
+
const fileName = this.fileInfo.title || '文件';
|
|
105
|
+
const fileSize = this.getFileSizeText();
|
|
106
|
+
const status = this.isComplete() ? '' : '(发送中)';
|
|
107
|
+
return `[文件${status}]${fileName} (${fileSize})`;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* 获取消息文本
|
|
111
|
+
*/
|
|
112
|
+
async getMsgText() {
|
|
113
|
+
return this.getContent();
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* 获取文件下载URL(仅发送完成后可用)
|
|
117
|
+
*/
|
|
118
|
+
getDownloadUrl() {
|
|
119
|
+
if (!this.isComplete()) {
|
|
120
|
+
console.warn('文件尚未发送完成,无法获取下载URL');
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
return this.fileInfo.cdnattachurl || null;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
exports.FileMessage = FileMessage;
|
|
127
|
+
//# sourceMappingURL=FileMessage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FileMessage.js","sourceRoot":"","sources":["../../../../src/weChatBase/weChatMessage/types/FileMessage.ts"],"names":[],"mappings":";;;AAAA,oDAA6C;AAC7C,4DAA4E;AAC5E,0CAA6C;AA4B7C;;;;;;;;;;;;;;GAcG;AACH,MAAa,WAAY,SAAQ,yBAAS;IAUtC,YAAY,IAAS;QACjB,KAAK,CACD,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,GAAG,EACR,IAAI,CAAC,IAAI,EACT,qCAAiB,CAAC,UAAU,EAC5B,IAAI,CAAC,IAAI,CAAC,KAAK,EACf,IAAI,CAAC,IAAI,CAAC,QAAQ,EAClB,IAAI,CAAC,IAAI,CAAC,UAAU,EACpB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EACxD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EACpD,IAAI,CAAC,IAAI,CAAC,SAAS,EACnB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CACjD,CAAC;QAtBN,WAAW;QACJ,aAAQ,GAAa,EAAE,CAAC;QAK/B,gBAAgB;QACR,gBAAW,GAAY,KAAK,CAAC;QAiBjC,SAAS;QACT,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;IAC3C,CAAC;IAED;;;OAGG;IACK,aAAa;QACjB,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,IAAA,mBAAW,EAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACzC,IAAI,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;gBACtB,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;gBACjC,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,qCAAiB,CAAC,IAAI,CAAC;gBAEnE,cAAc;gBACd,IAAI,CAAC,WAAW,GAAG,UAAU,KAAK,qCAAiB,CAAC,IAAI,CAAC;gBAEzD,IAAI,CAAC,QAAQ,GAAG;oBACZ,KAAK,EAAE,MAAM,CAAC,KAAK;iBACtB,CAAC;gBAEF,SAAS;gBACT,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;oBACnB,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;oBAChC,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;oBACxD,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;oBACvC,IAAI,CAAC,QAAQ,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;oBACjD,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;oBACrC,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;oBACzC,IAAI,CAAC,QAAQ,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;oBACvD,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;oBACzC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;gBACjE,CAAC;gBAED,QAAQ;gBACR,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;gBAE/B,OAAO,UAAU,CAAC;YACtB,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,qCAAiB,CAAC,IAAI,CAAC;IAClC,CAAC;IAED;;;OAGG;IACH,UAAU;QACN,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,SAAS;QACL,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,eAAe;QACX,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,CAAC;QACzC,IAAI,IAAI,GAAG,IAAI,EAAE,CAAC;YACd,OAAO,GAAG,IAAI,GAAG,CAAC;QACtB,CAAC;aAAM,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;YAC5B,OAAO,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3C,CAAC;aAAM,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;YACnC,OAAO,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QACpD,CAAC;aAAM,CAAC;YACJ,OAAO,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3D,CAAC;IACL,CAAC;IAED;;OAEG;IACM,UAAU;QACf,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QAChD,OAAO,MAAM,MAAM,IAAI,QAAQ,KAAK,QAAQ,GAAG,CAAC;IACpD,CAAC;IAED;;OAEG;IACM,KAAK,CAAC,UAAU;QACrB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,cAAc;QACV,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACnC,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,IAAI,IAAI,CAAC;IAC9C,CAAC;CACJ;AAjID,kCAiIC"}
|