如何用 n8n 做一个 Telegram 机器人?
type
status
date
slug
summary
tags
category
icon
password
author
标签
第三方接入
在很多时候,我们不想用 n8n 自带的 ChatTrigger 作为 AI Agent 的启动器。又或者是,我们希望能够对公网的其他用户提供聊天服务,这个时候怎么办呢?
n8n 自带了 Telgram 节点,可以方便的将我们的 Workflow 与 Telegram 相连,制作成 Telegram Bot。
本教程旨在指导读者从零开始,利用 n8n 和人工智能(AI)模型(如 GPT4o)构建一个能够进行基础聊天问答的 Telegram 机器人。
第一部分:准备工作
在开始构建 Telegram 机器人之前,需要进行一些必要的准备工作,包括创建 Telegram 机器人以及获取 AI 模型 API 密钥。
创建你的 Telegram 机器人

Telegram 机器人是用户与你的自动化工作流交互的界面。创建机器人需要通过 Telegram 官方提供的 BotFather。
使用 BotFather:
- 打开 BotFather: 在 Telegram 应用中,搜索并打开官方机器人
@BotFather。
- 创建新机器人: 向 BotFather 发送
/newbot命令,并按照提示操作: - 为你的机器人选择一个显示名称(例如:“我的智能问答助手”)。
- 为机器人设置一个唯一的用户名,该用户名必须以
bot结尾(例如:“MyAIHelperBot”)。
获取 Bot Token:
在机器人创建成功后,BotFather 会立即提供一个唯一的 Bot Token。这个 Token 是连接 n8n 和 Telegram API 的关键凭证,必须妥善保管,因为它相当于机器人的“密码” 2。Bot Token 是机器人在 Telegram 生态系统中的“身份证明”,没有这个 Token,n8n 无法代表你的机器人与 Telegram API 进行交互,也无法发送或接收消息。
它类似于 API 密钥,是认证和授权的核心,确保只有授权的应用程序才能控制你的机器人。
BotFather 作为创建 Telegram 机器人的唯一官方途径,其中心化管理确保了机器人创建和 Bot Token 分发的安全性和规范性,避免了使用第三方工具可能带来的潜在风险。
获取 AI 模型 API 密钥
AI 模型是你的 Telegram 机器人“智能”的核心。API 密钥是访问这些智能服务的凭证,它允许 n8n 将用户输入发送给 AI 模型进行处理,并接收其生成的智能响应。这是实现“问答”功能的关键环节,决定了机器人回答的质量和范围。
- 选择 AI 服务提供商: 建议选择主流的 AI 服务提供商,如 OpenAI(支持 GPT-4o/GPT-o3 模型)或 Google Gemini。
- 注册并获取 API 密钥: 访问所选 AI 平台的官方网站,注册账户并获取相应的 API 密钥。
这一步在网上有很多其他教程,我们在这里就不做过多介绍了。
第二部分:n8n 工作流核心构建
本部分将详细介绍如何在 n8n 中构建 Telegram 机器人的核心工作流,包括配置触发器、集成 AI 模型以及发送消息。
1. 配置 Telegram 触发器 (Telegram Trigger Node)

