Cat

AIOgram3 3. Основная функция

В этом посте, напишем основную функцию бота. 

Все статьи

Icon Link

Дополнительные материалы

Icon Link

Реклама

Icon Link
Telegram-бот на AIOgram3 proDream 27 Июль 2023 Просмотров: 2359

В прошлом посте мы написали точку входа и запуск из неё функции start().
Именно написанием этой функции и займёмся.

 

Основная функция start().

Между импортом и точкой входа, объявим функцию:

async def start():

Не забываем про правила написания чистого кода - PEP8. Расставим по две пустых строки перед и после функции.

Как вы наверняка заметили, вместо стандартного def, мы используем async def.

Ключевое слово async указывает на то, что эта функция является корутиной, то есть функцией, которая может приостанавливать свое выполнение в течение определенного времени, чтобы выполнять другие задачи.

 

bot = Bot.

В теле функции объявим переменную bot и присвоим ей объект класса Bot, необходимый для взаимодействия с API Telegram:

from aiogram import Bot

bot = Bot(token='ваш_токен')

 

В параметр token передаём полученный от BotFather токен. 

Стоит отметить, такая явная передача токена боту, является не безопасной. В следующих постах мы изменим передачу токена, а когда дойдём до развёртывания бота на сервере, я расскажу как правильно передавать секреты в бота.

 

Dispatcher.

Далее нам необходимо создать объект класса Dispatcher:

from aiogram import Dispatcher

dp = Dispatcher()

 

Dispatcher() создает поток для обработки всех входящих запросов, проверяет тип запроса, извлекает все необходимые данные из запроса и передает их в соответствующий обработчик.

 

polling.

И наконец, необходимо запустить диспетчер в режиме "polling". Так называется бесконечный цикл "опроса" сервера(в нашем случае, сервера Telegram), на предмет новых сообщений или событий.

    try:
        await dp.start_polling(bot)
    finally:
        await bot.session.close()

 

В данном блоке используется конструкция try-finally. Диспетчер будет работать до тех пор, пока не будет остановлен. После остановки диспетчера, будет выполнена команда закрытия сессии и выход их программы.

 

Полный код функции:

from aiogram import Bot, Dispatcher


async def start():
    bot = Bot(token="ваш_токен")

    dp = Dispatcher()

    try:
        await dp.start_polling(bot)
    finally:
        await bot.session.close()

Автор

  • 16 июля 2024 г. 13:16

    будет выполнена команда закрытия сессии и выход их программы.
    Тут подправить бы, и неплохо было бы объяснить почему нужен выход из программы?)

  • Реклама