import os import asyncio import logging from datetime import datetime from aiogram import Bot, Dispatcher, types from aiogram.enums.dice_emoji import DiceEmoji from aiogram.filters.command import Command from config_reader import config # Включаем логирование, чтобы не пропустить важные сообщения logging.basicConfig(level=logging.INFO) # Для записей с типом Secret* необходимо # вызывать метод get_secret_value(), # чтобы получить настоящее содержимое вместо '*******' bot = Bot(token=config.bot_token.get_secret_value()) # Объект бота напрямую из .env # bot = Bot(token=os.getenv("BOT_TOKEN")) # Диспетчер dp = Dispatcher() dp["started_at"] = datetime.now().strftime("%Y-%m-%d %H:%M") # Хэндлер на команду /start @dp.message(Command("start")) async def cmd_start(message: types.Message): await message.answer("Привет!") # Хэндлер на команду /test1 @dp.message(Command("test1")) async def cmd_test1(message: types.Message): await message.reply("Test 1") # Хэндлер на команду /test2 # Без декоратора, т.к. регистрируется ниже в функции main() async def cmd_test2(message: types.Message): await message.reply("Test 2") @dp.message(Command("answer")) async def cmd_answer(message: types.Message): await message.answer("Это простой ответ") @dp.message(Command("reply")) async def cmd_reply(message: types.Message): await message.reply('Это ответ с "ответом"') @dp.message(Command("dice")) async def cmd_dice(message: types.Message): await message.answer_dice(emoji=DiceEmoji.DICE) # передача сообщения в другой чат с номером чата -1001826767638 @dp.message(Command("dice2")) async def cmd_dice2(message: types.Message, bot: Bot): await bot.send_dice(-1001826767638, emoji=DiceEmoji.DICE) # запрос даты запуска бота @dp.message(Command("info")) async def cmd_info(message: types.Message, started_at: str): await message.answer(f"Бот запущен {started_at}") # Запуск процесса поллинга новых апдейтов async def main(): # Регистрируем хэндлер cmd_test2 по команде /start dp.message.register(cmd_test2, Command("test2")) # Запускаем бота await dp.start_polling(bot) if __name__ == "__main__": asyncio.run(main())