AIOgram3 6. Информирование администратора

Telegram-бот на AIOgram3 | proDream | 08 Август 2023 | Просмотров: 1716

В этом посте, сделаем оповещение администратора о запуске или остановке бота и продолжим формировать структуру.


Перейдём в файл settings.py и в поле admin_id в классе Secrets пропишем ваш Telegram-ID. Получить его можно у бота https://t.me/getmyid_bot

 

Пакет Handlers.

В пакете botlogic создадим новый пакет handlers
Напоминаю, что пакет можно создать средствами IDE, выбрав создать новый Python Package или создать вручную, создав директорию и в ней пустой файл init.py.
В нём у нас будут находиться обработчики сообщений пользователей, команд или различных событий.

 

Events.py.

В пакете handlers создадим файл events.py

 

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

from botlogic.settings import bot, Secrets


async def start_bot():
    await bot.send_message(Secrets.admin_id, 'Бот запущен')


async def stop_bot():
    await bot.send_message(Secrets.admin_id, 'Бот остановлен')

 

Мы создали две асинхронные функции start_bot и stop_bot. В теле функции вызвали метод send_message из экземпляра класса Bot. В метод первым параметром передаётся Telegram-ID получателя, а вторым текст сообщения. 
Однако, вот так оставлять текст в функции не правильно. В случае, если надо будет изменить текст, в его поисках придётся перелопатить часть файлов бота. По этому, давайте создадим единый файл, в котором будем хранить все текстовые сообщения.

 

Views.py.

В пакете botlogic создадим файл views.py.
И создадим две функции start_bot_msg и start_bot_msg:

def start_bot_msg():
    return 'Бот запущен'

def stop_bot_msg():
    return 'Бот остановлен'

 

Две простейшие функции, возвращающее текст при вызове. Изменим наши функции в файле events.py, что бы они получали строки из только что созданных функций:

from botlogic.settings import bot, Secrets
from botlogic.views import start_bot_msg, stop_bot_msg


async def start_bot():
    await bot.send_message(Secrets.admin_id, start_bot_msg())


async def stop_bot():
    await bot.send_message(Secrets.admin_id, stop_bot_msg())

 

Регистрация событий.

Осталось только зарегистрировать данные события.
Переходим в файл main.py и в функции start(), под вызовом диспетчера прописываем следующие строки:

from botlogic.handlers.events import start_bot, stop_bot

    dp.startup.register(start_bot)
    dp.shutdown.register(stop_bot)

Это встроенные методы диспетчера. Зарегистрировав события, когда в блоке try-finally запустится бот, он автоматически вызовет нашу функцию start_bot() и мы получим уведомление от бота. С остановкой бота аналогично.

Запустим бота и убедимся, что уведомления приходят, а в терминале появился лог событий.


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

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

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

Нет комментариев

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

AIOgram3 7. Получение пути до файла по API
AIOgram3 6. Информирование администратора
AIOgram3 5.2. Создание структуры, продолжение

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

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

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


Обсуждение

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


Теги

Python IDE Гайды Telegram AIOgram Telegram-бот AIOgram3 бот Python Package

Ссылки


Реклама