🎫 Обновление системы промокодов
✨ Новые возможности
Полное редактирование промокодов
- Изменение суммы бонуса для промокодов баланса
- Редактирование количества дней для промокодов подписки
- Настройка лимита использований (включая безлимитные)
- Установка срока действия промокода
Улучшенная статистика
- Отображение username пользователей в статистике использований
- Показ полного имени при отсутствии username
- Резервный показ Telegram ID для анонимных пользователей
🐛 Исправления
Критические ошибки
- Исправлено удаление промокодов: устранена ошибка нарушения внешнего ключа при удалении
- Устранена ошибка "message is not modified": исправлена регистрация обработчиков callback-запросов
- Добавлены недостающие импорты: исправлена ошибка
NameError: name 'User' is not defined
Архитектурные улучшения
- Правильный порядок регистрации обработчиков (специфичные перед общими)
- Корректное извлечение ID промокодов из callback_data
- Каскадное удаление связанных записей использования промокодов
🎨 Улучшения интерфейса
- Кликабельные кнопки управления вместо текстовых команд
/promo_1 - Информативные меню редактирования с отображением текущих параметров
- Расширенная статистика с детальной информацией о пользователях
- Подтверждение удаления с дополнительной информацией о промокоде
🔧 Технические детали
Обновленные файлы
app/handlers/admin/promocodes.py- полная система редактированияapp/database/crud/promocode.py- исправленная CRUD логика- Добавлены новые FSM состояния для редактирования
Новые функции
show_promocode_edit_menu()- главное меню редактированияstart_edit_promocode_*()- обработчики начала редактированияhandle_edit_*()- логика обработки изменений- Улучшенная
get_promocode_statistics()с JOIN пользователей
Исправление ошибок реферальной системы
Исправлено
- Ошибка дублирования пользователей при регистрации с реферальным кодом
- Блокировка ввода реферальных кодов в AuthMiddleware во время регистрации
- Логика обработки существующих/удаленных пользователей при повторной регистрации
Добавлено
- Универсальный обработчик реферальных кодов - теперь можно вводить коды без команды /start
- Корректная проверка FSM состояний в AuthMiddleware для
waiting_for_referral_code - Отладочные логи для диагностики процесса регистрации
Технические изменения
- Обновлен
app/handlers/start.pyс обработчикомhandle_potential_referral_code - Исправлена логика валидации состояний в
app/middlewares/auth.py - Добавлена защита от создания дубликатов пользователей
- Улучшена обработка крайних случаев для удаленных и существующих пользователей
Обновление профилей пользователей
Исправления
- Автоматическое обновление профилей: При каждом взаимодействии с ботом (команда /start, нажатие кнопок) автоматически обновляются username, имя и фамилия пользователя
- Исправлена проблема с устаревшими данными: Перенесенные пользователи теперь получают актуальную информацию профиля
- Улучшено логирование: Добавлено отслеживание изменений профиля в логах
Затронутые файлы
app/handlers/start.py- добавлено обновление профиля в команде /startapp/middlewares/auth.py- добавлено обновление профиля во всех взаимодействиях
Техническая информация
Обновление происходит в двух местах:
- При выполнении команды
/start - В middleware при любом взаимодействии с ботом
Это гарантирует, что данные пользователей всегда остаются актуальными.
Full Changelog: v2.1.2...v2.1.3