@zhin.js/adapter-dingtalk 2.0.0 → 3.0.0

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.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * 钉钉 DingTalk platform permit
3
+ */
4
+ import type { Message } from 'zhin.js';
5
+ export declare function platformPermit(perm: string): string;
6
+ export declare function dingtalkGroupPermitResolver(logicalPerm: string): string;
7
+ export declare function normalizeDingtalkSenderForPermit(input: {
8
+ isOwner?: boolean;
9
+ isAdmin?: boolean;
10
+ }): {
11
+ role?: string;
12
+ permissions?: string[];
13
+ };
14
+ export declare function checkDingtalkPlatformPermit(perm: string, message: Message<any>): boolean;
15
+ export declare function registerDingtalkPlatformPermitChecker(): () => void;
16
+ //# sourceMappingURL=platform-permit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-permit.d.ts","sourceRoot":"","sources":["../src/platform-permit.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAKvC,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAOD,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED,wBAAgB,gCAAgC,CAAC,KAAK,EAAE;IACtD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAQ5C;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAcxF;AAED,wBAAgB,qCAAqC,IAAI,MAAM,IAAI,CAElE"}
@@ -0,0 +1,39 @@
1
+ import { registerPlatformPermitChecker } from 'zhin.js';
2
+ const ADAPTER = 'dingtalk';
3
+ export function platformPermit(perm) {
4
+ return `platform(${ADAPTER},${perm})`;
5
+ }
6
+ const FACTORY_PERM_MAP = {
7
+ group_admin: 'chat_admin',
8
+ group_owner: 'chat_owner',
9
+ };
10
+ export function dingtalkGroupPermitResolver(logicalPerm) {
11
+ return platformPermit(FACTORY_PERM_MAP[logicalPerm] ?? logicalPerm);
12
+ }
13
+ export function normalizeDingtalkSenderForPermit(input) {
14
+ if (input.isOwner) {
15
+ return { role: 'owner', permissions: ['chat_owner', 'chat_admin'] };
16
+ }
17
+ if (input.isAdmin) {
18
+ return { role: 'admin', permissions: ['chat_admin'] };
19
+ }
20
+ return { role: 'member', permissions: [] };
21
+ }
22
+ export function checkDingtalkPlatformPermit(perm, message) {
23
+ const sender = message.$sender;
24
+ const permissions = sender.permissions ?? [];
25
+ const role = sender.role;
26
+ const has = (t) => permissions.includes(t);
27
+ switch (perm) {
28
+ case 'chat_owner':
29
+ return role === 'owner' || has('chat_owner');
30
+ case 'chat_admin':
31
+ return role === 'owner' || role === 'admin' || has('chat_admin') || has('chat_owner');
32
+ default:
33
+ return false;
34
+ }
35
+ }
36
+ export function registerDingtalkPlatformPermitChecker() {
37
+ return registerPlatformPermitChecker(ADAPTER, checkDingtalkPlatformPermit);
38
+ }
39
+ //# sourceMappingURL=platform-permit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-permit.js","sourceRoot":"","sources":["../src/platform-permit.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,6BAA6B,EAAE,MAAM,SAAS,CAAC;AAExD,MAAM,OAAO,GAAG,UAAU,CAAC;AAE3B,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,YAAY,OAAO,IAAI,IAAI,GAAG,CAAC;AACxC,CAAC;AAED,MAAM,gBAAgB,GAA2B;IAC/C,WAAW,EAAE,YAAY;IACzB,WAAW,EAAE,YAAY;CAC1B,CAAC;AAEF,MAAM,UAAU,2BAA2B,CAAC,WAAmB;IAC7D,OAAO,cAAc,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,WAAW,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,KAGhD;IACC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE,CAAC;IACtE,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC;IACxD,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,IAAY,EAAE,OAAqB;IAC7E,MAAM,MAAM,GAAG,OAAO,CAAC,OAAoD,CAAC;IAC5E,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;IAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEnD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,YAAY;YACf,OAAO,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;QAC/C,KAAK,YAAY;YACf,OAAO,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;QACxF;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qCAAqC;IACnD,OAAO,6BAA6B,CAAC,OAAO,EAAE,2BAA2B,CAAC,CAAC;AAC7E,CAAC"}
package/lib/types.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * 钉钉适配器类型定义
3
3
  */
