/
temast
/
AMIR
Обзор
Документация
Войти
/
temast
/
AMIR
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
bot
408 строк
21 KB
temast
create bot
12 ноя 2025, 10:22
12 ноя 2025, 10:22
d689a27
Код
Авторство
О чём код?
from aiogram import Bot, Dispatcher from aiogram.types import Message, ReplyKeyboardMarkup, KeyboardButton from aiogram.filters import Command import asyncio # <<< ЗАМЕНИ НА СВОЙ ТОКЕН ОТ @BotFather >>> BOT_TOKEN = "8497219770:AAGNC6UGmK3gAHXFVoGbqxaxCotnonBUzEc" bot = Bot(token=BOT_TOKEN) dp = Dispatcher() def get_main_menu() -> ReplyKeyboardMarkup: return ReplyKeyboardMarkup( keyboard=[ [KeyboardButton(text="⚽ Футбол"), KeyboardButton(text="🏀 Баскетбол")], [KeyboardButton(text="🏎️ Формула 1"), KeyboardButton(text="🏒 Хоккей")], [KeyboardButton(text="🎾 Теннис"), KeyboardButton(text="🏐 Волейбол")], [KeyboardButton(text="🥊 Бокс"), KeyboardButton(text="🥋 ММА")], [KeyboardButton(text="⛸️ Фигурное катание"), KeyboardButton(text="ℹ️ О боте")] ], resize_keyboard=True ) def get_detailed_menu(sport_name: str) -> ReplyKeyboardMarkup: return ReplyKeyboardMarkup( keyboard=[ [KeyboardButton(text=f"📚 Информация ({sport_name})")], [KeyboardButton(text=f"📜 Правила ({sport_name})")], [KeyboardButton(text=f"🌟 Спортсмены ({sport_name})")], [KeyboardButton(text=f"📊 Таблица 2024/25 ({sport_name})")], [KeyboardButton(text="↩️ Назад")] ], resize_keyboard=True ) # === START === @dp.message(Command("start")) async def start(message: Message): await message.answer( "👋 Привет! Я — твой спортивный гид!\n\n" "Выбери, о каком виде спорта хочешь узнать:", reply_markup=get_main_menu() ) # ============================================================================== # ФУТБОЛ # ============================================================================== @dp.message(lambda m: m.text == "⚽ Футбол") async def football_menu(message: Message): await message.answer("⚽ Что интересует?", reply_markup=get_detailed_menu("футбол")) @dp.message(lambda m: "Информация (футбол)" in m.text) async def football_info(message: Message): await message.answer("⚽ <b>Футбол</b> — самый популярный командный вид спорта в мире!", parse_mode="HTML") @dp.message(lambda m: "Правила (футбол)" in m.text) async def football_rules(message: Message): await message.answer("📜 Основные правила: 11 игроков, 2 тайма по 45 мин, нельзя руками (кроме вратаря).", parse_mode="HTML") @dp.message(lambda m: "Спортсмены (футбол)" in m.text) async def football_legends(message: Message): await message.answer("🌟 Легенды: Месси, Роналду, Пеле, Марадона.", parse_mode="HTML") @dp.message(lambda m: "Таблица 2024/25 (футбол)" in m.text) async def football_table(message: Message): await message.answer( "📊 <b>Футбол — итоги сезона 2023/24</b>\n\n" "🏆 <b>Ла Лига (Испания)</b>\n" "1. Барселона — 88 (102-39)\n" "2. Реал Мадрид — 84 (78-38)\n" "3. Атлетико Мадрид — 76 (68-30)\n" "4. Атлетик Бильбао — 70 (54-29)\n" "5. Вильярреал — 70 (71-51)\n\n" "🏆 <b>Серия А (Италия)</b>\n" "1. Наполи — 82 (59-27)\n" "2. Интер — 81 (79-35)\n" "3. Аталанта — 74 (78-37)\n" "4. Ювентус — 70 (58-35)\n" "5. Рома — 69 (56-35)\n\n" "🏆 <b>Премьер-лига (Англия)</b>\n" "1. Ливерпуль — 84 (86-41)\n" "2. Арсенал — 74 (69-34)\n" "3. Манчестер Сити — 71 (72-44)\n" "4. Челси — 69 (64-43)\n" "5. Ньюкасл Юнайтед — 66 (68-47)\n\n" "🏆 <b>Лига 1 (Франция)</b>\n" "1. ПСЖ — 84 (92-35)\n" "2. Марсель — 65 (74-47)\n" "3. Монако — 61 (63-41)\n" "4. Ницца — 60 (66-41)\n" "5. Лилль — 60 (52-36)", parse_mode="HTML" ) # ============================================================================== # БАСКЕТБОЛ # ============================================================================== @dp.message(lambda m: m.text == "🏀 Баскетбол") async def basketball_menu(message: Message): await message.answer("🏀 Что интересует?", reply_markup=get_detailed_menu("баскетбол")) @dp.message(lambda m: "Информация (баскетбол)" in m.text) async def basketball_info(message: Message): await message.answer("🏀 Баскетбол — игра, изобретённая в 1891 году. Цель — забросить мяч в корзину.", parse_mode="HTML") @dp.message(lambda m: "Правила (баскетбол)" in m.text) async def basketball_rules(message: Message): await message.answer("📜 Матч: 4 четверти. 24-секундное правило. Нельзя пробежку.", parse_mode="HTML") @dp.message(lambda m: "Спортсмены (баскетбол)" in m.text) async def basketball_legends(message: Message): await message.answer("🌟 Легенды: Майкл Джордан, Леброн Джеймс, Коби Брайант, Стеф Карри.", parse_mode="HTML") @dp.message(lambda m: "Таблица 2024/25 (баскетбол)" in m.text) async def basketball_table(message: Message): await message.answer( "📊 <b>НБА — сезон 2024/25 (итог)</b>\n\n" "🏆 Чемпион: Boston Celtics\n" "🥈 Финалист: Denver Nuggets\n\n" "Топ-5 Востока:\n" "1. Boston Celtics\n" "2. Milwaukee Bucks\n" "3. Cleveland Cavaliers\n" "4. New York Knicks\n" "5. Philadelphia 76ers\n\n" "Топ-5 Запада:\n" "1. Denver Nuggets\n" "2. Oklahoma City Thunder\n" "3. Minnesota Timberwolves\n" "4. LA Lakers\n" "5. Phoenix Suns", parse_mode="HTML" ) # ============================================================================== # ФОРМУЛА 1 # ============================================================================== @dp.message(lambda m: m.text == "🏎️ Формула 1") async def f1_menu(message: Message): await message.answer("🏎️ Что интересует?", reply_markup=get_detailed_menu("Формула 1")) @dp.message(lambda m: "Информация (Формула 1)" in m.text) async def f1_info(message: Message): await message.answer("🏎️ Формула 1 — высший класс автогонок с открытыми колёсами.", parse_mode="HTML") @dp.message(lambda m: "Правила (Формула 1)" in m.text) async def f1_rules(message: Message): await message.answer("📜 Гонка до 305 км. Обязательная смена резины. Очки: 25-18-15-...", parse_mode="HTML") @dp.message(lambda m: "Спортсмены (Формула 1)" in m.text) async def f1_legends(message: Message): await message.answer("🌟 Легенды: Хэмилтон, Шумахер, Сенна, Ферстаппен.", parse_mode="HTML") @dp.message(lambda m: "Таблица 2024/25 (Формула 1)" in m.text) async def f1_table(message: Message): await message.answer( "📊 <b>Формула 1 — итоги сезона 2024</b>\n\n" "🏆 Чемпион пилотов: Max Verstappen\n" "🥈 2-е место: Lando Norris\n" "🥉 3-е место: Charles Leclerc\n\n" "<b>Кубок конструкторов:</b>\n" "1. Red Bull Racing — 756 🏆\n" "2. McLaren — 620\n" "3. Ferrari — 592", parse_mode="HTML" ) # ============================================================================== # ХОККЕЙ # ============================================================================== @dp.message(lambda m: m.text == "🏒 Хоккей") async def hockey_menu(message: Message): await message.answer("🏒 Что интересует?", reply_markup=get_detailed_menu("хоккей")) @dp.message(lambda m: "Информация (хоккей)" in m.text) async def hockey_info(message: Message): await message.answer("🏒 Хоккей — игра на льду с шайбой. 6 игроков, 3 периода по 20 мин.", parse_mode="HTML") @dp.message(lambda m: "Правила (хоккей)" in m.text) async def hockey_rules(message: Message): await message.answer("📜 За фол — удаление. При ничьей — овертайм или буллиты.", parse_mode="HTML") @dp.message(lambda m: "Спортсмены (хоккей)" in m.text) async def hockey_legends(message: Message): await message.answer("🌟 Легенды: Овечкин, Гретцки, Харламов, Фетисов.", parse_mode="HTML") @dp.message(lambda m: "Таблица 2024/25 (хоккей)" in m.text) async def hockey_table(message: Message): await message.answer( "📊 <b>КХЛ — итоги сезона 2024/25</b>\n\n" "🏆 Обладатель Кубка Гагарина: CSKA Москва\n" "🥈 Финалист: Ак Барс\n\n" "<b>Регулярный чемпион:</b> СКА Санкт-Петербург\n\n" "Топ-5 Запада:\n" "1. CSKA Москва\n" "2. СКА\n" "3. Динамо М\n" "4. Локомотив\n" "5. Спартак\n\n" "Топ-5 Востока:\n" "1. Ак Барс\n" "2. Металлург Мг\n" "3. Автомобилист\n" "4. Трактор\n" "5. Салават Юлаев", parse_mode="HTML" ) # ============================================================================== # ТЕННИС # ============================================================================== @dp.message(lambda m: m.text == "🎾 Теннис") async def tennis_menu(message: Message): await message.answer("🎾 Что интересует?", reply_markup=get_detailed_menu("теннис")) @dp.message(lambda m: "Информация (теннис)" in m.text) async def tennis_info(message: Message): await message.answer("🎾 Теннис — игра ракетками через сетку. Есть одиночные и парные разряды.", parse_mode="HTML") @dp.message(lambda m: "Правила (теннис)" in m.text) async def tennis_rules(message: Message): await message.answer("📜 Счёт: 15-30-40-игра. Сет — до 6 игр (+2).", parse_mode="HTML") @dp.message(lambda m: "Спортсмены (теннис)" in m.text) async def tennis_legends(message: Message): await message.answer("🌟 Легенды: Федерер, Надаль, Джокович, Серена Уильямс.", parse_mode="HTML") @dp.message(lambda m: "Таблица 2024/25 (теннис)" in m.text) async def tennis_table(message: Message): await message.answer( "📊 <b>Итоги сезона 2024 (рейтинги и титулы)</b>\n\n" "<b>Мужчины (ATP):</b>\n" "• Итоговый №1: Jannik Sinner\n" "• Australian Open: Sinner\n" "• Roland Garros: Carlos Alcaraz\n" "• Уимблдон: Novak Djokovic\n" "• US Open: Daniil Medvedev\n\n" "<b>Женщины (WTA):</b>\n" "• Итоговый №1: Iga Świątek\n" "• Australian Open: Aryna Sabalenka\n" "• Roland Garros: Iga Świątek\n" "• Уимблдон: Coco Gauff\n" "• US Open: Jessica Pegula", parse_mode="HTML" ) # ============================================================================== # ВОЛЕЙБОЛ # ============================================================================== @dp.message(lambda m: m.text == "🏐 Волейбол") async def volleyball_menu(message: Message): await message.answer("🏐 Что интересует?", reply_markup=get_detailed_menu("волейбол")) @dp.message(lambda m: "Информация (волейбол)" in m.text) async def volleyball_info(message: Message): await message.answer("🏐 Волейбол — команда из 6 игроков. Цель — отправить мяч на пол соперника.", parse_mode="HTML") @dp.message(lambda m: "Правила (волейбол)" in m.text) async def volleyball_rules(message: Message): await message.answer("📜 До 25 очков (минимум +2). 5 сетов максимум.", parse_mode="HTML") @dp.message(lambda m: "Спортсмены (волейбол)" in m.text) async def volleyball_legends(message: Message): await message.answer("🌟 Легенды: Максим Михайлов, Светлана Ходунова, Иван Зайцев, Фофанов.", parse_mode="HTML") @dp.message(lambda m: "Таблица 2024/25 (волейбол)" in m.text) async def volleyball_table(message: Message): await message.answer( "📊 <b>Суперлига (мужчины) — итоги 2024/25</b>\n\n" "🏆 Чемпион: Зенит Санкт-Петербург\n" "🥈 Серебро: Локомотив Новосибирск\n" "🥉 Бронза: Факел\n\n" "4. Динамо Москва\n" "5. Белогорье\n" "6. Газпром-Югра", parse_mode="HTML" ) # ============================================================================== # БОКС # ============================================================================== @dp.message(lambda m: m.text == "🥊 Бокс") async def boxing_menu(message: Message): await message.answer("🥊 Что интересует?", reply_markup=get_detailed_menu("бокс")) @dp.message(lambda m: "Информация (бокс)" in m.text) async def boxing_info(message: Message): await message.answer("🥊 Бокс — единоборство в перчатках. Победа — нокаут или решение судей.", parse_mode="HTML") @dp.message(lambda m: "Правила (бокс)" in m.text) async def boxing_rules(message: Message): await message.answer("📜 Раунды по 3 мин. Запрещены удары ниже пояса, в затылок, лоу-блоу.", parse_mode="HTML") @dp.message(lambda m: "Спортсмены (бокс)" in m.text) async def boxing_legends(message: Message): await message.answer("🌟 Легенды: Мухаммед Али, Майк Тайсон, Флойд Мэйуэзер, Олег Мaskaев.", parse_mode="HTML") @dp.message(lambda m: "Таблица 2024/25 (бокс)" in m.text) async def boxing_table(message: Message): await message.answer( "📊 <b>Итоги 2024/25 — тяжёлый вес</b>\n\n" "• Чемпион мира (объединённый): Oleksandr Usyk\n" "• Экс-чемпион: Tyson Fury (ушёл в отставку)\n\n" "<b>Топ-5 рейтинга:</b>\n" "1. Oleksandr Usyk\n" "2. Anthony Joshua\n" "3. Deontay Wilder\n" "4. Zhilei Zhang\n" "5. Joseph Parker", parse_mode="HTML" ) # ============================================================================== # ММА # ============================================================================== @dp.message(lambda m: m.text == "🥋 ММА") async def mma_menu(message: Message): await message.answer("🥋 Что интересует?", reply_markup=get_detailed_menu("ММА")) @dp.message(lambda m: "Информация (ММА)" in m.text) async def mma_info(message: Message): await message.answer("🥋 ММА — смешанные боевые искусства. Разрешены удары, борьба, удушающие приёмы.", parse_mode="HTML") @dp.message(lambda m: "Правила (ММА)" in m.text) async def mma_rules(message: Message): await message.answer("📜 Запрещены: тычок пальцами в глаза, удары локтем снизу, укусы.", parse_mode="HTML") @dp.message(lambda m: "Спортсмены (ММА)" in m.text) async def mma_legends(message: Message): await message.answer("🌟 Легенды: Конор Макгрегор, Хабиб Нурмагомедов, Джон Джонс, Аманда Нуньес.", parse_mode="HTML") @dp.message(lambda m: "Таблица 2024/25 (ММА)" in m.text) async def mma_table(message: Message): await message.answer( "📊 <b>UFC — чемпионы на конец 2024/25</b>\n\n" "• Тяжёлый: Jon Jones 🏆\n" "• Полутяжёлый: Alex Pereira 🏆\n" "• Средний: Dricus Du Plessis 🏆\n" "• Полусредний: Belal Muhammad 🏆\n" "• Лёгкий: Islam Makhachev 🏆\n" "• Полулёгкий: Ilia Topuria 🏆\n" "• Жен. бантам: Raquel Pennington 🏆\n" "• Жен. легчайший: Mayra Bueno Silva 🏆", parse_mode="HTML" ) # ============================================================================== # ФИГУРНОЕ КАТАНИЕ # ============================================================================== @dp.message(lambda m: m.text == "⛸️ Фигурное катание") async def figure_skating_menu(message: Message): await message.answer("⛸️ Что интересует?", reply_markup=get_detailed_menu("Фигурное катание")) @dp.message(lambda m: "Информация (Фигурное катание)" in m.text) async def figure_skating_info(message: Message): await message.answer("⛸️ Фигурное катание — вид спорта, сочетающий спорт и искусство на льду.", parse_mode="HTML") @dp.message(lambda m: "Правила (Фигурное катание)" in m.text) async def figure_skating_rules(message: Message): await message.answer("📜 Оценка: техническая сложность + компоненты программы (артистизм, скольжение и т.д.).", parse_mode="HTML") @dp.message(lambda m: "Спортсмены (Фигурное катание)" in m.text) async def figure_skating_legends(message: Message): await message.answer("🌟 Легенды: Евгений Плющенко, Алина Загитова, Юдзуру Ханю, Наталия Бестемьянова.", parse_mode="HTML") @dp.message(lambda m: "Таблица 2024/25 (Фигурное катание)" in m.text) async def figure_skating_table(message: Message): await message.answer( "📊 <b>Чемпионат мира 2025 — итоги</b>\n\n" "<b>Мужчины:</b>\n" "1. Ilia Malinin (USA) 🥇\n" "2. Shoma Uno (JPN) 🥈\n" "3. Adam Siao Him Fa (FRA) 🥉\n\n" "<b>Женщины:</b>\n" "1. Kaori Sakamoto (JPN) 🥇\n" "2. Isabeau Levito (USA) 🥈\n" "3. Kim Chae-yeon (KOR) 🥉\n\n" "<b>Пары:</b>\n" "1. Мишина / Галлямов (RUS) 🥇", parse_mode="HTML" ) # ============================================================================== # ОБЩИЕ КОМАНДЫ # ============================================================================== @dp.message(lambda m: m.text == "↩️ Назад") async def back_to_main(message: Message): await message.answer("Выбери вид спорта:", reply_markup=get_main_menu()) @dp.message(lambda m: m.text == "ℹ️ О боте") async def about(message: Message): await message.answer( "🤖 <b>Спортивный Гид</b>\n\n" "Информация, правила, легенды и итоговые таблицы по 9 видам спорта.\n" "Футбол — реальные итоги 2023/24.\n" "Остальные — прогнозы на конец сезона 2024/25.\n\n" "Создан для болельщиков и новичков!", parse_mode="HTML" ) # ============================================================================== # ЗАПУСК # ============================================================================== async def main(): await dp.start_polling(bot) if __name__ == "__main__": asyncio.run(main())