diff --git a/bot-limp.py b/bot-limp.py index 6e4e267..78671e0 100644 --- a/bot-limp.py +++ b/bot-limp.py @@ -5,33 +5,27 @@ 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": "Кузнецкая крепость — крепость, опорный пункт Сибирской линии в верховьях реки Томь, сейчас памятник истории и архитектуры федерального значения.", + "description": "Кузнецкая крепость – выдающийся образец военно-инженерного искусства и единственная за Уралом. Это архитектурный символ Новокузнецка, занимающий 2,5 га. \n Возникла позже города: Кузнецкий острог построен в 1618 году на горе Вознесенской (позже Маяковой) при впадении ручья Водопадный в Томь. Защищал город с севера, имея выгодное положение на пути из Томска и Барнаула. Укрепления были деревянными или дерево-земляными. В 1689 году острог получил статус города.", "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": "В конце 1960-х ветераны предложили создать на КМК музей боевой и трудовой славы. Секретарь парткома Н. М. Миловацкий поддержал идею, и на заседании выбрали место для музея, заложив памятный камень. После всесоюзного конкурса лучшим признали проект скульптора Д. И. Народицкого и архитектора Н. Н. Миловидова.", + "address": "пл. Побед, 1/1", + "photo_url": "https://i.imgur.com/7ibuvPo.jpeg" }, { "name": "Спасо-Преображенский Собор", @@ -40,11 +34,18 @@ attractions = [ "photo_url": "https://i.imgur.com/Rs5xBVW.jpeg" }, { - "name": "Мемориальный музей боевой и трудовой славы", - "description": "В конце 1960-х ветераны предложили создать на КМК музей боевой и трудовой славы. Секретарь парткома Н. М. Миловацкий поддержал идею, и на заседании выбрали место для музея, заложив памятный камень. После всесоюзного конкурса лучшим признали проект скульптора Д. И. Народицкого и архитектора Н. Н. Миловидова.", - "address": "пл. Побед, 1/1", - "photo_url": "https://i.imgur.com/7ibuvPo.jpeg" + "name": "Бульвар героев", + "description": "Идея создания мемориала в честь погибших воинов-новокузнечан возникла в 1960-х. Хотя строительство не входило в утверждённые планы города, первый секретарь горкома КПСС Н. С. Ермаков решил возвести его под видом благоустройства. В 1966 году провели конкурс, и из 26 проектов выбрали работу молодого архитектора Юрия Журавкова.", + "address": "ул. Циолковского, 63", + "photo_url": "https://i.imgur.com/EArF3jd.jpeg" }, + { + "name": "Новокузнецкий драматический театр", + "description": "Новокузнецкий драматический театр - крупнейший театр в Кузбассе. Здание завершило ансамбль центральной площади города, формирование которой началось в соответствии с генеральным планом Горстройпроекта 1934 г. со строительства на её южной стороне Дворца культуры кузнецких металлургов. Драмтеатр расположен в восточной части Театральной площади, на месте, где в 1930-х гг. намечалось строительство второй очереди Дворца культуры.", + "address": "проспект Металлургов, 28", + "file_id": "AgACAgIAAxkBAAMWZ-Tq-9NPR_nlikl1GNGXN-1k9YEAAtXyMRsSgihLOZ1ZrpFqDDMBAAMCAAN5AAM2BA" + }, + { "name": "Новокузнецкий цирк", "description": "Новокузнецкий государственный цирк — культурный развлекательный центр в Новокузнецке, Россия. В России цирковые манежи есть только в республиканских, краевых и областных центрах. Новокузнецк — исключение из этого правила. В цирке есть 1685 мест для зрителей, а также гостиница для артистов.", @@ -59,7 +60,7 @@ attractions = [ } ] -# Клавиатура с кнопками +# клавиатура def generate_keyboard(): buttons = [] for i, attr in enumerate(attractions, 1): @@ -69,24 +70,25 @@ def generate_keyboard(): )]) return InlineKeyboardMarkup(inline_keyboard=buttons) -# Команды /start и /help +# /start @dp.message(Command("start", "help")) async def cmd_start(message: types.Message): - await message.answer( + sent_message = await message.answer( "🏙️ Добро пожаловать в гид по Новокузнецку!\n" "Выберите достопримечательность:", reply_markup=generate_keyboard() ) + + try: + await bot.pin_chat_message( + chat_id=message.chat.id, + message_id=sent_message.message_id, + disable_notification=True + ) + except Exception as e: + logging.error(f"Ошибка при закреплении: {e}") -# Команда /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: @@ -99,7 +101,7 @@ async def show_attraction(callback: types.CallbackQuery): f"📍 Адрес: {attr['address']}" ) - # Отправка фото (file_id или URL) + # отправка фото if "file_id" in attr: await callback.message.answer_photo( photo=attr["file_id"], @@ -121,7 +123,7 @@ async def show_attraction(callback: types.CallbackQuery): finally: await callback.answer() -# Запуск бота +# запуск бота async def main(): await dp.start_polling(bot)