![]()
A telegram downloader on windows and linux platform based on Python.
[!NOTE] 由于本项目提供的Linux版本可能对较早版本的Linux系统兼容性较差。
若无法运行的Linux用户请阅读:"3.0.在生产环境中运行(对于Linux用户)"或"6.0.通过Docker运行"。
如果你遇到任何问题,请先仔细阅读:"常见问题及解决方案汇总"。
没有找到解决方案再进群或私聊提问。
本项目以MIT协议开源发布,本项目及依赖本项目发布的软件均为免费非盈利性质。仅限于合法、合规的用途。严禁使用本软件从事任何违反法律法规、侵犯他人合法权益或干扰平台正常运营的行为。
所有使用本软件的行为及其后果均由使用者自行承担全部法律责任,开发者不对任何使用行为及其后果负责。
本项目按“原样”提供,不附带任何明示或暗示的保证。
| 作者 | Gentlesprite |
|---|---|
| YouTube视频教程 | 点击观看 |
| Telegram交流群 | 点击加入 |
| 支持作者 | 点击跳转 |
| 平台 | 下载地址 | 备注 |
|---|---|---|
| 蓝奏云 | 点击跳转 | 密码:ceze |
| Github | 点击跳转 | – |
| Gitcode | 点击跳转 | – |
| Gitee | 点击跳转 | 仅发布源码 |
| Telegram交流群 | 点击加入 | 群文件 |
点击展开
对于Windows11用户,Windows Terminal默认已经安装好,可跳过下载的步骤,直接前往第3步。(将Windows Terminal设为默认终端)
对于Windows10用户,推荐使用Windows Terminal作为默认终端,仅作为推荐安装,无论安装与否不会影响本软件的使用,Windows Terminal能提供更出色的显示、交互、体验效果,以及避免出现文字显示乱码。
Windows Terminal下载地址如下表:
| 平台 | 下载地址 |
|---|---|
| 微软商店 | 点击跳转 |
| Github | 点击跳转 |
win+r输入wt回车打开,然后将Windows Terminal设为默认终端再启动软件,教程如下:![]()
![]()
前往网站:https://my.telegram.org/auth
填写自己绑定Telegram电报的手机号注意手机号格式先要+地区再写入电话号码例如+12223334455,+1为地区,222333445为你绑定Telegram的手机号,填写后点击Next。
![]()
Telegram客户端,此时会收到来自Telegram账号的消息,将上面的验证码填入Confirmation code框中,然后点击Sign in。![]()
![]()
API development tools按照提示填入即可。![]()
api_hash和api_id保存下载,切记不要泄露给任何人![!NOTE] 如果配置了机器人,只要保持软件运行,就能实现多端发送下载命令并且随时进行下载。
故可以将软件部署在服务器上,无论是Windows还是Linux平台。
Windows平台可直接使用releases里发布的二进制文件放在服务器运行。
Linux平台的部署教程请阅读:"3.0.在生产环境中运行(对于Linux用户)"。
点击展开
前往网站:https://t.me/BotFather
打开后会提示"要打开 Telegram Desktop 吗?"此时点击"打开Telegram Desktop"如下图所示:
![]()
如果没有这个弹窗,说明电脑没有安装Telegram客户端,安装后再重试即可。
![]()
/newbot后回车,如下图所示:![]()
它会回复你"Alright, a new bot. How are we going to call it? Please choose a name for your bot."意思是给机器人取一个名字,如下图所示:
![]()
/setname命令进行修改。![]()
bot结尾,比如 HelloWorld_bot 或 HelloWorldbot 都是合法的。如果设置的名字已经被占用需要重新设置。如设置成了 trmd_bot但是这个名字已经有人使用了,此时会提示"Sorry, this username is already taken. Please try something different."意思是已经被使用了,需要拟定一个不重复的,如下图所示:![]()
如果结果如上图所示,则就代表名字重复了,需要重新拟定一个。
"Done! Congratulations on your new bot. . ."如下图所示:![]()
如果结果如上图所示,则代表bot_token申请成功了,箭头指的红框处就是你所申请的bot_token,切记不要泄露给任何人!
y代表需要使用,如下图所示:![]()
然后在上图箭头所指处填入"2.2.1.申请教程"第7步申请的bot_token后回车,即可配置完成。
![]()
Telegram客户端中找到与BotFather的对话框,找到"2.2.1.申请教程"第7步对话的位置(或者用你自己的方式找到你的机器人的对话框),如下图所示:![]()
然后在上图箭头所指处即可跳转到机器人对话框。
![]()
不出意外,会收到一条来自机器人发送的消息,如下图所示:
![]()
如果没收到尝试尝试给机器人发送任意命令。
| 命令 | 用法 | 解释 |
|---|---|---|
/help |
向机器人发送发送/help即可。 |
展示可用命令。 |
/download |
/download 链接1 链接2 链接3 链接n或/download 频道链接 1 100 |
分配新的下载任务,两种方式可选(指定链接下载和范围下载,具体使用方法请见下方说明)。 |
/table |
向机器人发送/table即可。 |
在终端输出当前下载情况的统计信息。 |
/forward |
/forward https://t.me/A https://t.me/B 1 100 |
将频道A的消息转发至频道B,其中1代表起始ID,100代表截止ID。 |
/exit |
向机器人发送/exit即可。 |
退出软件。 |
/listen_download |
/listen_download https://t.me/A https://t.me/B https://t.me/n |
实时监听频道A、频道B和频道n的最新消息(视频和图片)进行下载。 |
/listen_forward |
/listen_forward https://t.me/A https://t.me/B |
实时监听频道A的最新消息(任意消息)转发至频道B。但当频道A为私密频道时候无法转发。 |
/listen_info |
向机器人发送/listen_info即可。 |
查看当前已经创建的监听信息。 |
/upload |
/upload 本地文件 目标频道 |
上传本地的文件到指定频道。 |
/upload_r |
/upload_r 本地文件夹 目标频道 |
递归上传文件夹(包含子文件夹)到指定频道。 |
/download_chat |
/download_chat 频道链接 |
下载指定频道并支持通过内联键盘自定义内容过滤。 |
其他功能:
- (≥v1.8.7)转发视频、图片、音频、语音、GIF、文档、视频笔记类型的消息给机器人,即可创建下载任务。
- 此项功能不受用户自定义下载类型限制,确保文件即时获取。
- 转发的消息将按新消息处理,每次均生成独立文件命名。暂不支持重复文件识别,请妥善管理多次转发的相同内容。
- 此功能仅用于便利用户日常使用,对于无法被转发、下载的消息,请根据实际需求使用对应的命令。
/help命令使用教程,如下图所示:![]()
![]()
/download命令使用教程,如下图所示:
> ⚠️ 注意:
> 自版本≥v1.6.3起:
> 已全面支持下载时的断点续传功能(支持所有上传场景),增强了在较差网络环境下的传输稳定性与可靠性。
方式一:
方式二:
≥v1.5.1的新增功能,用于对于单一链接的范围下载,并且该方式要求指定频道链接、起始ID与结束ID:bash
# 语法格式如下:
/download 频道链接 起始ID 结束ID
# 举例:
/download https://t.me/test 1 500
# 代表下载https://t.me/test从消息ID=1到结束ID=500的媒体。
/table命令使用教程:
需要注意的是,这个表格是实时的状态,并不是最终下载完成的结果,每一次使用它都会随着当前的下载记录而更新。
链接统计表的使用,如下图所示:
![]()
![]()
注意:由于早期代码设计缺陷,链接统计表为后续支持的功能:
链接统计表仅会统计所有支持的类型,并不会只统计用户当前所选择的类型。
链接统计表对于评论区媒体的统计,会出现总数统计错误的问题,体现在总数为1,小于当前的下载数,完成率>>100%的问题(该问题已在≥v1.5.9修复)。
当用户未选择下载所有支持的类型时,在用户所选择的类型下载完成后(或使用机器人发送链接统计表),尽管所有用户指定类型的文件已经下载完成,当链接统计表显示完成率不为100%时,代表该链接还存在其他用户未指定的文件类型,但实际用户所指定的类型已经下载完成了,是正常情况。
版本≥v1.6.5起已支持导出表格功能,通过该命令可在运行时控制是否在退出后导出指定类型的表格。
计数统计表的使用,如下图所示:
![]()
![]()
/forward命令使用教程:
⚠️ 注意:
消息能否转发,在于频道是否开启了限制保存内容功能。
如果无法转发,机器人会在聊天框提供一个下载按钮与下载后上传按钮(≥v1.6.7)。
自版本≥v1.6.9起:
/forward将支持过滤转发类型。
可通过[帮助页面]->[设置]->[转发设置]进行修改。
自版本≥v1.7.5起:
为确保"受限转发"功能顺利完成,在下载后上传过程中,创建下载任务时将忽略配置文件中设置的下载类型限制,此时(指"受限转发"情况)/forward命令无法按照[转发设置]过滤类型。
自版本≥v1.8.5起:
为确保"受限转发"功能顺利完成,在下载后上传过程中,创建下载任务时将忽略该链接是否被重复添加的判定。
转发消息语法:
bash
/forward 频道A 频道B 起始ID 结束ID
实例:
https://t.me/test频道中从消息ID=1到结束ID=500的消息到 https://t.me/test2 频道。bash
/forward https://t.me/test https://t.me/test2 1 500
转发至个人收藏夹(任选一种命令即可):
bash
/forward https://t.me/test me 1 500
bash
/forward https://t.me/test self 1 500
方式2,使用 https://t.me/用户名 :
用户名即指个人账户信息里@后面那一串,需用户提前手动自己设置,否则无法使用该方式。
@developer,此时指向个人的链接即为https://t.me/developer。bash
/forward https://t.me/test https://t.me/developer 1 500
https://t.me/test 频道 中从消息ID=1到结束ID=500的消息到个人收藏夹。转发个人收藏夹的内容至任意频道:
方式1:
bash
/forward me https://t.me/test 1 500
方式2:
bash
/forward https://t.me/developer me 1 500
无论使用方式1或方式2,都代表转发个人收藏夹中从消息ID=1到结束ID=500的消息到https://t.me/test 频道。
/exit命令使用教程,如下图所示:
![]()
/listen_download命令使用教程:
/listen_download监听下载用于,实时监听该链接的最新消息进行下载。
当被监听的频道有可下载的内容时,就会自动发送命令下载。
bash
/listen_download https://t.me/A
bash
/listen_download https://t.me/A
bash
/listen_download https://t.me/A https://t.me/B https://t.me/n
```bash /listen_download
$ claude mcp add Telegram_Restricted_Media_Downloader \
-- python -m otcore.mcp_server <graph>