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()