telegram bot on pyrogram #2
Определение обновлений
Обновления - это события, которые происходят в вашем аккаунте Telegram (входящие сообщения, присоединение новых участников, нажатие кнопки и т.д.), которые предназначены для уведомления о новом конкретном состоянии, которое изменилось. Эти обновления обрабатываются путем регистрации одной или нескольких функций обратного вызова в вашем приложении с помощью обработчиков.
Каждый обработчик имеет дело с определенным событием, и как только из Telegram поступит соответствующее обновление, фреймворк вызовет вашу зарегистрированную функцию обратного вызова и выполнит её код.
Регистрация обработчика
Чтобы объяснить, как работают обработчики, давайте рассмотрим тот, который будет отвечать за обработку обновлений сообщений, поступающих со всех ваших чатов. Любой другой тип обработчика использует ту же логику настройки, и у вас не должно возникнуть проблем с их настройкой, как только вы ознакомитесь с этим разделом.
Используя декораторы
Самый элегантный способ зарегистрировать обработчик сообщений - это использовать декоратор on_message():
from pyrogram import Client
app = Client("my_account")
@app.on_message()
async def my_handler(client, message):
await message.forward("me")
app.run()Определенная функция my_handler, которая принимает два аргумента (клиент и сообщение), будет функцией, которая выполняется каждый раз, когда поступает новое сообщение.
В последней строке мы снова видим метод run(), на этот раз используемый без каких-либо аргументов. Его цель здесь - просто автоматически запустить start(), поддерживать клиент в режиме онлайн, чтобы он мог прослушивать обновления, и остановить stop() его, как только вы нажмете CTRL + C.
Используя add_handler()
Метод add_handler() принимает любой экземпляр обработчика, который оборачивается вокруг вашей определенной функции обратного вызова, и регистрирует его в вашем клиенте. Это полезно в том случае, если вы хотите программно добавить обработчики.
from pyrogram import Client
from pyrogram.handlers import MessageHandler
async def my_function(client, message):
await message.forward("me")
app = Client("my_account")
my_handler = MessageHandler(my_function)
app.add_handler(my_handler)
app.run()Другими словами этот код создает клиент Pyrogram, добавляет обработчик сообщений, который пересылает все полученные сообщения на аккаунт, связанный с этим клиентом. Эхо-бот.