前言
Telegram(非正式简称TG)是跨平台的即时通信软件,其客户端是自由及开放源代码软件,但服务器是专有软件。用户可以相互交换加密与自毁消息,发送照片、视频等所有类型文件。同时官方开放应用程序接口(API),可供自行开发使用。
比如本文介绍的Telethon就是python调用的Telegram API的开源代码(开源地址)
附上:Telethon的API文档地址
快速开始
1.Python环境和安装库
Telethon是Python的一个库,所以需要有python环境,安装python环境本文就不陈述。
安装好python环境后,需要安装Telethon库,可以执行以下命令开始安装
pip install telethon
等待安装完毕。
可使用命令 pip list
查看已安装的库和版本
2.申请API ID和hash
在使用Telegram的API之前,需要获取自己的API ID和hash
telegram 的 API申请网站(点击进入),输入TG的绑定手机号和验证码,点击登陆。
选择创建的application种类为app安卓等。
下图为TG的API ID和hash
3.简单编辑一个代码
先创建一个python的文件,注意文件名称不要使用telethon.py。
例如我创建一个名为hello.py的文件,在文件内部编辑如下的代码,代码含义见注释。
#!/usr/bin/env python3
from telethon import TelegramClient
api_id = 12345 #申请的TG API ID
api_hash = '0123456789abcdef0123456789abcdef' #申请的TG API hash
with TelegramClient('anon', api_id, api_hash) as client: #anon为缓存的授权密钥,可为其指定位置,比如想让anon存在于/etc下,这里的就换成/etc/anon
client.loop.run_until_complete(client.send_message('me', 'Hello, myself!')) #代码中的me为收信人的用户名,Hello, myself!为发送内容。比如想给用户名为@vay,发送一句hello world。这里就替换成('@vay', 'hello world')
代码中的api_id,api_hash填入替换为上步申请的信息。这段代码编辑后运行,是给自己TG中的收藏夹发送 Hello, myself!
这段话。
这里只是抛砖引玉,更多的功能实现请查看文首的API文档链接。
原创文章,作者:VAY冬冬,如若转载,请注明出处:https://blog.vay1314.top/archives/211
同时发多条怎么发呢?
可重复多加一行发送代码
太强了,比TG简单好用。
大佬有没有监控群组自动转发的相关代码
没太研究了,可以自行查看API,功能是可以实现的。
好的谢谢大佬,还有就是发送消息内容能不能设置变量,我修改了下始终不能正确识别变量内容
是在运行py时传入变量吗?应该可以传参的,你定义的什么变量
不是,我想监控一个频道,然后通过re正则模块获取内容转发,获取到内容为变量进行定时发送
哦,这个我没测试过,不过应该可以的。你打印下正则提取的变量是正确内容吗
这个能实现京东自动拉人么
功能实现需要自己编写,api文档都有说明。
大佬,可以设置定时发送消息么?api里面没有找到OωO
如果需要定时发送可以定时调用py,比如在cron调用py
telegram.org这个网站打开后,那个表格怎么填?,直接提交显示[object Object]
随意写写,然后提交后记录信息就行
大佬,我运行py文件显示Please enter your phone (or bot token):
api_id = 12345 #申请的TG API ID
api_hash = '0123456789abcdef0123456789abcdef' #申请的TG API hash
这两个都是填了的
api_id,api_hash填写后,第一次使用py时会登陆下载个密钥,Please enter your phone (or bot token):这个是让你填验证码
密钥是Public keys吗还是anon.session这个文件?
填是怎么填啊?我是在青龙上运行的,想填都没地方填😭
是anon.session这个文件,命令TelegramClient('anon', api_id, api_hash)中的anon为缓存的授权密钥,可为其指定位置。青龙现在容器内ssh执行输入,验证密钥后在用计划任务调用py
怎么要怎么获取密钥啊?anon.session这个文件点开来是乱码的,是在ssh端输入anon.session吗?
密钥是你第一次运行py程序时,输入正确手机号和验证码后自动下载生成的。
是的,我执行py文件的时候,自动生成anon.session文件了
过程是不是执行py文件,屏幕显示Please enter your phone (or bot token)的时候,在ssh端输入+86 135xxxxx呢?我输入进去没有反应,也没有验证码出来😭
是的,第一次执行时会让你输入手机号,然后验证码。验证码不是发到你手机号上,是发到tg上,在tg上找到后输入进去
不行啊,大佬,我在ssh工具上进入容器,然后输入+86 13xxxx显示command not found😢
不是怎么了解这个输入手机号的过程,我是在青龙面版上执行py文件,显示Please enter your phone (or bot token)的时候,文件夹里有了anon.session,然后在ssh工具上输入命令进入青龙容器,然后输入+86 13xxxx,然后就不会了😭
你输入错误,先不要在青龙面板运行。使用ssh工具进入青龙容器内部,cd到py程序所在目录,python3 XXX.py 运行程序会依次提示输入手机号和验证码。正确运行后会在你py程序中指定的位置生成anon.session。之后就可以在青龙面板使用命令运行这个py程序了
在青龙容器执行py文件不行,显示少了模块.最后我在cmd上执行py文件,生成anon.session文件,然后放到青龙的目录里,在青龙面版执行py文件成功。
感谢大佬解答了,这个py文件好用👍
大佬 我的提示这个 怎么搞呀 telethon.errors.rpcerrorlist.PhoneNumberInvalidError: The phone number is invalid (caused by SendCodeRequest)
你的手机号和验证码输入正确吗?手机号需要带有国家代号
我还没有输入 我直接运行就显示这个了
https://www.kejiwanjia.com/jiaocheng/19451.html 大佬 我运行的他这个代码 你看一下
他这个是密钥获取有问题,我就不修改了。你可以直接把获取的tg密钥文件,按照他代码命名“id_(api_id).session”放入跟py文件同目录就行。
filepath='abc.mp4'
await client.send_file('@my channel name', filepath, allow_cache=False,supports_streaming=True, attributes=(DocumentAttributeVideo(1440, 720,720),))
样发送视频到指定频道,但是无法通过使用tg客户端在线播放,只能全部下载完毕以后播放,请问如何实现发送的视频可以在线播放呢?谢谢
这个问题还真没注意到,测试也是这样。不过撸了下api说明,应该添加supports_streaming=True 就可以了::aru:shy2::
我是加了这段supports_streaming=True 这段代码的,但是也不行,
您加了这段代码发送的视频可以在线播放吗?
我一会再测试下,稍后回复你
测试完成了,可以播放。我没有设置视频属性。直接是client.send_file('@XXXX', filepath, allow_cache=False,supports_streaming=True,)
我也试了,可以在应用里面播放,谢谢老哥,麻烦你了(๑•̀ㅁ•́ฅ)
而且好像只有MP4支持流媒体,需要注意。