@satorijs/adapter-lark 3.8.5 → 3.8.6

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/lib/index.cjs CHANGED
@@ -395,12 +395,22 @@ var LarkMessageEncoder = class extends import_core3.MessageEncoder {
395
395
  try {
396
396
  let resp;
397
397
  let quote = this.quote;
398
- const payload = this.options?.session?.lark;
399
- if (!quote && payload?.type === "im.message.receive_v1" && payload.event.message.thread_id) {
400
- quote = {
401
- id: payload.event.message.message_id,
402
- replyInThread: true
403
- };
398
+ if (!quote) {
399
+ const payload = this.options?.session?.lark;
400
+ if (payload?.type === "im.message.receive_v1" && payload.event.message.thread_id) {
401
+ quote = {
402
+ id: payload.event.message.message_id,
403
+ replyInThread: true
404
+ };
405
+ } else if (payload?.type === "card.action.trigger") {
406
+ const { items: [message] } = await this.bot.internal.getImMessage(payload.event.context.open_message_id);
407
+ if (message?.thread_id) {
408
+ quote = {
409
+ id: payload.event.context.open_message_id,
410
+ replyInThread: true
411
+ };
412
+ }
413
+ }
404
414
  }
405
415
  if (this.editMessageIds) {
406
416
  const messageId = this.editMessageIds.pop();
@@ -427,8 +437,8 @@ var LarkMessageEncoder = class extends import_core3.MessageEncoder {
427
437
  session.messageId = resp.message_id;
428
438
  session.timestamp = Number(resp.create_time) * 1e3;
429
439
  session.userId = resp.sender.id;
430
- session.channelId = this.channelId;
431
- session.guildId = this.guildId;
440
+ session.channelId = this.session.channelId;
441
+ session.guildId = this.session.guildId;
432
442
  session.app.emit(session, "send", session);
433
443
  this.results.push(session.event.message);
434
444
  } catch (e) {
@@ -451,7 +451,7 @@ declare module './internal' {
451
451
  * 获取指定消息的内容
452
452
  * @see https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/im-v1/message/get
453
453
  */
454
- getImMessage(message_id: string): Promise<GetImMessageResponse>;
454
+ getImMessage(message_id: string, query?: GetImMessageQuery): Promise<GetImMessageResponse>;
455
455
  /**
456
456
  * 发送应用内加急
457
457
  * @see https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/im-v1/message/urgent_app
@@ -5426,6 +5426,8 @@ declare module '.' {
5426
5426
  root_id?: string;
5427
5427
  /** 父消息的id open_message_id */
5428
5428
  parent_id?: string;
5429
+ /** 消息所属的话题 ID */
5430
+ thread_id?: string;
5429
5431
  /** 消息类型 text post card image等等 */
5430
5432
  msg_type?: string;
5431
5433
  /** 消息生成的时间戳(毫秒) */
@@ -16732,6 +16734,17 @@ export interface GetImMessageResourceQuery {
16732
16734
  /** 资源类型,可选"image, file“; image对应消息中的 图片,富文本消息中的图片。 file对应消息中的 文件、音频、视频、(表情包除外) */
16733
16735
  type: string;
16734
16736
  }
16737
+ export interface GetImMessageQuery {
16738
+ /**
16739
+ * 用户 ID 类型
16740
+ *
16741
+ * - `open_id`:标识一个用户在某个应用中的身份。同一个用户在不同应用中的 Open ID 不同。
16742
+ * - `union_id`:标识一个用户在某个应用开发商下的身份。同一用户在同一开发商下的应用中的 Union ID 是相同的,在不同开发商下的应用中的 Union ID 是不同的。通过 Union ID,应用开发商可以把同个用户在多个应用中的身份关联起来。
16743
+ * - `user_id`:标识一个用户在某个租户内的身份。同一个用户在租户 A 和租户 B 内的 User ID 是不同的。在同一个租户内,一个用户的 User ID 在所有应用(包括商店应用)中都保持一致。User ID 主要用于在不同的应用间打通用户数据。
16744
+ * @default 'open_id'
16745
+ */
16746
+ user_id_type?: 'open_id' | 'user_id' | 'union_id';
16747
+ }
16735
16748
  export interface UrgentAppImMessageRequest {
16736
16749
  /** 该字段标识目标用户的id类型 */
16737
16750
  user_id_list: string[];
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@satorijs/adapter-lark",
3
3
  "description": "Lark (飞书) Adapter for Satorijs",
4
- "version": "3.8.5",
4
+ "version": "3.8.6",
5
5
  "type": "module",
6
6
  "main": "lib/index.cjs",
7
7
  "types": "lib/index.d.ts",
@@ -35,10 +35,10 @@
35
35
  ],
36
36
  "devDependencies": {
37
37
  "@cordisjs/plugin-server": "^0.2.5",
38
- "@satorijs/core": "^4.3.4",
38
+ "@satorijs/core": "^4.4.2",
39
39
  "cordis": "^3.18.1"
40
40
  },
41
41
  "peerDependencies": {
42
- "@satorijs/core": "^4.3.4"
42
+ "@satorijs/core": "^4.4.2"
43
43
  }
44
44
  }
package/src/message.ts CHANGED
@@ -17,11 +17,22 @@ export class LarkMessageEncoder<C extends Context = Context> extends MessageEnco
17
17
  try {
18
18
  let resp: Lark.Message
19
19
  let quote = this.quote
20
- const payload = this.options?.session?.lark
21
- if (!quote && payload?.type === 'im.message.receive_v1' && payload.event.message.thread_id) {
22
- quote = {
23
- id: payload.event.message.message_id,
24
- replyInThread: true,
20
+ if (!quote) {
21
+ const payload = this.options?.session?.lark
22
+ if (payload?.type === 'im.message.receive_v1' && payload.event.message.thread_id) {
23
+ quote = {
24
+ id: payload.event.message.message_id,
25
+ replyInThread: true,
26
+ }
27
+ } else if (payload?.type === 'card.action.trigger') {
28
+ // cannot determine whether the card is in thread or not
29
+ const { items: [message] } = await this.bot.internal.getImMessage(payload.event.context.open_message_id)
30
+ if (message?.thread_id) {
31
+ quote = {
32
+ id: payload.event.context.open_message_id,
33
+ replyInThread: true,
34
+ }
35
+ }
25
36
  }
26
37
  }
27
38
  if (this.editMessageIds) {
@@ -49,8 +60,8 @@ export class LarkMessageEncoder<C extends Context = Context> extends MessageEnco
49
60
  session.messageId = resp.message_id
50
61
  session.timestamp = Number(resp.create_time) * 1000
51
62
  session.userId = resp.sender.id
52
- session.channelId = this.channelId
53
- session.guildId = this.guildId
63
+ session.channelId = this.session.channelId
64
+ session.guildId = this.session.guildId
54
65
  session.app.emit(session, 'send', session)
55
66
  this.results.push(session.event.message)
56
67
  } catch (e) {
package/src/types/api.ts CHANGED
@@ -451,7 +451,7 @@ declare module './internal' {
451
451
  * 获取指定消息的内容
452
452
  * @see https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/im-v1/message/get
453
453
  */
454
- getImMessage(message_id: string): Promise<GetImMessageResponse>
454
+ getImMessage(message_id: string, query?: GetImMessageQuery): Promise<GetImMessageResponse>
455
455
  /**
456
456
  * 发送应用内加急
457
457
  * @see https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/im-v1/message/urgent_app
@@ -5428,6 +5428,8 @@ declare module '.' {
5428
5428
  root_id?: string
5429
5429
  /** 父消息的id open_message_id */
5430
5430
  parent_id?: string
5431
+ /** 消息所属的话题 ID */
5432
+ thread_id?: string
5431
5433
  /** 消息类型 text post card image等等 */
5432
5434
  msg_type?: string
5433
5435
  /** 消息生成的时间戳(毫秒) */
@@ -16752,6 +16754,17 @@ export interface GetImMessageResourceQuery {
16752
16754
  /** 资源类型,可选"image, file“; image对应消息中的 图片,富文本消息中的图片。 file对应消息中的 文件、音频、视频、(表情包除外) */
16753
16755
  type: string
16754
16756
  }
16757
+ export interface GetImMessageQuery {
16758
+ /**
16759
+ * 用户 ID 类型
16760
+ *
16761
+ * - `open_id`:标识一个用户在某个应用中的身份。同一个用户在不同应用中的 Open ID 不同。
16762
+ * - `union_id`:标识一个用户在某个应用开发商下的身份。同一用户在同一开发商下的应用中的 Union ID 是相同的,在不同开发商下的应用中的 Union ID 是不同的。通过 Union ID,应用开发商可以把同个用户在多个应用中的身份关联起来。
16763
+ * - `user_id`:标识一个用户在某个租户内的身份。同一个用户在租户 A 和租户 B 内的 User ID 是不同的。在同一个租户内,一个用户的 User ID 在所有应用(包括商店应用)中都保持一致。User ID 主要用于在不同的应用间打通用户数据。
16764
+ * @default 'open_id'
16765
+ */
16766
+ user_id_type?: 'open_id' | 'user_id' | 'union_id'
16767
+ }
16755
16768
  export interface UrgentAppImMessageRequest {
16756
16769
  /** 该字段标识目标用户的id类型 */
16757
16770
  user_id_list: string[]