如何使用aiogram将其他Telegram频道消息复制到自有频道(无需对方权限)
非管理员身份转发Telegram频道消息的解决方案
问题根源
你当前基于aiogram机器人的代码无法运行,核心原因是机器人必须被添加到目标外部频道并获得权限才能接收消息——而你做不到这一点。要实现无需成为管理员的转发,得换用**你自己的Telegram用户账号(而非机器人)**来抓取消息:只要你订阅了目标频道,就能获取内容并转发到自己的频道。
实操方案:基于Telethon实现
Telethon是支持用户账号登录的Telegram客户端库,完美适配这种场景,步骤如下:
1. 安装依赖
pip install telethon
2. 获取API凭证
在Telegram官方的API开发平台注册并获取api_id和api_hash(需用你的Telegram账号登录操作)。
3. 完整代码
from telethon import TelegramClient, events import asyncio # 替换为你的实际信息 api_id = 123456 # 你的api_id数字 api_hash = 'abcdef1234567890abcdef1234567890' # 你的api_hash字符串 session_name = 'my_forward_session' # 要抓取的外部频道(支持@用户名或ID) SOURCE_CHANNELS = ['@target_channel_1', '-987654321'] # 你的目标频道ID TARGET_CHANNEL = '-1234567890' client = TelegramClient(session_name, api_id, api_hash) # 监听目标频道的新消息 @client.on(events.NewMessage(chats=SOURCE_CHANNELS)) async def auto_forward(event): # 转发消息到自己的频道 await client.forward_messages(TARGET_CHANNEL, event.message) async def main(): await client.start() print("已启动,开始监听消息...") await client.run_until_disconnected() if __name__ == '__main__': asyncio.run(main())
代码说明
- 首次运行时,会提示你输入手机号和Telegram发送的验证码,登录后会话信息会保存在本地,后续启动无需重复验证
- 只要你是
SOURCE_CHANNELS中频道的订阅者,就能自动接收新消息并转发到你的目标频道 - 可扩展过滤逻辑,比如只转发图片、视频或包含特定关键词的文本消息
注意事项
- 不要用脚本进行高频转发,避免触发Telegram的反垃圾机制导致账号受限
- 如果目标是私密频道,你需要先手动加入该频道才能获取消息
内容的提问来源于stack exchange,提问作者Emil Coder
相关产品推荐
相关产品推荐

