Python Telegram Bot小纸条

·

1 min read

写这个小纸条更多的是为了让你了解一些有关Telegram API的基础知识,同时了解一些有关Python Library的基础知识。因为在我最开始准备做这些事时,这些复杂的信息让我困惑了一段时间,在写了差不多五年的Bot代码后,我准备将我的基础库进行一个改变,所以写下这个文章做个小纸条。

Telegram提供的API

Telegram Bot API

Telegram提供了一组Bot专用的API和接口方式。你可以在Telegram官方网页了解通过Bot API可以提供的功能:

日常中,我们更多使用的其实不是这个介绍文档,更多的是去阅读API开发文档,这样你就可以看更最近的更新以及详细的接口说明:

有关Bot API,官方说明是说它使用HTTPS来访问,并且给出了一个单独的域名让你使用。

MTProto Mobile Protocol

MTProto是Telegram客户端所使用的API,你可以通过官方的一个文档来了解它:

MTProto与Bot API最大的几点不同:

  • 它提供了Telegram全功能的接口,你可以使用它来完成一个Telegram客户端,或是一个用户机器人(User Bot)
  • 它可以使用TCP、Websocket、Websocket over HTTPS、HTTP、HTTPS

官方并没有提到的是我们也可以使用MTProto来完成Bot的开发,这里有一份Telethon书写的文档说明还是非常清晰的:

综上所述,Telegram提供了丰富的全功能API让开发者使用,你可以使用这些API来完成一个Telegram客户端、模仿成普通用的机器人(User Bot)和普通的Telegram机器人(Bot).

Python Telegram Library

Python的Telegram Library真的是太多太多了,我自己使用过的并不多,这里讲三个不同的推荐:

python-telegram-bot

如果你是初学者,如果想快速、简单的入门,也只专注于Bot,哪么python-telegram-bot绝对是你最好的第一选择。不要因为别的项目写的天花乱坠,使用python-telegram-bot会让你用最快的速度写出你的第一个可以使用的bot。

python-telegram-bot是官方HTTP Bot API的坚定实践支持者,有最为清晰的文档,与官方Bot API一一对应的说明,丰富的示例。我自己之前的Bot都是使用的python-telegram-bot来完成了,基本上几十行代码就完成了基础的功能。我基本上就是开着它的文档写代码,非常推荐你去看看

Pyrogram

Pyrogram是一个新兴的使用异步框架,一个MTProto的实现Library。到今天,项目还非常活跃,非常受开发者喜爱。你会发现有非常多的github项目在使用它,多于其它Library。

非常喜欢它对异步框架的使用,而且它知道自己天生就是为Bot和User Bot开发而使用了,做了不少方便你开发的易用性支持。由于使用的是MTPorto,所以在性能上明显好于基于HTTPS的Bot API的python-telegram-bot。

Telethon

Telethon是一个较早开始使用异步框架的MTProto Python Library。在Github上的start远远多于同类。

Telethon的文档写的非常棒,示例代码也非常丰富,如果你觉得Pyrogram的文档太少,哪么使用Telethon入门也是非常不错的选择。