Telegram机器人API服务

提供与Telegram Bot API交互的工具,实现消息发送、信息获取等功能,适用于AI助手与Telegram的集成开发。

  • by Bigchef-dev
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 bigchef-dev/telegram-mcp-server

使用说明

电报MCP服务器

MCP服务器实现,提供与 电报机器人API该服务允许AI助手以编程方式发送消息和检索机器人信息。

工具

Telegram MCP服务为与Telegram Bot API交互提供以下工具:

get_bot_info

检索有关机器人的基本信息。

  • 无需参数
  • 返回包含机器人信息的User对象

send_message

向指定聊天室发送消息。

  • chatId:目标聊天的唯一标识符(可以是字符串或数字)
  • text:要发送的消息文本
  • params (可选):消息的其他参数(例如parse_mode、reply_markup等)

获取更新

使用长轮询接收传入更新。

  • params (可选):包含可选参数的对象:
    • offset (可选):要返回的第一个更新的标识符
    • limit (可选):限制要检索的更新数量(1-100)
    • timeout (可选):长轮询超时(秒)
    • allowed_updates (可选):要接收的更新类型数组
  • 返回一个包含各种类型更新的Update对象数组:
    • 消息和编辑的消息
    • 频道帖子
    • 业务消息
    • 内联查询
    • 回调查询
    • 发货查询
    • 结账前查询
    • 民意调查和民意调查答案
    • 聊天成员更新
    • 聊天加入请求
    • 聊天增强

转发消息

转发任何类型的消息。无法转发服务消息和包含受保护内容的消息。

  • chatId:目标聊天或目标频道用户名的唯一标识符(格式为@channelusername)
  • fromChatId:发送原始消息的聊天的唯一标识符(或@channelusername格式的频道用户名)
  • messageId:在from_chat_id中指定的聊天中的消息标识符
  • params (可选):包含可选参数的对象:
    • message_thread_id (可选):论坛目标消息线程(主题)的唯一标识符;仅适用于论坛超级群
    • video_start_timestamp (可选):消息中转发视频的新开始时间戳
    • disable_notification (可选):以静默方式发送消息。用户将收到一个没有声音的通知。
    • protect_content (可选):保护转发邮件的内容不被转发和保存
  • 成功时返回已发送的Message对象

pin_chat_message

将消息添加到聊天中的固定消息列表中。在私聊和频道直接消息聊天中,所有非服务消息都可以被固定。相反,机器人程序必须是具有“can_pin_messages”权限或“can_edit_message”权限的管理员,才能分别将消息固定在组和通道中。

  • chatId:目标聊天或目标频道用户名的唯一标识符(格式为@channelusername)
  • messageId:要固定的消息的标识符
  • businessConnectionId (可选):消息所代表的业务连接的唯一标识符
  • disableNotification (可选):如果不需要向所有聊天成员发送有关新固定消息的通知,则传递True。在频道和私人聊天中,通知始终处于禁用状态。
  • 成功时返回True

unpin-chat_消息

从聊天中的固定消息列表中删除消息。在私聊和频道直接消息聊天中,所有消息都可以取消固定。相反,机器人程序必须是具有“can_pin_messages”权限或“can_edit_message”权限的管理员,才能分别在组和通道中取消绑定消息。

  • chatId:目标聊天或目标频道用户名的唯一标识符(格式为@channelusername)
  • messageId (可选):要取消固定的消息的标识符。如果未指定,则将取消固定最近固定的邮件(按发送日期)
  • businessConnectionId (可选):代表其取消邮件固定的业务连接的唯一标识符
  • 成功时返回True

unpin_all_chat_消息

清除聊天中的固定消息列表。在私聊和频道直接消息聊天中,取消固定所有固定消息不需要额外的权限。相反,机器人程序必须是具有“can_pin_messages”权限或“can_edit_message”权限的管理员,才能分别取消固定组和通道中的所有固定消息。

  • chatId:目标聊天或目标频道用户名的唯一标识符(格式为@channelusername)
  • 成功时返回True

getChat

