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

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

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


В прошлом посте мы написали точку входа и запуск из неё функции 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()

Добавить комментарий:

Войдите чтобы добавить комментарий.

Комментарии пользователей:

Shurik1777 | 16 июля 2024 г. 13:16 |

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


Реклама


Соседние посты

AIOgram3 4. Эхо-бот
AIOgram3 3. Основная функция
AIOgram3 2. Точка входа

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

Для скачивания материалов необходимо войти или зарегистрироваться.

Файлы также можно получить в Telegram-боте по коду: 627598


Обсуждение

Обсудить или задать вопрос можно в комментариях к посту в Telegram


Теги

Python Гайды Telegram AIOgram Telegram-бот API AIOgram3 бот API Telegram BotFather Dispatcher PEP8 polling

Ссылки


Реклама