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
相关产品推荐
相关产品推荐

