bn-telegram-mcp-server 0.0.1

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 (99) hide show
  1. package/README.md +1031 -0
  2. package/dist/debug-middleware.d.ts +12 -0
  3. package/dist/debug-middleware.d.ts.map +1 -0
  4. package/dist/debug-middleware.js +36 -0
  5. package/dist/debug-middleware.js.map +1 -0
  6. package/dist/encryption.d.ts +11 -0
  7. package/dist/encryption.d.ts.map +1 -0
  8. package/dist/encryption.js +26 -0
  9. package/dist/encryption.js.map +1 -0
  10. package/dist/helpers.d.ts +27 -0
  11. package/dist/helpers.d.ts.map +1 -0
  12. package/dist/helpers.js +103 -0
  13. package/dist/helpers.js.map +1 -0
  14. package/dist/index.d.ts +3 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +176 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/logger.d.ts +29 -0
  19. package/dist/logger.d.ts.map +1 -0
  20. package/dist/logger.js +114 -0
  21. package/dist/logger.js.map +1 -0
  22. package/dist/request-context.d.ts +24 -0
  23. package/dist/request-context.d.ts.map +1 -0
  24. package/dist/request-context.js +32 -0
  25. package/dist/request-context.js.map +1 -0
  26. package/dist/resolvers.d.ts +36 -0
  27. package/dist/resolvers.d.ts.map +1 -0
  28. package/dist/resolvers.js +252 -0
  29. package/dist/resolvers.js.map +1 -0
  30. package/dist/schemas.d.ts +150 -0
  31. package/dist/schemas.d.ts.map +1 -0
  32. package/dist/schemas.js +216 -0
  33. package/dist/schemas.js.map +1 -0
  34. package/dist/telegram-client.d.ts +19 -0
  35. package/dist/telegram-client.d.ts.map +1 -0
  36. package/dist/telegram-client.js +112 -0
  37. package/dist/telegram-client.js.map +1 -0
  38. package/dist/tool-loader.d.ts +31 -0
  39. package/dist/tool-loader.d.ts.map +1 -0
  40. package/dist/tool-loader.js +121 -0
  41. package/dist/tool-loader.js.map +1 -0
  42. package/dist/tool-registry.d.ts +47 -0
  43. package/dist/tool-registry.d.ts.map +1 -0
  44. package/dist/tool-registry.js +58 -0
  45. package/dist/tool-registry.js.map +1 -0
  46. package/dist/tools/getChat.d.ts +28 -0
  47. package/dist/tools/getChat.d.ts.map +1 -0
  48. package/dist/tools/getChat.js +69 -0
  49. package/dist/tools/getChat.js.map +1 -0
  50. package/dist/tools/getChatMembers.d.ts +34 -0
  51. package/dist/tools/getChatMembers.d.ts.map +1 -0
  52. package/dist/tools/getChatMembers.js +150 -0
  53. package/dist/tools/getChatMembers.js.map +1 -0
  54. package/dist/tools/getContacts.d.ts +28 -0
  55. package/dist/tools/getContacts.d.ts.map +1 -0
  56. package/dist/tools/getContacts.js +73 -0
  57. package/dist/tools/getContacts.js.map +1 -0
  58. package/dist/tools/getFile.d.ts +21 -0
  59. package/dist/tools/getFile.d.ts.map +1 -0
  60. package/dist/tools/getFile.js +33 -0
  61. package/dist/tools/getFile.js.map +1 -0
  62. package/dist/tools/getGroup.d.ts +27 -0
  63. package/dist/tools/getGroup.d.ts.map +1 -0
  64. package/dist/tools/getGroup.js +100 -0
  65. package/dist/tools/getGroup.js.map +1 -0
  66. package/dist/tools/getMe.d.ts +17 -0
  67. package/dist/tools/getMe.d.ts.map +1 -0
  68. package/dist/tools/getMe.js +20 -0
  69. package/dist/tools/getMe.js.map +1 -0
  70. package/dist/tools/getMessageContext.d.ts +21 -0
  71. package/dist/tools/getMessageContext.d.ts.map +1 -0
  72. package/dist/tools/getMessageContext.js +164 -0
  73. package/dist/tools/getMessageContext.js.map +1 -0
  74. package/dist/tools/getMessages.d.ts +38 -0
  75. package/dist/tools/getMessages.d.ts.map +1 -0
  76. package/dist/tools/getMessages.js +123 -0
  77. package/dist/tools/getMessages.js.map +1 -0
  78. package/dist/tools/getUser.d.ts +22 -0
  79. package/dist/tools/getUser.d.ts.map +1 -0
  80. package/dist/tools/getUser.js +38 -0
  81. package/dist/tools/getUser.js.map +1 -0
  82. package/dist/tools/index.d.ts +11 -0
  83. package/dist/tools/index.d.ts.map +1 -0
  84. package/dist/tools/index.js +12 -0
  85. package/dist/tools/index.js.map +1 -0
  86. package/dist/tools/sendMessage.d.ts +39 -0
  87. package/dist/tools/sendMessage.d.ts.map +1 -0
  88. package/dist/tools/sendMessage.js +116 -0
  89. package/dist/tools/sendMessage.js.map +1 -0
  90. package/dist/transformers.d.ts +133 -0
  91. package/dist/transformers.d.ts.map +1 -0
  92. package/dist/transformers.js +335 -0
  93. package/dist/transformers.js.map +1 -0
  94. package/dist/types.d.ts +55 -0
  95. package/dist/types.d.ts.map +1 -0
  96. package/dist/types.js +2 -0
  97. package/dist/types.js.map +1 -0
  98. package/package.json +45 -0
  99. package/tools.json +252 -0
