@satorijs/adapter-lark 3.8.4 → 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 +23 -5
- package/lib/index.d.ts +2 -2
- package/lib/types/api.d.ts +14 -1
- package/lib/types/message/index.d.ts +1 -0
- package/package.json +3 -3
- package/src/index.ts +2 -2
- package/src/message.ts +24 -5
- package/src/types/api.ts +14 -1
- package/src/types/message/index.ts +1 -0
package/lib/index.cjs
CHANGED
|
@@ -394,6 +394,24 @@ var LarkMessageEncoder = class extends import_core3.MessageEncoder {
|
|
|
394
394
|
async post(data) {
|
|
395
395
|
try {
|
|
396
396
|
let resp;
|
|
397
|
+
let quote = this.quote;
|
|
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
|
+
}
|
|
414
|
+
}
|
|
397
415
|
if (this.editMessageIds) {
|
|
398
416
|
const messageId = this.editMessageIds.pop();
|
|
399
417
|
if (!messageId) throw new Error("No message to edit");
|
|
@@ -403,10 +421,10 @@ var LarkMessageEncoder = class extends import_core3.MessageEncoder {
|
|
|
403
421
|
} else {
|
|
404
422
|
await this.bot.internal.updateImMessage(messageId, data);
|
|
405
423
|
}
|
|
406
|
-
} else if (
|
|
407
|
-
resp = await this.bot.internal.replyImMessage(
|
|
424
|
+
} else if (quote?.id) {
|
|
425
|
+
resp = await this.bot.internal.replyImMessage(quote.id, {
|
|
408
426
|
...data,
|
|
409
|
-
reply_in_thread:
|
|
427
|
+
reply_in_thread: quote.replyInThread
|
|
410
428
|
});
|
|
411
429
|
} else {
|
|
412
430
|
data.receive_id = this.channelId;
|
|
@@ -419,8 +437,8 @@ var LarkMessageEncoder = class extends import_core3.MessageEncoder {
|
|
|
419
437
|
session.messageId = resp.message_id;
|
|
420
438
|
session.timestamp = Number(resp.create_time) * 1e3;
|
|
421
439
|
session.userId = resp.sender.id;
|
|
422
|
-
session.channelId = this.channelId;
|
|
423
|
-
session.guildId = this.guildId;
|
|
440
|
+
session.channelId = this.session.channelId;
|
|
441
|
+
session.guildId = this.session.guildId;
|
|
424
442
|
session.app.emit(session, "send", session);
|
|
425
443
|
this.results.push(session.event.message);
|
|
426
444
|
} catch (e) {
|
package/lib/index.d.ts
CHANGED
package/lib/types/api.d.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
|
|
@@ -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.
|
|
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.
|
|
38
|
+
"@satorijs/core": "^4.4.2",
|
|
39
39
|
"cordis": "^3.18.1"
|
|
40
40
|
},
|
|
41
41
|
"peerDependencies": {
|
|
42
|
-
"@satorijs/core": "^4.
|
|
42
|
+
"@satorijs/core": "^4.4.2"
|
|
43
43
|
}
|
|
44
44
|
}
|
package/src/index.ts
CHANGED
package/src/message.ts
CHANGED
|
@@ -16,6 +16,25 @@ export class LarkMessageEncoder<C extends Context = Context> extends MessageEnco
|
|
|
16
16
|
async post(data?: any) {
|
|
17
17
|
try {
|
|
18
18
|
let resp: Lark.Message
|
|
19
|
+
let quote = this.quote
|
|
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
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
19
38
|
if (this.editMessageIds) {
|
|
20
39
|
const messageId = this.editMessageIds.pop()
|
|
21
40
|
if (!messageId) throw new Error('No message to edit')
|
|
@@ -25,10 +44,10 @@ export class LarkMessageEncoder<C extends Context = Context> extends MessageEnco
|
|
|
25
44
|
} else {
|
|
26
45
|
await this.bot.internal.updateImMessage(messageId, data)
|
|
27
46
|
}
|
|
28
|
-
} else if (
|
|
29
|
-
resp = await this.bot.internal.replyImMessage(
|
|
47
|
+
} else if (quote?.id) {
|
|
48
|
+
resp = await this.bot.internal.replyImMessage(quote.id, {
|
|
30
49
|
...data,
|
|
31
|
-
reply_in_thread:
|
|
50
|
+
reply_in_thread: quote.replyInThread,
|
|
32
51
|
})
|
|
33
52
|
} else {
|
|
34
53
|
data.receive_id = this.channelId
|
|
@@ -41,8 +60,8 @@ export class LarkMessageEncoder<C extends Context = Context> extends MessageEnco
|
|
|
41
60
|
session.messageId = resp.message_id
|
|
42
61
|
session.timestamp = Number(resp.create_time) * 1000
|
|
43
62
|
session.userId = resp.sender.id
|
|
44
|
-
session.channelId = this.channelId
|
|
45
|
-
session.guildId = this.guildId
|
|
63
|
+
session.channelId = this.session.channelId
|
|
64
|
+
session.guildId = this.session.guildId
|
|
46
65
|
session.app.emit(session, 'send', session)
|
|
47
66
|
this.results.push(session.event.message)
|
|
48
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[]
|