Python库-Telethon自动发送TG消息

前言

Telegram(非正式简称TG)是跨平台的即时通信软件,其客户端是自由及开放源代码软件,但服务器是专有软件。用户可以相互交换加密与自毁消息,发送照片、视频等所有类型文件。同时官方开放应用程序接口(API),可供自行开发使用。

比如本文介绍的Telethon就是python调用的Telegram API的开源代码(开源地址)

附上:Telethon的API文档地址

快速开始

1.Python环境和安装库

Telethon是Python的一个库,所以需要有python环境,安装python环境本文就不陈述。

安装好python环境后,需要安装Telethon库,可以执行以下命令开始安装

pip install telethon

等待安装完毕。

可使用命令 pip list查看已安装的库和版本

image-20210521223429409

2.申请API ID和hash

在使用Telegram的API之前,需要获取自己的API ID和hash

telegram 的 API申请网站(点击进入),输入TG的绑定手机号和验证码,点击登陆。

请输入图片描述

选择创建的application种类为app安卓等。

下图为TG的API ID和hash

image-20210521225010759

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!这段话。

image-20210521233226992

这里只是抛砖引玉,更多的功能实现请查看文首的API文档链接。

原创文章,作者:VAY冬冬,如若转载,请注明出处:https://blog.vay1314.top/archives/211

(0)
VAY冬冬的头像VAY冬冬
上一篇 2021年5月9日
下一篇 2021年6月10日

相关推荐

0 0 投票数
文章评分
订阅评论
提醒
guest
38 评论
最旧
最新 最多投票
内联反馈
查看所有评论
豆子

同时发多条怎么发呢?

豆子

太强了,比TG简单好用。

tian9570

大佬有没有监控群组自动转发的相关代码

tian9570

好的谢谢大佬,还有就是发送消息内容能不能设置变量,我修改了下始终不能正确识别变量内容

tian9570

不是,我想监控一个频道,然后通过re正则模块获取内容转发,获取到内容为变量进行定时发送

mycat

这个能实现京东自动拉人么

dd

大佬,可以设置定时发送消息么?api里面没有找到OωO

我是djj

telegram.org这个网站打开后,那个表格怎么填?,直接提交显示[object Object]

dw公告

大佬,我运行py文件显示Please enter your phone (or bot token):
api_id = 12345 #申请的TG API ID
api_hash = '0123456789abcdef0123456789abcdef' #申请的TG API hash
这两个都是填了的

dw公告

密钥是Public keys吗还是anon.session这个文件?
填是怎么填啊?我是在青龙上运行的,想填都没地方填😭

dw公告

怎么要怎么获取密钥啊?anon.session这个文件点开来是乱码的,是在ssh端输入anon.session吗?

dw公告

是的,我执行py文件的时候,自动生成anon.session文件了
过程是不是执行py文件,屏幕显示Please enter your phone (or bot token)的时候,在ssh端输入+86 135xxxxx呢?我输入进去没有反应,也没有验证码出来😭

dw公告

不行啊,大佬,我在ssh工具上进入容器,然后输入+86 13xxxx显示command not found😢
不是怎么了解这个输入手机号的过程,我是在青龙面版上执行py文件,显示Please enter your phone (or bot token)的时候,文件夹里有了anon.session,然后在ssh工具上输入命令进入青龙容器,然后输入+86 13xxxx,然后就不会了😭

dw公告

在青龙容器执行py文件不行,显示少了模块.最后我在cmd上执行py文件,生成anon.session文件,然后放到青龙的目录里,在青龙面版执行py文件成功。
感谢大佬解答了,这个py文件好用👍

UMR

大佬 我的提示这个 怎么搞呀 telethon.errors.rpcerrorlist.PhoneNumberInvalidError: The phone number is invalid (caused by SendCodeRequest)

UMR

我还没有输入 我直接运行就显示这个了

UMR

https://www.kejiwanjia.com/jiaocheng/19451.html 大佬 我运行的他这个代码 你看一下

秋海星

filepath='abc.mp4'
await client.send_file('@my channel name', filepath, allow_cache=False,supports_streaming=True, attributes=(DocumentAttributeVideo(1440, 720,720),))
样发送视频到指定频道,但是无法通过使用tg客户端在线播放,只能全部下载完毕以后播放,请问如何实现发送的视频可以在线播放呢?谢谢

秋海星

我是加了这段supports_streaming=True 这段代码的,但是也不行,
您加了这段代码发送的视频可以在线播放吗?

秋海星

我也试了,可以在应用里面播放,谢谢老哥,麻烦你了(๑•̀ㅁ•́ฅ)