在使用 Telegram 的 API 之前,您需要获取自己的 API_ID 和 API_HASH:
1. 点击此链接并使用您的电话号码登录。
2. 点击 API 开发工具。
3. 将出现一个创建新应用程序窗口。填写您的申请详情。无需输入任何 URL,目前仅可更改前两个字段(应用程序标题和短名称)。
4.最后点击创建应用程序。请记住,您的 API_HASH是密钥,Telegram 不会让您撤销它。不要在任何地方发布!一旦准备就绪,下一步就是创建一个 TelegramClient。
这个类将是你使用 Telegram API 的主要接口,创建一个非常简单:
from telethon import TelegramClient, sync
# 使用自己的api配置
api_id = 12345
api_hash = '0123456789abcdef0123456789abcdef'
client = TelegramClient('some_name', api_id, api_hash)
请注意,“some_name”将用于将您的会话(持久信息,如访问密钥等)保存为磁盘中的“some_name.session”。默认情况下,这是一个使用 Python 的 sqlite3 的数据库文件。
注意:库始终访问同一个会话文件很重要,这样您就不需要一遍又一遍地重新发送登录代码。默认情况下,它会在您的工作目录中创建文件,但绝对路径也可以。
准备好客户端后,只需 .start() 即可:
client.start()
这条线连接到 Telegram,检查当前用户是否被授权,如果不是,则开始登录或注册过程。
完成代码后,您应该始终断开连接:
client = TelegramClient(...)
try:
client.start()
... # your code here
finally:
client.disconnect()
你也可以使用 with 块来达到同样的效果:
client = TelegramClient(...)
with client:
... # your code here
# or
with TelegramClient(...) as client:
... # your code here
将它们封装在一起:
from telethon import TelegramClient, sync
with TelegramClient('session_name', api_id, api_hash) as client:
... # your code
仅有两个需要设置;
警告。请注意,如果你登录失败5次左右(或改变TelegramClient的第一个参数,也就是会话名称),你将会收到一个大约22小时的 FloodWaitError,所以要小心,不要把它搞乱了!不过,如果你按照说明的方法操作,应该不会发生这种情况。不过,如果你按照解释来做,这种情况应该不会发生。
注意:如果要使用代理,则必须安装 PySocks(通过 pip 或手动),然后设置适当的参数:
import socks
client = TelegramClient('session_id',api_id=12345, api_hash='0123456789abcdef0123456789abcdef',
proxy=(socks.SOCKS5, 'localhost', 4444)
)
proxy= 参数应该是一个元组、一个列表或一个字典,下方链接描述的参数组成。
https://github.com/Anorov/PySocks#usage-1