В прошлом посте мы написали точку входа и запуск из неё функции 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()
Комментарии
Оставить комментарийВойдите, чтобы оставить комментарий.
будет выполнена команда закрытия сессии и выход их программы.
Тут подправить бы, и неплохо было бы объяснить почему нужен выход из программы?)