@overpod/mcp-telegram 1.24.0 → 1.25.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/CHANGELOG.md +82 -26
- package/README.md +37 -11
- package/dist/__tests__/admin-log.test.d.ts +1 -0
- package/dist/__tests__/admin-log.test.js +41 -0
- package/dist/__tests__/reactions.test.d.ts +1 -0
- package/dist/__tests__/reactions.test.js +23 -0
- package/dist/__tests__/set-chat-permissions-merge.test.d.ts +1 -0
- package/dist/__tests__/set-chat-permissions-merge.test.js +107 -0
- package/dist/telegram-client.d.ts +131 -2
- package/dist/telegram-client.js +797 -51
- package/dist/tools/account.js +92 -0
- package/dist/tools/chats.js +238 -1
- package/dist/tools/media.js +120 -1
- package/dist/tools/messages.js +187 -0
- package/dist/tools/reactions.js +59 -1
- package/dist/tools/stickers.js +2 -4
- package/package.json +13 -9
package/dist/tools/reactions.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { fail, ok, READ_ONLY, requireConnection, WRITE } from "./shared.js";
|
|
2
|
+
import { fail, ok, READ_ONLY, requireConnection, sanitize, WRITE } from "./shared.js";
|
|
3
3
|
export function registerReactionTools(server, telegram) {
|
|
4
4
|
server.registerTool("telegram-send-reaction", {
|
|
5
5
|
description: "Send emoji reaction(s) to a message. Supports multiple reactions and adding to existing ones. Omit emoji to remove all reactions",
|
|
@@ -60,4 +60,62 @@ export function registerReactionTools(server, telegram) {
|
|
|
60
60
|
return fail(e);
|
|
61
61
|
}
|
|
62
62
|
});
|
|
63
|
+
server.registerTool("telegram-set-default-reaction", {
|
|
64
|
+
description: "Set the default emoji reaction used in quick-reaction menus across Telegram",
|
|
65
|
+
inputSchema: {
|
|
66
|
+
emoji: z.string().min(1).max(8).describe("Emoji character (e.g. 👍 ❤️ 🔥)"),
|
|
67
|
+
},
|
|
68
|
+
annotations: WRITE,
|
|
69
|
+
}, async ({ emoji }) => {
|
|
70
|
+
const err = await requireConnection(telegram);
|
|
71
|
+
if (err)
|
|
72
|
+
return fail(new Error(err));
|
|
73
|
+
try {
|
|
74
|
+
await telegram.setDefaultReaction(emoji);
|
|
75
|
+
return ok(`Default reaction set to ${sanitize(emoji)}`);
|
|
76
|
+
}
|
|
77
|
+
catch (e) {
|
|
78
|
+
return fail(e);
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
server.registerTool("telegram-get-top-reactions", {
|
|
82
|
+
description: "Get the list of most popular emoji reactions available on Telegram",
|
|
83
|
+
inputSchema: {
|
|
84
|
+
limit: z.number().int().min(1).max(100).default(20).describe("Max number of reactions to return"),
|
|
85
|
+
},
|
|
86
|
+
annotations: READ_ONLY,
|
|
87
|
+
}, async ({ limit }) => {
|
|
88
|
+
const err = await requireConnection(telegram);
|
|
89
|
+
if (err)
|
|
90
|
+
return fail(new Error(err));
|
|
91
|
+
try {
|
|
92
|
+
const reactions = await telegram.getTopReactions(limit);
|
|
93
|
+
if (reactions.length === 0)
|
|
94
|
+
return ok("No top reactions available");
|
|
95
|
+
return ok(sanitize(reactions.map((r) => r.emoji).join(" ")));
|
|
96
|
+
}
|
|
97
|
+
catch (e) {
|
|
98
|
+
return fail(e);
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
server.registerTool("telegram-get-recent-reactions", {
|
|
102
|
+
description: "Get the list of emoji reactions the current account used recently",
|
|
103
|
+
inputSchema: {
|
|
104
|
+
limit: z.number().int().min(1).max(100).default(20).describe("Max number of reactions to return"),
|
|
105
|
+
},
|
|
106
|
+
annotations: READ_ONLY,
|
|
107
|
+
}, async ({ limit }) => {
|
|
108
|
+
const err = await requireConnection(telegram);
|
|
109
|
+
if (err)
|
|
110
|
+
return fail(new Error(err));
|
|
111
|
+
try {
|
|
112
|
+
const reactions = await telegram.getRecentReactions(limit);
|
|
113
|
+
if (reactions.length === 0)
|
|
114
|
+
return ok("No recent reactions");
|
|
115
|
+
return ok(sanitize(reactions.map((r) => r.emoji).join(" ")));
|
|
116
|
+
}
|
|
117
|
+
catch (e) {
|
|
118
|
+
return fail(e);
|
|
119
|
+
}
|
|
120
|
+
});
|
|
63
121
|
}
|
package/dist/tools/stickers.js
CHANGED
|
@@ -49,8 +49,7 @@ export function registerStickerTools(server, telegram) {
|
|
|
49
49
|
const lines = [];
|
|
50
50
|
lines.push(`Found ${sets.length} sticker set(s) for "${query}":\n`);
|
|
51
51
|
for (const set of sets) {
|
|
52
|
-
|
|
53
|
-
lines.push(`• ${set.title}${flags} — ${set.count} stickers`);
|
|
52
|
+
lines.push(`• ${set.title} — ${set.count} stickers`);
|
|
54
53
|
lines.push(` Short name: ${set.shortName}`);
|
|
55
54
|
}
|
|
56
55
|
lines.push("");
|
|
@@ -77,8 +76,7 @@ export function registerStickerTools(server, telegram) {
|
|
|
77
76
|
const lines = [];
|
|
78
77
|
lines.push(`${sets.length} installed sticker set(s):\n`);
|
|
79
78
|
for (const set of sets) {
|
|
80
|
-
|
|
81
|
-
lines.push(`• ${set.title}${flags} — ${set.count} stickers`);
|
|
79
|
+
lines.push(`• ${set.title} — ${set.count} stickers`);
|
|
82
80
|
lines.push(` Short name: ${set.shortName}`);
|
|
83
81
|
}
|
|
84
82
|
return ok(sanitize(lines.join("\n")));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@overpod/mcp-telegram",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.25.0",
|
|
4
4
|
"description": "MCP server for Telegram userbot — messages, media, reactions, polls & more. Built on GramJS/MTProto.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -28,7 +28,10 @@
|
|
|
28
28
|
"lint:fix": "biome check --fix src/",
|
|
29
29
|
"format": "biome format --write src/",
|
|
30
30
|
"test": "tsx --test src/**/*.test.ts",
|
|
31
|
-
"test:watch": "tsx --test --watch src/**/*.test.ts"
|
|
31
|
+
"test:watch": "tsx --test --watch src/**/*.test.ts",
|
|
32
|
+
"docs:dev": "vitepress dev docs",
|
|
33
|
+
"docs:build": "vitepress build docs",
|
|
34
|
+
"docs:preview": "vitepress preview docs"
|
|
32
35
|
},
|
|
33
36
|
"keywords": [
|
|
34
37
|
"mcp",
|
|
@@ -45,24 +48,25 @@
|
|
|
45
48
|
"license": "MIT",
|
|
46
49
|
"repository": {
|
|
47
50
|
"type": "git",
|
|
48
|
-
"url": "https://github.com/
|
|
51
|
+
"url": "https://github.com/mcp-telegram/mcp-telegram.git"
|
|
49
52
|
},
|
|
50
|
-
"homepage": "https://github.com/
|
|
53
|
+
"homepage": "https://github.com/mcp-telegram/mcp-telegram#readme",
|
|
51
54
|
"bugs": {
|
|
52
|
-
"url": "https://github.com/
|
|
55
|
+
"url": "https://github.com/mcp-telegram/mcp-telegram/issues"
|
|
53
56
|
},
|
|
54
57
|
"dependencies": {
|
|
55
58
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
56
|
-
"dotenv": "^17.
|
|
59
|
+
"dotenv": "^17.4.2",
|
|
57
60
|
"qrcode": "^1.5.4",
|
|
58
61
|
"telegram": "^2.26.22",
|
|
59
62
|
"zod": "^4.3.6"
|
|
60
63
|
},
|
|
61
64
|
"devDependencies": {
|
|
62
|
-
"@biomejs/biome": "^2.4.
|
|
63
|
-
"@types/node": "^25.
|
|
65
|
+
"@biomejs/biome": "^2.4.12",
|
|
66
|
+
"@types/node": "^25.6.0",
|
|
64
67
|
"@types/qrcode": "^1.5.6",
|
|
65
68
|
"tsx": "^4.21.0",
|
|
66
|
-
"typescript": "^6.0.
|
|
69
|
+
"typescript": "^6.0.3",
|
|
70
|
+
"vitepress": "^1.6.4"
|
|
67
71
|
}
|
|
68
72
|
}
|