commit a9bc8ca50fb827d1e8172f56c292052f552691e1 Author: yogurtmenn Date: Thu Mar 27 08:01:01 2025 +0000 Загрузить файлы в «/» diff --git a/bot-limp.py b/bot-limp.py new file mode 100644 index 0000000..6e4e267 --- /dev/null +++ b/bot-limp.py @@ -0,0 +1,130 @@ +import logging +import os +from aiogram import Bot, Dispatcher, types, F +from aiogram.filters import Command +from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup +from dotenv import load_dotenv + +# Настройка +load_dotenv() +logging.basicConfig(level=logging.INFO) + +# Инициализация бота +bot = Bot(token=os.getenv("BOT_TOKEN")) +dp = Dispatcher() + +# Данные о достопримечательностях +attractions = [ + { + "name": "Новокузнецкий драматический театр", + "description": "Новокузнецкий драматический театр — государственное автономное учреждение культуры в городе Новокузнецке Кемеровской области, один из старейших театров Кузбасса, важный центр культурной жизни города.", + "address": "проспект Металлургов, 28", + "file_id": "AgACAgIAAxkBAAMWZ-Tq-9NPR_nlikl1GNGXN-1k9YEAAtXyMRsSgihLOZ1ZrpFqDDMBAAMCAAN5AAM2BA" + }, + { + "name": "Кузнецкая крепость", + "description": "Кузнецкая крепость — крепость, опорный пункт Сибирской линии в верховьях реки Томь, сейчас памятник истории и архитектуры федерального значения.", + "address": "Крепостной пр-д, 1", + "photo_url": "https://i.imgur.com/Dn4qg5U.png" + }, + { + "name": "Бульвар героев", + "description": "Идея создания мемориала в честь погибших воинов-новокузнечан возникла в 1960-х. Хотя строительство не входило в утверждённые планы города, первый секретарь горкома КПСС Н. С. Ермаков решил возвести его под видом благоустройства. В 1966 году провели конкурс, и из 26 проектов выбрали работу молодого архитектора Юрия Журавкова.", + "address": "ул. Циолковского, 63", + "photo_url": "https://i.imgur.com/EArF3jd.jpeg" + }, + { + "name": "Спасо-Преображенский Собор", + "description": "Спа́со-Преображе́нский собо́р — православный храм в городе Новокузнецке Кемеровской области, кафедральный собор Новокузнецкой епархии Русской православной церкви. Построен в XVIII веке. Вид на храм, располагавшийся на высокой береговой террасе реки Томи, открывался при подъезде к городу. ", + "address": "ул. Водопадная, 18", + "photo_url": "https://i.imgur.com/Rs5xBVW.jpeg" + }, + { + "name": "Мемориальный музей боевой и трудовой славы", + "description": "В конце 1960-х ветераны предложили создать на КМК музей боевой и трудовой славы. Секретарь парткома Н. М. Миловацкий поддержал идею, и на заседании выбрали место для музея, заложив памятный камень. После всесоюзного конкурса лучшим признали проект скульптора Д. И. Народицкого и архитектора Н. Н. Миловидова.", + "address": "пл. Побед, 1/1", + "photo_url": "https://i.imgur.com/7ibuvPo.jpeg" + }, + { + "name": "Новокузнецкий цирк", + "description": "Новокузнецкий государственный цирк — культурный развлекательный центр в Новокузнецке, Россия. В России цирковые манежи есть только в республиканских, краевых и областных центрах. Новокузнецк — исключение из этого правила. В цирке есть 1685 мест для зрителей, а также гостиница для артистов.", + "address": "ул. Кирова, 70", + "photo_url": "https://i.imgur.com/thu4kmu.jpeg" + }, + { + "name": "Памятник 50-летия образования СССР", + "description": " Этот монумент, посвященный 50-летию СССР (1922–1991), стал одним из символов Новокузнецка. Автор проекта — архитектор А. И. Выпов, занявший второе место в конкурсе. Алюминиевый герб СССР выковали мастера Новокузнецкого художественного фонда, а строительство завершили к 30 декабря 1972 года. Памятник известен под разными названиями, включая «Дружба народов» и «Каменный цветок». ", + "address": "Октябрьский пр., 2Б", + "photo_url": "https://i.imgur.com/BgoSodj.jpeg" + } +] + +# Клавиатура с кнопками +def generate_keyboard(): + buttons = [] + for i, attr in enumerate(attractions, 1): + buttons.append([InlineKeyboardButton( + text=f"{i}. {attr['name']}", + callback_data=f"attr_{i-1}" + )]) + return InlineKeyboardMarkup(inline_keyboard=buttons) + +# Команды /start и /help +@dp.message(Command("start", "help")) +async def cmd_start(message: types.Message): + await message.answer( + "🏙️ Добро пожаловать в гид по Новокузнецку!\n" + "Выберите достопримечательность:", + reply_markup=generate_keyboard() + ) + +# Команда /list +@dp.message(Command("list")) +async def cmd_list(message: types.Message): + await message.answer( + "🗺️ Список достопримечательностей:", + reply_markup=generate_keyboard() + ) + +# Обработка нажатий на кнопки +@dp.callback_query(F.data.startswith("attr_")) +async def show_attraction(callback: types.CallbackQuery): + try: + index = int(callback.data.split("_")[1]) + attr = attractions[index] + + caption = ( + f"🏛 {attr['name']}\n\n" + f"📖 {attr['description']}\n\n" + f"📍 Адрес: {attr['address']}" + ) + + # Отправка фото (file_id или URL) + if "file_id" in attr: + await callback.message.answer_photo( + photo=attr["file_id"], + caption=caption, + parse_mode="HTML" + ) + elif "photo_url" in attr: + await callback.message.answer_photo( + photo=attr["photo_url"], + caption=caption, + parse_mode="HTML" + ) + else: + await callback.message.answer(caption, parse_mode="HTML") + + except Exception as e: + logging.error(f"Ошибка: {e}") + await callback.message.answer("⚠️ Произошла ошибка") + finally: + await callback.answer() + +# Запуск бота +async def main(): + await dp.start_polling(bot) + +if __name__ == "__main__": + import asyncio + asyncio.run(main())