July 24, 2023

telegram bot on pyrogram #beginning

Телеграмм бот на Pyrogram #начало


Не много не мало но у каждого кто интересуется созданием бота для Телеграмм наступает момент поиска нужной информации, урока, мануала и ещё чего бы то не было, чтобы самостоятельно написать годный, рабочий, возможно интересный и в то же время простой бот. Но я сейчас не о функциональности, а больше о возможностях.

Задумал я значит изучить сие творение, то есть создание бота на библиотеке, а как её создатели называют Telegram MTProto API Framework for Python (API-фреймворк Telegram MTProto для Python) Pyrogram

Pyrogram — это современный, элегантный и асинхронный фреймворк MTProto API. Это позволяет вам легко взаимодействовать с основным Telegram API через учетную запись пользователя (пользовательский клиент) или идентификатор бота (альтернатива bot API) с использованием Python.

В целом и документацию можно почитать, но коли ты не обладаешь нужными знаниями чтобы бегло читать английский и так же бегло понимать его, то этот ликбез для тебя.

Приступаем к гимнастике:

Прежде всего, как и во всём Python нам нужно создать виртуальное окружение:

python -m venv venv

или

python3 -m venv venv

смотря какая у тебя операционная система, нужным способом активируем виртуальное окружение.

source venv/bin/activate

или

source venv/Script/activate

Дальше, установим библиотеку pyrogram:

pip install -U pyrogram

Далее получаем на сайте Телеграмма https://core.telegram.org/api/obtaining_api_id ключ API, он состоит из двух частей: api_id и api_hash. Держи их в секрете.

Далее, настраиваем проект:

from pyrogram import Client

api_id = 12345
api_hash = "0123456789abcdef0123456789abcdef"

app = Client("my_account", api_id=api_id, api_hash=api_hash)

app.run()

Запускаем нашего, маленького, бота. В терминале запустится интерактивная среда регистрации, которой требуется передать номер телефона, без + и -. Ответ придёт на авторизированный клиент, либо по смс.

Enter phone number: +1-123-456-7890
Is "+1-123-456-7890" correct? (y/n): y
Enter phone code: 12345
Logged in successfully

После успешной авторизации будет создан новый файл с именем my_account.session, позволяющий Pyrogram выполнять вызовы API с вашим идентификатором. Этот файл является личным и будет загружен снова, когда вы перезапустите свое приложение. Теперь вы можете удалить значения api_id и api_hash из кода, поскольку они больше не нужны.

Код выше ничего не делает, кроме запроса учетных данных и сохранения клиента в сети, нажмите CTRL + C, чтобы остановить ваше приложение и продолжим дальше.

Бот - это особый вид пользователей, которые авторизуются с помощью своих токенов (вместо телефонных номеров), созданных Bot Father. Токены ботов заменяют только телефонные номера пользователей — вам все равно нужно настроить ключ API Telegram с помощью Pyrogram, даже для использовании ботов.

Процесс авторизации управляется автоматически. Все, что вам нужно сделать, это выбрать имя (оно может быть любым, обычно это имя пользователя вашего бота) и передать свой токен бота, используя параметр bot_token. Файл сеанса будет назван в честь имени сеанса, которое в приведенном ниже примере будет my_bot.session.

from pyrogram import Client

api_id = 12345
api_hash = "0123456789abcdef0123456789abcdef"
bot_token = "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11"

app = Client(
    "my_bot",
    api_id=api_id, api_hash=api_hash,
    bot_token=bot_token
)

app.run()
Ключ API (api_id и api_hash) и bot_token больше не требуются после успешной авторизации. Это означает, что теперь вы можете просто использовать следующее:
from pyrogram import Client

app = Client("my_account")
app.run()