Telegram Trigger 节点是整个 n8n 工作流的起点,它用于监听和接收来自你的 Telegram 机器人的所有用户消息和命令 3。- 创建新工作流: 在 n8n 编辑器中,点击“New Workflow”创建一个新的工作流。
- 添加 Telegram Trigger 节点: 在画布上拖入一个
Telegram Trigger节点。
- 配置凭证: 配置该节点时,选择之前从 BotFather 获取并添加到 n8n 凭证中的 Bot Token 进行认证。
- 配置节点:在 Trigger On 中选择“Message”,也就是收到信息时激活。
- 理解数据结构:
Telegram Trigger节点接收到的数据通常是 JSON 格式。这些数据包含了关键信息,例如用于回复的chat ID(可以通过表达式{{ $node.json["chat"]["id"] }}获取)和用户发送的message text({{ $node.json["message"]["text"] }})。
Telegram Trigger 节点是机器人的“耳朵”,它确保机器人能够实时、不间断地监听并响应用户的输入。理解其输出数据结构,特别是 chat ID,对于后续将 AI 生成的答案准确发送回发起对话的用户至关重要,是维持对话上下文的基础。Telegram Trigger 节点底层工作原理是基于 Webhook 机制。当用户在 Telegram 中向机器人发送消息时,Telegram 服务器不会让 n8n 持续轮询,而是主动向 n8n 预设的 Webhook URL 发送一个 HTTP 请求(即触发事件),从而启动 n8n 工作流。Webhook 机制实现了事件驱动的实时自动化,这意味着 n8n 工作流只在有新消息时才被触发执行,而无需持续消耗资源进行轮询。这大大提高了效率、响应速度,并降低了服务器资源消耗。这种机制是许多现代自动化和集成工具的核心。如果你希望这个机器人只能你自己使用,那么你还需要在 Addition Fields 中增加
Restrict to User IDs 设置。但你的 User ID 需要先用 Workflow 接收一条信息才知道。如果你的机器人连接了 AI 服务,那么请务必进行这项设置,否则任何搜到你机器人名字的人,都可以直接与你的机器人对话并消耗你的 AI Tokens。
集成 AI 模型进行问答

AI 模型是你的 Telegram 机器人的“大脑”,它接收用户的问题或指令,利用其强大的语言理解和生成能力来处理这些输入,并产生一个逻辑上相关且有意义的答案。这是实现“问答”服务的核心环节,决定了机器人响应的智能程度和准确性。
1.连接 AI 模型节点: 从
Telegram Trigger 节点的输出端连接一个 AI 模型节点,例如 OpenAI 节点。
2.配置 AI 节点:
- 输入之前获取的 API 密钥凭证。
- 选择合适的语言模型,如
gpt-3.5-turbo或gpt-4。
- 将
Telegram Trigger节点输出的用户消息文本(例如,通过表达式{{ $json.message.text }})作为输入传递给 AI 模型的“Prompt”或“Message”字段。
发送 Telegram 消息 (Telegram Send Message Node)

