import re import asyncio import logging from datetime import datetime from aiogram import F from aiogram.types import Message from aiogram.filters import Command, CommandObject, CommandStart from aiogram import Bot, Dispatcher, types from aiogram.client.default import DefaultBotProperties from aiogram.enums import ParseMode from config_reader import config # Включаем логирование, чтобы не пропустить важные сообщения logging.basicConfig(level=logging.INFO) # Для записей с типом Secret* необходимо # вызывать метод get_secret_value(), # чтобы получить настоящее содержимое вместо '*******' bot = Bot( token=config.bot_token.get_secret_value(), default=DefaultBotProperties( parse_mode=ParseMode.HTML # тут ещё много других интересных настроек )) # Объект бота напрямую из .env # bot = Bot(token=os.getenv("BOT_TOKEN")) # Диспетчер dp = Dispatcher() dp["started_at"] = datetime.now().strftime("%Y-%m-%d %H:%M") @dp.message(Command("help")) @dp.message(CommandStart( deep_link=True, magic=F.args == "help" )) async def cmd_start_help(message: Message): await message.answer("Это сообщение со справкой") @dp.message(CommandStart( deep_link=True, magic=F.args.regexp(re.compile(r'book_(\d+)')) )) async def cmd_start_book( message: Message, command: CommandObject ): book_number = command.args.split("_")[1] await message.answer(f"Sending book №{book_number}") # Запуск процесса поллинга новых апдейтов async def main(): # Регистрируем хэндлер cmd_test2 по команде /start # Запускаем бота await dp.start_polling(bot) if __name__ == "__main__": asyncio.run(main())