n8n 是一个强大的工作流自动化工具,允许您连接不同的应用程序和服务,创建复杂的自动化流程。结合 Telegram Bot API,n8n 可以实现各种灵活和自动化的 Telegram 消息发送功能。本指南将深入探讨在 n8n 中使用 Telegram Bot 发送消息的各种“玩法”。
在 n8n 中与 Telegram 交互主要通过 Telegram 节点。要发送消息,您通常会使用其 "Send Message" 或类似的发送操作(如 Send Photo, Send Document 等)。
@channelusername 或 -100xxxxxxxxxx 格式)。您可以使用 {{ $json.chatId }} 这样的表达式动态传入 Chat ID。n8n 的 Telegram 节点提供了发送多种基础消息类型的功能。
最常见的消息类型。在 n8n 节点中:
Hello {{ $json.name }}!。None: 纯文本,不解析任何特殊格式。MarkdownV2: 使用 MarkdownV2 语法进行格式化。HTML: 使用 HTML 标签进行格式化。={{ $binary.data }})。这些类型的发送方式与图片类似:
通过键盘可以极大增强 Bot 的交互性。
按钮会直接显示在消息下方,点击后可以发送回调数据 (Callback Data) 或打开 URL。
reply_markup 参数。
{
"inline_keyboard": [
[
{ "text": "✅ 确认", "callback_data": "confirm_action" },
{ "text": "❌ 取消", "callback_data": "cancel_action" }
],
[
{ "text": "访问网站", "url": "https://n8n.io" }
]
]
}
替换用户输入框下方的标准键盘,提供预设的回复选项。
reply_markup 中配置。
{
"keyboard": [
[{"text": "功能一"}, {"text": "功能二"}],
[{"text": "帮助文档"}]
],
"resize_keyboard": true,
"one_time_keyboard": true,
"selective": false
}
resize_keyboard: 自动调整键盘大小。one_time_keyboard: 用户点击按钮后键盘自动隐藏。input_field_placeholder: 输入框占位符。selective: (高级) 只对特定用户显示键盘(例如被 @ 提及的用户或消息的发送者)。发送一条消息并移除当前的自定义回复键盘,恢复到标准键盘。
reply_markup JSON: { "remove_keyboard": true, "selective": false }强制用户回复这条消息(用户会看到一个回复图标)。
reply_markup JSON: { "force_reply": true, "input_field_placeholder": "请输入您的回复...", "selective": false }如前所述,Parse Mode 是控制消息外观的关键。
使用 MarkdownV2 语法。注意:_, *, [, ], (, ), ~, `, >, #, +, -, =, |, {, }, ., ! 这些字符必须转义 (在前面加 \),除非它们用于构成 Markdown 实体。
*粗体*
_斜体_
__下划线__ (n8n中可能不直接支持,Telegram支持)
~删除线~
||剧透内容||
`行内代码`
[内联URL](http://www.example.com/)
[内联提及用户](tg://user?id=123456789)
```python
# 预格式化代码块
print("Hello, Telegram!")
```
支持部分 HTML 标签:
<b>粗体</b>, <strong>粗体</strong>
<i>斜体</i>, <em>斜体</em>
<u>下划线</u>, <ins>下划线</ins> (n8n中可能不直接支持,Telegram支持)
<s>删除线</s>, <strike>删除线</strike>, <del>删除线</del>
<tg-spoiler>剧透内容</tg-spoiler>
<a href="http://www.example.com/">内联URL</a>
<a href="tg://user?id=123456789">内联提及用户</a>
<code>行内代码</code>
<pre>预格式化文本块</pre>
<pre><code class="language-python"># 预格式化代码块
print("Hello, Telegram!")</code></pre>
提示: 在 n8n 表达式中使用 Markdown 或 HTML 时,如果内容包含特殊字符,务必正确处理转义,否则可能导致发送失败或格式错误。
Telegram 节点通常在 "Additional Fields" 或 "Options" 部分提供更多控制参数:
disable_notification): 发送静默消息,用户不会收到声音或震动提醒。值为 true 或 false。protect_content): 保护消息内容,禁止转发和保存。值为 true 或 false。reply_to_message_id): 将消息作为对特定消息的回复。需要提供被回复消息的 ID。allow_sending_without_reply): 如果 reply_to_message_id 指定的消息不存在,仍然发送该消息(而不是报错)。值为 true 或 false。message_thread_id): (适用于启用了话题功能的群组) 发送到特定话题。除了基础类型,n8n 的 Telegram 节点通常也支持发送其他特殊类型的消息,具体参数可能在 "Resource" 和 "Operation" 中选择,或通过 "Additional Fields" 配置。
n8n 的强大之处在于构建完整的工作流,Telegram 消息发送是其中的一个环节。
图表加载中...
这是一个 n8n 工作流中 Telegram 节点参数的 JSON 结构简化示例,展示了如何配置发送带有内联键盘的消息:
{
"parameters": {
"chatId": "{{ $json.chatId }}", // 或直接填写 Chat ID
"text": "请选择一个操作:",
"additionalFields": {
"reply_markup": { // 注意:实际n8n界面可能直接提供Inline Keyboard的UI配置
"inline_keyboard": [
[
{ "text": "操作 A", "callback_data": "action_a" },
{ "text": "操作 B", "callback_data": "action_b" }
],
[
{ "text": "访问 n8n 官网", "url": "https://n8n.io" }
]
]
}
}
},
"name": "Send Interactive Message",
"type": "n8n-nodes-base.telegram", // 节点类型可能随版本变化
"typeVersion": 1,
"credentials": {
"telegramApi": { // 引用您配置的Telegram凭证
"id": "YOUR_CREDENTIAL_ID",
"name": "My Telegram Bot Credentials"
}
}
}
实际操作提示: 在 n8n 的图形化界面中,您通常不需要直接编辑 JSON。对于内联键盘、回复键盘等,n8n 节点会提供专门的 UI 字段来帮助您构建这些结构,例如 "Reply Markup" > "Add Inline Keyboard Row" > "Add Button"。
除了发送新消息,Telegram API 也允许对已发送的消息进行管理,n8n 的 Telegram 节点通常也支持这些操作,例如:
chat_id、message_id 和新的 text。Parse Mode 和 Reply Markup 也可以一同更新。chat_id 和 message_id。这些操作通常在 n8n Telegram 节点的 "Operation" 字段中选择,然后填写必要的参数。
getUpdates) 或一些第三方 Bot (如 @userinfobot) 获取群组 ID (通常是负数)。@channelusername) 或其 ID。为了满足格式要求,这里展示一个 MathJax 渲染的数学公式(与 Telegram 主题无直接关联):
通过组合 n8n 强大的工作流引擎和 Telegram Bot 灵活的消息功能,您可以创造出各种实用且富有创意的自动化解决方案。不断尝试和探索,发挥您的想象力吧!