【发布时间】:2020-05-07 12:16:49
【问题描述】:
好的,所以我一直打算使用 Telethon 来通过 Python 自动化电报上的几件事,但我不确定我是否理解它的要点。
首先,您需要一个 api_id 和一个 api_hash。为此,您可以访问my.telegram 并访问 API 开发工具。在那里,您会收到一个代码到您的电报 Android 手机,提交后,您会收到一个唯一的 ID/哈希。第一个问题,您发送此代码是为了生成一个应用程序不再需要吗?
现在在python中,你可以如下启动一个客户端。
from telethon import TelegramClient
api_id=12345
api_hash='abcdef12345ghij'
client=TelegramClient('name of the session',api_id,api_hash)
您可以尝试连接客户端,但可能会导致客户端未授权或手机未注册,因此您可以使用 start 来决定是登录还是注册。
在start中可以设置的参数中,有force_sms (bool, optional)强制telegram分享短信注册登录所需的code。
我的问题是,如果电话没有注册,还有什么其他方式可以使用电报?我的意思是,他们无法将其发送到移动应用,因为那部手机没有。
如果手机未注册是可能的,这是否意味着您获得 id/hash 的手机不一定与您创建客户端时使用的手机相同?
由于此方法有回调,您可以输入发送到手机的代码并连接到电报。
连接客户端的另一种方法是使用StringSession。我找到了这段代码:
from telethon.sync import TelegramClient
from telethon.sessions import StringSession
# Generating a new one
with TelegramClient(StringSession(), api_id, api_hash) as client:
print(client.session.save())
# Converting SQLite (or any) to StringSession
with TelegramClient(name, api_id, api_hash) as client:
print(StringSession.save(client.session))
# Usage
string = '1aaNk8EX-YRfwoRsebUkugFvht6DUPi_Q25UOCzOAqzc...'
with TelegramClient(StringSession(string), api_id, api_hash) as client:
client.loop.run_until_complete(client.send_message('me', 'Hi'))
这本身就带来了几个问题。根据文档,这是一种在字符串中存储登录所需凭据的方法,包括授权密钥和电话。
这是如何获取授权密钥的?在另一种方法中,它被发送到您的手机供您输入,但是在这里?如何指定要连接的电话?这是您只能使用的方法,还是只能在手机获得访问权限后使用?
在代码中,这可能吗?
#Obtain an api_id, api_hash from phone 777777777
from telethon import TelegramClient
from telethon.sessions import StringSession
api_id=12345
api_hash='abcdef12345ghij'
client=TelegramClient('name of the session',api_id,api_hash)
client.start(phone='5555555',force_sms=True,code_callback=True,first_name='John',last_name='Doe')
#Asked to input the code sent to the phone 555555 by sms. Is this code the authentication key?
string = StringSession.save(client.session) #Now I can connect whenever I want using string session.
最后两个问题
即使他们不尝试同时连接,您能否为同一个号码进行多个会话?例如,不同的 api/hash 在不同的时间启动同一部手机,或者第一个会话存储在电报中,创建第二个会话会切断第一个会话的电报链接?
您可以以任何方式跳过用于注册的验证码吗?
亲切的问候
【问题讨论】:
标签: python-3.x api telegram telethon