first version

This commit is contained in:
2021-11-01 22:30:51 +08:00
parent da2a96865c
commit d964439624
143 changed files with 29617 additions and 101 deletions
+18 -10
View File
@@ -6,6 +6,7 @@ const {
bot,
getDisplayName,
getGroupMsgSpeaker,
getGroupMsgContent,
getNickName,
} = require("./bot.js");
const {
@@ -58,7 +59,9 @@ async function processMessage(msg) {
speakingGroupMember: null,
filename: null,
displayFilename: msg["FileName"] || "",
fileSize: msg.FileSize | 0,
isGroupMessage: bot.Contact.isRoomContact(peerContact),
isSentBySelf: msg.isSendBySelf,
};
if (m.isGroupMessage) {
@@ -71,18 +74,18 @@ async function processMessage(msg) {
case bot.CONF.MSGTYPE_TEXT:
// 文本消息
m.type = "text";
m.content = msg["Content"];
m.content = m.isGroupMessage ? getGroupMsgContent(msg) : msg["Content"];
break;
case bot.CONF.MSGTYPE_EMOTICON:
case bot.CONF.MSGTYPE_IMAGE: {
const suffix = msgType === bot.CONF.MSGTYPE_IMAGE ? ".jpg" : ".gif";
m.type = "img";
m.content =
`${msgType === bot.CONF.MSGTYPE_IMAGE ? "图片" : "表情"}` +
`[${msgType === bot.CONF.MSGTYPE_IMAGE ? "图片" : "表情"}]` +
(msg["FileName"] || "");
if (msg["HasProductId"]) {
m.type = "unknown";
m.content = "表情贴图请在手机上查看";
m.content = "[表情贴图]请在手机上查看";
break;
}
const cachePath = composeCacheFilePath(msg, suffix);
@@ -101,7 +104,7 @@ async function processMessage(msg) {
}
case bot.CONF.MSGTYPE_VOICE: {
m.type = "voice";
m.content = "语音消息";
m.content = "[语音消息]";
m.filename = composeFilename(msg, ".mp3");
const { data } = await bot.getVoice(msg.MsgId);
fs.writeFileSync(composeMediaFilePath(msg, m.filename), data);
@@ -110,6 +113,7 @@ async function processMessage(msg) {
case bot.CONF.MSGTYPE_VIDEO:
case bot.CONF.MSGTYPE_MICROVIDEO: {
m.type = "video";
m.content = "[视频]";
const suffix = ".mp4";
const cachePath = composeCacheFilePath(msg, suffix);
const res = await bot.getVideo(msg.MsgId);
@@ -125,16 +129,16 @@ async function processMessage(msg) {
break;
}
case bot.CONF.MSGTYPE_APP:
m.type = "file";
if (msg.AppMsgType === 5) {
m.type = "text";
m.content = "链接" + msg["FileName"] + ": " + msg["Url"];
m.content = "[链接]" + msg["FileName"] + ": " + msg["Url"];
break;
} else if (msg.AppMsgType == 6) {
m.type = "file";
m.content = "[文件]" + m.displayFilename;
if (!(msg.FileSize < 10 * 1024 * 1024)) {
// 忽略10M以上的大文件
m.type = "unknown";
m.content = "【文件】" + m.displayFilename;
m.filename = null;
break;
}
@@ -178,11 +182,11 @@ async function processMessage(msg) {
(m.speakingGroupMember && getDisplayName(m.speakingGroupMember)) || null,
content: m.content,
filename: m.filename,
fileSize: m.fileSize,
displayFilename: m.displayFilename,
};
const clientMsg = {
msgID: m.messageID,
composedID: m.composedID,
messageID: m.composedID,
createTimestamp: m.createTimestamp,
type: m.type,
fromID: m.fromID,
@@ -192,15 +196,19 @@ async function processMessage(msg) {
toName: m.toName,
toNickName: m.toNickName,
isGroupMessage: m.isGroupMessage,
isSentBySelf: m.isSentBySelf,
speakingGroupMemberID:
m.speakingGroupMember && m.speakingGroupMember.UserName,
speakingGroupMemberName:
(m.speakingGroupMember && getDisplayName(m.speakingGroupMember)) || null,
content: m.content,
filename: m.filename,
fileSize: m.fileSize,
displayFilename: m.displayFilename,
};
await db.pushMessage(dbMsg);
if (!bot.Contact.isSpContact(peerContact)) {
await db.pushMessage(dbMsg);
}
socket.pushMessage(clientMsg);
}