@zhin.js/adapter-telegram 5.0.1 → 5.0.3

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 (66) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/README.md +65 -139
  3. package/adapters/telegram.ts +27 -0
  4. package/agent/tools/create_invite.ts +20 -0
  5. package/agent/tools/list_admins.ts +26 -0
  6. package/agent/tools/member_count.ts +18 -0
  7. package/agent/tools/pin_message.ts +21 -0
  8. package/agent/tools/react.ts +20 -0
  9. package/agent/tools/send_poll.ts +34 -0
  10. package/agent/tools/send_sticker.ts +19 -0
  11. package/agent/tools/set_description.ts +19 -0
  12. package/agent/tools/set_permissions.ts +33 -0
  13. package/agent/tools/unpin_message.ts +21 -0
  14. package/lib/endpoint.d.ts +58 -148
  15. package/lib/endpoint.js +273 -987
  16. package/lib/index.d.ts +4 -18
  17. package/lib/index.js +4 -462
  18. package/lib/platform-permit.d.ts +1 -2
  19. package/lib/platform-permit.js +4 -2
  20. package/lib/polling.d.ts +9 -0
  21. package/lib/polling.js +52 -0
  22. package/lib/protocol.d.ts +250 -0
  23. package/lib/protocol.js +324 -0
  24. package/lib/telegram-agent-deps.d.ts +28 -0
  25. package/lib/telegram-agent-deps.js +30 -0
  26. package/lib/webhook.d.ts +13 -0
  27. package/lib/webhook.js +45 -0
  28. package/package.json +46 -33
  29. package/plugin.ts +13 -0
  30. package/schema.json +39 -0
  31. package/src/endpoint.ts +339 -1103
  32. package/src/index.ts +39 -435
  33. package/src/platform-permit.ts +1 -2
  34. package/src/polling.ts +71 -0
  35. package/src/protocol.ts +573 -0
  36. package/src/telegram-agent-deps.ts +63 -0
  37. package/src/webhook.ts +67 -0
  38. package/client/Dashboard.tsx +0 -295
  39. package/client/index.tsx +0 -11
  40. package/client/tsconfig.json +0 -7
  41. package/client/utils/api.ts +0 -30
  42. package/dist/index.js +0 -32
  43. package/lib/adapter.d.ts +0 -21
  44. package/lib/adapter.d.ts.map +0 -1
  45. package/lib/adapter.js +0 -58
  46. package/lib/adapter.js.map +0 -1
  47. package/lib/endpoint.d.ts.map +0 -1
  48. package/lib/endpoint.js.map +0 -1
  49. package/lib/index.d.ts.map +0 -1
  50. package/lib/index.js.map +0 -1
  51. package/lib/platform-permit.d.ts.map +0 -1
  52. package/lib/platform-permit.js.map +0 -1
  53. package/lib/segment-mapper.d.ts +0 -2
  54. package/lib/segment-mapper.d.ts.map +0 -1
  55. package/lib/segment-mapper.js +0 -2
  56. package/lib/segment-mapper.js.map +0 -1
  57. package/lib/types.d.ts +0 -29
  58. package/lib/types.d.ts.map +0 -1
  59. package/lib/types.js +0 -2
  60. package/lib/types.js.map +0 -1
  61. package/plugin.yml +0 -3
  62. package/src/adapter.ts +0 -66
  63. package/src/segment-mapper.ts +0 -1
  64. package/src/types.ts +0 -32
  65. /package/{skills/telegram → agent}/PERMITS.md +0 -0
  66. /package/{skills/telegram/SKILL.md → agent/skills/telegram.md} +0 -0
package/lib/endpoint.d.ts CHANGED
@@ -1,155 +1,65 @@
1
1
  /**
2
- * Telegram Endpoint 实现
2
+ * TelegramEndpoint — lifecycle, outbound, admit, Bot API helpers for agent tools.
3
3
  */
