自己动手部署Telegram双向机器人,实现消息自由转发
Telegram(TG)作为一个高效的消息工具,在技术圈和玩机圈子里非常流行。大家经常会在不同的群组或者频道之间分享消息,但是手动转发不仅麻烦,还容易漏掉关键信息。这时候,一个能够实现“双向互通”的机器人就显得非常实用了。今天我们就来聊聊如何自己动手部署一个TG双向机器人,把不同的消息源串联起来。
Telegram双向转发原理示意图
什么是双向机器人?
简单来说,双向机器人就是一个中间人的角色。它能监听A群组(或者频道)的消息,自动转发到B群组;反之,B群组的消息也能自动发到A群组。这种机制在以下几个场景特别好用:
- 团队同步:内部讨论群和对外公告频道同步。
- 多语言转播:将中文频道的消息自动翻译并转发到英文频道。
- 监控备份:将重要的服务器报警信息转发到个人私聊群。
- 羊毛收集:监控多个羊毛群,将优惠信息汇集到一个主群。
准备工作:你需要什么?
与 BotFather 对话获取 Token
不要听到“部署”就觉得很难,其实就是跑个脚本而已。在开始之前,你手头需要准备以下几样东西:
- 一台服务器(VPS):配置不需要太高,1核1G的NAT小鸡或者最便宜的甲骨文ARM都绰绰有余。系统建议选 Debian 10 或 Ubuntu 20.04 以上。
- Telegram Bot Token:这是机器人的身份证。你需要跟 @BotFather 对话,新建一个Bot,它会给你一串以
bot结尾的 token,记得保存好。 - 基础环境:服务器上需要安装 Python 或者 Node.js(取决于你使用的脚本版本),通常推荐 Python 环境,因为大多数开源脚本都是基于 Python 写的。
核心步骤:获取API ID与Hash
很多新手在这一步容易卡住。为了让脚本有权限读取消息,我们需要申请 API Credentials。
- 在 TG 搜索
@mybotfather或者访问 Telegram 官网的 API section。 - 登录你的账号,填写应用信息(名字随便填,比如“My Sync Bot”)。.
- 你会获得
api_id(一串数字)和api_hash(一串字符串),这两个参数非常重要,后续配置脚本时必须用到。
脚本选择与配置
市面上有很多开源的双向转发脚本,比如基于 Pyrogram 的各种魔改版。这里不特指某个具体代码,因为原理大同小异,一般配置文件都是 config.py 或者 .env 格式。
你需要填写的核心配置通常包括:
api_id: 上面申请到的数字ID。api_hash: 上面申请到的哈希值。bot_token: 从 @BotFather 拿到的 Token。chat_ids: 这是一个关键配置,定义了从哪里发到哪里。通常是字典或数组格式,例如{'source_group_id': 'target_group_id'}。
注意:你需要获取群组或频道的 ID。可以邀请一个 @GetMyIdBot 进群,发送任意消息,它就会回复给你对应的 Chat ID。记得要把机器人拉进去并设为管理员,否则它没法发消息。
部署实战:让它跑起来
假设你已经下载了脚本文件,并上传到了服务器的 /root/tg-bot 目录下。
-
安装依赖: 进入目录,运行
pip install -r requirements.txt。如果报错,记得先更新 pip 源。如果遇到 Pyrogram 安装失败,可能需要安装编译依赖(如build-essential),这在低配小鸡上常见。 -
填好配置: 用
nano config.py编辑配置,把之前准备的一堆 ID 和 Token 填进去,保存退出。 -
首次运行验证: 执行
python3 main.py。此时终端会显示登录二维码或者让你输入手机号(验证码)。这是为了关联你的控制账号(通常是用于拉取私有群组消息的)。如果是托管模式(只跑 Bot),可能不需要这一步,具体看脚本说明。 -
测试效果: 在源群组发一句“Hello”,看看目标群组是否收到。如果双向都要同步,记得在两边都发消息测试一下。如果发现延迟很高,可能是服务器网络问题,换一个线路好的节点就好。
后台守护进程配置
n 手动启动的脚本,如果你关闭 SSH 窗口,它就停了。为了让它24小时工作,我们需要守护进程。
方案一:使用 Systemd(推荐)
创建一个服务文件:
/etc/systemd/system/tg-fwd.service
内容如下:
[Unit]
Description=Telegram Forward Bot
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/root/tg-bot
ExecStart=/usr/bin/python3 /root/tg-bot/main.py
Restart=on-failure
[Install]
WantedBy=multi-user.target
``
然后执行 `systemctl daemon-reload` 和 `systemctl start tg-fwd`,开机自启也搞定。
**方案二:使用 Screen 或 Tmux**
如果你不想折腾 Systemd,直接在 screen 里运行也是极简方案:`screen -S bot` -> `python3 main.py` -> `Ctrl+A+D` 分离。
### 常见问题与避坑指南
* **消息发不出去?** 检查机器人是不是被限制了发消息频率,或者目标群组开启了“仅管理员可以发消息”。
* **私聊消息如何同步?** 私聊的 Chat ID 是以数字开头的,配置时要区分好群组 ID(通常带负号或前缀)。
* **避免死循环**:千万不要把 A->B 和 B->A 配置成同一条链路,这样一条消息会在两个机器人(如果有多个)之间无限转发直到炸群。如果是同一个脚本处理,通常代码逻辑会包含“忽略已转发消息”的功能,但自己配置时最好心里有数。
### 总结
n自己部署 TG 双向机器人不仅能满足个性化需求,还能在数据隐私上更有掌控感。整个过程其实就是配置 API ID、填 Token、跑脚本三部曲。哪怕你是 Linux 小白,跟着上面的步骤一步步来,半小时内也能搭建起自己的消息中转站。有问题多看脚本自带的 README,大多都是通用的 Python 问题,搜索一下很快就能解决。

评论已关闭