这是一个用于管理 Telegram 消息转发的 Bash 脚本,支持多账号私聊消息实时转发到指定群组。通过交互式菜单,你可以轻松安装依赖、配置脚本、启动/停止脚本、查看日志等。
- 多系统支持:兼容 Alpine、Ubuntu/Debian、CentOS/RHEL/Fedora 等多种 Linux 发行版。
- 依赖安装:自动安装 Python 和 Telethon,自动检测系统类型。
- 脚本配置:生成 Telegram 消息转发脚本,支持多账号。
- 进程管理:内置监控进程,支持自动重启。
- 日志管理:通过
logrotate自动轮转日志,节省空间。 - 配置备份:支持配置和会话文件的备份与恢复。
- 快捷命令:安装后可使用
tg命令快速启动脚本。 - 智能引导:自动检测配置状态,引导用户完成必要步骤。
- 账户监控:自动检测小号状态,提示需要重新授权的账户。
- 交互式菜单:一键操作,简单易用。
确保你的服务器满足以下条件:
- 操作系统:支持 Alpine、Ubuntu/Debian、CentOS/RHEL/Fedora 等主流 Linux 发行版。
- 工具:已安装
curl和bash。 - 网络:可以访问 Telegram API 和 GitHub。
- 权限:需要有安装软件包的权限(通常需要 sudo 或 root)。
curl -fsSL https://raw.githubusercontent.com/mqiancheng/telegram-forward/main/telegram_forward.sh -o telegram_forward.sh && chmod +x telegram_forward.sh && ./telegram_forward.sh
运行脚本后,你会看到以下菜单:
=== Telegram 消息转发管理工具 ===
版本: 1.7.4
--- 当前状态 ---
脚本未运行
虚拟环境已创建
脚本已配置(forward.py 存在)
小号状态:正常(2 个小号)
----------------
1. 安装依赖
2. 配置管理
3. 小号状态
4. 启动脚本
5. 停止脚本
6. 重启脚本
7. 查看日志(按q可退出查看日志)
8. 卸载脚本
0. 退出
请选择一个选项:
| 选项 | 功能描述 |
|---|---|
| 1. 安装依赖 | 安装 Python、Telethon 和日志管理工具,并创建 tg 快捷命令。 |
| 2. 配置管理 | 进入配置管理子菜单,可以新建、修改、备份和恢复配置。 |
| 3. 小号状态 | 进入小号状态管理菜单,查看所有小号状态并重新授权失效的小号。 |
| 4. 启动脚本 | 启动消息转发,首次运行需登录小号。如果配置文件不存在,会自动进入配置管理菜单。 |
| 5. 停止脚本 | 停止消息转发脚本。 |
| 6. 重启脚本 | 重启消息转发脚本。如果配置文件不存在,会自动进入配置管理菜单。 |
| 7. 查看日志 | 实时查看转发日志。 |
| 8. 卸载脚本 | 卸载脚本及相关文件,但保留备份文件。 |
| 0. 退出 | 退出程序。 |
选择主菜单中的"2. 配置管理"后,会进入以下子菜单:
=== 配置管理菜单 ===
1. 新建配置
2. 修改配置
3. 备份配置
4. 恢复配置
5. 管理备份
0. 返回主菜单
请选择一个选项:
| 选项 | 功能描述 |
|---|---|
| 1. 新建配置 | 输入群组 Chat ID 和小号 API,生成转发脚本。 |
| 2. 修改配置 | 使用文本编辑器查看和编辑 forward.py 文件。 |
| 3. 备份配置 | 备份脚本配置和会话文件。 |
| 4. 恢复配置 | 从备份文件恢复配置到项目目录。 |
| 5. 管理备份 | 管理备份文件,可选择性删除备份。 |
| 0. 返回主菜单 | 返回到主菜单。 |
选择主菜单中的"3. 小号状态"后,会进入以下子菜单:
=== 小号状态菜单 ===
1. 查看小号状态
2. 重新授权小号
3. 添加新小号
4. 删除小号
0. 返回主菜单
请选择一个选项:
在这个菜单中,您可以:
- 查看小号状态:显示所有小号的状态(正常或异常)
- 重新授权小号:选择需要重新授权的小号,按照提示完成重新授权过程
- 添加新小号:添加新的小号,输入API ID和API Hash,自动创建会话文件
- 删除小号:删除不需要的小号,同时删除配置信息和会话文件
每次修改小号配置后,系统会询问是否立即重启转发脚本以应用更改。
- 访问 my.telegram.org,用小号登录。
- 点击 API development tools,创建应用:
- App title:
MyForwardApp - Short name:
forward - Platform:
Other - Description:留空
- App title:
- 提交后,记录
api_id(例如25018336)和api_hash(例如f3dba3011e3b2f9a59e0bbeff20d5db9)。
- 用大号创建私有群组,邀请小号加入。
- 在 Telegram 中搜索
@username_to_id_bot,发送/start。 - 发送群组邀请链接(例如
t.me/+xxxxx)。 - 记录返回的 Chat ID(例如
-4688142035)。
- 监听消息:脚本登录小号,监听私聊消息。
- 消息转发:将消息实时转发到指定群组。
- 自动重启:内置监控进程每30秒检查一次主脚本状态,确保脚本持续运行。
- 配置持久化:用户设置会保存到配置文件,重启后自动加载。
- 多系统适配:自动检测系统类型,使用对应的包管理器和配置路径。
- 智能引导:自动检测配置状态,引导用户完成必要步骤。
- 日志文件:位于用户主目录下的
forward.log - 自动轮转:每天轮转,保留最近 7 天日志,旧日志会被压缩。
- 查看方式:通过菜单选项 7 可以方便地查看日志。
脚本提供了配置备份和恢复功能,可以备份以下内容:
- forward.py 脚本文件
- Telegram 会话文件(session_account*.session)
- 用户配置文件
备份文件保存在 /home/backup-TGfw 目录中,格式为 forward_backup_YYYYMMDD_HHMMSS.tar.gz。
- 首次运行:需输入小号的手机号和验证码登录。
- 安全性:保护好会话文件(
session_*.session),避免泄露。 - 权限:确保小号有权限向目标群组发送消息。
- 日志隐私:脚本不记录消息内容,仅记录转发事件。
- 系统兼容性:脚本会自动检测系统类型,但在某些特殊环境可能需要手动调整。
- 账户授权:如果在 Telegram 端删除了设备授权,小号会显示为异常状态,需要通过"小号状态"菜单重新授权。
- 状态检查:脚本会在启动时自动检查小号状态,并在状态栏显示结果。
-
转发失败:
- 使用菜单选项 7 查看日志。
- 使用菜单选项 3 检查小号状态,确认是否需要重新授权。
- 确认小号是否在群组中,且有发送消息权限。
- 确保
allowed_senders配置正确(留空则转发所有私聊消息)。
-
脚本未运行:
- 使用菜单选项 3 检查小号状态。
- 使用菜单选项 6 重启脚本。
- 检查日志查找错误信息。
-
小号授权失效:
- 使用菜单选项 3 进入小号状态菜单。
- 查看标红的小号,这些小号需要重新授权。
- 输入需要重新授权的小号序号,按照提示完成重新授权。
-
依赖安装失败:
- 确保系统有足够的权限安装软件包。
- 检查网络连接是否正常。
- 对于不支持的系统,可能需要手动安装依赖。
-
配置恢复失败:
- 确保备份文件完整且未损坏。
- 尝试手动解压备份文件并复制到正确位置。
- 创建 GitHub 仓库(例如
telegram-forward)。 - 提交文件:
git init git add telegram_forward.sh README.md LICENSE git commit -m "Initial commit" git remote add origin https://github.com/mqiancheng/telegram-forward.git git push -u origin main
- 修复共享库中的重启脚本功能
- 改进
start_script函数,添加自动创建启动脚本的功能 - 增强
restart_script函数,添加更多的错误处理和日志输出 - 解决重启脚本时卡在"正在启动服务..."界面的问题
- 提高脚本启动和重启的可靠性
- 修复共享库
utils.py的下载和使用问题 - 添加
download_utils函数,确保在使用 Python 模块前下载共享库 - 修改所有调用 Python 模块的函数,先下载共享库
- 解决 "No module named 'utils'" 错误
- 提高脚本的稳定性和可靠性
- 创建共享库
utils.py,包含所有通用功能 - 修改
account_manager.py和config_manager.py以使用共享库 - 减少代码重复,提高代码的可维护性
- 统一脚本状态检查和控制功能
- 优化代码结构,减少冗余代码
- 优化重启脚本功能,添加脚本运行状态检查
- 在重启脚本前检查脚本是否正在运行,避免不必要的重启
- 在停止脚本前检查脚本是否正在运行,避免不必要的停止
- 统一使用 restart_script 函数进行脚本重启操作
- 修复代码中的冗余和无效代码
- 在小号管理菜单中添加"添加小号"和"删除小号"功能
- 添加小号时自动创建会话文件并进行验证
- 删除小号时同时删除配置信息和会话文件
- 在修改配置和修改小号后,添加重启脚本的确认功能
- 优化小号管理菜单结构,分离查看状态和重新授权功能
- 改进用户体验,提供更清晰的操作引导
- 完全剥离配置管理功能到独立的 Python 模块
- 移除主脚本中的备份和恢复功能,改为调用配置管理模块
- 移除主脚本中的配置脚本功能,改为调用配置管理模块
- 优化代码结构,减少冗余代码
- 减少主脚本代码量,提高可维护性
- 修复配置管理模块中的事件循环问题
- 移除无用的 supervisor 相关代码和参数
- 添加配置管理模块,将配置相关功能分离到单独的 Python 脚本
- 改进备份功能,只备份核心文件(API 凭证和会话文件)
- 添加备份文件管理功能,支持选择性删除备份
- 将备份目录改为
/home/backup-TGfw,更易于访问 - 优化代码结构,减少冗余
- 添加小号状态检测和管理功能
- 在主菜单中显示小号状态信息
- 添加小号状态管理菜单,支持查看所有小号状态
- 添加重新授权功能,支持选择性地重新授权失效的小号
- 优化用户体验,提供清晰的状态指示和操作引导
- 更新文档,反映新的功能和菜单结构
- 优化恢复配置功能,减少不必要的提示信息
- 改进恢复配置时的脚本停止逻辑,只在脚本运行时显示停止提示
- 修复在恢复配置时可能出现的混淆提示
- 移除 supervisord 依赖,使用内置监控进程实现自动重启功能
- 添加
tg快捷命令,可在任何位置快速启动脚本 - 优化用户体验,移除不必要的 Enter 确认步骤
- 增强智能引导,在配置文件不存在时自动进入配置管理菜单
- 简化菜单结构,移除冗余选项
- 更新文档,反映新的功能和变化
- 优化菜单结构,合并配置相关功能到统一的配置管理菜单
- 改进恢复配置功能,确保从备份目录复制到项目目录
- 在启动脚本时添加配置文件检查,提示用户先配置
- 改进卸载功能,保留备份文件但删除其他所有项目相关文件
- 确保卸载时退出虚拟环境
- 更新文档,反映新的菜单结构和功能
- 添加多系统支持(Alpine、Ubuntu/Debian、CentOS/RHEL/Fedora)
- 增强错误处理和恢复机制
- 添加配置备份和恢复功能
- 添加系统信息和网络连接测试
- 改进 supervisord 管理
- 配置持久化保存
- 更新文档
- 添加 supervisord 停止设置
- 改进进程管理
- 修复进程残留问题
- 初始版本
欢迎提交 Issue 或 Pull Request,优化脚本功能!如果你有任何建议或发现了 bug,请在 GitHub 上提交 Issue。
MIT License