4
- import { Telegraf } from "telegraf";
5
- import type { Message as TelegramMessage, ChatMember } from "telegraf/types";
6
- import { Endpoint, Message, SendOptions, type QuotedMessagePayload } from 'zhin.js';
7
- import type { TelegramEndpointConfig } from "./types.js";
8
- import type { TelegramAdapter } from "./adapter.js";
9
- export declare class TelegramEndpoint extends Telegraf implements Endpoint<TelegramEndpointConfig, TelegramMessage> {
10
- adapter: TelegramAdapter;
11
- $config: TelegramEndpointConfig;
12
- $connected: boolean;
13
- /** message_id -> chat_id,用于在仅有 message_id 的场景执行 reaction 操作 */
14
- private readonly messageChatMap;
15
- /** reply_to_message 解析结果缓存,供 $getMsg 使用 */
16
- private readonly quotedPayloadCache;
17
- get pluginLogger(): import("zhin.js").Logger;
18
- get $id(): string;
19
- constructor(adapter: TelegramAdapter, $config: TelegramEndpointConfig);
20
- $connect(): Promise<void>;
21
- $disconnect(): Promise<void>;
22
- private static readonly CHAT_MEMBER_CACHE_TTL_MS;
23
- private static readonly CHAT_MEMBER_CACHE_MAX;
24
- private chatMemberCache;
25
- private sweepChatMemberCache;
26
- private enrichGroupSender;
27
- private handleTelegramMessage;
28
- $formatMessage(msg: TelegramMessage): Message<TelegramMessage>;
29
- $getMsg(messageId: string): Promise<QuotedMessagePayload>;
30
- private cacheQuotedTelegramMessage;
31
- private $formatCallbackQuery;
32
- private parseMessageContent;
33
- private parseTextWithEntities;
34
- $sendMessage(options: SendOptions): Promise<string>;
35
- $editMessage(options: import('zhin.js').EditMessageOptions): Promise<void>;
36
- private sendContentToChat;
37
- $recallMessage(id: string): Promise<void>;
38
- private resolveTelegramMessageRef;
39
- $addReaction(messageId: string, emoji: string): Promise<string | null>;
40
- $removeReaction(messageId: string, _reactionId: string): Promise<void>;
41
- /**
42
- * 踢出用户
43
- * @param chatId 聊天 ID
44
- * @param userId 用户 ID
45
- * @param untilDate 封禁截止时间(Unix 时间戳),0 表示永久
46
- */
47
- kickMember(chatId: number, userId: number, untilDate?: number): Promise<boolean>;
48
- /**
49
- * 解除封禁
50
- * @param chatId 聊天 ID
51
- * @param userId 用户 ID
52
- */
53
- unbanMember(chatId: number, userId: number): Promise<boolean>;
54
- /**
55
- * 限制用户权限(禁言等)
56
- * @param chatId 聊天 ID
57
- * @param userId 用户 ID
58
- * @param permissions 权限设置
59
- * @param untilDate 限制截止时间
60
- */
61
- restrictMember(chatId: number, userId: number, permissions: {
62
- can_send_messages?: boolean;
63
- can_send_media_messages?: boolean;
64
- can_send_polls?: boolean;
65
- can_send_other_messages?: boolean;
66
- can_add_web_page_previews?: boolean;
67
- can_change_info?: boolean;
68
- can_invite_users?: boolean;
69
- can_pin_messages?: boolean;
70
- }, untilDate?: number): Promise<boolean>;
71
- /**
72
- * 禁言用户
73
- * @param chatId 聊天 ID
74
- * @param userId 用户 ID
75
- * @param duration 禁言时长(秒),0 表示解除禁言
76
- */
77
- muteMember(chatId: number, userId: number, duration?: number): Promise<boolean>;
78
- /**
79
- * 提升/降级管理员
80
- * @param chatId 聊天 ID
81
- * @param userId 用户 ID
82
- * @param promote 是否提升为管理员
83
- */
84
- setAdmin(chatId: number, userId: number, promote?: boolean): Promise<boolean>;
85
- /**
86
- * 设置聊天标题
87
- * @param chatId 聊天 ID
88
- * @param title 新标题
89
- */
90
- setChatTitle(chatId: number, title: string): Promise<boolean>;
91
- /**
92
- * 设置聊天描述
93
- * @param chatId 聊天 ID
94
- * @param description 新描述
95
- */
96
- setChatDescription(chatId: number, description: string): Promise<boolean>;
97
- /**
98
- * 置顶消息
99
- * @param chatId 聊天 ID
100
- * @param messageId 消息 ID
101
- */
4
+ import type { EndpointInstance } from '@zhin.js/adapter';
5
+ import type { MessageGateway } from '@zhin.js/core/runtime';
6
+ import type { HttpHost } from '@zhin.js/host-http';
7
+ import type { CapabilityId } from '@zhin.js/plugin-runtime';
8
+ import { type ResolvedTelegramConfig, type TelegramCallbackQuery, type TelegramChatMember, type TelegramMessage, type TelegramUpdate } from './protocol.js';
9
+ export type TelegramFetch = (url: string, init?: {
10
+ readonly method?: string;
11
+ readonly headers?: Record<string, string>;
12
+ readonly body?: string;
13
+ readonly signal?: AbortSignal;
14
+ }) => Promise<{
15
+ readonly ok: boolean;
16
+ readonly status: number;
17
+ text(): Promise<string>;
18
+ json(): Promise<unknown>;
19
+ }>;
20
+ export interface TelegramEndpointOptions {
21
+ readonly id: CapabilityId;
22
+ readonly gateway: MessageGateway;
23
+ readonly config: ResolvedTelegramConfig;
24
+ readonly http?: HttpHost;
25
+ readonly fetch?: TelegramFetch;
26
+ }
27
+ export declare class TelegramEndpoint implements EndpointInstance {
28
+ #private;
29
+ constructor(options: TelegramEndpointOptions);
30
+ /** Used by webhook handler. */
31
+ get isOpen(): boolean;
32
+ get config(): ResolvedTelegramConfig;
33
+ get allowedUpdates(): readonly string[];
34
+ getUpdateOffset(): number;
35
+ setUpdateOffset(offset: number): void;
36
+ start(): Promise<void>;
37
+ open(): void;
38
+ close(): void;
39
+ stop(): Promise<void>;
40
+ send({ target, payload }: {
41
+ readonly target: string;
42
+ readonly payload: unknown;
43
+ }): Promise<string>;
44
+ /** Test / internal: admit a message when open. */
45
+ admit(msg: TelegramMessage): void;
46
+ /** Test / internal: admit a callback query when open. */
47
+ admitCallback(query: TelegramCallbackQuery): void;
48
+ /** Used by webhook / polling handlers. */
49
+ handleUpdate(update: TelegramUpdate): void;
50
+ callApi<T = unknown>(method: string, params?: Record<string, unknown>, signal?: AbortSignal): Promise<T>;
102
51
  pinMessage(chatId: number, messageId: number): Promise<boolean>;
103
- /**
104
- * 取消置顶消息
105
- * @param chatId 聊天 ID
106
- * @param messageId 消息 ID(可选,不提供则取消所有置顶)
107
- */
108
52
  unpinMessage(chatId: number, messageId?: number): Promise<boolean>;
109
- /**
110
- * 获取聊天信息
111
- * @param chatId 聊天 ID
112
- */
113
- getChatInfo(chatId: number): Promise<any>;
114
- /**
115
- * 获取聊天成员
116
- * @param chatId 聊天 ID
117
- * @param userId 用户 ID
118
- */
119
- getChatMember(chatId: number, userId: number): Promise<ChatMember>;
120
- /**
121
- * 获取管理员列表
122
- * @param chatId 聊天 ID
123
- */
124
- getChatAdmins(chatId: number): Promise<ChatMember[]>;
125
- /**
126
- * 获取聊天成员数量
127
- * @param chatId 聊天 ID
128
- */
53
+ setChatDescription(chatId: number, description: string): Promise<boolean>;
54
+ setMessageReaction(chatId: number, messageId: number, reaction: string): Promise<boolean>;
129
55
  getChatMemberCount(chatId: number): Promise<number>;
130
- /**
131
- * 创建邀请链接
132
- * @param chatId 聊天 ID
133
- */
56
+ getChatAdmins(chatId: number): Promise<TelegramChatMember[]>;
57
+ sendStickerMessage(chatId: number, sticker: string): Promise<{
58
+ message_id: number;
59
+ }>;
60
+ setChatPermissionsAll(chatId: number, permissions: Record<string, boolean | undefined>): Promise<boolean>;
134
61
  createInviteLink(chatId: number): Promise<string>;
135
- sendPoll(chatId: number, question: string, options: string[], isAnonymous?: boolean, allowsMultipleAnswers?: boolean): Promise<TelegramMessage>;
136
- setMessageReaction(chatId: number, messageId: number, reaction: string): Promise<boolean>;
137
- sendStickerMessage(chatId: number, sticker: string): Promise<TelegramMessage>;
138
- setChatPermissionsAll(chatId: number, permissions: {
139
- can_send_messages?: boolean;
140
- can_send_audios?: boolean;
141
- can_send_documents?: boolean;
142
- can_send_photos?: boolean;
143
- can_send_videos?: boolean;
144
- can_send_video_notes?: boolean;
145
- can_send_voice_notes?: boolean;
146
- can_send_polls?: boolean;
147
- can_send_other_messages?: boolean;
148
- can_add_web_page_previews?: boolean;
149
- can_change_info?: boolean;
150
- can_invite_users?: boolean;
151
- can_pin_messages?: boolean;
152
- can_manage_topics?: boolean;
153
- }): Promise<boolean>;
62
+ sendPoll(chatId: number, question: string, options: string[], isAnonymous?: boolean, allowsMultipleAnswers?: boolean): Promise<{
63
+ message_id: number;
64
+ }>;
154
65
  }
155
- //# sourceMappingURL=endpoint.d.ts.map