@@ -0,0 +1,32 @@
1
+ import { AsyncLocalStorage } from "node:async_hooks";
2
+ /**
3
+ * AsyncLocalStorage for storing request context across async operations
4
+ * This replaces the global currentRequest variable to properly isolate
5
+ * request context in concurrent scenarios
6
+ */
7
+ const requestStorage = new AsyncLocalStorage();
8
+ /**
9
+ * Run a callback with request context
10
+ * All async operations within the callback will have access to the request
11
+ *
12
+ * @param req - Express request object
13
+ * @param callback - Async callback to run with request context
14
+ * @returns Result of the callback
15
+ */
16
+ export function runWithRequest(req, callback) {
17
+ return requestStorage.run(req, callback);
18
+ }
19
+ /**
20
+ * Get the current request from context, throwing if not available
21
+ *
22
+ * @returns Current request
23
+ * @throws Error if not in request context
24
+ */
25
+ export function requireCurrentRequest() {
26
+ const req = requestStorage.getStore();
27
+ if (!req) {
28
+ throw new Error("No request context available. This server must be called via HTTP transport.");
29
+ }
30
+ return req;
31
+ }
32
+ //# sourceMappingURL=request-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-context.js","sourceRoot":"","sources":["../src/request-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAQrD;;;;GAIG;AACH,MAAM,cAAc,GAAG,IAAI,iBAAiB,EAAmB,CAAC;AAEhE;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAC5B,GAAoB,EACpB,QAA0B;IAE1B,OAAO,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB;IACnC,MAAM,GAAG,GAAG,cAAc,CAAC,QAAQ,EAAE,CAAC;IACtC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CACb,8EAA8E,CAC/E,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,36 @@
1
+ import type { Client } from "tdl";
2
+ /**
3
+ * Parse a value that could be either a numeric ID or a name
4
+ */
5
+ export declare function parseIdentifier(value: string | number): {
6
+ isId: boolean;
7
+ numericId?: number;
8
+ searchQuery?: string;
9
+ };
10
+ /**
11
+ * Resolve a chat identifier to a chat ID
12
+ *
13
+ * @param client - TDLib client
14
+ * @param identifier - Either a numeric chat ID or a chat title/name to search for
15
+ * @returns The resolved chat ID
16
+ * @throws Error if no matching chat is found
17
+ */
18
+ export declare function resolveChat(client: Client, identifier: string | number): Promise<number>;
19
+ /**
20
+ * Resolve a user identifier to a user ID
21
+ *
22
+ * @param client - TDLib client
23
+ * @param identifier - Either a numeric user ID, username (@username), or name to search for
24
+ * @returns The resolved user ID
25
+ * @throws Error if no matching user is found
26
+ */
27
+ export declare function resolveUser(client: Client, identifier: string | number): Promise<number>;
28
+ /**
29
+ * Resolve a supergroup/channel identifier
30
+ */
31
+ export declare function resolveSupergroup(client: Client, identifier: string | number): Promise<number>;
32
+ /**
33
+ * Resolve a basic group identifier
34
+ */
35
+ export declare function resolveBasicGroup(client: Client, identifier: string | number): Promise<number>;
36
+ //# sourceMappingURL=resolvers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolvers.d.ts","sourceRoot":"","sources":["../src/resolvers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAiClC;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG;IACvD,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAQA;AA0BD;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GAAG,MAAM,GAC1B,OAAO,CAAC,MAAM,CAAC,CA8DjB;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GAAG,MAAM,GAC1B,OAAO,CAAC,MAAM,CAAC,CA2HjB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GAAG,MAAM,GAC1B,OAAO,CAAC,MAAM,CAAC,CAoBjB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GAAG,MAAM,GAC1B,OAAO,CAAC,MAAM,CAAC,CAoBjB"}
@@ -0,0 +1,252 @@
1
+ /**
2
+ * Check if a value is a numeric ID (number or numeric string)
3
+ */
4
+ function isNumericId(value) {
5
+ if (typeof value === "number")
6
+ return true;
7
+ return /^-?\d+$/.test(value);
8
+ }
9
+ /**
10
+ * Parse a value that could be either a numeric ID or a name
11
+ */
12
+ export function parseIdentifier(value) {
13
+ if (typeof value === "number") {
14
+ return { isId: true, numericId: value };
15
+ }
16
+ if (/^-?\d+$/.test(value)) {
17
+ return { isId: true, numericId: parseInt(value, 10) };
18
+ }
19
+ return { isId: false, searchQuery: value };
20
+ }
21
+ /**
22
+ * Calculate similarity score between two strings (case-insensitive)
23
+ */
24
+ function calculateSimilarity(str1, str2) {
25
+ const s1 = str1.toLowerCase();
26
+ const s2 = str2.toLowerCase();
27
+ // Exact match
28
+ if (s1 === s2)
29
+ return 1.0;
30
+ // Contains match
31
+ if (s1.includes(s2) || s2.includes(s1))
32
+ return 0.8;
33
+ // Word match
34
+ const words1 = s1.split(/\s+/);
35
+ const words2 = s2.split(/\s+/);
36
+ const commonWords = words1.filter((w) => words2.some((w2) => w2.includes(w) || w.includes(w2)));
37
+ if (commonWords.length > 0) {
38
+ return 0.5 + (0.3 * commonWords.length) / Math.max(words1.length, words2.length);
39
+ }
40
+ return 0;
41
+ }
42
+ /**
43
+ * Resolve a chat identifier to a chat ID
44
+ *
45
+ * @param client - TDLib client
46
+ * @param identifier - Either a numeric chat ID or a chat title/name to search for
47
+ * @returns The resolved chat ID
48
+ * @throws Error if no matching chat is found
49
+ */
50
+ export async function resolveChat(client, identifier) {
51
+ const parsed = parseIdentifier(identifier);
52
+ // If it's already a numeric ID, return it
53
+ if (parsed.isId && parsed.numericId !== undefined) {
54
+ return parsed.numericId;
55
+ }
56
+ // Search for the chat by title
57
+ // Note: Caller (tool handler) must have already called loadChats
58
+ const chatsResult = (await client.invoke({
59
+ _: "getChats",
60
+ chat_list: { _: "chatListMain" },
61
+ limit: 100,
62
+ }));
63
+ const searchQuery = parsed.searchQuery ?? "";
64
+ const matches = [];
65
+ for (const chatId of chatsResult.chat_ids) {
66
+ try {
67
+ const chat = (await client.invoke({
68
+ _: "getChat",
69
+ chat_id: chatId,
70
+ }));
71
+ const score = calculateSimilarity(chat.title, searchQuery);
72
+ if (score > 0) {
73
+ const chatType = chat.type;
74
+ matches.push({
75
+ id: chat.id,
76
+ title: chat.title,
77
+ type: chatType?._?.replace("chatType", "") ?? "unknown",
78
+ match_score: score,
79
+ });
80
+ }
81
+ }
82
+ catch {
83
+ // Skip chats that fail to load
84
+ }
85
+ }
86
+ // Sort by match score descending
87
+ matches.sort((a, b) => b.match_score - a.match_score);
88
+ if (matches.length === 0) {
89
+ throw new Error(`No chat found matching "${searchQuery}". Use getChats to see available chats.`);
90
+ }
91
+ if (matches.length > 1 && matches[0].match_score < 1.0) {
92
+ // Multiple matches, show suggestions
93
+ const suggestions = matches
94
+ .slice(0, 3)
95
+ .map((m) => `"${m.title}" (${m.type})`)
96
+ .join(", ");
97
+ throw new Error(`Multiple chats match "${searchQuery}". Did you mean: ${suggestions}? Use a more specific name or the exact title.`);
98
+ }
99
+ return matches[0].id;
100
+ }
101
+ /**
102
+ * Resolve a user identifier to a user ID
103
+ *
104
+ * @param client - TDLib client
105
+ * @param identifier - Either a numeric user ID, username (@username), or name to search for
106
+ * @returns The resolved user ID
107
+ * @throws Error if no matching user is found
108
+ */
109
+ export async function resolveUser(client, identifier) {
110
+ const parsed = parseIdentifier(identifier);
111
+ // If it's already a numeric ID, return it
112
+ if (parsed.isId && parsed.numericId !== undefined) {
113
+ return parsed.numericId;
114
+ }
115
+ const searchQuery = parsed.searchQuery ?? "";
116
+ // Check if it's a username (starts with @)
117
+ if (searchQuery.startsWith("@")) {
118
+ try {
119
+ const chat = (await client.invoke({
120
+ _: "searchPublicChat",
121
+ username: searchQuery.substring(1),
122
+ }));
123
+ const chatType = chat.type;
124
+ if (chatType?._ === "chatTypePrivate" && chatType.user_id) {
125
+ return chatType.user_id;
126
+ }
127
+ throw new Error(`"${searchQuery}" is not a user`);
128
+ }
129
+ catch (error) {
130
+ if (error instanceof Error && error.message.includes("not a user")) {
131
+ throw error;
132
+ }
133
+ throw new Error(`User "${searchQuery}" not found`);
134
+ }
135
+ }
136
+ // Search users by name using already-loaded chats and contacts
137
+ // Note: Caller (tool handler) must have already called loadChats and getContacts
138
+ if (process.env.DEBUG) {
139
+ console.log(`[resolveUser] Starting search for: "${searchQuery}"`);
140
+ }
141
+ // Get all contacts (should already be cached from tool handler's getContacts call)
142
+ const contactsResult = (await client.invoke({
143
+ _: "getContacts",
144
+ }));
145
+ if (process.env.DEBUG) {
146
+ console.log(`[resolveUser] Got ${contactsResult.user_ids?.length ?? 0} contacts`);
147
+ }
148
+ // Get chats (should already be loaded from tool handler's loadChats call)
149
+ const chatsResult = (await client.invoke({
150
+ _: "getChats",
151
+ chat_list: { _: "chatListMain" },
152
+ limit: 100,
153
+ }));
154
+ if (process.env.DEBUG) {
155
+ console.log(`[resolveUser] Got ${chatsResult.chat_ids?.length ?? 0} chats`);
156
+ }
157
+ // Collect all unique user IDs
158
+ const userIds = new Set(contactsResult.user_ids ?? []);
159
+ // Extract user IDs from private chats
160
+ for (const chatId of chatsResult.chat_ids ?? []) {
161
+ if (chatId > 0) {
162
+ // Positive chat IDs are private chats, chat_id equals user_id
163
+ userIds.add(chatId);
164
+ }
165
+ }
166
+ const matches = [];
167
+ for (const userId of userIds) {
168
+ try {
169
+ const user = (await client.invoke({
170
+ _: "getUser",
171
+ user_id: userId,
172
+ }));
173
+ const fullName = `${user.first_name} ${user.last_name ?? ""}`.trim();
174
+ const userRecord = user;
175
+ const username = userRecord.usernames?.active_usernames?.[0];
176
+ const nameScore = calculateSimilarity(fullName, searchQuery);
177
+ const usernameScore = username ? calculateSimilarity(username, searchQuery) : 0;
178
+ const score = Math.max(nameScore, usernameScore);
179
+ if (score > 0) {
180
+ matches.push({
181
+ id: user.id,
182
+ name: fullName,
183
+ username,
184
+ match_score: score,
185
+ });
186
+ }
187
+ }
188
+ catch {
189
+ // Skip users that fail to load
190
+ }
191
+ }
192
+ // Sort by match score descending
193
+ matches.sort((a, b) => b.match_score - a.match_score);
194
+ // Debug logging
195
+ if (process.env.DEBUG) {
196
+ console.log(`[resolveUser] Search query: "${searchQuery}"`);
197
+ console.log(`[resolveUser] Found ${userIds.size} total users`);
198
+ console.log(`[resolveUser] Found ${matches.length} matching users:`, matches.slice(0, 5));
199
+ }
200
+ if (matches.length === 0) {
201
+ throw new Error(`No user found matching "${searchQuery}". Use getContacts to see available users.`);
202
+ }
203
+ if (matches.length > 1 && matches[0].match_score < 1.0) {
204
+ const suggestions = matches
205
+ .slice(0, 3)
206
+ .map((m) => `"${m.name}"${m.username ? ` (@${m.username})` : ""}`)
207
+ .join(", ");
208
+ throw new Error(`Multiple users match "${searchQuery}". Did you mean: ${suggestions}? Use a more specific name.`);
209
+ }
210
+ return matches[0].id;
211
+ }
212
+ /**
213
+ * Resolve a supergroup/channel identifier
214
+ */
215
+ export async function resolveSupergroup(client, identifier) {
216
+ const parsed = parseIdentifier(identifier);
217
+ if (parsed.isId && parsed.numericId !== undefined) {
218
+ return parsed.numericId;
219
+ }
220
+ // Search for the chat first, then extract supergroup_id
221
+ const chatId = await resolveChat(client, identifier);
222
+ const chat = (await client.invoke({
223
+ _: "getChat",
224
+ chat_id: chatId,
225
+ }));
226
+ const chatType = chat.type;
227
+ if (chatType?._ === "chatTypeSupergroup" && chatType.supergroup_id) {
228
+ return chatType.supergroup_id;
229
+ }
230
+ throw new Error(`"${identifier}" is not a supergroup or channel`);
231
+ }
232
+ /**
233
+ * Resolve a basic group identifier
234
+ */
235
+ export async function resolveBasicGroup(client, identifier) {
236
+ const parsed = parseIdentifier(identifier);
237
+ if (parsed.isId && parsed.numericId !== undefined) {
238
+ return parsed.numericId;
239
+ }
240
+ // Search for the chat first, then extract basic_group_id
241
+ const chatId = await resolveChat(client, identifier);
242
+ const chat = (await client.invoke({
243
+ _: "getChat",
244
+ chat_id: chatId,
245
+ }));
246
+ const chatType = chat.type;
247
+ if (chatType?._ === "chatTypeBasicGroup" && chatType.basic_group_id) {
248
+ return chatType.basic_group_id;
249
+ }
250
+ throw new Error(`"${identifier}" is not a basic group`);
251
+ }
252
+ //# sourceMappingURL=resolvers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolvers.js","sourceRoot":"","sources":["../src/resolvers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,150 @@
1
+ import { z } from "zod";
2
+ export declare const GetMeSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
3
+ export declare const GetChatSchema: z.ZodObject<{
4
+ chat: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodString]>>;
5
+ chat_list: z.ZodDefault<z.ZodOptional<z.ZodEnum<["main", "archive"]>>>;
6
+ limit: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
7
+ }, "strip", z.ZodTypeAny, {
8
+ chat_list: "main" | "archive";
9
+ limit: number;
10
+ chat?: string | number | undefined;
11
+ }, {
12
+ chat?: string | number | undefined;
13
+ chat_list?: "main" | "archive" | undefined;
14
+ limit?: number | undefined;
15
+ }>;
16
+ export declare const GetMessagesSchema: z.ZodObject<{
17
+ chat: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodString]>>;
18
+ mode: z.ZodDefault<z.ZodOptional<z.ZodEnum<["history", "specific", "search"]>>>;
19
+ from_message_id: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
20
+ offset: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
21
+ limit: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
22
+ only_local: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
23
+ message_ids: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
24
+ query: z.ZodOptional<z.ZodString>;
25
+ next_offset: z.ZodDefault<z.ZodOptional<z.ZodString>>;
26
+ }, "strip", z.ZodTypeAny, {
27
+ limit: number;
28
+ mode: "history" | "specific" | "search";
29
+ from_message_id: number;
30
+ offset: number;
31
+ only_local: boolean;
32
+ next_offset: string;
33
+ chat?: string | number | undefined;
34
+ message_ids?: number[] | undefined;
35
+ query?: string | undefined;
36
+ }, {
37
+ chat?: string | number | undefined;
38
+ limit?: number | undefined;
39
+ mode?: "history" | "specific" | "search" | undefined;
40
+ from_message_id?: number | undefined;
41
+ offset?: number | undefined;
42
+ only_local?: boolean | undefined;
43
+ message_ids?: number[] | undefined;
44
+ query?: string | undefined;
45
+ next_offset?: string | undefined;
46
+ }>;
47
+ export declare const SendMessageSchema: z.ZodObject<{
48
+ chat: z.ZodUnion<[z.ZodNumber, z.ZodString]>;
49
+ action: z.ZodDefault<z.ZodOptional<z.ZodEnum<["send", "forward"]>>>;
50
+ text: z.ZodOptional<z.ZodString>;
51
+ reply_to_message_id: z.ZodOptional<z.ZodNumber>;
52
+ from_chat: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodString]>>;
53
+ message_ids: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
54
+ send_copy: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
55
+ remove_caption: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
56
+ }, "strip", z.ZodTypeAny, {
57
+ chat: string | number;
58
+ action: "send" | "forward";
59
+ send_copy: boolean;
60
+ remove_caption: boolean;
61
+ message_ids?: number[] | undefined;
62
+ text?: string | undefined;
63
+ reply_to_message_id?: number | undefined;
64
+ from_chat?: string | number | undefined;
65
+ }, {
66
+ chat: string | number;
67
+ message_ids?: number[] | undefined;
68
+ action?: "send" | "forward" | undefined;
69
+ text?: string | undefined;
70
+ reply_to_message_id?: number | undefined;
71
+ from_chat?: string | number | undefined;
72
+ send_copy?: boolean | undefined;
73
+ remove_caption?: boolean | undefined;
74
+ }>;
75
+ export declare const GetUserSchema: z.ZodObject<{
76
+ user: z.ZodUnion<[z.ZodNumber, z.ZodString]>;
77
+ }, "strip", z.ZodTypeAny, {
78
+ user: string | number;
79
+ }, {
80
+ user: string | number;
81
+ }>;
82
+ export declare const GetContactsSchema: z.ZodObject<{
83
+ query: z.ZodOptional<z.ZodString>;
84
+ limit: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
85
+ }, "strip", z.ZodTypeAny, {
86
+ limit: number;
87
+ query?: string | undefined;
88
+ }, {
89
+ limit?: number | undefined;
90
+ query?: string | undefined;
91
+ }>;
92
+ export declare const GetFileSchema: z.ZodObject<{
93
+ file_id: z.ZodNumber;
94
+ }, "strip", z.ZodTypeAny, {
95
+ file_id: number;
96
+ }, {
97
+ file_id: number;
98
+ }>;
99
+ export declare const GetGroupSchema: z.ZodObject<{
100
+ group: z.ZodUnion<[z.ZodNumber, z.ZodString]>;
101
+ type: z.ZodDefault<z.ZodOptional<z.ZodEnum<["supergroup", "basic_group", "auto"]>>>;
102
+ }, "strip", z.ZodTypeAny, {
103
+ type: "supergroup" | "basic_group" | "auto";
104
+ group: string | number;
105
+ }, {
106
+ group: string | number;
107
+ type?: "supergroup" | "basic_group" | "auto" | undefined;
108
+ }>;
109
+ export declare const GetChatMembersSchema: z.ZodObject<{
110
+ chat: z.ZodUnion<[z.ZodNumber, z.ZodString]>;
111
+ filter: z.ZodDefault<z.ZodOptional<z.ZodEnum<["recent", "administrators", "banned", "bots", "search"]>>>;
112
+ query: z.ZodDefault<z.ZodOptional<z.ZodString>>;
113
+ offset: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
114
+ limit: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
115
+ }, "strip", z.ZodTypeAny, {
116
+ chat: string | number;
117
+ filter: "search" | "recent" | "administrators" | "banned" | "bots";
118
+ limit: number;
119
+ offset: number;
120
+ query: string;
121
+ }, {
122
+ chat: string | number;
123
+ filter?: "search" | "recent" | "administrators" | "banned" | "bots" | undefined;
124
+ limit?: number | undefined;
125
+ offset?: number | undefined;
126
+ query?: string | undefined;
127
+ }>;
128
+ export declare const GetMessageContextSchema: z.ZodObject<{
129
+ chat: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodString]>>;
130
+ mode: z.ZodDefault<z.ZodOptional<z.ZodEnum<["message_id", "search"]>>>;
131
+ message_id: z.ZodOptional<z.ZodNumber>;
132
+ query: z.ZodOptional<z.ZodString>;
133
+ search_limit: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
134
+ context_count: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
135
+ }, "strip", z.ZodTypeAny, {
136
+ mode: "search" | "message_id";
137
+ search_limit: number;
138
+ context_count: number;
139
+ chat?: string | number | undefined;
140
+ query?: string | undefined;
141
+ message_id?: number | undefined;
142
+ }, {
143
+ chat?: string | number | undefined;
144
+ mode?: "search" | "message_id" | undefined;
145
+ query?: string | undefined;
146
+ message_id?: number | undefined;
147
+ search_limit?: number | undefined;
148
+ context_count?: number | undefined;
149
+ }>;
150
+ //# sourceMappingURL=schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA0BxB,eAAO,MAAM,WAAW,gDAAe,CAAC;AAGxC,eAAO,MAAM,aAAa;;;;;;;;;;;;EAiBxB,CAAC;AAGH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmD5B,CAAC;AAGH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsC5B,CAAC;AAGH,eAAO,MAAM,aAAa;;;;;;EAIxB,CAAC;AAGH,eAAO,MAAM,iBAAiB;;;;;;;;;EAa5B,CAAC;AAGH,eAAO,MAAM,aAAa;;;;;;EAIxB,CAAC;AAGH,eAAO,MAAM,cAAc;;;;;;;;;EASzB,CAAC;AAGH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;EA4B/B,CAAC;AAIH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;EAuClC,CAAC"}