@oslik_ppc

Можно ли отправить сообщение в другой чат AIOGRAM?

условно, у бота есть администратор и его chat_id, можно ли сделать так, чтобы бот всегда мог отправить ему сообщение из любого обработчика?

насколько хорошая практика прокинуть через Middleware созданный в начале Bot? Что-то типа

Создаем бота где-то в инициализации, и далее:
#CODE: Точка инициализации бота
async def main():
    bot = Bot(config.bot_token, parse_mode=ParseMode.HTML)

    dp = Dispatcher(storage=MemoryStorage())
    dp.update.middleware(BotObjectMiddleware(bot_object=bot))
    await bot.delete_webhook(drop_pending_updates=True)
    await dp.start_polling(bot, allowed_updates=dp.resolve_used_update_types())

if __name__ == "__main__":
    logging.basicConfig(level=logging.INFO)
    asyncio.run(main())


class BotObjectMiddleware(BaseMiddleware):

    def __init__(self, bot_object: Bot):
        super().__init__()
        self.bot_object = bot_object

    async def __call__(
            self,
            handler: Callable[[TelegramObject, Dict[str, Any]], Awaitable[Any]],
            event: Message,
            data: Dict[str, Any],
    ) -> Any:
        data['bot_object'] = self.bot_object
        return await handler(event, data)


И далее это использовать:
@router.message(F.text.contains("____"))
async def handle_invoice(message: Message,  bot_object: Bot) -> None:
     bot_object.send_message(chat_id=ADMIN_CHAT, ...)


Или в обработчике можно получить экземпляр Bot?

P.S. Я понимаю, что в обработчике можно вызвать:
@router.message(F.text.contains("___"))
async def handle_invoice(message: Message) -> None:
       message.answer(....)

# Но как мне отправить сообщение администратору?
  • Вопрос задан
  • 572 просмотра
Решения вопроса 1
sbabinov
@sbabinov
Может я недопонял вопроса, но ведь можно просто создавать экземпляр бота не в функции, а глобально, тогда в любой точке программы можно будет его импортировать и к нему обратиться
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы