我该如何恢复Telethon电报中的旧会话并再次连接(无需再次发送代码))
问题内容:
我使用此脚本进行连接并在Telethon中创建会话
from telethon import TelegramClient
from telethon.tl.functions.messages import GetHistoryRequest
from telethon.utils import get_input_peer
api_id = 7****
api_hash = 'ef584d*****************'
client = TelegramClient('+15159947451', api_id, api_hash)
client.connect()
if not client.is_user_authorized():
client.send_code_request('+15159947451')
client.sign_in('+15159947451', cod)
使用此鳕鱼,我可以在此电报中良好登录并创建文件:+ 15159947451.session。
现在我关闭并断开连接,如何再次使用此文件+ 15159947451.session登录该号码。
我使用此代码,但此代码有错误:
from telethon import TelegramClient
from telethon.tl.functions.messages import GetHistoryRequest
from telethon.utils import get_input_peer
api_id = 7****
api_hash = 'ef584d180eee*******************'
number='+15152934803'
client = TelegramClient('00', api_id, api_hash)
client.session.try_load_or_create_new(session_user_id='+15159947451')
client.connect()
但是我有这个错误
raise error
telethon.errors.RPCError: (RPCError(...), 'AUTH_KEY_UNREGISTERED (401): The key is not registered in the system.')
问题答案:
问题是这一行:
client = TelegramClient('+15xxxxxxxxx', api_id, api_hash)
您不必将电话号码作为第一个参数。您必须传递会话的名称,例如“ myname”。
你得到这个:
telethon.errors.RPCError: (RPCError(...), 'AUTH_KEY_UNREGISTERED (401): The key is not registered in the system.')
因为您已经更改了会话的名称(现在称为“ 00”),但尚未在该会话上进行记录。因此,为了简单地解决您的问题:
client = TelegramClient('some_name', api_id, api_hash)
client.connect()
if not client.is_user_authorized():
client.send_code_request('+15xxxxxxxxx')
client.sign_in('+15xxxxxxxxx', cod)
然后删除该.send_code_request(...)
行:
client = TelegramClient('some_name', api_id, api_hash)
client.connect()
请注意,如果将“
some_name”更改为.session
尚不存在的某些名称,则必须再次创建它。另外,您可以将.session
文件重命名为所需的任何名称,并将其名称用作参数(因为它已经存在)。