February 1

Сонник-бот без мистики: как мы собрали продукт, который реально удобен

@SonnikProBot

Сделал бота для толкования снов @SonnikProBot. Не “магический шар”, не “предсказатель судьбы”, а инструмент, который помогает понятно и бережно интерпретировать сон в нужной подаче — без запугивания, диагнозов и “фатальных пророчеств”.

Главная цель была простая: чтобы работало стабильно.

Без артефактов, без “сломанных” сообщений в Telegram, без ситуаций, когда вместо сна улетает ссылка на файл или ответ превращается в нечитаемый лог.

Вход: текст или голос

Выбор ввода сна текстом или через голосовой черновик

✍️ Текстовый сон

Обычный сценарий: пользователь пишет сон — получает толкование.

🎙 Голосовой черновик

Один из самых любимых сценариев: человек диктует сон голосом, бот:

  1. забирает аудиофайл,
  2. расшифровывает речь,
  3. делает толкование уже по тексту.

Это решает две боли сразу:

  • длинные сны проще наговорить, чем печатать,
  • “черновики” можно отправлять сразу после пробуждения.

Критичный момент: чтобы везде уходил именно текст сна

Когда сон записан голосом, в системах часто хранится file_id (или ссылка на файл), а не сам текст.

И вот тут появляется типичный баг: пользователь меняет стиль или просит расширенное толкование — а туда уходит не сон, а идентификатор аудио.

Закрыл это просто и надежно: после транскрибации бот перезаписывает переменную сна текстом.

Дальше любые флоу (смена стиля, расширенный разбор, повторный разбор) работают с нормальным текстом, а не с “AwACAgIAAx…”.

Меню выбора стиля сна по умолчанию

Смена стиля: зачем вообще это нужно

Один и тот же сон можно трактовать по-разному — и это не “игра в слова”, а реально разные задачи.

🎭 Смена стиля — это повторный разбор того же сна в другой подаче, без сравнения с прошлым ответом.

  • 🧠 Психологический — про эмоции, потребности, внутренние конфликты, триггеры.
  • 📜 Классический сонник — символика “как в сонниках”, но без фатализма.
  • 🧩 Практичный — выводы и действия: что сделать/заметить/изменить.
  • ⚡ Коротко — 3–5 тезисов, без воды.

Пользователь выбирает под задачу: “понять чувства”, “увидеть символы”, “получить шаги”, “быстро прочитать”.

💡 Как это устроено по доступу

Для пользователей без подписки стиль толкования по умолчанию — 📜 Классический, и менять стиль по умолчанию в профиле нельзя. При этом сменить стиль всё равно можно — в расширенном толковании или как отдельной дополнительной услугой.

Пользователи с подпиской могут менять стиль толкования по умолчанию прямо в профиле — и получать ответы сразу в выбранной подаче.

Выбор стиля толкования конкретного сна или применение расширенного толкования сна

Расширенное толкование: когда нужно глубже

Иногда базового ответа мало — хочется:

  • больше деталей,
  • больше связей,
  • более точные формулировки,
  • больше практических выводов.

Для этого есть режим “Сделать точнее” (расширенное толкование).

Он не превращает ответ в “простыню ради простыни” — он делает разбор более насыщенным и полезным.

Про скорости

Обычно первичное толкование приходит очень быстро: даже если сон надиктован голосом (до ~5 минут), полный цикл “получили аудио → расшифровали → сделали разбор” занимает примерно 30–60 секунд.

Расширенное толкование чуть тяжелее по вычислениям — обычно 60–90 секунд. Иногда может быть дольше, если много запросов одновременно, но в целом ответы приходят почти сразу.

Подписки и покупки: чтобы подходило всем

Я не стал делать “только подписка”. У людей разный стиль использования.

🧩 Разовые/пакетные покупки — для тех, кто приходит редко или не хочет подписку.

💎 Подписка PRO — для тех, кто хочет “без ограничений”.

Отдельно: PRO 199 даёт то, что реально меняет опыт — голос и голосовые черновики.

“Честная подписка”: отключил — но доступ не режется

Частая раздражающая практика: человек отключает автопродление — и ему тут же режут доступ.

Я сделал нормально: если подписка оплачена на период — она работает до конца срока, даже если автопродление отключили на следующий день.

Триал максимального тарифа за подписку на каналы

Добавил пробный доступ к максимальному тарифу за подписку на 2 своих каналы.

Но важно было защититься от “подписался на 10 секунд — получил триал”.

Поэтому:

✅ подписка на каналы даёт триал

⛔ выход из канала — триал блокируется

Это честно: триал как бонус за поддержку, а не как лазейка.

Большой FAQ: закрываем вопросы до того, как их зададут

Сделал расширенный FAQ, который закрывает типовые “почему / как / что будет если”:

  • как работает стиль и чем они отличаются
  • что делать, если сон короткий или “непонятный”
  • как работает голос и почему иногда нужно говорить чуть ближе к микрофону
  • как работает подписка и продление
  • что будет при отключении автоплатежа
  • что делать при ошибке списания
  • как получить триал и почему он блокируется при выходе из каналов
  • и т.д.

Это уменьшает поддержку и делает продукт “самообъясняющимся”, в планах подключить Ai ассистента, как только соберется база вопросов от реальных пользователей, на которой его можно будет обучить.

Аналитика для админа: не “чувства”, а цифры

Я заложил большой аналитический слой:

  • сколько толкований сделано (по типам/планам),
  • сколько голосовых черновиков,
  • сколько смен стиля,
  • сколько расширенных толкований,
  • конверсии в подписку и удержание,
  • причины отвалов (где ломается сценарий),
  • и другие метрики.

Это помогает улучшать продукт не “на глаз”, а по факту.

В основе бота — связка PuzzleBot + n8n + OpenAI + Telegram + ЮKassa.

PuzzleBot отвечает за сценарии и переменные, n8n — за логику, ветвления и интеграции, OpenAI — за разбор и транскрибацию голоса, Telegram — за доставку и UX, а ЮKassa — за подписки и платежи. За счёт этого бот быстро реагирует, аккуратно форматирует ответы и стабильно отрабатывает сценарии (текст, голос, смена стиля, расширение).

Итог

@SonnikProBot — не про “вас ждёт судьбоносная встреча”.

@SonnikProBot про нормальный пользовательский опыт: написал или наговорил сон → получил разбор → при желании переключил стиль → при желании сделал глубже → всё работает стабильно.