@zhin.js/adapter-telegram 5.0.1 → 5.0.2

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 (71) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +9 -0
  3. package/agent/tools/create_invite.ts +20 -0
  4. package/agent/tools/list_admins.ts +26 -0
  5. package/agent/tools/member_count.ts +18 -0
  6. package/agent/tools/pin_message.ts +21 -0
  7. package/agent/tools/react.ts +20 -0
  8. package/agent/tools/send_poll.ts +34 -0
  9. package/agent/tools/send_sticker.ts +19 -0
  10. package/agent/tools/set_description.ts +19 -0
  11. package/agent/tools/set_permissions.ts +33 -0
  12. package/agent/tools/unpin_message.ts +21 -0
  13. package/lib/agent/tools/create_invite.js +20 -0
  14. package/lib/agent/tools/create_invite.js.map +1 -0
  15. package/lib/agent/tools/list_admins.js +26 -0
  16. package/lib/agent/tools/list_admins.js.map +1 -0
  17. package/lib/agent/tools/member_count.js +18 -0
  18. package/lib/agent/tools/member_count.js.map +1 -0
  19. package/lib/agent/tools/pin_message.js +21 -0
  20. package/lib/agent/tools/pin_message.js.map +1 -0
  21. package/lib/agent/tools/react.js +20 -0
  22. package/lib/agent/tools/react.js.map +1 -0
  23. package/lib/agent/tools/send_poll.js +32 -0
  24. package/lib/agent/tools/send_poll.js.map +1 -0
  25. package/lib/agent/tools/send_sticker.js +19 -0
  26. package/lib/agent/tools/send_sticker.js.map +1 -0
  27. package/lib/agent/tools/set_description.js +19 -0
  28. package/lib/agent/tools/set_description.js.map +1 -0
  29. package/lib/agent/tools/set_permissions.js +34 -0
  30. package/lib/agent/tools/set_permissions.js.map +1 -0
  31. package/lib/agent/tools/unpin_message.js +21 -0
  32. package/lib/agent/tools/unpin_message.js.map +1 -0
  33. package/lib/src/adapter.js.map +1 -0
  34. package/lib/src/endpoint.js.map +1 -0
  35. package/lib/src/index.js +215 -0
  36. package/lib/src/index.js.map +1 -0
  37. package/lib/{platform-permit.js → src/platform-permit.js} +3 -0
  38. package/lib/src/platform-permit.js.map +1 -0
  39. package/lib/src/segment-mapper.js.map +1 -0
  40. package/lib/src/telegram-agent-deps.js +10 -0
  41. package/lib/src/telegram-agent-deps.js.map +1 -0
  42. package/lib/src/types.js.map +1 -0
  43. package/package.json +25 -15
  44. package/src/index.ts +9 -259
  45. package/src/platform-permit.ts +1 -2
  46. package/src/telegram-agent-deps.ts +22 -0
  47. package/lib/adapter.d.ts +0 -21
  48. package/lib/adapter.d.ts.map +0 -1
  49. package/lib/adapter.js.map +0 -1
  50. package/lib/endpoint.d.ts +0 -155
  51. package/lib/endpoint.d.ts.map +0 -1
  52. package/lib/endpoint.js.map +0 -1
  53. package/lib/index.d.ts +0 -18
  54. package/lib/index.d.ts.map +0 -1
  55. package/lib/index.js +0 -462
  56. package/lib/index.js.map +0 -1
  57. package/lib/platform-permit.d.ts +0 -19
  58. package/lib/platform-permit.d.ts.map +0 -1
  59. package/lib/platform-permit.js.map +0 -1
  60. package/lib/segment-mapper.d.ts +0 -2
  61. package/lib/segment-mapper.d.ts.map +0 -1
  62. package/lib/segment-mapper.js.map +0 -1
  63. package/lib/types.d.ts +0 -29
  64. package/lib/types.d.ts.map +0 -1
  65. package/lib/types.js.map +0 -1
  66. /package/{skills/telegram → agent}/PERMITS.md +0 -0
  67. /package/{skills/telegram/SKILL.md → agent/skills/telegram.md} +0 -0
  68. /package/lib/{adapter.js → src/adapter.js} +0 -0
  69. /package/lib/{endpoint.js → src/endpoint.js} +0 -0
  70. /package/lib/{segment-mapper.js → src/segment-mapper.js} +0 -0
  71. /package/lib/{types.js → src/types.js} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # Changelog
2
2
 
