如何使用Telethon从URL发送图片/媒体(适配Heroku环境)
通过URL发送图片/媒体的实现方法(适配Heroku环境)
方案1:直接使用Bot框架的URL发送接口
大部分主流Bot开发框架都支持直接传入媒体URL完成发送,无需先下载到本地。以你现有代码的风格为例,假设你的Bot库支持这类方法,代码可以改成:
# 直接传入图片URL发送 BOT.send_file(chat, "https://example.com/your-target-image.jpg") # 部分框架可能有专门的send_photo方法,用法类似 # BOT.send_photo(chat, "https://example.com/your-target-image.jpg")
方案2:内存中下载后上传(适配不支持URL直接发送的框架)
如果你的Bot库不支持直接传入URL,可通过网络请求将图片下载到内存(避免Heroku本地存储的限制),再调用上传接口:
import requests # 从目标URL获取图片二进制数据 img_response = requests.get("https://example.com/your-target-image.jpg") # 确保请求成功 if img_response.status_code == 200: # 部分库接受字节流,需指定文件名 file = BOT.upload_file(img_response.content, filename="photo.jpg") BOT.send_file(chat, file)
注意事项
- 确保目标媒体URL是公开可访问的,没有防盗链、权限验证等限制
- 大文件要注意内存占用,Heroku免费/基础版有内存配额限制,避免超出导致进程被杀死
- 不同Bot平台对媒体类型、大小、URL格式有不同要求,需对应平台官方文档调整参数
内容的提问来源于stack exchange,提问作者Akuma
相关产品推荐
相关产品推荐

