如何在Telegram中自动转发指定用户从群组A到群组B的消息?
Telegram 指定用户消息自动转发方案
前期准备
- 申请Telegram API凭证:前往Telegram官方开发者平台注册账号,获取
API_ID和API_HASH,这是使用Telethon的必要条件 - 安装Telethon:执行命令
pip install telethon
核心步骤
1. 获取关键ID
私密群组和用户无法通过用户名直接定位,需先获取以下ID:
- 运行简易登录脚本,拉取已加入群组列表,找到群组A、B的ID(私密群组ID通常为负数)
- 获取Bob的用户ID:可通过群组A的成员列表或Bob的个人资料提取
2. 监听目标群组消息
使用Telethon的events.NewMessage事件监听群组A的新消息,设置双重过滤:
- 仅处理来自群组A的消息(匹配
chat_id) - 仅处理Bob发送的消息(匹配消息的
from_id)
3. 自动转发至目标群组
监听到符合条件的消息时,调用client.forward_messages方法将消息转发至群组B,Telethon会自动兼容文本、图片、文件等多种消息类型。
示例代码
from telethon import TelegramClient, events # 替换为你的实际信息 API_ID = 123456 # 你的API ID API_HASH = 'abcdef1234567890abcdef1234567890' # 你的API Hash SESSION_FILE = 'telegram_session' # 会话文件名,首次登录后自动生成 # 替换为实际ID GROUP_A_ID = -1001234567890 # 私密群组A的ID GROUP_B_ID = -1000987654321 # 私密群组B的ID BOB_USER_ID = 987654321 # Bob的用户ID with TelegramClient(SESSION_FILE, API_ID, API_HASH) as client: # 监听群组A的新消息 @client.on(events.NewMessage(chats=GROUP_A_ID)) async def forward_bob_messages(event): # 验证消息发送者为Bob if event.from_id == BOB_USER_ID: # 转发消息到群组B await client.forward_messages(GROUP_B_ID, event.message) print(f"转发Bob消息成功") # 保持客户端持续运行 client.run_until_disconnected()
部署与运行
要实现7×24小时在线运行,建议部署到云服务器:
- 使用后台运行命令:
nohup python3 your_script.py &,进程会在后台持续运行 - 更稳定的方式是配置
systemd服务,确保服务器重启后脚本自动启动
注意事项
- 遵守Telegram服务条款,避免频繁转发触发账号限制
- 若群组或用户ID变更,需及时更新脚本中的对应值
- 首次运行脚本需输入手机号和验证码,登录后生成的会话文件可复用,后续无需重复验证
内容的提问来源于stack exchange,提问作者Ghinter
相关产品推荐
相关产品推荐

