@lih-x-x/kmr 1.0.16 → 1.0.17

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 (2) hide show
  1. package/dist/index.js +25 -5
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -13,7 +13,25 @@ function createLarkClient(config) {
13
13
  appType: lark.AppType.SelfBuild
14
14
  });
15
15
  }
16
- function createEventDispatcher(onMessage) {
16
+ async function getBotOpenId(client) {
17
+ try {
18
+ const res = await client.request({
19
+ method: "GET",
20
+ url: "/open-apis/bot/v3/info"
21
+ });
22
+ const openId = res.data?.bot?.open_id || "";
23
+ if (openId) {
24
+ console.log(`[bot] \u673A\u5668\u4EBA open_id: ${openId}`);
25
+ } else {
26
+ console.warn(`[bot] \u672A\u80FD\u83B7\u53D6\u673A\u5668\u4EBA open_id\uFF0C\u7FA4\u804A @\u5224\u65AD\u53EF\u80FD\u4E0D\u51C6\u786E`);
27
+ }
28
+ return openId;
29
+ } catch (err) {
30
+ console.error(`[bot] \u83B7\u53D6\u673A\u5668\u4EBA\u4FE1\u606F\u5931\u8D25:`, err.message);
31
+ return "";
32
+ }
33
+ }
34
+ function createEventDispatcher(botOpenId, onMessage) {
17
35
  const dispatcher = new lark.EventDispatcher({});
18
36
  const processedMessages = /* @__PURE__ */ new Set();
19
37
  dispatcher.register({
@@ -47,10 +65,11 @@ function createEventDispatcher(onMessage) {
47
65
  const content = JSON.parse(message.content);
48
66
  let text = content.text || "";
49
67
  const chatId = message.chat_id;
50
- const isMentioned = message.mentions && message.mentions.length > 0;
68
+ const mentions = message.mentions || [];
69
+ const isMentioned = botOpenId ? mentions.some((m) => m.id?.open_id === botOpenId) : mentions.some((m) => m.id?.open_id && data.sender?.sender_type !== "user");
51
70
  const isGroup = message.chat_type === "group";
52
- if (isMentioned) {
53
- for (const mention of message.mentions) {
71
+ if (mentions.length > 0) {
72
+ for (const mention of mentions) {
54
73
  if (mention.key) {
55
74
  text = text.replace(mention.key, "").trim();
56
75
  }
@@ -1101,7 +1120,8 @@ async function main() {
1101
1120
  const taskCreator = new TaskCreator(client);
1102
1121
  const userResolver = new UserResolver(client);
1103
1122
  const pendingConfirmations = /* @__PURE__ */ new Map();
1104
- const dispatcher = createEventDispatcher(async (messageId, text, chatId, senderId, meta) => {
1123
+ const botOpenId = await getBotOpenId(client);
1124
+ const dispatcher = createEventDispatcher(botOpenId, async (messageId, text, chatId, senderId, meta) => {
1105
1125
  const parsed = parseMessage(text);
1106
1126
  console.log(`[route] \u6D88\u606F\u8DEF\u7531: type=${parsed.type}, messageId=${messageId}, isGroup=${meta.isGroup}, isMentioned=${meta.isMentioned}`);
1107
1127
  if (meta.isGroup && !meta.isMentioned && parsed.type === "document_link" /* DOCUMENT_LINK */) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lih-x-x/kmr",
3
- "version": "1.0.16",
3
+ "version": "1.0.17",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "bin": {