14 Commits
Author SHA1 Message Date
admin 61c66def3f feat(training): summarize learned profile and add info button 2026-10-29 20:05:42 +02:00
admin dc2ec6344b fix(subscription): process zero-day one-star payment 2026-10-29 13:03:55 +02:00
admin 3819230b3e test: add zero-star invoice probe 2026-10-21 12:56:50 +02:00
admin c32702c402 fix: simplify subscription payment messages 2026-10-20 21:13:51 +02:00
admin 112c3247e0 feat: add per-user analytics and stats report 2026-10-20 16:42:30 +02:00
admin 9c37a05139 fix: simplify user-facing bot messages 2026-10-19 15:15:53 +02:00
admin 073c7d2c81 fix: use reply keyboard for subscription purchase 2026-10-12 21:14:58 +02:00
hermes a11b5aac64 feat: перевести навигацию справки на inline-клавиатуру 2026-10-11 22:55:17 +02:00
admin 87e421ae73 feat: stream operation status as a live draft with activity phrases
Статус долгой операции больше не оставляет в чате отдельное сообщение:
в приватном чате он стримится живым драфтом (sendMessageDraft), пока
идет классификация, генерация, чтение скриншотов или распознавание речи.

- activity_phrases.py: пулы фраз по типу операции (generation, training,
  images, voice, ideas), случайный интервал 3-8 сек (ACTIVITY_MIN_SECONDS /
  ACTIVITY_MAX_SECONDS), фраза не повторяет предыдущую
- OperationStatus: драфт со стабильным draft_id, фоновая ротация фраз,
  finish() отправляет финальный статус реальным сообщением, retarget()
  меняет пул на лету (generate_ideas), предохранитель ACTIVITY_MAX_ROTATIONS
- в группах и топиках драфты недоступны: прежний answer + edit_text,
  ротация фраз отключена; при ошибке драфта автоматический откат
- Dockerfile копирует activity_phrases.py и support.py, иначе контейнер
  падает на импорте

Проверено: 172 теста OK,其中包括 14 новых в tests/test_activity_phrases.py.
Тесты нашли и закрыли баг: ротация запускалась и в группах, где каждый тик
был бы реальным редактированием сообщения.

VERSION: 0.1.0+48 -> 0.1.0+49
2026-10-11 14:51:07 +02:00
admin e847a4b390 feat: add generate-post button 2026-10-09 19:42:35 +02:00
admin 1dffdcf32d feat: confirm training reset and polish bot messages 2026-10-08 21:21:58 +02:00
admin 6dd685a6a5 feat: refine mode navigation and subscription renewal UX 2026-10-08 16:34:24 +02:00
admin 36a17f7639 feat: add mode-based bot navigation 2026-10-08 15:56:32 +02:00
admin 971bf115da feat: reply-клавиатура + фикс пропавший _send_idea
- keyboards.py: MAIN_MENU (✍️ Написать пост / 💡 Идея / 🎨 Мой стиль / 📖 Помощь / 💳 Подписка / 👤 Баланс)
  и LOCKED_MENU — при блокировке первой кнопкой идёт «💳 Оплатить подписку»
- кнопки не обходят роутинг: resolve_button_text превращает их в slash-команду
  (/help, /balance, /subscribe, /style) или готовый запрос («Напиши пост», «предложи идею…»)
- новая команда /style показывает сохранённый Tone of Voice и подсказывает, как его настроить
- set_my_commands публикует slash-команды при старте, ошибка не роняет бот
- fix: _send_idea вызывалась на bot.py, но была потеряна в коммите про подписку —
  /idea падал с NameError; функция восстановлена
- 17 новых тестов клавиатуры; 92 теста OK; VERSION 0.1.0+26
2026-10-07 11:30:39 +02:00