- Добавлен обработчик handle_edit_field для admin_edit_field_{id}_{field} callbacks
- Исправлен toggle_lottery_active - теперь передаёт state вместо None
- Правильный парсинг lottery_id из позиции 3, а не с конца строки
- Обработка 'message is not modified' в bot_controller
- Модифицированы обработчики сообщений для поддержки редактирования
- Добавлен метод update_lottery в LotteryService
- Исправлены ошибки ValueError и AttributeError в меню редактирования
- Makefile автоматически находит docker compose или docker-compose
- Добавлена команда make docker-check для проверки окружения
- Создана документация DOCKER_INSTALL.md
- Обновлен DEPLOY_QUICKSTART.md с инструкцией по установке Docker
- Все docker команды теперь используют переменную DOCKER_COMPOSE
Исправляет ошибку: 'docker-compose: No such file or directory'
- Удален зависимость от встроенного PostgreSQL контейнера в docker-compose.yml
- Добавлена полная документация по настройке внешней БД (EXTERNAL_DB_SETUP.md)
- Обновлен .env.prod с комментариями для внешнего сервера
- Добавлены Makefile команды для проверки и настройки внешней БД
- Обновлен README.md с инструкциями по деплою
Теперь бот использует внешний PostgreSQL сервер:
- Убран depends_on для db сервиса
- DATABASE_URL настраивается через .env.prod
- Поддержка локальных и удаленных БД серверов
- Гибкая конфигурация через переменные окружения
- Add bot_control.sh script for safe bot management
- Prevent 'Conflict: terminated by other getUpdates' error
- Add Makefile commands: bot-start, bot-stop, bot-restart, bot-status, bot-logs
- Add BOT_MANAGEMENT.md with usage instructions
- Use PID file to track single bot instance
- Auto-stop all old processes before starting
- Add .bot.pid to .gitignore
Fixes issue where multiple bot instances cause command processing failures
Основные изменения:
✨ Новые функции:
- Система регистрации пользователей с множественными счетами
- Автоматическое подтверждение выигрышей через inline-кнопки
- Механизм переигровки для неподтвержденных выигрышей (24 часа)
- Подтверждение на уровне счетов (каждый счет подтверждается отдельно)
- Скрипт полной очистки базы данных
🔧 Технические улучшения:
- Исправлена ошибка MissingGreenlet при lazy loading (добавлен joinedload/selectinload)
- Добавлено поле claimed_at для отслеживания времени подтверждения
- Пакетное добавление счетов с выбором розыгрыша
- Проверка владения конкретным счетом при подтверждении
📚 Документация:
- docs/AUTO_CONFIRM_SYSTEM.md - Полная документация системы подтверждения
- docs/ACCOUNT_BASED_CONFIRMATION.md - Подтверждение на уровне счетов
- docs/REGISTRATION_SYSTEM.md - Система регистрации
- docs/ADMIN_COMMANDS.md - Команды администратора
- docs/CLEAR_DATABASE.md - Очистка БД
- docs/QUICK_GUIDE.md - Быстрое начало
- docs/UPDATE_LOG.md - Журнал обновлений
🗄️ База данных:
- Миграция 003: Таблицы accounts, winner_verifications
- Миграция 004: Поле claimed_at в таблице winners
- Скрипт scripts/clear_database.py для полной очистки
🎮 Новые команды:
Админские:
- /check_unclaimed <lottery_id> - Проверка неподтвержденных выигрышей
- /redraw <lottery_id> - Повторный розыгрыш
- /add_accounts - Пакетное добавление счетов
- /list_accounts <telegram_id> - Список счетов пользователя
Пользовательские:
- /register - Регистрация с вводом данных
- /my_account - Просмотр своих счетов
- Callback confirm_win_{id} - Подтверждение выигрыша
🛠️ Makefile:
- make clear-db - Очистка всех данных из БД (с подтверждением)
🔒 Безопасность:
- Проверка владения счетом при подтверждении
- Защита от подтверждения чужих счетов
- Независимое подтверждение каждого выигрышного счета
📊 Логика работы:
1. Пользователь регистрируется и добавляет счета
2. Счета участвуют в розыгрыше
3. Победители получают уведомление с кнопкой подтверждения
4. Каждый счет подтверждается отдельно (24 часа на подтверждение)
5. Неподтвержденные выигрыши переигрываются через /redraw