Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何恢复telethon电报中的旧会话并再次连接(无需再次发送代码))_Python_Api_Telegram_Telethon - Fatal编程技术网

Python 如何恢复telethon电报中的旧会话并再次连接(无需再次发送代码))

Python 如何恢复telethon电报中的旧会话并再次连接(无需再次发送代码)),python,api,telegram,telethon,Python,Api,Telegram,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('+15159947

我使用这个脚本在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)
有了这个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\u code\u request(…)
行:

client = TelegramClient('some_name', api_id, api_hash)
client.connect()

请注意,如果您为一些尚不存在的
.session
更改“some_name”,则必须重新创建它。此外,您还可以将
.session
文件重命名为您想要的任何名称,并将其名称用作参数(因为它已经存在)。

问题在于这一行:

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\u code\u request(…)
行:

client = TelegramClient('some_name', api_id, api_hash)
client.connect()

请注意,如果您为一些尚不存在的
.session
更改“some_name”,则必须重新创建它。此外,您还可以将
.session
文件重命名为您想要的任何名称,并将其名称用作参数(因为它已经存在)。

如何断开连接?您是否在最后从Telethon调用disconnet函数?如何调用disconnet?您是否在最后调用Telethon的disconnet函数?@netdevil这是正确的答案,感谢Lonami的回答。我很快就会取下我的。去看电视@Lonami在Telethon上做得很好。但是,我在实现登录/授权时遇到了问题。@netdevil这是正确的答案,多亏了Lonami的回答。我很快就会取下我的。去看电视@Lonami在Telethon上做得很好。但是我在Flask中实现登录/授权时遇到问题。欢迎使用。只有代码的答案不被认为是好的答案,请发布文本解释问题所在以及代码如何解决问题。欢迎使用SO。只有代码的答案不被认为是好的答案,请发布文本解释问题所在以及代码如何解决问题。