Pyrogram
July 24, 2023

telegram bot on pyrogram #1

Выполнять вызовы API с помощью Pyrogram очень просто. Вот базовый пример, который мы рассмотрим шаг за шагом:

from pyrogram import Client

app = Client("my_account")


async def main():
    async with app:
        await app.send_message("me", "Hi!")


app.run(main())

Давайте начнем с импорта клиентского класса.

from pyrogram import Client

Теперь создайте экземпляр нового клиентского объекта, “my_account” - это имя сеанса по вашему выбору.

app = Client("my_account")

Асинхронные методы должны вызываться в асинхронном контексте. Здесь мы определяем асинхронную функцию и помещаем наш код внутрь. Также обратите внимание на ключевое слово await перед вызовом метода; это требуется для всех асинхронных методов.

app.run(main())


Контекстный менеджер

Оператор async with запускает контекстный менеджер, который используется в качестве ярлыка для запуска, выполнения и остановки клиента асинхронно. Он делает это путем автоматического вызова start() и stop() более удобным способом, который также изящно останавливает клиент, даже в случае необработанных исключений в вашем коде.

Ниже приведен тот же пример, что и выше, но без использования контекстного менеджера:

from pyrogram import Client

app = Client("my_account")


async def main():
    await app.start()
    await app.send_message("me", "Hi!")
    await app.stop()


app.run(main())

Используя asyncio.run()

В качестве альтернативы методу run() вы можете использовать asyncio.run() Python для выполнения функции main, с одним небольшим предостережением: экземпляр клиента (и, возможно, другие ресурсы asyncio, которые вы собираетесь использовать) должен быть создан внутри функции main.

import asyncio
from pyrogram import Client


async def main():
    app = Client("my_account")

    async with app:
        await app.send_message("me", "Hi!")


asyncio.run(main())