Telegram机器人是自动化操作的利器,而发送图片和文件更是日常高频需求。无论是个人助理、群管机器人还是内容分发工具,掌握如何让机器人发送媒体文件都至关重要。本教程从零开始,手把手教您创建机器人、理解API机制,并给出可直接运行的代码示例,让您轻松上手。
一、Telegram机器人能做什么?为什么需要发送图片/文件?
Telegram机器人(Bot)是基于Telegram Bot API运行的自动账户,可以被用来接收消息、回复消息、管理群组等。而发送图片和文件的能力,让机器人从“文字助手”升级为“全能管家”。典型场景包括:
- 定时给群组推送每日报告(含图表图片);
- 在频道中自动发布带封面的文章链接;
- 接收用户上传的照片后自动处理并返回结果;
- 将服务器日志或备份文件发送到指定聊天窗口。
理解发送原理是基础,下面我们进入实操。
二、通过BotFather创建机器人并获取Token
一切操作的前提是拥有一个机器人。请按以下步骤操作:
- 在Telegram中搜索并打开@BotFather(官方机器人)。
- 发送
/newbot命令,按照提示为机器人命名(显示名)和设置用户名(必须以bot结尾,例如my_file_bot)。 - 创建成功后,BotFather会返回一个HTTP API Token,形如:
123456789:ABCdefGHIJKlmnoPQRstUVWXYZ-abc。请妥善保管此Token,它相当于机器人的“密码”。
可使用/mybots随时查看或管理已有机器人。
三、Bot API中的发送方法概览
Telegram Bot API提供了多种发送媒体文件的方法,常用如下:
| 方法名 | 作用 | 支持类型 |
|---|---|---|
| sendPhoto | 发送图片 | photo |
| sendAudio | 发送音频 | audio |
| sendDocument | 发送文件(任意类型) | document |
| sendVideo | 发送视频 | video |
| sendAnimation | 发送GIF或MP4动画 | animation |
| sendMediaGroup | 发送相册(多图/多文件) | media |
每个方法都可通过HTTP POST请求调用,官方地址为:https://api.telegram.org/bot<token>/<method>。用户只需将图片或文件通过multipart/form-data形式上传,或者传入已有的file_id(之前发送过的文件ID)即可。
四、使用HTTP请求直接发送图片
不依赖任何第三方库,最简单的方式就是使用curl命令。假设Token为123:ABC,目标聊天ID为@mygroup或数字ID,本地图片路径为photo.jpg:
curl -F "chat_id=@mygroup" -F "photo=@photo.jpg" https://api.telegram.org/bot123:ABC/sendPhoto
若要发送文件(文档),只需将方法改为sendDocument,参数名改为document:
curl -F "chat_id=@mygroup" -F "document=@report.pdf" https://api.telegram.org/bot123:ABC/sendDocument
注意:Telegram Bot API限制机器人主动向用户发送消息的频率,且用户必须先与机器人开始对话(发送过“/start”),否则机器人无法主动推送消息。同时,文件大小上限为50MB(普通机器人)或2GB(本地机器人)。
五、使用Python库实现智能化发送
对于复杂业务,推荐使用官方推荐的python-telegram-bot库(或aiogram)。以下示例展示如何发送图片和文件:
from telegram import Bot
from telegram.error import TelegramError
# 初始化机器人
bot = Bot(token="123:ABC")
# 发送图片
bot.send_photo(chat_id="@mygroup", photo=open("photo.jpg", "rb"))
# 发送文件
bot.send_document(chat_id="@mygroup", document=open("report.pdf", "rb"))
# 发送多图相册
media_group = [
{"type": "photo", "media": open("p1.jpg", "rb")},
{"type": "photo", "media": open("p2.jpg", "rb")}
]
bot.send_media_group(chat_id="@mygroup", media=media_group)
使用库的好处是异常处理更完善,还支持异步、回调等高级功能。安装库:pip install python-telegram-bot。
六、实用技巧与注意事项
- 获取chat_id:向机器人发送消息后,可通过
getUpdates方法或访问https://api.telegram.org/bot<token>/getUpdates查看“from”里的“id”。 - 重用file_id:已经发送过的文件会返回
file_id,之后再次发送时直接传入该ID即可,无需重新上传,节省带宽。 - 压缩图片:Telegram会自动压缩图片,如需无损发送原图,请使用
sendDocument并标记为“文档”。 - 遵守官方限制:发送频率过高会触发409错误,官方建议每秒最多30条消息,且注意群组内不要发送无关内容,避免被限制。
- 安全性:永远不要泄露Bot Token,若泄露请立即在BotFather中
/revoke重置。
七、常见问题解答(FAQ)
1. 机器人可以发送文件给任何人吗?
不可以。用户必须先触发/start且未屏蔽机器人,机器人才能发送消息。这是Telegram的防骚扰机制。
2. 发送图片时图片会被压缩吗?
使用sendPhoto会被压缩,因为Telegram会对照片进行优化。若要发送原图,建议使用sendDocument发送图片文件。
3. 文件大小限制是多少?
通过Bot API发送的文件大小上限为50MB,但使用本地机器人(通过Telegram Bot API本地版)可以扩展至2GB。
4. 如何查看发送失败的原因?
Telegram会返回错误描述,常见为403(被用户屏蔽)、400(参数错误)、429(请求过快)。调试时可开启日志记录。
总结
本教程系统梳理了Telegram机器人发送图片和文件的完整流程:创建机器人、理解API、使用curl或Python发送,并提供了关键技巧和注意事项。现在您已经可以动手实现一个简单的自动化文件推送机器人了。后续可结合Webhook、定时任务等,打造更强大的助手。如果在官方下载或安装中遇到问题,欢迎浏览本站其他教程获取帮助。