3
+ ## 5.0.2
4
+
5
+ ### Patch Changes
6
+
7
+ - 872c583: fix: 代码格式优化
8
+ - Updated dependencies [872c583]
9
+ - Updated dependencies [872c583]
10
+ - @zhin.js/agent@1.0.3
11
+ - @zhin.js/client@2.0.5
12
+ - @zhin.js/contract@1.0.3
13
+ - @zhin.js/host-api@2.0.5
14
+ - @zhin.js/host-router@2.0.3
15
+ - @zhin.js/logger@1.0.74
16
+ - zhin.js@4.1.2
17
+
3
18
  ## 5.0.1
4
19
 
5
20
  ### Patch Changes
package/README.md CHANGED
@@ -166,6 +166,15 @@ You can send files using:
166
166
  - URL
167
167
  - Local file path
168
168
 
169
+ ## AI tools
170
+
171
+ | Kind | Path |
172
+ |------|------|
173
+ | Platform tools (10) | `agent/tools/` (`telegram_*`: invites, pins, admins, stickers, etc.) |
174
+ | Skill doc | `agent/skills/telegram.md` |
175
+ | Scene management | `createSceneManagementTools()` |
176
+
177
+
169
178
  ## Troubleshooting
170
179
 
171
180
  | 现象 | 排查 |
