Files
new_lottery_bot/docs/ACCOUNT_SYSTEM_GUIDE.md
2025-11-16 12:36:02 +09:00

3.8 KiB
Raw Permalink Blame History

# Руководство по работе со счетами в розыгрышах

## Обзор

Теперь бот поддерживает два режима участия в розыгрышах:
1. **Старый режим**: участие пользователей по Telegram ID
2. **Новый режим**: участие по счетам формата `XX-XX-XX-XX-XX-XX-XX-XX`

## Формат счета

Счет состоит из **8 пар двухзначных чисел**, разделенных дефисом:
```
12-34-56-78-90-12-34-56
```

## Возможности для администраторов

### 1. Автоматическое обнаружение счетов

Когда администратор вводит в чат сообщение со счетами, бот автоматически обнаруживает их и предлагает действия:

**Пример:**
```
12-34-56-78-90-12-34-56
45-67-89-01-23-45-67-89
```

Бот выведет:
```
🔍 Обнаружен ввод счетов

Найдено: 2

• 12-34-56-78-90-12-34-56
• 45-67-89-01-23-45-67-89

Выберите действие:
[ Добавить в розыгрыш]
[👑 Сделать победителем]
[❌ Отмена]
```

### 2. Добавление счетов в розыгрыш

**Шаги:**
1. Введите счета (один или несколько с новой строки)
2. Нажмите " Добавить в розыгрыш"
3. Выберите розыгрыш из списка
4. Бот добавит все счета и покажет результат

**Результат:**
```
Результаты добавления в розыгрыш:
Новогодний розыгрыш 2025

✅ Добавлено: 15
⚠️ Пропущено: 3

Детали:
✅ 12-34-56-78-90-12-34-56
✅ 45-67-89-01-23-45-67-89
...
```

### 3. Установка победителя по счету

**Шаги:**
1. Введите **один** счет
2. Нажмите "👑 Сделать победителем"
3. Выберите розыгрыш
4. Выберите место (1, 2, 3...)
5. Бот установит победителя

**Пример:**
```
Ввод: 12-34-56-78-90-12-34-56

Результат:
✅ Победитель установлен!

Розыгрыш: Новогодний розыгрыш 2025
Счет: 12-34-56-78-90-12-34-56
Место: 1
Приз: iPhone 15 Pro
```

### 4. Множественный ввод счетов

Можно вводить несколько счетов одновременно:

```
12-34-56-78-90-12-34-56
45-67-89-01-23-45-67-89
11-22-33-44-55-66-77-88
99-88-77-66-55-44-33-22
```

Бот обнаружит все валидные счета и предложит массовые операции.

## Программный доступ

### Использование сервисов

```python
from account_services import AccountParticipationService

# Добавить счет в розыгрыш
async with async_session_maker() as session:
    result = await AccountParticipationService.add_account_to_lottery(
        session,
        lottery_id=1,
        account_number="12-34-56-78-90-12-34-56"
    )
    print(result["success"])  # True/False
    print(result["message"])  # Сообщение о результате

# Массовое добавление
accounts = [
    "12-34-56-78-90-12-34-56",
    "45-67-89-01-23-45-67-89",
    "11-22-33-44-55-66-77-88"
]

results = await AccountParticipationService.add_accounts_bulk(
    session,
    lottery_id=1,
    accounts=accounts
)

print(f"Добавлено: {results['added']}")
print(f"Пропущено: {results['skipped']}")
print(f"Ошибки: {len(results['errors'])}")
```

... (файл далее)