Перейдём в файл 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. Получение пути до файла по APIAIOgram3 6. Информирование администратора
AIOgram3 5.2. Создание структуры, продолжение
Дополнительные материалы
Для скачивания материалов необходимо войти или зарегистрироваться.
Файлы также можно получить в Telegram-боте по коду: 270319
Обсуждение
Обсудить или задать вопрос можно в комментариях к посту в Telegram