@@ -0,0 +1,20 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { platformPermit } from '../../src/platform-permit.js';
4
+ import { getTelegramAgentDeps } from '../../src/telegram-agent-deps.js';
5
+
6
+ export default defineTool<{ endpoint_id: string; chat_id: string }>({
7
+ description: '创建 Telegram 群组邀请链接',
8
+ inputSchema: z.object({
9
+ endpoint_id: z.string().describe('Endpoint 名称'),
10
+ chat_id: z.string().describe('聊天 ID'),
11
+ }),
12
+ platforms: ['telegram'],
13
+ tags: ['telegram'],
14
+ permissions: [platformPermit('chat_administrator')],
15
+ async execute({ endpoint_id, chat_id }: { endpoint_id: string; chat_id: string }) {
16
+ const endpoint = getTelegramAgentDeps().getEndpoint(endpoint_id);
17
+ const link = await endpoint.createInviteLink(Number(chat_id));
18
+ return { invite_link: link, message: `邀请链接: ${link}` };
19
+ },
20
+ });
@@ -0,0 +1,26 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getTelegramAgentDeps } from '../../src/telegram-agent-deps.js';
4
+
5
+ export default defineTool<{ endpoint_id: string; chat_id: string }>({
6
+ description: '获取 Telegram 群组管理员列表',
7
+ inputSchema: z.object({
8
+ endpoint_id: z.string().describe('Endpoint 名称'),
9
+ chat_id: z.string().describe('聊天 ID'),
10
+ }),
11
+ platforms: ['telegram'],
12
+ tags: ['telegram'],
13
+ async execute({ endpoint_id, chat_id }: { endpoint_id: string; chat_id: string }) {
14
+ const endpoint = getTelegramAgentDeps().getEndpoint(endpoint_id);
15
+ const admins = await endpoint.getChatAdmins(Number(chat_id));
16
+ return {
17
+ admins: admins.map((a: { user: { id: number; username?: string; first_name?: string }; status: string }) => ({
18
+ user_id: a.user.id,
19
+ username: a.user.username,
20
+ first_name: a.user.first_name,
21
+ status: a.status,
22
+ })),
23
+ count: admins.length,
24
+ };
25
+ },
26
+ });
@@ -0,0 +1,18 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getTelegramAgentDeps } from '../../src/telegram-agent-deps.js';
4
+
5
+ export default defineTool<{ endpoint_id: string; chat_id: string }>({
6
+ description: '获取 Telegram 群组成员数量',
7
+ inputSchema: z.object({
8
+ endpoint_id: z.string().describe('Endpoint 名称'),
9
+ chat_id: z.string().describe('聊天 ID'),
10
+ }),
11
+ platforms: ['telegram'],
12
+ tags: ['telegram'],
13
+ async execute({ endpoint_id, chat_id }: { endpoint_id: string; chat_id: string }) {
14
+ const endpoint = getTelegramAgentDeps().getEndpoint(endpoint_id);
15
+ const count = await endpoint.getChatMemberCount(Number(chat_id));
16
+ return { count, message: `群组共有 ${count} 名成员` };
17
+ },
18
+ });
@@ -0,0 +1,21 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { platformPermit } from '../../src/platform-permit.js';
4
+ import { getTelegramAgentDeps } from '../../src/telegram-agent-deps.js';
5
+
6
+ export default defineTool<{ endpoint_id: string; chat_id: string; message_id: string }>({
7
+ description: '置顶 Telegram 群组消息',
8
+ inputSchema: z.object({
9
+ endpoint_id: z.string().describe('Endpoint 名称'),
10
+ chat_id: z.string().describe('聊天 ID'),
11
+ message_id: z.string().describe('消息 ID'),
12
+ }),
13
+ platforms: ['telegram'],
14
+ tags: ['telegram'],
15
+ permissions: [platformPermit('pin_messages')],
16
+ async execute({ endpoint_id, chat_id, message_id }: { endpoint_id: string; chat_id: string; message_id: string }) {
17
+ const endpoint = getTelegramAgentDeps().getEndpoint(endpoint_id);
18
+ const success = await endpoint.pinMessage(Number(chat_id), Number(message_id));
19
+ return { success, message: success ? '消息已置顶' : '操作失败' };
20
+ },
21
+ });
@@ -0,0 +1,20 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getTelegramAgentDeps } from '../../src/telegram-agent-deps.js';
4
+
5
+ export default defineTool<{ endpoint_id: string; chat_id: string; message_id: string; reaction: string }>({
6
+ description: '对 Telegram 消息添加表情反应',
7
+ inputSchema: z.object({
8
+ endpoint_id: z.string().describe('Endpoint 名称'),
9
+ chat_id: z.string().describe('聊天 ID'),
10
+ message_id: z.string().describe('消息 ID'),
11
+ reaction: z.string().describe('反应表情(如 👍、❤️、🔥)'),
12
+ }),
13
+ platforms: ['telegram'],
14
+ tags: ['telegram'],
15
+ async execute({ endpoint_id, chat_id, message_id, reaction }: { endpoint_id: string; chat_id: string; message_id: string; reaction: string }) {
16
+ const endpoint = getTelegramAgentDeps().getEndpoint(endpoint_id);
17
+ const success = await endpoint.setMessageReaction(Number(chat_id), Number(message_id), reaction);
18
+ return { success, message: success ? `已添加反应 ${reaction}` : '操作失败' };
19
+ },
20
+ });
@@ -0,0 +1,34 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getTelegramAgentDeps } from '../../src/telegram-agent-deps.js';
4
+
5
+ export default defineTool<{ endpoint_id: string; chat_id: string; question: string; options: string; is_anonymous?: boolean; allows_multiple?: boolean }>({
6
+ description: '在 Telegram 群组中发起投票',
7
+ inputSchema: z.object({
8
+ endpoint_id: z.string().describe('Endpoint 名称'),
9
+ chat_id: z.string().describe('聊天 ID'),
10
+ question: z.string().describe('投票问题'),
11
+ options: z.string().describe('选项 JSON 数组,如 ["A","B","C"]'),
12
+ is_anonymous: z.boolean().optional().describe('是否匿名投票,默认 true'),
13
+ allows_multiple: z.boolean().optional().describe('是否允许多选,默认 false'),
14
+ }),
15
+ platforms: ['telegram'],
16
+ tags: ['telegram'],
17
+ async execute({ endpoint_id, chat_id, question, options, is_anonymous, allows_multiple }: { endpoint_id: string; chat_id: string; question: string; options: string; is_anonymous?: boolean; allows_multiple?: boolean }) {
18
+ const endpoint = getTelegramAgentDeps().getEndpoint(endpoint_id);
19
+ let optList: string[];
20
+ try {
21
+ optList = JSON.parse(options);
22
+ } catch {
23
+ return { success: false, message: 'options 格式错误,应为 JSON 数组' };
24
+ }
25
+ if (!Array.isArray(optList) || optList.length < 2) {
26
+ return { success: false, message: '至少需要 2 个选项' };
27
+ }
28
+ const result = await endpoint.sendPoll(
29
+ Number(chat_id), question, optList,
30
+ is_anonymous ?? true, allows_multiple ?? false,
31
+ );
32
+ return { success: true, message_id: result.message_id, message: '投票已发送' };
33
+ },
34
+ });
@@ -0,0 +1,19 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getTelegramAgentDeps } from '../../src/telegram-agent-deps.js';
4
+
5
+ export default defineTool<{ endpoint_id: string; chat_id: string; sticker: string }>({
6
+ description: '发送 Telegram 贴纸',
7
+ inputSchema: z.object({
8
+ endpoint_id: z.string().describe('Endpoint 名称'),
9
+ chat_id: z.string().describe('聊天 ID'),
10
+ sticker: z.string().describe('贴纸 file_id 或 URL'),
11
+ }),
12
+ platforms: ['telegram'],
13
+ tags: ['telegram'],
14
+ async execute({ endpoint_id, chat_id, sticker }: { endpoint_id: string; chat_id: string; sticker: string }) {
15
+ const endpoint = getTelegramAgentDeps().getEndpoint(endpoint_id);
16
+ const result = await endpoint.sendStickerMessage(Number(chat_id), sticker);
17
+ return { success: true, message_id: result.message_id, message: '贴纸已发送' };
18
+ },
19
+ });
@@ -0,0 +1,19 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getTelegramAgentDeps } from '../../src/telegram-agent-deps.js';
4
+
5
+ export default defineTool<{ endpoint_id: string; chat_id: string; description: string }>({
6
+ description: '设置 Telegram 群组描述',
7
+ inputSchema: z.object({
8
+ endpoint_id: z.string().describe('Endpoint 名称'),
9
+ chat_id: z.string().describe('聊天 ID'),
10
+ description: z.string().describe('群描述文字'),
11
+ }),
12
+ platforms: ['telegram'],
13
+ tags: ['telegram'],
14
+ async execute({ endpoint_id, chat_id, description }: { endpoint_id: string; chat_id: string; description: string }) {
15
+ const endpoint = getTelegramAgentDeps().getEndpoint(endpoint_id);
16
+ const success = await endpoint.setChatDescription(Number(chat_id), description);
17
+ return { success, message: success ? '群描述已更新' : '操作失败' };
18
+ },
19
+ });
@@ -0,0 +1,33 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { platformPermit } from '../../src/platform-permit.js';
4
+ import { getTelegramAgentDeps } from '../../src/telegram-agent-deps.js';
5
+
6
+ export default defineTool<{ endpoint_id: string; chat_id: string; can_send_messages?: boolean; can_send_photos?: boolean; can_send_videos?: boolean; can_send_polls?: boolean; can_send_other_messages?: boolean; can_add_web_page_previews?: boolean; can_change_info?: boolean; can_invite_users?: boolean; can_pin_messages?: boolean }>({
7
+ description: '设置 Telegram 群组的默认成员权限',
8
+ inputSchema: z.object({
9
+ endpoint_id: z.string().describe('Endpoint 名称'),
10
+ chat_id: z.string().describe('聊天 ID'),
11
+ can_send_messages: z.boolean().optional().describe('是否可以发消息'),
12
+ can_send_photos: z.boolean().optional().describe('是否可以发图片'),
13
+ can_send_videos: z.boolean().optional().describe('是否可以发视频'),
14
+ can_send_polls: z.boolean().optional().describe('是否可以发投票'),
15
+ can_send_other_messages: z.boolean().optional().describe('是否可以发贴纸/GIF等'),
16
+ can_add_web_page_previews: z.boolean().optional().describe('是否可以添加网页预览'),
17
+ can_change_info: z.boolean().optional().describe('是否可以改群信息'),
18
+ can_invite_users: z.boolean().optional().describe('是否可以邀请用户'),
19
+ can_pin_messages: z.boolean().optional().describe('是否可以置顶消息'),
20
+ }),
21
+ platforms: ['telegram'],
22
+ tags: ['telegram'],
23
+ permissions: [platformPermit('manage_chat')],
24
+ async execute({ endpoint_id, chat_id, ...perms }: { endpoint_id: string; chat_id: string; can_send_messages?: boolean; can_send_photos?: boolean; can_send_videos?: boolean; can_send_polls?: boolean; can_send_other_messages?: boolean; can_add_web_page_previews?: boolean; can_change_info?: boolean; can_invite_users?: boolean; can_pin_messages?: boolean }) {
25
+ const endpoint = getTelegramAgentDeps().getEndpoint(endpoint_id);
26
+ const permissions: Record<string, boolean> = {};
27
+ for (const [k, v] of Object.entries(perms)) {
28
+ if (typeof v === 'boolean') permissions[k] = v;
29
+ }
30
+ const success = await endpoint.setChatPermissionsAll(Number(chat_id), permissions);
31
+ return { success, message: success ? '群权限已更新' : '操作失败' };
32
+ },
33
+ });
@@ -0,0 +1,21 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { platformPermit } from '../../src/platform-permit.js';
4
+ import { getTelegramAgentDeps } from '../../src/telegram-agent-deps.js';
5
+
6
+ export default defineTool<{ endpoint_id: string; chat_id: string; message_id?: string }>({
7
+ description: '取消置顶 Telegram 群组消息',
8
+ inputSchema: z.object({
9
+ endpoint_id: z.string().describe('Endpoint 名称'),
10
+ chat_id: z.string().describe('聊天 ID'),
11
+ message_id: z.string().optional().describe('消息 ID(可选,不提供则取消所有置顶)'),
12
+ }),
13
+ platforms: ['telegram'],
14
+ tags: ['telegram'],
15
+ permissions: [platformPermit('pin_messages')],
16
+ async execute({ endpoint_id, chat_id, message_id }: { endpoint_id: string; chat_id: string; message_id?: string }) {
17
+ const endpoint = getTelegramAgentDeps().getEndpoint(endpoint_id);
18
+ const success = await endpoint.unpinMessage(Number(chat_id), message_id ? Number(message_id) : undefined);
19
+ return { success, message: success ? '已取消置顶' : '操作失败' };
20
+ },
21
+ });
@@ -0,0 +1,20 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { platformPermit } from '../../src/platform-permit.js';
4
+ import { getTelegramAgentDeps } from '../../src/telegram-agent-deps.js';
5
+ export default defineTool({
6
+ description: '创建 Telegram 群组邀请链接',
7
+ inputSchema: z.object({
8
+ endpoint_id: z.string().describe('Endpoint 名称'),
9
+ chat_id: z.string().describe('聊天 ID'),
10
+ }),
11
+ platforms: ['telegram'],
12
+ tags: ['telegram'],
13
+ permissions: [platformPermit('chat_administrator')],
14
+ async execute({ endpoint_id, chat_id }) {
15
+ const endpoint = getTelegramAgentDeps().getEndpoint(endpoint_id);
16
+ const link = await endpoint.createInviteLink(Number(chat_id));
17
+ return { invite_link: link, message: `邀请链接: ${link}` };
18
+ },
19
+ });
20
+ //# sourceMappingURL=create_invite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create_invite.js","sourceRoot":"","sources":["../../../agent/tools/create_invite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAExE,eAAe,UAAU,CAA2C;IAClE,WAAW,EAAE,oBAAoB;IACjC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC/C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;KACtC,CAAC;IACF,SAAS,EAAE,CAAC,UAAU,CAAC;IACvB,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,WAAW,EAAE,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAC;IACnD,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,OAAO,EAA6C;QAC/E,MAAM,QAAQ,GAAG,oBAAoB,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACjE,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9D,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,IAAI,EAAE,EAAE,CAAC;IACzD,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getTelegramAgentDeps } from '../../src/telegram-agent-deps.js';
4
+ export default defineTool({
5
+ description: '获取 Telegram 群组管理员列表',
6
+ inputSchema: z.object({
7
+ endpoint_id: z.string().describe('Endpoint 名称'),
8
+ chat_id: z.string().describe('聊天 ID'),
9
+ }),
10
+ platforms: ['telegram'],
11
+ tags: ['telegram'],
12
+ async execute({ endpoint_id, chat_id }) {
13
+ const endpoint = getTelegramAgentDeps().getEndpoint(endpoint_id);
14
+ const admins = await endpoint.getChatAdmins(Number(chat_id));
15
+ return {
16
+ admins: admins.map((a) => ({
17
+ user_id: a.user.id,
18
+ username: a.user.username,
19
+ first_name: a.user.first_name,
20
+ status: a.status,
21
+ })),
22
+ count: admins.length,
23
+ };
24
+ },
25
+ });
26
+ //# sourceMappingURL=list_admins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list_admins.js","sourceRoot":"","sources":["../../../agent/tools/list_admins.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAExE,eAAe,UAAU,CAA2C;IAClE,WAAW,EAAE,qBAAqB;IAClC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC/C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;KACtC,CAAC;IACF,SAAS,EAAE,CAAC,UAAU,CAAC;IACvB,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,OAAO,EAA6C;QAC/E,MAAM,QAAQ,GAAG,oBAAoB,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACjE,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAC7D,OAAO;YACL,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAmF,EAAE,EAAE,CAAC,CAAC;gBAC3G,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE;gBAClB,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ;gBACzB,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU;gBAC7B,MAAM,EAAE,CAAC,CAAC,MAAM;aACjB,CAAC,CAAC;YACH,KAAK,EAAE,MAAM,CAAC,MAAM;SACrB,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getTelegramAgentDeps } from '../../src/telegram-agent-deps.js';
4
+ export default defineTool({
5
+ description: '获取 Telegram 群组成员数量',
6
+ inputSchema: z.object({
7
+ endpoint_id: z.string().describe('Endpoint 名称'),
8
+ chat_id: z.string().describe('聊天 ID'),
9
+ }),
10
+ platforms: ['telegram'],
11
+ tags: ['telegram'],
12
+ async execute({ endpoint_id, chat_id }) {
13
+ const endpoint = getTelegramAgentDeps().getEndpoint(endpoint_id);
14
+ const count = await endpoint.getChatMemberCount(Number(chat_id));
15
+ return { count, message: `群组共有 ${count} 名成员` };
16
+ },
17
+ });
18
+ //# sourceMappingURL=member_count.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"member_count.js","sourceRoot":"","sources":["../../../agent/tools/member_count.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAExE,eAAe,UAAU,CAA2C;IAClE,WAAW,EAAE,oBAAoB;IACjC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC/C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;KACtC,CAAC;IACF,SAAS,EAAE,CAAC,UAAU,CAAC;IACvB,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,OAAO,EAA6C;QAC/E,MAAM,QAAQ,GAAG,oBAAoB,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACjE,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QACjE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,KAAK,MAAM,EAAE,CAAC;IACjD,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { platformPermit } from '../../src/platform-permit.js';
4
+ import { getTelegramAgentDeps } from '../../src/telegram-agent-deps.js';
5
+ export default defineTool({
6
+ description: '置顶 Telegram 群组消息',
7
+ inputSchema: z.object({
8
+ endpoint_id: z.string().describe('Endpoint 名称'),
9
+ chat_id: z.string().describe('聊天 ID'),
10
+ message_id: z.string().describe('消息 ID'),
11
+ }),
12
+ platforms: ['telegram'],
13
+ tags: ['telegram'],
14
+ permissions: [platformPermit('pin_messages')],
15
+ async execute({ endpoint_id, chat_id, message_id }) {
16
+ const endpoint = getTelegramAgentDeps().getEndpoint(endpoint_id);
17
+ const success = await endpoint.pinMessage(Number(chat_id), Number(message_id));
18
+ return { success, message: success ? '消息已置顶' : '操作失败' };
19
+ },
20
+ });
21
+ //# sourceMappingURL=pin_message.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pin_message.js","sourceRoot":"","sources":["../../../agent/tools/pin_message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAExE,eAAe,UAAU,CAA+D;IACtF,WAAW,EAAE,kBAAkB;IAC/B,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC/C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;QACrC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;KACzC,CAAC;IACF,SAAS,EAAE,CAAC,UAAU,CAAC;IACvB,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,WAAW,EAAE,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;IAC7C,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAiE;QAC/G,MAAM,QAAQ,GAAG,oBAAoB,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACjE,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;QAC/E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC1D,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getTelegramAgentDeps } from '../../src/telegram-agent-deps.js';
4
+ export default defineTool({
5
+ description: '对 Telegram 消息添加表情反应',
6
+ inputSchema: z.object({
7
+ endpoint_id: z.string().describe('Endpoint 名称'),
8
+ chat_id: z.string().describe('聊天 ID'),
9
+ message_id: z.string().describe('消息 ID'),
10
+ reaction: z.string().describe('反应表情(如 👍、❤️、🔥)'),
11
+ }),
12
+ platforms: ['telegram'],
13
+ tags: ['telegram'],
14
+ async execute({ endpoint_id, chat_id, message_id, reaction }) {
15
+ const endpoint = getTelegramAgentDeps().getEndpoint(endpoint_id);
16
+ const success = await endpoint.setMessageReaction(Number(chat_id), Number(message_id), reaction);
17
+ return { success, message: success ? `已添加反应 ${reaction}` : '操作失败' };
18
+ },
19
+ });
20
+ //# sourceMappingURL=react.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react.js","sourceRoot":"","sources":["../../../agent/tools/react.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAExE,eAAe,UAAU,CAAiF;IACxG,WAAW,EAAE,qBAAqB;IAClC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC/C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;QACrC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;QACxC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;KAClD,CAAC;IACF,SAAS,EAAE,CAAC,UAAU,CAAC;IACvB,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAmF;QAC3I,MAAM,QAAQ,GAAG,oBAAoB,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACjE,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC;QACjG,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACtE,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,32 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getTelegramAgentDeps } from '../../src/telegram-agent-deps.js';
4
+ export default defineTool({
5
+ description: '在 Telegram 群组中发起投票',
6
+ inputSchema: z.object({
7
+ endpoint_id: z.string().describe('Endpoint 名称'),
8
+ chat_id: z.string().describe('聊天 ID'),
9
+ question: z.string().describe('投票问题'),
10
+ options: z.string().describe('选项 JSON 数组,如 ["A","B","C"]'),
11
+ is_anonymous: z.boolean().optional().describe('是否匿名投票,默认 true'),
12
+ allows_multiple: z.boolean().optional().describe('是否允许多选,默认 false'),
13
+ }),
14
+ platforms: ['telegram'],
15
+ tags: ['telegram'],
16
+ async execute({ endpoint_id, chat_id, question, options, is_anonymous, allows_multiple }) {
17
+ const endpoint = getTelegramAgentDeps().getEndpoint(endpoint_id);
18
+ let optList;
19
+ try {
20
+ optList = JSON.parse(options);
21
+ }
22
+ catch {
23
+ return { success: false, message: 'options 格式错误,应为 JSON 数组' };
24
+ }
25
+ if (!Array.isArray(optList) || optList.length < 2) {
26
+ return { success: false, message: '至少需要 2 个选项' };
27
+ }
28
+ const result = await endpoint.sendPoll(Number(chat_id), question, optList, is_anonymous ?? true, allows_multiple ?? false);
29
+ return { success: true, message_id: result.message_id, message: '投票已发送' };
30
+ },
31
+ });
32
+ //# sourceMappingURL=send_poll.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"send_poll.js","sourceRoot":"","sources":["../../../agent/tools/send_poll.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAExE,eAAe,UAAU,CAAiI;IACxJ,WAAW,EAAE,oBAAoB;IACjC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC/C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;QACrC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;QACrC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;QAC1D,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAC/D,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;KACpE,CAAC;IACF,SAAS,EAAE,CAAC,UAAU,CAAC;IACvB,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,eAAe,EAAmI;QACvN,MAAM,QAAQ,GAAG,oBAAoB,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACjE,IAAI,OAAiB,CAAC;QACtB,IAAI,CAAC;YACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,yBAAyB,EAAE,CAAC;QAChE,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;QACnD,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,CACpC,MAAM,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,OAAO,EAClC,YAAY,IAAI,IAAI,EAAE,eAAe,IAAI,KAAK,CAC/C,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IAC5E,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getTelegramAgentDeps } from '../../src/telegram-agent-deps.js';
4
+ export default defineTool({
5
+ description: '发送 Telegram 贴纸',
6
+ inputSchema: z.object({
7
+ endpoint_id: z.string().describe('Endpoint 名称'),
8
+ chat_id: z.string().describe('聊天 ID'),
9
+ sticker: z.string().describe('贴纸 file_id 或 URL'),
10
+ }),
11
+ platforms: ['telegram'],
12
+ tags: ['telegram'],
13
+ async execute({ endpoint_id, chat_id, sticker }) {
14
+ const endpoint = getTelegramAgentDeps().getEndpoint(endpoint_id);
15
+ const result = await endpoint.sendStickerMessage(Number(chat_id), sticker);
16
+ return { success: true, message_id: result.message_id, message: '贴纸已发送' };
17
+ },
18
+ });
19
+ //# sourceMappingURL=send_sticker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"send_sticker.js","sourceRoot":"","sources":["../../../agent/tools/send_sticker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAExE,eAAe,UAAU,CAA4D;IACnF,WAAW,EAAE,gBAAgB;IAC7B,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC/C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;QACrC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;KACjD,CAAC;IACF,SAAS,EAAE,CAAC,UAAU,CAAC;IACvB,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAA8D;QACzG,MAAM,QAAQ,GAAG,oBAAoB,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACjE,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;QAC3E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IAC5E,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { getTelegramAgentDeps } from '../../src/telegram-agent-deps.js';
4
+ export default defineTool({
5
+ description: '设置 Telegram 群组描述',
6
+ inputSchema: z.object({
7
+ endpoint_id: z.string().describe('Endpoint 名称'),
8
+ chat_id: z.string().describe('聊天 ID'),
9
+ description: z.string().describe('群描述文字'),
10
+ }),
11
+ platforms: ['telegram'],
12
+ tags: ['telegram'],
13
+ async execute({ endpoint_id, chat_id, description }) {
14
+ const endpoint = getTelegramAgentDeps().getEndpoint(endpoint_id);
15
+ const success = await endpoint.setChatDescription(Number(chat_id), description);
16
+ return { success, message: success ? '群描述已更新' : '操作失败' };
17
+ },
18
+ });
19
+ //# sourceMappingURL=set_description.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set_description.js","sourceRoot":"","sources":["../../../agent/tools/set_description.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAExE,eAAe,UAAU,CAAgE;IACvF,WAAW,EAAE,kBAAkB;IAC/B,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC/C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;QACrC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;KAC1C,CAAC;IACF,SAAS,EAAE,CAAC,UAAU,CAAC;IACvB,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAkE;QACjH,MAAM,QAAQ,GAAG,oBAAoB,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACjE,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC;QAChF,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC3D,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { platformPermit } from '../../src/platform-permit.js';
4
+ import { getTelegramAgentDeps } from '../../src/telegram-agent-deps.js';
5
+ export default defineTool({
6
+ description: '设置 Telegram 群组的默认成员权限',
7
+ inputSchema: z.object({
8
+ endpoint_id: z.string().describe('Endpoint 名称'),
9
+ chat_id: z.string().describe('聊天 ID'),
10
+ can_send_messages: z.boolean().optional().describe('是否可以发消息'),
11
+ can_send_photos: z.boolean().optional().describe('是否可以发图片'),
12
+ can_send_videos: z.boolean().optional().describe('是否可以发视频'),
13
+ can_send_polls: z.boolean().optional().describe('是否可以发投票'),
14
+ can_send_other_messages: z.boolean().optional().describe('是否可以发贴纸/GIF等'),
15
+ can_add_web_page_previews: z.boolean().optional().describe('是否可以添加网页预览'),
16
+ can_change_info: z.boolean().optional().describe('是否可以改群信息'),
17
+ can_invite_users: z.boolean().optional().describe('是否可以邀请用户'),
18
+ can_pin_messages: z.boolean().optional().describe('是否可以置顶消息'),
19
+ }),
20
+ platforms: ['telegram'],
21
+ tags: ['telegram'],
22
+ permissions: [platformPermit('manage_chat')],
23
+ async execute({ endpoint_id, chat_id, ...perms }) {
24
+ const endpoint = getTelegramAgentDeps().getEndpoint(endpoint_id);
25
+ const permissions = {};
26
+ for (const [k, v] of Object.entries(perms)) {
27
+ if (typeof v === 'boolean')
28
+ permissions[k] = v;
29
+ }
30
+ const success = await endpoint.setChatPermissionsAll(Number(chat_id), permissions);
31
+ return { success, message: success ? '群权限已更新' : '操作失败' };
32
+ },
33
+ });
34
+ //# sourceMappingURL=set_permissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set_permissions.js","sourceRoot":"","sources":["../../../agent/tools/set_permissions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAExE,eAAe,UAAU,CAAmT;IAC1U,WAAW,EAAE,uBAAuB;IACpC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC/C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;QACrC,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC7D,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC3D,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC3D,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC1D,uBAAuB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;QACxE,yBAAyB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;QACxE,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC5D,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC7D,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;KAC9D,CAAC;IACF,SAAS,EAAE,CAAC,UAAU,CAAC;IACvB,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,WAAW,EAAE,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;IAC5C,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,KAAK,EAAqT;QACjW,MAAM,QAAQ,GAAG,oBAAoB,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACjE,MAAM,WAAW,GAA4B,EAAE,CAAC;QAChD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3C,IAAI,OAAO,CAAC,KAAK,SAAS;gBAAE,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACjD,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,qBAAqB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC;QACnF,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC3D,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { defineTool } from '@zhin.js/agent/tools';
2
+ import { z } from 'zod';
3
+ import { platformPermit } from '../../src/platform-permit.js';
4
+ import { getTelegramAgentDeps } from '../../src/telegram-agent-deps.js';
5
+ export default defineTool({
6
+ description: '取消置顶 Telegram 群组消息',
7
+ inputSchema: z.object({
8
+ endpoint_id: z.string().describe('Endpoint 名称'),
9
+ chat_id: z.string().describe('聊天 ID'),
10
+ message_id: z.string().optional().describe('消息 ID(可选,不提供则取消所有置顶)'),
11
+ }),
12
+ platforms: ['telegram'],
13
+ tags: ['telegram'],
14
+ permissions: [platformPermit('pin_messages')],
15
+ async execute({ endpoint_id, chat_id, message_id }) {
16
+ const endpoint = getTelegramAgentDeps().getEndpoint(endpoint_id);
17
+ const success = await endpoint.unpinMessage(Number(chat_id), message_id ? Number(message_id) : undefined);
18
+ return { success, message: success ? '已取消置顶' : '操作失败' };
19
+ },
20
+ });
21
+ //# sourceMappingURL=unpin_message.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unpin_message.js","sourceRoot":"","sources":["../../../agent/tools/unpin_message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAExE,eAAe,UAAU,CAAgE;IACvF,WAAW,EAAE,oBAAoB;IACjC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC/C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;QACrC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;KACnE,CAAC;IACF,SAAS,EAAE,CAAC,UAAU,CAAC;IACvB,IAAI,EAAE,CAAC,UAAU,CAAC;IAClB,WAAW,EAAE,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;IAC7C,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAkE;QAChH,MAAM,QAAQ,GAAG,oBAAoB,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QACjE,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC1G,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC1D,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/adapter.ts"],"names":[],"mappings":"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"}