@satorijs/adapter-lark 3.8.2 → 3.8.4
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 +17 -6
- package/lib/message.d.ts +1 -0
- package/package.json +3 -3
- package/src/bot.ts +9 -8
- package/src/message.ts +14 -1
package/lib/index.cjs
CHANGED
|
@@ -390,10 +390,20 @@ var LarkMessageEncoder = class extends import_core3.MessageEncoder {
|
|
|
390
390
|
card;
|
|
391
391
|
noteElements;
|
|
392
392
|
actionElements = [];
|
|
393
|
+
editMessageIds;
|
|
393
394
|
async post(data) {
|
|
394
395
|
try {
|
|
395
396
|
let resp;
|
|
396
|
-
if (this.
|
|
397
|
+
if (this.editMessageIds) {
|
|
398
|
+
const messageId = this.editMessageIds.pop();
|
|
399
|
+
if (!messageId) throw new Error("No message to edit");
|
|
400
|
+
if (data.msg_type === "interactive") {
|
|
401
|
+
delete data.msg_type;
|
|
402
|
+
await this.bot.internal.patchImMessage(messageId, data);
|
|
403
|
+
} else {
|
|
404
|
+
await this.bot.internal.updateImMessage(messageId, data);
|
|
405
|
+
}
|
|
406
|
+
} else if (this.quote?.id) {
|
|
397
407
|
resp = await this.bot.internal.replyImMessage(this.quote.id, {
|
|
398
408
|
...data,
|
|
399
409
|
reply_in_thread: this.quote.replyInThread
|
|
@@ -404,6 +414,7 @@ var LarkMessageEncoder = class extends import_core3.MessageEncoder {
|
|
|
404
414
|
receive_id_type: extractIdType(this.channelId)
|
|
405
415
|
});
|
|
406
416
|
}
|
|
417
|
+
if (!resp) return;
|
|
407
418
|
const session = this.bot.session();
|
|
408
419
|
session.messageId = resp.message_id;
|
|
409
420
|
session.timestamp = Number(resp.create_time) * 1e3;
|
|
@@ -445,6 +456,7 @@ var LarkMessageEncoder = class extends import_core3.MessageEncoder {
|
|
|
445
456
|
await this.post({
|
|
446
457
|
msg_type: "interactive",
|
|
447
458
|
content: JSON.stringify({
|
|
459
|
+
header: this.card.header,
|
|
448
460
|
elements: this.card.elements
|
|
449
461
|
})
|
|
450
462
|
});
|
|
@@ -3341,7 +3353,7 @@ var LarkBot = class extends import_core5.Bot {
|
|
|
3341
3353
|
this.logger.debug("refreshed token %s", token);
|
|
3342
3354
|
this.token = token;
|
|
3343
3355
|
if (this._refresher) clearTimeout(this._refresher);
|
|
3344
|
-
this._refresher = setTimeout(() => this.refreshToken(),
|
|
3356
|
+
this._refresher = setTimeout(() => this.refreshToken(), import_core5.Time.minute * 100);
|
|
3345
3357
|
this.online();
|
|
3346
3358
|
}
|
|
3347
3359
|
get token() {
|
|
@@ -3352,10 +3364,9 @@ var LarkBot = class extends import_core5.Bot {
|
|
|
3352
3364
|
this.http.config.headers.Authorization = `Bearer ${v}`;
|
|
3353
3365
|
}
|
|
3354
3366
|
async editMessage(channelId, messageId, content) {
|
|
3355
|
-
|
|
3356
|
-
|
|
3357
|
-
|
|
3358
|
-
});
|
|
3367
|
+
const encoder = new LarkMessageEncoder(this, channelId);
|
|
3368
|
+
encoder.editMessageIds = [messageId];
|
|
3369
|
+
await encoder.send(content);
|
|
3359
3370
|
}
|
|
3360
3371
|
async deleteMessage(channelId, messageId) {
|
|
3361
3372
|
await this.internal.deleteImMessage(messageId);
|
package/lib/message.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ export declare class LarkMessageEncoder<C extends Context = Context> extends Mes
|
|
|
7
7
|
private card;
|
|
8
8
|
private noteElements;
|
|
9
9
|
private actionElements;
|
|
10
|
+
editMessageIds: string[] | undefined;
|
|
10
11
|
post(data?: any): Promise<void>;
|
|
11
12
|
private flushText;
|
|
12
13
|
flush(): Promise<void>;
|
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.4",
|
|
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.
|
|
38
|
+
"@satorijs/core": "^4.3.3",
|
|
39
39
|
"cordis": "^3.18.1"
|
|
40
40
|
},
|
|
41
41
|
"peerDependencies": {
|
|
42
|
-
"@satorijs/core": "^4.3.
|
|
42
|
+
"@satorijs/core": "^4.3.3"
|
|
43
43
|
}
|
|
44
44
|
}
|
package/src/bot.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Bot, Context, h, HTTP, Schema, Universal } from '@satorijs/core'
|
|
1
|
+
import { Bot, Context, h, HTTP, Schema, Time, Universal } from '@satorijs/core'
|
|
2
2
|
|
|
3
3
|
import { HttpServer } from './http'
|
|
4
4
|
import { LarkMessageEncoder } from './message'
|
|
@@ -71,10 +71,12 @@ export class LarkBot<C extends Context = Context> extends Bot<C, LarkBot.Config>
|
|
|
71
71
|
})
|
|
72
72
|
this.logger.debug('refreshed token %s', token)
|
|
73
73
|
this.token = token
|
|
74
|
-
//
|
|
75
|
-
//
|
|
74
|
+
// tenant_access_token 的最大有效期是 2 小时。
|
|
75
|
+
// 剩余有效期小于 30 分钟时,调用本接口会返回一个新的 tenant_access_token,这会同时存在两个有效的 tenant_access_token。
|
|
76
|
+
// 剩余有效期大于等于 30 分钟时,调用本接口会返回原有的 tenant_access_token。
|
|
77
|
+
// https://open.feishu.cn/document/server-docs/authentication-management/access-token/tenant_access_token_internal
|
|
76
78
|
if (this._refresher) clearTimeout(this._refresher)
|
|
77
|
-
this._refresher = setTimeout(() => this.refreshToken(),
|
|
79
|
+
this._refresher = setTimeout(() => this.refreshToken(), Time.minute * 100)
|
|
78
80
|
this.online()
|
|
79
81
|
}
|
|
80
82
|
|
|
@@ -88,10 +90,9 @@ export class LarkBot<C extends Context = Context> extends Bot<C, LarkBot.Config>
|
|
|
88
90
|
}
|
|
89
91
|
|
|
90
92
|
async editMessage(channelId: string, messageId: string, content: h.Fragment) {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
})
|
|
93
|
+
const encoder = new LarkMessageEncoder(this, channelId)
|
|
94
|
+
encoder.editMessageIds = [messageId]
|
|
95
|
+
await encoder.send(content)
|
|
95
96
|
}
|
|
96
97
|
|
|
97
98
|
async deleteMessage(channelId: string, messageId: string) {
|
package/src/message.ts
CHANGED
|
@@ -11,10 +11,21 @@ export class LarkMessageEncoder<C extends Context = Context> extends MessageEnco
|
|
|
11
11
|
private noteElements: MessageContent.Card.NoteElement.InnerElement[] | undefined
|
|
12
12
|
private actionElements: MessageContent.Card.Element[] = []
|
|
13
13
|
|
|
14
|
+
public editMessageIds: string[] | undefined
|
|
15
|
+
|
|
14
16
|
async post(data?: any) {
|
|
15
17
|
try {
|
|
16
18
|
let resp: Lark.Message
|
|
17
|
-
if (this.
|
|
19
|
+
if (this.editMessageIds) {
|
|
20
|
+
const messageId = this.editMessageIds.pop()
|
|
21
|
+
if (!messageId) throw new Error('No message to edit')
|
|
22
|
+
if (data.msg_type === 'interactive') {
|
|
23
|
+
delete data.msg_type
|
|
24
|
+
await this.bot.internal.patchImMessage(messageId, data)
|
|
25
|
+
} else {
|
|
26
|
+
await this.bot.internal.updateImMessage(messageId, data)
|
|
27
|
+
}
|
|
28
|
+
} else if (this.quote?.id) {
|
|
18
29
|
resp = await this.bot.internal.replyImMessage(this.quote.id, {
|
|
19
30
|
...data,
|
|
20
31
|
reply_in_thread: this.quote.replyInThread,
|
|
@@ -25,6 +36,7 @@ export class LarkMessageEncoder<C extends Context = Context> extends MessageEnco
|
|
|
25
36
|
receive_id_type: extractIdType(this.channelId),
|
|
26
37
|
})
|
|
27
38
|
}
|
|
39
|
+
if (!resp) return
|
|
28
40
|
const session = this.bot.session()
|
|
29
41
|
session.messageId = resp.message_id
|
|
30
42
|
session.timestamp = Number(resp.create_time) * 1000
|
|
@@ -70,6 +82,7 @@ export class LarkMessageEncoder<C extends Context = Context> extends MessageEnco
|
|
|
70
82
|
await this.post({
|
|
71
83
|
msg_type: 'interactive',
|
|
72
84
|
content: JSON.stringify({
|
|
85
|
+
header: this.card.header,
|
|
73
86
|
elements: this.card.elements,
|
|
74
87
|
}),
|
|
75
88
|
})
|