这是你的 Telegram 机器人的“嘴巴”,它负责将 AI 生成的答案传递回 Telegram,从而完成与用户的交互闭环。
1.连接 Telegram 节点: 从 AI 模型节点的输出端连接一个
Telegram 节点,并选择“Send Message”操作。
2.配置 Telegram 节点:
- 凭证: 再次使用之前配置的 Telegram Bot 凭证。
- Chat ID: 这是最关键的配置之一。务必从
Telegram Trigger节点的输出中动态获取chat ID(例如{{ $node名.json["chat"]["id"] }}),确保 AI 生成的答案能够准确地发送回发起对话的特定用户。
- Text: 将 AI 模型节点的输出(即 AI 生成的答案)作为消息内容发送。
- 格式化: 考虑使用 Telegram 支持的 Markdown 或 HTML 格式化选项来美化消息内容,使其更具可读性和吸引力。
动态获取并使用正确的
chat ID 是确保对话上下文和个性化回复的关键,否则机器人可能会将回复发送给错误的聊天或无法回复。从
Telegram Trigger 节点获取 chat ID 并将其动态传递给 Telegram Send Message 节点是整个工作流中一个看似简单但至关重要的数据流操作。这不仅仅是技术上的节点连接,更是对话上下文得以维持的体现。正确、无误的数据流转确保了机器人能够将 AI 生成的响应准确地发送回发起对话的特定用户,从而维持了对话的连贯性、个性化和用户体验。如果 chat ID 丢失、错误或未动态获取,机器人就无法正确回复,导致对话中断或混乱。表:核心 n8n 节点一览
在构建 Telegram 机器人工作流的过程中,会涉及到多个 n8n 节点,每个节点都有其独特的功能和在整个自动化流程中的特定角色。对于初学者来说,理解这些节点之间的协作关系以及每个节点的具体作用可能需要一定的时间和实践。
节点名称 | 主要功能 | 在 Telegram 机器人工作流中的作用 | 关键配置项(示例) |
Telegram Trigger | 接收 Telegram 消息,启动工作流 | 监听用户输入,获取 chat ID 和消息文本 | 凭证 (Bot Token) |
OpenAI / Google AI | 处理用户消息,生成智能回复 | 根据用户提问生成答案 | 凭证 (API Key), 模型选择, Prompt |
Telegram (Send Message) | 向 Telegram 发送消息 | 将 AI 生成的答案发送给用户 | 凭证 (Bot Token), Chat ID, Text, 格式化 |
Set (可选) | 设置和存储变量 | 保存用户 ID、对话状态、从消息中提取的信息 | 字段名, 值 (例如 {{ $node.json["chat"]["id"] }}) |
IF (可选) | 基于条件进行逻辑判断 | 过滤未经授权的消息,或根据消息内容进行分支 | 条件表达式 (例如 {{ $json["message"]["text"].startsWith("你好") }}) |
Switch (可选) | 根据输入值路由到不同的工作流分支 | 根据对话状态或命令类型引导不同流程 | 表达式, 案例值 |
第三部分:进阶
管理聊天上下文与记忆
对于实现多轮对话或更复杂的问答流程,机器人需要“记忆”用户的历史消息或当前对话状态。
由于 Telegram 本身不支持外部 API 获取聊天历史,因此尽管你可以在 Telegram 聊天窗口中看到聊天历史记录,但 n8n 却无法在每次发起对话时抽取这些曾经聊过的内容。

你需要在 n8n 的
AI Agent 节点的 Memory 槽位下添加一个专门用于存储记忆的子节点,在这个子节点中,你需要将 Session ID 设置为 Define below,然后引用 Telegram 的 Chat ID 作为 Session ID:
安全与路由
需要重点强调的是,如果 Telegram 触发器没有进行适当的身份验证或过滤,任何知道机器人用户名的人都可以向其发送消息。这可能导致 API 调用限制耗尽、Webhook 信用额度被滥用,甚至在工作流连接到敏感系统时(如 Gmail、Google Calendar、内部知识库)造成数据泄露。
为了有效阻止未经授权的访问,强烈建议在
Telegram Trigger 节点之后立即添加一个 IF 节点。使用此 IF 节点来匹配 username 或 chat session ID,只允许来自授权用户或特定群组的消息通过。通过在工作流的入口处进行身份验证和授权,可以有效保护 API 资源、防止不必要的费用产生,并最重要的是,保护数据和连接系统的安全。IF 节点进行身份验证,则能在不增加代码复杂性的前提下,显著提升机器人的安全性,将风险降至最低。这不仅仅是 Telegram 机器人特有的安全问题,而是所有面向公众的自动化工作流都应考虑的通用原则。它提醒用户,即使是无代码开发,也需要具备基本的安全意识和风险管理能力。这提升了教程的专业性和实用性,将关注点从“能用”提升到“安全可用”和“负责任地使用”,对于构建生产级应用至关重要。IF 和 Switch 节点还可以用于 Telegram Bot 的刚性意图路由。比如,如果你希望你的机器人在收到特定关键词时,执行指定的任务。你完全不必要将这部分刚性的任务判断交给 AI Agent,而是在 AI Agent 直接直接用 IF 或 Switch 节点判断收到的消息是否包含指定关键词,然后将任务分流至对应的分支。这样可以大幅提高 Workflow 运行的稳定性,还能减少 AI 开支。 广告
上一篇
将抖音短视频一键收藏到 Notion,建立知识管理系统
下一篇
如何用 n8n 做一个免费的 Deep Research?
Loading...