egg_server/routes/bot/eventMsg.ts
zhaoyingbo dab5b18276
All checks were successful
Egg CI/CD / build-image (push) Successful in 38s
Egg CI/CD / deploy (push) Successful in 1m19s
feat: 修改请求report的方式为完整的Body
2024-05-24 12:01:51 +00:00

136 lines
3.4 KiB
TypeScript

import { fetchCIMonitor, fetchReportCollector } from "../../service";
import lark from "../../service/lark";
import { LarkMessageEvent } from "../../types";
import {
getChatId,
getIsEventMsg,
getMsgText,
getMsgType,
} from "../../utils/msgTools";
/**
* 过滤出非法消息,如果发表情包就直接发回去
* @param {LarkMessageEvent} body
* @returns {boolean} 是否为非法消息
*/
const filterIllegalMsg = (body: LarkMessageEvent) => {
const chatId = getChatId(body);
if (!chatId) return true;
// 过滤下艾特全体成员的消息
if (getMsgText(body).includes("@_all")) {
return true;
}
// 获取msgType
const msgType = getMsgType(body);
// 发表情包就直接发回去
if (msgType === "sticker") {
const content = body?.event?.message?.content;
lark.sendMsg("chat_id", chatId, "sticker", content);
return true;
}
// 剩下的非文字消息暂时不处理
if (msgType !== "text") {
const textList = [
"仅支持普通文本内容[黑脸]",
"唔...我只能处理普通文本哦[泣不成声]",
"噢!这似乎是个非普通文本[看]",
"哇!这是什么东东?我只懂普通文本啦![可爱]",
"只能处理普通文本内容哦[捂脸]",
];
const content = JSON.stringify({
text: textList[Math.floor(Math.random() * textList.length)],
});
lark.sendMsg("chat_id", chatId, "text", content);
return true;
}
return false;
};
/**
* 发送ID消息
* @param chatId - 发送消息的chatId
*/
const manageIdMsg = async (chatId: string) => {
const content = JSON.stringify({
type: "template",
data: {
config: {
update_multi: true,
},
template_id: "ctp_AAi3NnHb6zgK",
template_variable: {
chat_id: chatId,
},
},
});
lark.sendMsg("chat_id", chatId, "interactive", content);
};
/**
* 处理命令消息
* @param body - 消息体
* @returns
*/
const manageCMDMsg = (body: LarkMessageEvent) => {
const text = getMsgText(body);
const chatId = getChatId(body);
if (text === "/id") {
manageIdMsg(chatId);
return true;
}
if (text === "/ci") {
fetchCIMonitor(chatId);
return true;
}
if (text.includes("share") && text.includes("简报")) {
fetchReportCollector(body);
return true;
}
return false;
};
/**
* 回复引导消息
* @param {LarkMessageEvent} body
*/
const replyGuideMsg = async (body: LarkMessageEvent) => {
const chatId = getChatId(body);
const content = JSON.stringify({
type: "template",
data: {
config: {
enable_forward: false,
update_multi: true,
},
template_id: "ctp_AAyVx5R39xU9",
template_variable: {
chat_id: chatId,
},
},
});
await lark.sendMsg("chat_id", chatId, "interactive", content);
};
/**
* 处理Event消息
* @param {LarkUserAction} body
* @returns {boolean} 是否在本函数中处理了消息
*/
export const manageEventMsg = (body: LarkMessageEvent) => {
// 过滤非Event消息
if (!getIsEventMsg(body)) {
return false;
}
// 过滤非法消息
if (filterIllegalMsg(body)) {
return true;
}
// 处理命令消息
if (manageCMDMsg(body)) {
return true;
}
// 返回引导消息
replyGuideMsg(body);
return true;
};