目录
了解 Telegram 机器人及其用途
设置 BotFather:第一步
使用 BotFather 创建你的第一个机器人
获取并使用机器人令牌
了解 Telegram Bot API
重要的 Bot API 方法和函数
发送你的第一条消息
处理用户消息和更新
Webhook 与轮询:选择更新方式
自定义机器人的行为
错误处理与调试
机器人开发最佳实践
提升你的 Telegram 使用体验,善用 Turrit
创建 Telegram 机器人,可为自动化和用户互动带来无限可能。无论你想建立通知系统、制作客服工具,还是开发有趣的互动体验,学习设置 BotFather、使用 Telegram Bot API,并发送第一条消息都很重要。这份完整的新手指南会逐步带你完成整个流程,从初始设置到发送消息及处理用户互动。
认识 Telegram 机器人及其用途
Telegram 机器人是无需电话号码即可设置和运行的特殊账号。它们在服务器上运行,并通过 Telegram Bot API 与用户互动。这是一种简单的 REST API,可让你发送和接收消息、处理更新并自动执行任务。机器人能回答问题、发送通知、处理交易或管理群组对话。
Telegram 机器人的优点在于简单而强大。与其他消息平台不同,Telegram 提供易于上手的 API,适合各种技能水平的开发者。机器人可无缝整合到 Telegram 聊天、频道和群组中,非常适合希望简化工作流程的企业与个人用户。
从一开始就了解机器人要完成的任务,有助于规划其结构和功能。你的机器人要响应特定指令、提供即时数据,还是处理管理工作?明确用途有助于指导开发过程中的每项决策。
设置 BotFather:你的第一步
BotFather 是官方的 Telegram Bot,用于管理 Bot 的创建和配置。它是你的控制中心,可用于设置新 Bot、管理设置以及获取重要凭据。首先,你需要在设备上访问 Telegram,无论是通过手机应用还是桌面客户端。
打开 Telegram,并在搜索栏中查找 BotFather。找到名称旁带有 Bot 图标的已验证 Bot。轻触它,打开与 BotFather 的聊天界面。这个界面看起来像普通对话,但你交流的对象不是个人,而是自动化系统。
BotFather 使用命令系统来处理你的请求。命令是以正斜杠(/)开头的特殊消息。输入命令后,BotFather 会识别并执行相应操作。了解可用命令后,管理 Bot 会更高效、更简单。
使用 BotFather 创建你的第一个 Bot
要创建新 Bot,请在聊天中输入命令 /newbot 并发送。打开 BotFather 聊天后,BotFather 会回复消息,要求你为 Bot 选择名称。这个名称会显示在 Bot 个人资料和搜索结果中。请选择能够体现 Bot 用途的描述性名称。
提供名称后,BotFather 会要求为 Bot 设置用户名。用户名必须在整个 Telegram 中唯一,并且必须以单词“bot”结尾。例如,你可以选择“MyNotificationBot”或“DataProcessorBot”。Telegram 会在确认前检查用户名是否可用。
确认用户名后,BotFather就会创建你的机器人,并提供重要信息。其中最重要的是机器人令牌,它是一串较长的数字和字母。这个令牌是你的身份验证密钥,用于向 Telegram Bot API证明你有权控制这个特定机器人。
BotFather还会提供一个启动机器人的直接链接。点击链接后,会在 Telegram 中打开机器人的聊天。此时机器人已经创建,但尚未被编程执行任何操作。你需要使用该令牌开始编写机器人的代码。
获取和使用机器人令牌
机器人令牌是身份验证凭证,可让你的代码与 Telegram Bot API 通信。BotFather会在创建确认消息中显示令牌。你也可以随时先输入 /mybots,然后在 BotFather中选择你的机器人,再点击“API Token”重新获取。
请像密码一样保护机器人令牌。如果有人获取了令牌,就可以控制你的机器人,并可能造成损害。切勿公开分享令牌或将其提交到公共代码仓库。请将其保存在环境变量或配置文件中,并确保这些文件保持私密和安全。
在开发环境中,你可以将机器人令牌作为代码中的变量来访问。不同编程语言处理方式各异,但原则相同:将令牌与代码逻辑分开存放,并在需要时引用。常用于开发机器人的语言包括 Python、JavaScript 和 PHP。
安全保存令牌后,就可以开始向 Telegram Bot API发送请求。每次 API 调用的 URL 中都要包含令牌,以标识发出请求的机器人。
了解 Telegram Bot API
Telegram Bot API 是一种 REST API,可让你发送和接收消息、管理媒体文件、处理用户互动,并控制机器人的各项行为。所有通信都通过 HTTPS 请求发送到 Telegram 的服务器。
所有 API 请求的基础 URL 是 https://api.telegram.org/bot,后接你的机器人令牌。在令牌后附加要调用的具体方法。例如,要获取机器人信息,请求 https://api.telegram.org/botYOUR_TOKEN/getMe。
API 同时接受 GET 和 POST 请求。GET 请求较简单,适用于基本查询;而 POST 请求则可让你发送较大的载荷及更复杂的数据。发送带有媒体或详细格式的消息时,通常会使用 POST 请求。
API 会以 JSON 格式返回响应,这是一种标准化的数据结构组织方式。你的代码会解析这些 JSON 响应,以提取所需信息。理解 JSON 结构,对于有效使用 Telegram Bot API 至关重要。
Bot API 的主要方法与功能
Telegram Bot API 提供了许多可用于不同任务的方法。最基础且最常用的方法是 sendMessage,它会向聊天发送文本消息。此方法需要聊天 ID(用户或群组的唯一标识符)以及你要发送的消息文本。
getUpdates 是另一种重要方法,用于获取用户的新消息和互动。当用户向机器人发送消息或按下按钮时,这些互动会成为更新。定期调用 getUpdates,机器人就能检测到用户的互动并作出相应回应。
sendPhoto 可向用户发送图片,sendDocument 用于传输文件,而 sendLocation 则用于分享地理坐标。这些方法扩展了机器人的功能,使其不再局限于发送简单的文本消息。每种方法都有各自的参数和要求。
editMessageText 可修改已发送的消息,适合更新动态资料。deleteMessage 会从聊天记录中移除消息。pinChatMessage 会将重要消息置顶,让它们持续显示在聊天顶部。
要处理用户交互,answerCallbackQuery会响应按钮点击,而sendReply Markup会在消息中添加自定义键盘和按钮。这些方法能带来更具互动性的体验,让用户点击按钮即可操作,而不必输入命令。
发送你的第一条消息
若要通过 Telegram Bot API 发送第一条消息,你需要两项资料:收件人的聊天 ID,以及机器人的令牌。聊天 ID 是 Telegram 中用户或群组的唯一识别码。
如果你正在测试机器人,可以先向机器人发送消息,再读取更新内容,以取得自己的聊天 ID。机器人收到消息时,更新资料中会包含你的聊天 ID。提取该 ID 后,就可以用它向自己发送消息。
以下是一个发送消息的 API 请求示例。你可以使用命令列工具 curl 来发送网络请求,输入:
curl -X POST https://api.telegram.org/botYOUR_BOT_TOKEN/sendMessage -d chat_id=YOUR_CHAT_ID -d text="Hello%20World"
将 YOUR_BOT_TOKEN 替换为实际令牌,并将 YOUR_CHAT_ID 替换为聊天 ID。URL 中的 %20 表示空格字符。若请求成功,API 会返回包含消息详情的 JSON 响应,其中包括刚发送消息的 ID 和时间戳。
在实际应用中,你会使用程式语言的 HTTP 函式库,而不是 curl。Python 开发者常用 requests 函式库;JavaScript 开发者会使用 fetch 或 axios;而 PHP 开发者则使用 cURL。
以下示范如何使用 Python 发送消息:
import requests
token = "YOUR_BOT_TOKEN"
chat_id = "YOUR_CHAT_ID"
url = f"https://api.telegram.org/bot{token}/sendMessage"
data = {"chat_id": chat_id, "text": "Hello World"}
response = requests.post(url, data=data)
print(response.json())
这段代码会导入 requests 库,使用你的令牌构建 API URL,创建包含聊天 ID 和消息的数据字典,发送 POST 请求,并打印响应。如果一切正常,你会收到确认消息,其中包含已发送消息的详细信息。
处理用户消息和更新
要让机器人真正具备互动能力,它需要接收并回复用户消息。getUpdates 方法会获取自上次检查以来用户发送的所有新消息和互动。
每个更新都是一个 JSON 对象,其中包含事件信息。消息更新包括发送者信息、聊天 ID、消息文本和消息 ID。你的代码需要解析这些信息并决定如何回复。
最简单的方法是轮询:机器人按固定间隔持续调用 getUpdates,检查是否有新消息。以下是一个基本的 Python 轮询循环:
import requests
import time
token = "YOUR_BOT_TOKEN"
offset = 0
while True:
url = f"https://api.telegram.org/bot{token}/getUpdates?offset={offset}"
response = requests.get(url)
updates = response.json()["result"]
for update in updates:
chat_id = update["message"]["chat"]["id"]
text = update["message"]["text"]
offset = update["update_id"] + 1
# Send response
send_url = f"https://api.telegram.org/bot{token}/sendMessage"
send_data = {"chat_id": chat_id, "text": f"You said: {text}"}
requests.post(send_url, data=send_data)
time.sleep(1)
这个循环会持续检查更新、处理每条消息并发送回复。offset 参数可确保不会重复处理同一条消息。处理完更新后,你需要将 offset 增加到下一个更新 ID。
用户向机器人发送消息时,它会以消息更新的形式出现。代码会提取聊天 ID 和消息文本,构建回复,然后使用 sendMessage 将其发回。
Webhook 与轮询:选择更新方式
轮询和 Webhook 是从 Telegram Bot API 接收更新的两种不同策略。轮询对初学者来说更简单,但效率较低。Webhook 更高级,但更适合生产环境。
轮询会定期向 Telegram 查询是否有新更新。你的机器人每隔一秒或几秒发送一次请求,检查并处理消息。它的优点是简单:无需设置服务器或配置复杂网络。缺点是轮询间隔太长会让用户延迟收到回复,间隔太短则会因不必要的请求浪费资源。
Webhook 的工作方式不同。机器人不再主动请求更新,而是由 Telegram 将更新发送到你提供的 URL。用户发送消息时,Telegram 会立即将该更新作为 HTTP 请求发送到你的 Webhook 端点。你的服务器接收并处理请求,然后发送响应。
设置 webhook 需要一台可公开访问并支持 HTTPS 的服务器。你需要生成 SSL 证书,并向 Telegram 提供服务器地址。由于配置较复杂,webhook 不太适合初学者,但对于较大型的应用,它能提供更好的性能和扩展性。
对大多数初学者来说,轮询是合适的起步方式。等机器人逐渐成长、需要更好的性能时,你可以迁移到 webhook。两种方式都能实现同样的结果:让机器人响应用户消息。
自定义机器人的行为
机器人能够收发消息后,下一步是为它添加个性和自定义回复。你可以编程让机器人识别特定命令并作出相应回复,而不是简单复述用户说的话。
Telegram 中的命令以正斜杠 (/) 开头。常见命令包括用户首次打开机器人时会点击的 /start、用于获取帮助的 /help,以及 /weather 或 /translate 等自定义命令。你的代码会检查消息是否以命令开头,并触发相应的回复。
以下是处理这些命令的一种方式:
text = update["message"]["text"]
if text == "/start":
response_text = "Welcome to my bot!"
elif text == "/help":
response_text = "Here are the commands: /start /help /about"
elif text == "/about":
response_text = "I am a helpful bot created with the Telegram Bot API"
else:
response_text = "I do not understand that command"
除了命令,你还可以添加按钮和键盘,让交互更直观。回复键盘会显示自定义按钮,取代标准键盘;内联键盘则会将按钮直接附加到消息上。用户可以点击按钮而不是输入命令,从而显著改善使用体验。
你也可以通过BotFather自订机器人的简介、简短说明和指令。输入/mybots,选择你的机器人,再点选“Edit Bot”。你可以从中更新影响机器人对用户显示方式的各种设定。
错误处理与除错
使用Telegram Bot API时,有时会遇到问题。了解如何除错和处理错误,是建立可靠机器人的关键。
Telegram Bot API会以JSON对象传回错误响应,其中ok字段为 false,并附有错误代码和说明。例如,若你尝试向无效的聊天 ID 发送消息,就会收到类似“Bad Request: chat not found。”的错误。
处理结果前,请务必检查 API 响应中的ok字段:
response = requests.post(url, data=data)
result = response.json()
if not result["ok"]:
print(f"Error: {result['description']}")
else:
message = result["result"]
print(f"Message sent with ID {message['message_id']}")
常见错误包括聊天 ID 无效、请求格式错误、触发速率限制(短时间内发送过多请求),以及网络逾时。采用指数退避重试机制,有助于妥善处理暂时性故障。
记录机器人的所有活动,包括收到的消息、发出的回复和错误。除错时,日志能提供宝贵资讯。许多开发者会使用Sentry等服务,或简单的日志档案来追踪机器人行为。
使用不同类型的输入、边缘情况和错误情境,彻底测试你的机器人。发送空消息、特殊字符和超长文字,观察机器人如何处理。事先测试可避免真实用户互动时出现意外。
机器人开发最佳实践
开发Telegram机器人时,遵循最佳实践有助于确保机器人可靠、易维护且方便用户使用。
第一,务必验证并清理用户输入。不要假设用户输入的格式符合预期。检查消息长度,验证网址,并在将任何数据用于数据库查询或 API 调用前进行转义。
第二,妥善处理错误并记录日志。机器人应能优雅地处理错误,而不会崩溃。记录足够详细的错误信息,以便之后排查问题。应向用户显示有帮助的错误消息,而不是晦涩难懂的提示。
第三,遵守速率限制。Telegram会限制 API 调用速率以防止滥用。不要发起不必要的 API 调用;遇到速率限制时,应采用指数退避,而不是在短时间内循环发送请求。
第四,保护机器人令牌和其他敏感数据。使用环境变量存储令牌,绝不要将其提交到版本控制中,并确保所有通信都使用HTTPS。如果令牌泄露,请立即通过BotFather将其停用并创建新令牌。
第五,以用户为中心设计机器人。消息要简洁清楚;使用按钮和键盘,避免要求用户输入命令;当用户执行意料之外的操作时,提供有帮助的回应。设计良好的机器人能提升用户满意度。
第六,部署前进行充分测试。测试所有命令、按钮、错误场景和边缘情况。请其他人测试机器人并提供反馈。花时间测试,可以减少之后处理缺陷所花的时间。
第七,清楚记录机器人的功能和指令。好的机器人会提供随时可查的帮助信息。你可以创建一个 /help 指令,列出所有可用功能并说明使用方法。
最后,保持机器人为最新版本。Telegram 会不时推出新功能和 API 更新。请留意相关变化并更新机器人,以便使用新能力。
使用 Turrit 提升你的 Telegram 体验
机器人运行后,你可能还想通过高级功能提升个人 Telegram 使用体验。Turrit 是一款创新的 Telegram 客户端,为消息平台带来强大功能,同时保留你喜爱的 Telegram 简洁体验。
Turrit 的实时翻译能力尤为突出,可消除语言障碍。AI 翻译功能可在发送前翻译消息,准确率达 99%;你也可以翻译整个聊天,或在应用内浏览器中打开的外部网页。这样,机器人就能与世界各地的用户交流,不受语言限制。
除了翻译之外,Turrit 还提供多种功能,帮助你更好地管理 Telegram。视频流功能类似于滑动浏览 TikTok,让你流畅地发现和欣赏视频内容。你可以以最高 20x 的下载速度保存喜爱的视频,并通过直观的手势控制播放。
Turrit 提供丰富的自定义选项,让你打造专属的 Telegram。你可以在侧边和底部导航布局之间切换、更换应用图标以配合主屏幕主题,也可以按喜好调整贴纸大小。此外,你最多可同时管理 10 个账号,适合拥有多个 Telegram 个人资料的用户。
Turrit 的隐私功能让你掌控自己的数据。查看账号隐私评分,并一键改善。你可以屏蔽特定关键词来过滤频道广告,也能过滤群组中的不需要消息。这些工具让你的 Telegram 使用体验更清爽,并聚焦于重要内容。
在发现内容方面,Turrit 通过新增内容搜寻功能,增强了 Telegram 的搜寻能力。你可以直接从搜寻栏探索更多群组、频道和机器人,更轻松地发现新社群与服务。扩展后的搜寻功能能帮助你准确找到所需内容。
Turrit 还提供无限超大云端储存空间,让你保存所有重要文件,无需担心空间不足。上传和下载速度最高可达标准 Telegram 的 20x,文件传输因而更加迅速。
Turrit 的介面经过改良、设计更加简洁,让日常使用 Telegram 更轻松愉快。其他功能包括仅你可见的群组备注、屏蔽广告关键词,以及最多置顶 10 个聊天,让你更灵活地管理消息环境。
如果你正在开发与全球 Telegram 用户互动的机器人,向用户推荐 Turrit 能显著提升他们的使用体验。用户会喜欢让沟通更高效、便于翻译且更个性化的工具。Turrit 提供了这些功能及更多特性,是任何 Telegram 机器人应用的理想补充。