# Python Telegram Bot小纸条

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

## Telegram提供的API

### Telegram Bot API

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

%[https://core.telegram.org/bots]

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

%[https://core.telegram.org/bots/api]

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

### MTProto Mobile Protocol

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

%[MTProto Mobile Protocol]

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

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

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

%[https://docs.telethon.dev/en/stable/concepts/botapi-vs-mtproto.html]

综上所述，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。

%[https://github.com/python-telegram-bot/python-telegram-bot]

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

%[https://python-telegram-bot.readthedocs.io]

### Pyrogram

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

%[https://github.com/pyrogram/pyrogram]

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

### Telethon

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

%[https://github.com/LonamiWebs/Telethon]

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