4
- export interface DingTalkBotConfig {
4
+ export interface DingTalkEndpointConfig {
5
5
  context: "dingtalk";
6
6
  name: string;
7
7
  appKey: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,UAAU,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3D,OAAO,CAAC,EAAE,GAAG,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,UAAU,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3D,OAAO,CAAC,EAAE,GAAG,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zhin.js/adapter-dingtalk",
3
- "version": "2.0.0",
3
+ "version": "3.0.0",
4
4
  "description": "Zhin.js adapter for DingTalk (钉钉)",
5
5
  "type": "module",
6
6
  "main": "./lib/index.js",
@@ -34,13 +34,14 @@
34
34
  },
35
35
  "devDependencies": {
36
36
  "@types/koa": "^3.0.3",
37
- "@types/node": "^25.9.1",
37
+ "@types/node": "^25.9.2",
38
38
  "typescript": "^6.0.3",
39
- "zhin.js": "2.0.0"
39
+ "@zhin.js/host-router": "2.0.0",
40
+ "zhin.js": "3.0.0"
40
41
  },
41
42
  "peerDependencies": {
42
- "@zhin.js/host-router": "1.0.0",
43
- "zhin.js": "2.0.0"
43
+ "@zhin.js/host-router": "2.0.0",
44
+ "zhin.js": "3.0.0"
44
45
  },
45
46
  "peerDependenciesMeta": {
46
47
  "@zhin.js/host-router": {
@@ -0,0 +1,19 @@
1
+ # 钉钉 DingTalk Platform Permits
2
+
3
+ ## 入站字段
4
+
5
+ | 字段 | 来源 |
6
+ |------|------|
7
+ | `$sender.role` | `isAdmin` → `admin`;`owner` 需业务侧创建群时指定 |
8
+ | `$sender.permissions` | `chat_owner` · `chat_admin` |
9
+
10
+ ## Permit 词汇表
11
+
12
+ | `platform(dingtalk,…)` | 含义 |
13
+ |------------------------|------|
14
+ | `chat_owner` | 群主(创建群等) |
15
+ | `chat_admin` | 群管理员 |
16
+
17
+ ## 工厂映射
18
+
19
+ `group_admin` → `chat_admin` · `group_owner` → `chat_owner`
package/src/adapter.ts CHANGED
@@ -5,10 +5,12 @@ import {
5
5
  Adapter,
6
6
  Plugin,
7
7
  } from "zhin.js";
8
- import { DingTalkBot } from "./bot.js";
9
- import type { DingTalkBotConfig } from "./types.js";
8
+ import { DingTalkEndpoint } from "./endpoint.js";
9
+ import type { DingTalkEndpointConfig } from "./types.js";
10
+
11
+ export class DingTalkAdapter extends Adapter<DingTalkEndpoint> {
12
+ static override readonly capabilities = ['inbound', 'outbound'] as const;
10
13
 
11
- export class DingTalkAdapter extends Adapter<DingTalkBot> {
12
14
  #router: any;
13
15
 
14
16
  constructor(plugin: Plugin, router: any) {
@@ -16,26 +18,26 @@ export class DingTalkAdapter extends Adapter<DingTalkBot> {
16
18
  this.#router = router;
17
19
  }
18
20
 
19
- createBot(config: DingTalkBotConfig): DingTalkBot {
20
- return new DingTalkBot(this, this.#router, config);
21
+ createEndpoint(config: DingTalkEndpointConfig): DingTalkEndpoint {
22
+ return new DingTalkEndpoint(this, this.#router, config);
21
23
  }
22
24
 
23
- async kickMember(botId: string, sceneId: string, userId: string) {
24
- const bot = this.bots.get(botId);
25
- if (!bot) throw new Error(`Bot ${botId} 不存在`);
26
- return bot.updateChat(sceneId, { del_useridlist: [userId] });
25
+ async kickMember(endpointId: string, sceneId: string, userId: string) {
26
+ const endpoint = this.endpoints.get(endpointId);
27
+ if (!endpoint) throw new Error(`Endpoint ${endpointId} 不存在`);
28
+ return endpoint.updateChat(sceneId, { del_useridlist: [userId] });
27
29
  }
28
30
 
29
- async setGroupName(botId: string, sceneId: string, name: string) {
30
- const bot = this.bots.get(botId);
31
- if (!bot) throw new Error(`Bot ${botId} 不存在`);
32
- return bot.updateChat(sceneId, { name });
31
+ async setGroupName(endpointId: string, sceneId: string, name: string) {
32
+ const endpoint = this.endpoints.get(endpointId);
33
+ if (!endpoint) throw new Error(`Endpoint ${endpointId} 不存在`);
34
+ return endpoint.updateChat(sceneId, { name });
33
35
  }
34
36
 
35
- async getGroupInfo(botId: string, sceneId: string) {
36
- const bot = this.bots.get(botId);
37
- if (!bot) throw new Error(`Bot ${botId} 不存在`);
38
- return bot.getChatInfo(sceneId);
37
+ async getGroupInfo(endpointId: string, sceneId: string) {
38
+ const endpoint = this.endpoints.get(endpointId);
39
+ if (!endpoint) throw new Error(`Endpoint ${endpointId} 不存在`);
40
+ return endpoint.getChatInfo(sceneId);
39
41
  }
40
42
 
41
43
  async start(): Promise<void> {
@@ -1,18 +1,19 @@
1
1
  /**
2
- * 钉钉 Bot 实现
2
+ * 钉钉 Endpoint 实现
3
3
  */
4
- import { formatCompact, Bot, Message, MessageSegment, segment, SendContent, SendOptions } from 'zhin.js';
4
+ import { formatCompact, Endpoint, Message, MessageSegment, segment, SendContent, SendOptions } from 'zhin.js';
5
5
  import { registerFetchRoute, type Router, type RouterContext } from "@zhin.js/host-router/router";
6
6
  import { createHmac } from "crypto";
7
7
  import type {
8
- DingTalkBotConfig,
8
+ DingTalkEndpointConfig,
9
9
  DingTalkMessage,
10
10
  DingTalkEvent,
11
11
  AccessToken,
12
12
  } from "./types.js";
13
13
  import type { DingTalkAdapter } from "./adapter.js";
14
+ import { normalizeDingtalkSenderForPermit } from "./platform-permit.js";
14
15
 
15
- export class DingTalkBot implements Bot<DingTalkBotConfig, DingTalkMessage> {
16
+ export class DingTalkEndpoint implements Endpoint<DingTalkEndpointConfig, DingTalkMessage> {
16
17
  $connected: boolean;
17
18
  private router: any;
18
19
  private accessToken: AccessToken;
@@ -30,7 +31,7 @@ export class DingTalkBot implements Bot<DingTalkBotConfig, DingTalkMessage> {
30
31
  constructor(
31
32
  public adapter: DingTalkAdapter,
32
33
  router: any,
33
- public $config: DingTalkBotConfig
34
+ public $config: DingTalkEndpointConfig
34
35
  ) {
35
36
  this.router = router;
36
37
  this.$connected = false;
@@ -120,7 +121,7 @@ export class DingTalkBot implements Bot<DingTalkBotConfig, DingTalkMessage> {
120
121
  this.adapter.emit("message.receive", message);
121
122
  this.logger.debug(formatCompact( {
122
123
  op: "recv",
123
- bot: this.$config.name,
124
+ endpoint: this.$config.name,
124
125
  channel: message.$channel.type,
125
126
  id: message.$channel.id,
126
127
  len: segment.raw(message.$content).length,
@@ -170,13 +171,16 @@ export class DingTalkBot implements Bot<DingTalkBotConfig, DingTalkMessage> {
170
171
  $formatMessage(msg: DingTalkMessage): Message<DingTalkMessage> {
171
172
  const content = this.parseMessageContent(msg);
172
173
  const chatType = msg.conversationType === "2" ? "group" : "private";
174
+ const permit = normalizeDingtalkSenderForPermit({ isAdmin: msg.isAdmin === true });
173
175
  return Message.from(msg, {
174
176
  $id: msg.msgId || Date.now().toString(),
175
177
  $adapter: "dingtalk",
176
- $bot: this.$config.name,
178
+ $endpoint: this.$config.name,
177
179
  $sender: {
178
180
  id: msg.senderId || msg.senderStaffId || "unknown",
179
181
  name: msg.senderNick || msg.senderId || "Unknown User",
182
+ role: permit.role,
183
+ permissions: permit.permissions,
180
184
  },
181
185
  $channel: {
182
186
  id: msg.conversationId || "unknown",
@@ -191,7 +195,7 @@ export class DingTalkBot implements Bot<DingTalkBotConfig, DingTalkMessage> {
191
195
  $reply: async (content: SendContent): Promise<string> => {
192
196
  return await this.adapter.sendMessage({
193
197
  context: "dingtalk",
194
- bot: this.$config.name,
198
+ endpoint: this.$config.name,
195
199
  id: msg.conversationId || msg.senderId || "unknown",
196
200
  type: chatType,
197
201
  content: content,
@@ -426,7 +430,7 @@ export class DingTalkBot implements Bot<DingTalkBotConfig, DingTalkMessage> {
426
430
  try {
427
431
  await this.refreshAccessToken();
428
432
  this.$connected = true;
429
- this.logger.info(formatCompact({ bot: this.$config.name }));
433
+ this.logger.info(formatCompact({ endpoint: this.$config.name }));
430
434
  this.logger.info(formatCompact( { op: "webhook", path: this.$config.webhookPath }));
431
435
  } catch (error) {
432
436
  this.logger.error("Failed to connect DingTalk bot:", error);
@@ -438,7 +442,7 @@ export class DingTalkBot implements Bot<DingTalkBotConfig, DingTalkMessage> {
438
442
  try {
439
443
  this.sessionWebhooks.clear();
440
444
  this.$connected = false;
441
- this.logger.info(formatCompact( { op: "disconnect", bot: this.$config.name }));
445
+ this.logger.info(formatCompact( { op: "disconnect", endpoint: this.$config.name }));
442
446
  } catch (error) {
443
447
  this.logger.error("Error disconnecting DingTalk bot:", error);
444
448
  }
package/src/index.ts CHANGED
@@ -3,6 +3,11 @@
3
3
  */
4
4
  import { usePlugin, type Plugin, type IGroupManagement, createGroupManagementTools, type ToolFeature } from "zhin.js";
5
5
  import { DingTalkAdapter } from "./adapter.js";
6
+ import {
7
+ dingtalkGroupPermitResolver,
8
+ platformPermit,
9
+ registerDingtalkPlatformPermitChecker,
10
+ } from "./platform-permit.js";
6
11
 
7
12
  declare module "zhin.js" {
8
13
  namespace Plugin {
@@ -16,7 +21,7 @@ declare module "zhin.js" {
16
21
  }
17
22
 
18
23
  export * from "./types.js";
19
- export { DingTalkBot } from "./bot.js";
24
+ export { DingTalkEndpoint } from "./endpoint.js";
20
25
  export { DingTalkAdapter } from "./adapter.js";
21
26
 
22
27
  const plugin = usePlugin();
@@ -25,7 +30,7 @@ const { provide, useContext } = plugin;
25
30
  useContext("router", (router: any) => {
26
31
  provide({
27
32
  name: "dingtalk",
28
- description: "DingTalk Bot Adapter",
33
+ description: "DingTalk Endpoint Adapter",
29
34
  mounted: async (p: Plugin) => {
30
35
  const adapter = new DingTalkAdapter(p, router);
31
36
  await adapter.start();
@@ -38,11 +43,14 @@ useContext("router", (router: any) => {
38
43
  });
39
44
 
40
45
  useContext('tool', 'dingtalk', (toolService: ToolFeature, dingtalk: DingTalkAdapter) => {
46
+ const disposers: (() => void)[] = [];
47
+ disposers.push(registerDingtalkPlatformPermitChecker());
41
48
  const groupTools = createGroupManagementTools(
42
49
  dingtalk as unknown as IGroupManagement,
43
50
  'dingtalk',
51
+ { permitResolver: dingtalkGroupPermitResolver, registerChecker: false },
44
52
  );
45
- const disposers: (() => void)[] = groupTools.map(t => toolService.addTool(t, plugin.name));
53
+ disposers.push(...groupTools.map(t => toolService.addTool(t, plugin.name)));
46
54
 
47
55
  disposers.push(toolService.addTool({
48
56
  name: 'dingtalk_get_user',
@@ -50,17 +58,17 @@ useContext('tool', 'dingtalk', (toolService: ToolFeature, dingtalk: DingTalkAdap
50
58
  parameters: {
51
59
  type: 'object',
52
60
  properties: {
53
- bot: { type: 'string', description: 'Bot 名称' },
61
+ endpoint_id: { type: 'string', description: 'Endpoint 名称', contextKey: 'endpointId' },
54
62
  user_id: { type: 'string', description: '用户 ID' },
55
63
  },
56
- required: ['bot', 'user_id'],
64
+ required: ['endpoint_id', 'user_id'],
57
65
  },
58
66
  platforms: ['dingtalk'],
59
67
  tags: ['dingtalk'],
60
68
  execute: async (args: Record<string, any>) => {
61
- const bot = dingtalk.bots.get(args.bot);
62
- if (!bot) throw new Error(`Bot ${args.bot} 不存在`);
63
- return await bot.getUserInfo(args.user_id);
69
+ const endpoint = dingtalk.endpoints.get(args.endpoint_id);
70
+ if (!endpoint) throw new Error(`Endpoint ${args.endpoint_id} 不存在`);
71
+ return await endpoint.getUserInfo(args.user_id);
64
72
  },
65
73
  }, plugin.name));
66
74
 
@@ -70,17 +78,17 @@ useContext('tool', 'dingtalk', (toolService: ToolFeature, dingtalk: DingTalkAdap
70
78
  parameters: {
71
79
  type: 'object',
72
80
  properties: {
73
- bot: { type: 'string', description: 'Bot 名称' },
81
+ endpoint_id: { type: 'string', description: 'Endpoint 名称', contextKey: 'endpointId' },
74
82
  dept_id: { type: 'string', description: '部门 ID' },
75
83
  },
76
- required: ['bot', 'dept_id'],
84
+ required: ['endpoint_id', 'dept_id'],
77
85
  },
78
86
  platforms: ['dingtalk'],
79
87
  tags: ['dingtalk'],
80
88
  execute: async (args: Record<string, any>) => {
81
- const bot = dingtalk.bots.get(args.bot);
82
- if (!bot) throw new Error(`Bot ${args.bot} 不存在`);
83
- const users = await bot.getDepartmentUsers(args.dept_id);
89
+ const endpoint = dingtalk.endpoints.get(args.endpoint_id);
90
+ if (!endpoint) throw new Error(`Endpoint ${args.endpoint_id} 不存在`);
91
+ const users = await endpoint.getDepartmentUsers(args.dept_id);
84
92
  return { users, count: users.length };
85
93
  },
86
94
  }, plugin.name));
@@ -91,17 +99,17 @@ useContext('tool', 'dingtalk', (toolService: ToolFeature, dingtalk: DingTalkAdap
91
99
  parameters: {
92
100
  type: 'object',
93
101
  properties: {
94
- bot: { type: 'string', description: 'Bot 名称' },
102
+ endpoint_id: { type: 'string', description: 'Endpoint 名称', contextKey: 'endpointId' },
95
103
  dept_id: { type: 'string', description: '父部门 ID,默认 1(根部门)' },
96
104
  },
97
- required: ['bot'],
105
+ required: ['endpoint_id'],
98
106
  },
99
107
  platforms: ['dingtalk'],
100
108
  tags: ['dingtalk'],
101
109
  execute: async (args: Record<string, any>) => {
102
- const bot = dingtalk.bots.get(args.bot);
103
- if (!bot) throw new Error(`Bot ${args.bot} 不存在`);
104
- const departments = await bot.getDepartmentList(args.dept_id || '1');
110
+ const endpoint = dingtalk.endpoints.get(args.endpoint_id);
111
+ if (!endpoint) throw new Error(`Endpoint ${args.endpoint_id} 不存在`);
112
+ const departments = await endpoint.getDepartmentList(args.dept_id || '1');
105
113
  return { departments, count: departments.length };
106
114
  },
107
115
  }, plugin.name));
@@ -112,19 +120,19 @@ useContext('tool', 'dingtalk', (toolService: ToolFeature, dingtalk: DingTalkAdap
112
120
  parameters: {
113
121
  type: 'object',
114
122
  properties: {
115
- bot: { type: 'string', description: 'Bot 名称' },
123
+ endpoint_id: { type: 'string', description: 'Endpoint 名称', contextKey: 'endpointId' },
116
124
  user_ids: { type: 'string', description: '用户 ID 列表,逗号分隔' },
117
125
  content: { type: 'string', description: '通知内容' },
118
126
  },
119
- required: ['bot', 'user_ids', 'content'],
127
+ required: ['endpoint_id', 'user_ids', 'content'],
120
128
  },
121
129
  platforms: ['dingtalk'],
122
130
  tags: ['dingtalk'],
123
131
  execute: async (args: Record<string, any>) => {
124
- const bot = dingtalk.bots.get(args.bot);
125
- if (!bot) throw new Error(`Bot ${args.bot} 不存在`);
132
+ const endpoint = dingtalk.endpoints.get(args.endpoint_id);
133
+ if (!endpoint) throw new Error(`Endpoint ${args.endpoint_id} 不存在`);
126
134
  const msgContent = { msgtype: 'text', text: { content: args.content } };
127
- const success = await bot.sendWorkNotice(args.user_ids.split(','), msgContent);
135
+ const success = await endpoint.sendWorkNotice(args.user_ids.split(','), msgContent);
128
136
  return { success, message: success ? '工作通知已发送' : '发送失败' };
129
137
  },
130
138
  }, plugin.name));
@@ -135,19 +143,20 @@ useContext('tool', 'dingtalk', (toolService: ToolFeature, dingtalk: DingTalkAdap
135
143
  parameters: {
136
144
  type: 'object',
137
145
  properties: {
138
- bot: { type: 'string', description: 'Bot 名称' },
146
+ endpoint_id: { type: 'string', description: 'Endpoint 名称', contextKey: 'endpointId' },
139
147
  name: { type: 'string', description: '群名' },
140
148
  owner: { type: 'string', description: '群主用户 ID' },
141
149
  members: { type: 'string', description: '成员用户 ID 列表,逗号分隔' },
142
150
  },
143
- required: ['bot', 'name', 'owner', 'members'],
151
+ required: ['endpoint_id', 'name', 'owner', 'members'],
144
152
  },
145
153
  platforms: ['dingtalk'],
146
154
  tags: ['dingtalk'],
155
+ permissions: [platformPermit('chat_owner')],
147
156
  execute: async (args: Record<string, any>) => {
148
- const bot = dingtalk.bots.get(args.bot);
149
- if (!bot) throw new Error(`Bot ${args.bot} 不存在`);
150
- const chatId = await bot.createChat(args.name, args.owner, args.members.split(','));
157
+ const endpoint = dingtalk.endpoints.get(args.endpoint_id);
158
+ if (!endpoint) throw new Error(`Endpoint ${args.endpoint_id} 不存在`);
159
+ const chatId = await endpoint.createChat(args.name, args.owner, args.members.split(','));
151
160
  return { success: !!chatId, chat_id: chatId, message: chatId ? `群聊创建成功: ${chatId}` : '创建失败' };
152
161
  },
153
162
  }, plugin.name));
@@ -158,18 +167,19 @@ useContext('tool', 'dingtalk', (toolService: ToolFeature, dingtalk: DingTalkAdap
158
167
  parameters: {
159
168
  type: 'object',
160
169
  properties: {
161
- bot: { type: 'string', description: 'Bot 名称' },
170
+ endpoint_id: { type: 'string', description: 'Endpoint 名称', contextKey: 'endpointId' },
162
171
  chat_id: { type: 'string', description: '群聊 ID' },
163
172
  user_ids: { type: 'string', description: '要添加的用户 ID 列表,逗号分隔' },
164
173
  },
165
- required: ['bot', 'chat_id', 'user_ids'],
174
+ required: ['endpoint_id', 'chat_id', 'user_ids'],
166
175
  },
167
176
  platforms: ['dingtalk'],
168
177
  tags: ['dingtalk'],
178
+ permissions: [platformPermit('chat_admin')],
169
179
  execute: async (args: Record<string, any>) => {
170
- const bot = dingtalk.bots.get(args.bot);
171
- if (!bot) throw new Error(`Bot ${args.bot} 不存在`);
172
- const success = await bot.updateChat(args.chat_id, { add_useridlist: args.user_ids.split(',') });
180
+ const endpoint = dingtalk.endpoints.get(args.endpoint_id);
181
+ if (!endpoint) throw new Error(`Endpoint ${args.endpoint_id} 不存在`);
182
+ const success = await endpoint.updateChat(args.chat_id, { add_useridlist: args.user_ids.split(',') });
173
183
  return { success, message: success ? '成员添加成功' : '添加失败' };
174
184
  },
175
185
  }, plugin.name));
@@ -180,17 +190,17 @@ useContext('tool', 'dingtalk', (toolService: ToolFeature, dingtalk: DingTalkAdap
180
190
  parameters: {
181
191
  type: 'object',
182
192
  properties: {
183
- bot: { type: 'string', description: 'Bot 名称' },
193
+ endpoint_id: { type: 'string', description: 'Endpoint 名称', contextKey: 'endpointId' },
184
194
  dept_id: { type: 'string', description: '部门 ID' },
185
195
  },
186
- required: ['bot', 'dept_id'],
196
+ required: ['endpoint_id', 'dept_id'],
187
197
  },
188
198
  platforms: ['dingtalk'],
189
199
  tags: ['dingtalk'],
190
200
  execute: async (args: Record<string, any>) => {
191
- const bot = dingtalk.bots.get(args.bot);
192
- if (!bot) throw new Error(`Bot ${args.bot} 不存在`);
193
- return await bot.getDepartmentInfo(Number(args.dept_id));
201
+ const endpoint = dingtalk.endpoints.get(args.endpoint_id);
202
+ if (!endpoint) throw new Error(`Endpoint ${args.endpoint_id} 不存在`);
203
+ return await endpoint.getDepartmentInfo(Number(args.dept_id));
194
204
  },
195
205
  }, plugin.name));
196
206
 
@@ -200,26 +210,26 @@ useContext('tool', 'dingtalk', (toolService: ToolFeature, dingtalk: DingTalkAdap
200
210
  parameters: {
201
211
  type: 'object',
202
212
  properties: {
203
- bot: { type: 'string', description: 'Bot 名称' },
213
+ endpoint_id: { type: 'string', description: 'Endpoint 名称', contextKey: 'endpointId' },
204
214
  chat_id: { type: 'string', description: '群聊 ID' },
205
215
  name: { type: 'string', description: '新群名(可选)' },
206
216
  owner: { type: 'string', description: '新群主 userId(可选)' },
207
217
  add_members: { type: 'string', description: '要添加的成员 userId,逗号分隔(可选)' },
208
218
  remove_members: { type: 'string', description: '要移除的成员 userId,逗号分隔(可选)' },
209
219
  },
210
- required: ['bot', 'chat_id'],
220
+ required: ['endpoint_id', 'chat_id'],
211
221
  },
212
222
  platforms: ['dingtalk'],
213
223
  tags: ['dingtalk'],
214
224
  execute: async (args: Record<string, any>) => {
215
- const bot = dingtalk.bots.get(args.bot);
216
- if (!bot) throw new Error(`Bot ${args.bot} 不存在`);
225
+ const endpoint = dingtalk.endpoints.get(args.endpoint_id);
226
+ if (!endpoint) throw new Error(`Endpoint ${args.endpoint_id} 不存在`);
217
227
  const options: any = {};
218
228
  if (args.name) options.name = args.name;
219
229
  if (args.owner) options.owner = args.owner;
220
230
  if (args.add_members) options.add_useridlist = args.add_members.split(',').map((s: string) => s.trim());
221
231
  if (args.remove_members) options.del_useridlist = args.remove_members.split(',').map((s: string) => s.trim());
222
- await bot.updateChat(args.chat_id, options);
232
+ await endpoint.updateChat(args.chat_id, options);
223
233
  return { success: true, message: '群聊设置已更新' };
224
234
  },
225
235
  }, plugin.name));
@@ -0,0 +1,53 @@
1
+ /**
2
+ * 钉钉 DingTalk platform permit
3
+ */
4
+ import type { Message } from 'zhin.js';
5
+ import { registerPlatformPermitChecker } from 'zhin.js';
6
+
7
+ const ADAPTER = 'dingtalk';
8
+
9
+ export function platformPermit(perm: string): string {
10
+ return `platform(${ADAPTER},${perm})`;
11
+ }
12
+
13
+ const FACTORY_PERM_MAP: Record<string, string> = {
14
+ group_admin: 'chat_admin',
15
+ group_owner: 'chat_owner',
16
+ };
17
+
18
+ export function dingtalkGroupPermitResolver(logicalPerm: string): string {
19
+ return platformPermit(FACTORY_PERM_MAP[logicalPerm] ?? logicalPerm);
20
+ }
21
+
22
+ export function normalizeDingtalkSenderForPermit(input: {
23
+ isOwner?: boolean;
24
+ isAdmin?: boolean;
25
+ }): { role?: string; permissions?: string[] } {
26
+ if (input.isOwner) {
27
+ return { role: 'owner', permissions: ['chat_owner', 'chat_admin'] };
28
+ }
29
+ if (input.isAdmin) {
30
+ return { role: 'admin', permissions: ['chat_admin'] };
31
+ }
32
+ return { role: 'member', permissions: [] };
33
+ }
34
+
35
+ export function checkDingtalkPlatformPermit(perm: string, message: Message<any>): boolean {
36
+ const sender = message.$sender as { role?: string; permissions?: string[] };
37
+ const permissions = sender.permissions ?? [];
38
+ const role = sender.role;
39
+ const has = (t: string) => permissions.includes(t);
40
+
41
+ switch (perm) {
42
+ case 'chat_owner':
43
+ return role === 'owner' || has('chat_owner');
44
+ case 'chat_admin':
45
+ return role === 'owner' || role === 'admin' || has('chat_admin') || has('chat_owner');
46
+ default:
47
+ return false;
48
+ }
49
+ }
50
+
51
+ export function registerDingtalkPlatformPermitChecker(): () => void {
52
+ return registerPlatformPermitChecker(ADAPTER, checkDingtalkPlatformPermit);
53
+ }
package/src/types.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  * 钉钉适配器类型定义
3
3
  */
4
4
 
5
- export interface DingTalkBotConfig {
5
+ export interface DingTalkEndpointConfig {
6
6
  context: "dingtalk";
7
7
  name: string;
8
8
  appKey: string;
package/lib/bot.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAiB,GAAG,EAAE,OAAO,EAAwC,WAAW,EAAE,MAAM,SAAS,CAAC;AAGzG,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EAGhB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,qBAAa,WAAY,YAAW,GAAG,CAAC,iBAAiB,EAAE,eAAe,CAAC;IAgBhE,OAAO,EAAE,eAAe;IAExB,OAAO,EAAE,iBAAiB;IAjBnC,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,eAAe,CAAkC;IAEzD,IAAI,GAAG,WAEN;IAED,IAAI,MAAM,6BAET;gBAGQ,OAAO,EAAE,eAAe,EAC/B,MAAM,EAAE,GAAG,EACJ,OAAO,EAAE,iBAAiB;YASrB,OAAO;IA4BrB,OAAO,CAAC,iBAAiB;YAMX,aAAa;IA0B3B,OAAO,CAAC,eAAe;YAaT,WAAW;YAeX,iBAAiB;YAajB,kBAAkB;IA2BhC,cAAc,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IAiC9D,OAAO,CAAC,mBAAmB;IAoGrB,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;IAwCnD,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,OAAO,CAAC,iBAAiB;IA8EnB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAYzB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAU5B,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAczC,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAclD,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;IAwBpE,iBAAiB,CAAC,MAAM,GAAE,MAAU,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAcrD,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAc/C,UAAU,CACd,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAAE,GACnB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAqBnB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAczC,UAAU,CACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;QACP,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;QAC1B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;KAC3B,GACA,OAAO,CAAC,OAAO,CAAC;CAgBpB"}