获取有关聊天的最新信息。返回详细的聊天信息,包括设置、权限和元数据。

  • chat_id:目标聊天或目标超级群或频道用户名的唯一标识符(格式为@channelusername)
  • 返回一个包含全面聊天详细信息的ChatFullInfo对象:
    • 基本信息:id、类型、标题、用户名、描述
    • 设置:权限、慢模式延迟、消息自动删除时间
    • 特点:受保护的内容,隐藏的成员,积极的反垃圾邮件
    • 可选信息:照片、位置、贴纸集、链接聊天
    • 商业信息:介绍、地点、营业时间(适用于商业账户)
    • 个人信息:生日,个人简历,表情符号状态(用于私人聊天)

sendPoll

将本地投票发送到聊天。返回包含成功轮询的已发送消息。请注意,投票不能发送到频道直接消息聊天。

  • chat_id:目标聊天或目标频道用户名的唯一标识符(格式为@channelusername)
  • question:投票问题,1-300个字符
  • options:数组 2到10个答案选项 (必填)。每个选项必须包含1-100个字符的文本,格式可选
  • type (可选):投票类型,“测验”或“常规”(默认为“常规”)
  • is_anonymous (可选):如果投票应该是匿名的,则为True(默认为True)
  • allows_multiple_answers (可选):如果允许多个答案,则为True(默认为False,在测验民意调查中忽略)
  • correct_option_id (可选):正确答案的基于0的标识符(测验民意调查所需)
  • explanation (可选):显示错误测验答案的文本,0-200个字符
  • open_period (可选):轮询持续时间(秒),5-600(不能与close_date一起使用)
  • close_date (可选):轮询关闭时的Unix时间戳(不能与open_period一起使用)
  • is_closed (可选):True可立即关闭投票(对预览有用)
  • disable_notification (可选):静默发送
  • protect_content (可选):防止邮件转发/保存
  • reply_parameters (可选):回复另一条消息
  • reply_markup (可选):其他接口选项(键盘等)
  • 其他选项:business_connection_id、message_thread_id、question_parse_mode、question_entities、explanation_parse_model、explanational_tities、allow-paid_broadcast、message_effect_id

配置

环境变量

您需要设置以下环境变量:

TELEGRAM_BOT_TOKEN=your_bot_token
MCP_MODE=stdio
PORT=3001
  • TELEGRAM_BOT_TOKEN:您的机器人令牌(必填)
  • MCP_MODE:服务器模式- stdio 对于MCP客户或 web 对于HTTP/SSE API(默认为 stdio)
  • PORT:web模式端口(默认为 3001)

您可以通过以下方式获取您的机器人令牌 @植物学家 在Telegram上创建一个新的机器人。

创建新的机器人

使用 /newbot 创建新机器人的命令。 @BotFather 将询问您的姓名和用户名,然后为您的新机器人生成身份验证令牌。

您的机器人名称显示在联系方式和其他地方。

用户名是一个短名称,用于搜索、提及和.me链接。用户名长度为5-32个字符,不区分大小写,但只能包含拉丁字符、数字和下划线。您的机器人用户名必须以“bot”结尾,如“tetris_bot”或“TetrisBot”。

令牌是一个字符串,如123456:my-securt,用于授权机器人程序并向机器人程序API发送请求。确保您的令牌安全并安全存储,任何人都可以使用它来控制您的机器人。

与机器人的名称不同,用户名以后不能更改,因此请仔细选择。 向api.telegram.org发送请求时,请记住在令牌前加上“bot”一词。

发展

标准MCP模式(stdio)

npm install
npm run build
npx @modelcontextprotocol/inspector node dist/index.js

打开http://127.0.0.1:6274设置环境并与工具交互。

Web模式(HTTP/SSE)

npm install
npm run build
MCP_MODE=web PORT=3001 node dist/index.js

服务器将在以下时间可用http://localhost:3001支持服务器发送事件。

许可证

此MCP服务器根据MIT许可证获得许可。这意味着您可以根据MIT许可证的条款和条件自由使用、修改和分发软件。有关更多详细信息,请参阅项目存储库中的LICENSE文件。