Перейдём в файл 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() и мы получим уведомление от бота. С остановкой бота аналогично.
Запустим бота и убедимся, что уведомления приходят, а в терминале появился лог событий.


Комментарии
Оставить комментарийВойдите, чтобы оставить комментарий.
Комментариев пока нет.