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

Telethon数据库锁定无法启动,旧会话连接及封号问题求助

解决Telethon数据库锁定、旧会话连接及封号问题

用户问题与代码

我遇到了Telethon数据库锁定的问题,程序完全无法启动。请问如何配置才能连接旧会话而非创建新会话?我因连接次数过多被封号,不知道该如何解决。我尝试删除会话文件,但问题依旧。相关代码如下:

import logging
import os
import download
import yt_dlp
import list
from dotenv import load_dotenv
import time
load_dotenv()
chats = list.chats
api_id = os.getenv("api_id")
api_hash = os.getenv("api_hash")
logging.basicConfig(
    format="[%(levelname) 5s/%(asctime)s] %(name)s: %(message)s", level=logging.WARNING
)

def downloadvideo(link):
    with yt_dlp.YoutubeDL() as ydl:
        ydl.download(link)


from telethon import TelegramClient, events
client = TelegramClient('anon', api_id, api_hash)

@client.on(
    events.NewMessage(
        chats=chats,
        pattern=r"(?:https?://)?(?:www\.)?(?:youtube\.com|youtu\.be|tiktok\.com)",
    )
)
async def my_event_handler(event):
    if event.chat_id in chats:
        message_id = event.id
        video = download.downloadvideo(event.message.message)
        message = f"[link]({event.message.message})"
        await client.send_file(
            -1001673012624,
            reply_to=message_id,
            file="telegramvideo.mp4",
            video_note=True,
            caption=message,
        )
        os.remove("telegramvideo.mp4")

phone = os.getenv("phone")
# -1001919227306 maratozpanov
client.start(phone=phone)

一、解决数据库锁定问题

  • 找到脚本目录下的anon.session-journal文件(会话数据库的锁日志文件),直接删除它,保留anon.session文件后重启程序。
  • 检查任务管理器,结束所有相关的Python进程,避免其他进程占用会话文件。

二、配置连接旧会话

  • 代码中TelegramClient('anon', api_id, api_hash)的'anon'是会话标识,只要anon.session文件存在,Telethon会自动加载旧会话,无需创建新会话。
  • 修改启动逻辑,避免每次启动都触发登录流程:
# 替换原有的client.start(phone=phone)
import asyncio

if not client.is_user_authorized():
    # 仅在未授权时才用手机号登录
    client.start(phone=phone)
else:
    print("已成功加载旧会话")
# 让客户端保持在线,避免启动后立刻退出
client.run_until_disconnected()
  • 注意:不要删除anon.session文件,删除后会强制创建新会话,旧会话直接丢失。

三、解决连接次数过多被封号问题

  • 减少客户端重启频率:用client.run_until_disconnected()保持程序长期在线,避免频繁启动触发重复连接。
  • 控制操作频率:在发送文件后添加延迟,比如在os.remove("telegramvideo.mp4")前加入await asyncio.sleep(3),避免短时间内发送大量请求。
  • 避免重复登录:确保只有在会话未授权时才调用start(),不要每次启动都执行登录操作。
  • 封号后的处理:通过Telegram官方渠道提交申诉,说明是自动化工具操作导致的误封,承诺后续遵守平台规则,等待官方处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 03:25:04