Telegram机器人无法转发媒体文件,报RPCError 400: CHAT_FORWARDS_RESTRICTED
Telegram机器人转发媒体报错CHAT_FORWARDS_RESTRICTED的解决办法
这个错误的核心原因是目标频道开启了禁止转发限制,或者原频道的内容本身被设置了禁止转发权限,直接用send_message转发带媒体的消息会触发Telegram的安全限制。
解决思路及代码修改
如果原内容没有禁止保存媒体,可以通过「下载媒体后重新发送」的方式绕过转发限制,修改后的代码如下:
@BotzHubUser.on(events.NewMessage(incoming=True, chats=FROM)) async def sender_bH(event): for i in TO: try: # 判断消息是否包含媒体内容 if event.message.media: # 下载媒体文件到本地临时路径 media_path = await event.message.download_media() # 发送媒体到目标频道,附带原消息的文案 await BotzHubUser.send_file( i, media_path, caption=event.message.text or "" ) # 清理本地临时文件(可选,避免占用空间) import os if os.path.exists(media_path): os.remove(media_path) else: # 无媒体的普通消息直接转发 await BotzHubUser.send_message(i, event.message) except Exception as e: print(e)
特殊情况处理
如果原频道设置了「禁止保存内容」,常规下载方式会失效,此时可以:
- 确认机器人账号是否为原频道的管理员,管理员账号通常不受保存限制
- 若无法获取管理员权限,这类受限内容无法转发,只能跳过处理
额外注意事项
- 确保机器人在所有目标频道中拥有「发送消息」和「发送媒体」的权限(至少是普通成员权限,部分严格频道可能需要管理员权限)
- 部分官方限制的内容无法通过任何方式转发,遇到这类情况建议直接捕获错误并跳过
内容的提问来源于stack exchange,提问作者Lofiuiu
相关产品推荐
相关产品推荐

