You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Python Telethon的Telegram消息转发工具频繁掉线求助

问题:Telegram消息转发工具频繁被强制下线

我写了一个基于Telegram API的消息转发工具,功能是把指定群组的消息同步到另一个目标群组。工具仅在我登录Telegram客户端(手机/PC端)时能正常运行5-10秒,之后所有设备上的账号都会被强制下线,代码也随之停止工作。代码确实能实现转发功能,但单独通过代码(如PyCharm中)登录后,约5-10秒就会被踢下线,求修复方案。

代码如下:

from telethon.sync import TelegramClient, events

api_id = '*******'
api_hash = '*************************'
#phone = '*********'

DESTINATION_GROUP_ID = -1001964185842 #our channel for recieving messages
SOURCE_GROUP_ID = -1001923879320 #information source channels

with TelegramClient('session_name', api_id, api_hash) as client:
    #for message in client.iter_messages(chat):
        #print(message.sender_id, ':', message.text)

    async def forward_message_to_destination(message):
        await client.send_message(DESTINATION_GROUP_ID, message)
        print(f"Message forwarded: {message.text}")

    @client.on(events.NewMessage(chats=SOURCE_GROUP_ID))
    async def forward_messages(event):
        message = event.message
        await forward_message_to_destination(message)

    with client:
        client.run_until_disconnected()

修复方案
  • 启用两步验证(2FA)并完善登录流程
    Telegram的安全机制会对非官方客户端登录做严格检测,启用2FA后,代码登录时需提供会话密码,能大幅降低被判定为异常登录的概率。先在Telegram客户端开启2FA,运行代码时按照提示输入密码即可。

  • 修正会话管理的嵌套问题
    原代码嵌套了两层with TelegramClient语句,会导致会话管理异常。调整代码结构,显式调用登录方法:

    from telethon.sync import TelegramClient, events
    
    api_id = '*******'
    api_hash = '*************************'
    phone = '*********'  # 取消注释并填写手机号
    
    DESTINATION_GROUP_ID = -1001964185842
    SOURCE_GROUP_ID = -1001923879320
    
    client = TelegramClient('session_name', api_id, api_hash)
    
    async def forward_message_to_destination(message):
        await message.forward(DESTINATION_GROUP_ID)
        print(f"Message forwarded: {message.text}")
    
    @client.on(events.NewMessage(chats=SOURCE_GROUP_ID))
    async def forward_messages(event):
        await forward_message_to_destination(event.message)
    
    with client:
        client.start(phone)  # 显式触发登录流程
        client.run_until_disconnected()
    
  • 使用官方forward方法替代send_message
    直接发送消息对象容易被检测为异常行为,改用Telethon提供的forward方法,更符合官方API的使用规范,降低被限制的风险。

  • 复用会话文件,避免频繁重建会话
    不要反复删除session_name.session文件,复用已有会话能减少Telegram的安全触发阈值。如果会话文件损坏,再删除后重新登录。

  • 确保账号处于正常状态
    如果是新注册的Telegram账号,先在客户端手动活跃3-7天,再使用代码登录;同时检查API ID和Hash是否与当前账号正确绑定。

内容的提问来源于stack exchange,提问作者IlaiHappy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 22:41:09