Hello world!
import telebot from telebot.types import InlineKeyboardMarkup, InlineKeyboardButton BOT_TOKEN = "8888268319:AAHJNP2e6sA2FpiEmNT8moMEmZFJndrhKAc" bot = telebot.TeleBot(BOT_TOKEN) # --- ВОПРОСЫ ТЕСТА --- QUESTIONS = [ { "text": "Вопрос 1 из 7\n\n*Как ты чувствуешь себя, когда остаёшься одна без дел?*", "options": [ ("🌸 Мне спокойно, есть вдохновение", "A"), ("🌥 Немного пусто, но отвлекаюсь", "B"), ("🌧 Тяжело и тревожно", "C"), ] }, { "text": "Вопрос 2 из 7\n\n*Хочется ли тебе сейчас творить?*", "options": [ ("🌸 Да, идеи есть часто", "A"), ("🌥 Иногда, но редко дохожу", "B"), ("🌧 Нет, сил и желания нет", "C"), ] }, { "text": "Вопрос 3 из 7\n\n*Как ты принимаешь важные решения?*", "options": [ ("🌸 Слушаю себя и свои чувства", "A"), ("🌥 Сначала о других, потом о себе", "B"), ("🌧 Из чувства «надо» и правильности", "C"), ] }, { "text": "Вопрос 4 из 7\n\n*Что ты чувствуешь рядом с чужим успехом?*", "options": [ ("🌸 Вдохновение", "A"), ("🌥 Иногда укол сравнения", "B"), ("🌧 Зависть или обесценивание себя", "C"), ] }, { "text": "Вопрос 5 из 7\n\n*Есть ли в твоей жизни место новизне?*", "options": [ ("🌸 Да, люблю открытия и новые места", "A"), ("🌥 Немного, хочу больше", "B"), ("🌧 Почти нет, живу по привычке", "C"), ] }, { "text": "Вопрос 6 из 7\n\n*Насколько свободно ты выражаешь себя?*", "options": [ ("🌸 Свободно, могу быть собой", "A"), ("🌥 Не всегда, иногда сдерживаюсь", "B"), ("🌧 Часто боюсь осуждения и молчу", "C"), ] }, { "text": "Вопрос 7 из 7\n\n*Что ты чаще выбираешь?*", "options": [ ("🌸 Живой импульс и интерес", "A"), ("🌥 Комфорт и привычное", "B"), ("🌧 Обязанности и контроль", "C"), ] }, ] # --- РЕЗУЛЬТАТЫ --- RESULTS = { "A": { "title": "🌸 Твоя душа поёт", "text": ( "Ты в контакте с собой — есть живость, творчество и пространство для самовыражения.\n\n" "Продолжай делать то, что питает тебя: творчество, новизна, честность с собой и живые решения.\n\n" "Ты — тот редкий человек, чья душа умеет дышать. Береги это ✨" ) }, "B": { "title": "🌥 Душа тихо шепчет", "text": ( "Ты чувствуешь себя не до конца раскрытой, но внутри уже есть запрос на свободу и больше жизни.\n\n" "Твоя душа уже просит воздуха. Ей нужны маленькие шаги: больше творчества, тишины и честного взгляда на свои желания.\n\n" "Ты на пороге перемен — и это самое интересное место 🌿" ) }, "C": { "title": "🌧 Душа плачет", "text": ( "Сейчас ты сильно зажимаешь себя. Мало творчества, много «надо», страха и внутреннего напряжения.\n\n" "Это не приговор — это сигнал. Душа просит вернуться к себе: услышать свои желания, дать голос творчеству и свободе.\n\n" "Хорошая новость: ты уже сделала первый шаг — ты здесь и ты это читаешь 🤍" ) }, } MEDITATION_TEXT = ( "🎙 *Практика: Исцеление свободы самовыражения*\n\n" "Займи удобное положение... Закрой глаза... Сделай три глубоких вдоха...\n\n" "Представь, что из центра твоей груди исходит тёплый золотистый свет. " "Он поднимается к горлу, к устам... Это твой голос — настоящий.\n\n" "Есть что-то, что только ТЫ можешь выразить в этом мире.\n\n" "Произнеси внутри себя:\n" "_«Я позволяю себе быть услышанной»_\n" "_«Мой голос имеет значение»_\n" "_«Я выражаю себя свободно и с радостью»_\n" "_«Я больше не нуждаюсь в разрешении — я уже достаточна»_\n\n" "Побудь в этом состоянии... Запомни его в теле.\n\n" "Когда будешь готова — мягко открой глаза 🌸" ) # --- ХРАНИЛИЩЕ ОТВЕТОВ (в памяти) --- user_data = {} # --- СЕКЦИИ (из первого бота) --- SECTIONS = { "signs": { "title": "😢 Когда душа плачет: признаки", "text": ( "Душа плачет, когда мы игнорируем её истинные потребности.\n\n" "🔸 *Нет творческого порыва* — не хочется писать, рисовать, петь.\n\n" "🔸 *Зажатость в логике* — живёшь только из «надо», забыла о спонтанности.\n\n" "🔸 *Движение по привычным тропам* — избегаешь нового, ходишь знакомыми маршрутами." ) }, "opinion": { "title": "🎭 Влияние чужого мнения", "text": ( "Постоянная оглядка на окружающих — главный источник боли души.\n\n" "💬 *«Когда чужое мнение становится важнее нашей собственной души — наша душа плачет»*\n\n" "Каждый раз, когда ты отказываешься от того, что лежит на сердце, из страха осуждения — " "ты уходишь от своей истинной природы." ) }, "love": { "title": "💔 Как отношение к другим влияет на нас", "text": ( "Душа — это проявление любви и единства.\n\n" "🔸 Когда мы смотрим на других свысока — мы раним прежде всего себя.\n\n" "🔸 Душа помнит, что в каждом человеке есть такая же душа.\n\n" "*Она умеет только любить.* Когда мы ограничиваем любовь обидами и недоверием — душа плачет." ) }, "nature": { "title": "💖 Природа души: любовь, познание, свобода", "text": ( "Суть нашей души — любовь и стремление к познанию.\n\n" "💬 *«Душа тоскует по любви, когда мы своё сердце зажимаем в тиски»*\n\n" "Это случается, когда мы держимся за обиды или живём по ограничивающим убеждениям:\n" "— «Если со мной так было — так и будет»\n" "— «Все люди такие»\n\n" "Душа стремится к свободе и безусловной любви." ) }, "checklist": { "title": "🚀 Чек-лист: Возвращение к себе", "text": ( "*Прямо сейчас:*\n\n" "✅ Спроси себя: «Чего я по-настоящему хочу сейчас, без «надо» и чужого мнения?»\n\n" "✅ Сделай маленький творческий шаг — напиши строки, нарисуй, спой — для души.\n\n" "*На этой неделе:*\n\n" "✅ Исследуй что-то новое — новый маршрут, книга, незнакомый фильм.\n\n" "✅ Замечай моменты сравнения себя с другими. Остановись и вспомни о единстве душ.\n\n" "✅ Отпусти одну обиду. Проявь сострадание к тому, к кому обычно испытываешь негатив.\n\n" "✅ Найди одно ограничивающее убеждение и опровергни его действием." ) }, } # --- ВСПОМОГАТЕЛЬНЫЕ ФУНКЦИИ --- def main_menu_keyboard(): markup = InlineKeyboardMarkup(row_width=1) markup.add(InlineKeyboardButton("🎯 Пройти тест", callback_data="start_test")) markup.add(InlineKeyboardButton("📖 Читать конспект", callback_data="show_sections")) markup.add(InlineKeyboardButton("🧘 Получить практику", callback_data="meditation")) return markup def sections_keyboard(): markup = InlineKeyboardMarkup(row_width=1) for key, val in SECTIONS.items(): markup.add(InlineKeyboardButton(val["title"], callback_data=f"section_{key}")) markup.add(InlineKeyboardButton("⬅️ Главное меню", callback_data="menu")) return markup def back_to_menu(): markup = InlineKeyboardMarkup() markup.add(InlineKeyboardButton("⬅️ Главное меню", callback_data="menu")) return markup def question_keyboard(q_index, options): markup = InlineKeyboardMarkup(row_width=1) for label, score in options: markup.add(InlineKeyboardButton(label, callback_data=f"answer_{q_index}_{score}")) return markup def get_result(scores): count = {"A": scores.count("A"), "B": scores.count("B"), "C": scores.count("C")} winner = max(count, key=count.get) return RESULTS[winner] def after_result_keyboard(): markup = InlineKeyboardMarkup(row_width=1) markup.add(InlineKeyboardButton("🧘 Получить практику исцеления", callback_data="meditation")) markup.add(InlineKeyboardButton("📖 Читать конспект", callback_data="show_sections")) markup.add(InlineKeyboardButton("🔄 Пройти тест ещё раз", callback_data="start_test")) return markup # --- ХЭНДЛЕРЫ --- @bot.message_handler(commands=["start"]) def start(message): bot.send_message( message.chat.id, "✨ *О чём плачет душа?*\n\n" "Когда наша душа испытывает боль — это сигнал, что мы ушли от своей " "истинной природы: любви, творчества и познания.\n\n" "Выбери, с чего начать 👇", parse_mode="Markdown", reply_markup=main_menu_keyboard() ) @bot.callback_query_handler(func=lambda call: call.data == "menu") def back_menu(call): bot.edit_message_text( chat_id=call.message.chat.id, message_id=call.message.message_id, text="✨ *О чём плачет душа?*\n\nВыбери, с чего начать 👇", parse_mode="Markdown", reply_markup=main_menu_keyboard() ) @bot.callback_query_handler(func=lambda call: call.data == "start_test") def start_test(call): user_data[call.from_user.id] = [] q = QUESTIONS[0] bot.edit_message_text( chat_id=call.message.chat.id, message_id=call.message.message_id, text=q["text"], parse_mode="Markdown", reply_markup=question_keyboard(0, q["options"]) ) @bot.callback_query_handler(func=lambda call: call.data.startswith("answer_")) def handle_answer(call): parts = call.data.split("_") q_index = int(parts[1]) score = parts[2] uid = call.from_user.id if uid not in user_data: user_data[uid] = [] user_data[uid].append(score) next_index = q_index + 1 if next_index < len(QUESTIONS): q = QUESTIONS[next_index] bot.edit_message_text( chat_id=call.message.chat.id, message_id=call.message.message_id, text=q["text"], parse_mode="Markdown", reply_markup=question_keyboard(next_index, q["options"]) ) else: result = get_result(user_data[uid]) bot.edit_message_text( chat_id=call.message.chat.id, message_id=call.message.message_id, text=f"*{result['title']}*\n\n{result['text']}", parse_mode="Markdown", reply_markup=after_result_keyboard() ) @bot.callback_query_handler(func=lambda call: call.data == "meditation") def send_meditation(call): bot.edit_message_text( chat_id=call.message.chat.id, message_id=call.message.message_id, text=MEDITATION_TEXT, parse_mode="Markdown", reply_markup=back_to_menu() ) @bot.callback_query_handler(func=lambda call: call.data == "show_sections") def show_sections(call): bot.edit_message_text( chat_id=call.message.chat.id, message_id=call.message.message_id, text="📖 *Конспект: О чём плачет душа?*\n\nВыбери раздел 👇", parse_mode="Markdown", reply_markup=sections_keyboard() ) @bot.callback_query_handler(func=lambda call: call.data.startswith("section_")) def section_handler(call): key = call.data.replace("section_", "") section = SECTIONS.get(key) if section: markup = InlineKeyboardMarkup(row_width=1) markup.add(InlineKeyboardButton("⬅️ Назад к разделам", callback_data="show_sections")) bot.edit_message_text( chat_id=call.message.chat.id, message_id=call.message.message_id, text=f"*{section['title']}*\n\n{section['text']}", parse_mode="Markdown", reply_markup=markup ) bot.infinity_polling()
Made on
Tilda