✨ Реализованы все улучшения функционала бота
Блок 1: Система никнеймов - ✅ Добавлено поле nickname в модель User - ✅ Создана миграция для nickname - ✅ Обновлена регистрация (3 шага: nickname → карта → телефон) - ✅ Валидация nickname (длина 2-20, проверка служебных слов) - ✅ Подписи в чате используют nickname Блок 2: Админские функции - ✅ Массовая рассылка (кнопка в админке, поддержка текста/фото/видео/документов) - ✅ Экспорт пользователей в JSON (бэкап с метаданными) - ✅ Импорт пользователей из JSON (восстановление с обновлением) Блок 3: Улучшения розыгрышей - ✅ Рассылка результатов розыгрыша всем участникам (кроме победителей) - ✅ Сообщения подтверждения показывают nickname + клубную карту - ✅ Ручное назначение победителя по номеру счета/telegram ID/username
This commit is contained in:
@@ -14,6 +14,7 @@ class User(Base):
|
||||
username = Column(String(255))
|
||||
first_name = Column(String(255))
|
||||
last_name = Column(String(255))
|
||||
nickname = Column(String(100), nullable=True) # Никнейм пользователя для чата
|
||||
phone = Column(String(20), nullable=True) # Телефон для верификации
|
||||
club_card_number = Column(String(50), unique=True, nullable=True, index=True) # Номер клубной карты
|
||||
is_registered = Column(Boolean, default=False) # Прошел ли полную регистрацию
|
||||
|
||||
@@ -13,7 +13,7 @@ class UserService:
|
||||
@staticmethod
|
||||
async def get_or_create_user(session: AsyncSession, telegram_id: int,
|
||||
username: str = None, first_name: str = None,
|
||||
last_name: str = None) -> User:
|
||||
last_name: str = None, nickname: str = None) -> User:
|
||||
"""Получить или создать пользователя"""
|
||||
# Пробуем найти существующего пользователя
|
||||
result = await session.execute(
|
||||
@@ -26,6 +26,9 @@ class UserService:
|
||||
user.username = username
|
||||
user.first_name = first_name
|
||||
user.last_name = last_name
|
||||
# Обновляем nickname только если он передан
|
||||
if nickname is not None:
|
||||
user.nickname = nickname
|
||||
await session.commit()
|
||||
return user
|
||||
|
||||
@@ -34,7 +37,8 @@ class UserService:
|
||||
telegram_id=telegram_id,
|
||||
username=username,
|
||||
first_name=first_name,
|
||||
last_name=last_name
|
||||
last_name=last_name,
|
||||
nickname=nickname
|
||||
)
|
||||
session.add(user)
|
||||
await session.commit()
|
||||
|
||||
Reference in New Issue
Block a user