0. Что это и как устроено
Коротко
для пользователя
Есть две страницы:
- Админка - настройка пароля, подключений DA/DP, Telegram Chat ID и стоимости стрима.
- Рулетка - управление лотами и колесом.
Авторизация единая (cookie-сессия). Если ты вошёл в админке - на рулетке управление становится доступным.
Термины
что означает
| Термин | Смысл |
| Лот | Запись “что разыгрываем” + сумма (накопление донатами/вручную). Лоты попадают в колесо как сегменты. |
| Включённый лот | Лот, который участвует в колесе (чекбокс включения активен). |
| Стоимость стрима | Порог: лоты с суммой ниже порога автоматически выключаются из колеса. |
| Merge | Объединение двух лотов: сумма “перетаскиваемого” прибавляется к цели, исходный удаляется. |
1. Первый запуск: пароль и вход
1.1 Установить пароль (только первый раз)
админка
- Открой админку: https://dchdonate.ru/settingsdonate
- Если видишь блок “Первичная установка пароля администратора” - введи пароль и нажми кнопку "Задать пароль".
- После установки перейди к пункту 1.2 (вход).
Скриншот A1. Попроси себя пометить: 1 — токен, 2 — user_id.
1.2 Войти в админку
админка
- Введи пароль в блоке “Вход администратора”.
- Нажми “Войти”.
- Проверь строку статуса: должно быть “Вход выполнен”.
После успешного входа управление на рулетке станет доступным (кнопки, добавление лотов, merge и т.д.).
Скриншот A1. Попроси себя пометить: 1 — токен, 2 — user_id.
1.3 Выйти
админка
- Нажми “Выйти”.
- Убедись, что управление на рулетке стало недоступным (кнопки заблокируются).
2. Подключение DonationAlerts (DA)
2.1 Подключить (OAuth)
админка
- В админке найди блок DonationAlerts.
- Нажми “Подключить DA”.
- Тебя перенаправит на DonationAlerts - дай разрешение приложению.
- После возврата в админку индикатор DA станет активным.
Индикатор до подключения
Индикатор после подключения
2.2 Отключить
админка
- Нажми “Отключить DA”.
- Проверь, что индикатор DA стал неактивным.
3. Подключение DonatePay (DP)
3.1 Где взять токен и user_id
donatepay
- Открой страницу DP API.
- Скопируй API ключ.
- Скопируй User ID (числовой).
1 - ключ, 2 - user_id.
3.2 Подключить в админке
админка
- В админке нажми “Подключить DP”.
- В модальном окне вставь ключ и user_id.
- Нажми “Сохранить”.
- Убедись, что DP стал “подключён” (индикатор активен).
1 - ключ, 2 - user_id, 3 - кнопка “Сохранить”.
активний индикатор
3.3 Отключить
админка
- Нажми “Отключить DP”.
- Проверь, что индикатор DP стал неактивным.
4. Telegram-уведомления
4.1 Узнать свой Telegram ID
telegram
- Открой @userinfobot и нажми Start.
- Скопируй свой id (числовой).
4.2 Внести Telegram Chat ID в админке
админка
- В админке найди поле Telegram Chat ID.
- Вставь ID и нажми “Сохранить”.
Если сообщения не приходят - проверь, что бот уже писал тебе ранее (ты нажал Start), и что указан правильный chat_id.
5. Стоимость стрима и авто-ограничения
5.1 Задать стоимость стрима
админка
- В админке найди поле “Стоимость стрима (₽)”.
- Введи целое число (например 4000) и нажми “Сохранить”.
- На рулетке в вкладке колеса появится баннер с текущей стоимостью.
Если стоимость = 0 или не задана - баннер мигает красным и пишет “не задана”.
Поле стоимости стрима
Баннер на странице рулетки
Баннер на странице рулетки, если стоимость не задана
5.2 Как работает порог
рулетка
| Стоимость | Поведение |
| 0 / не задана | Порог не применяется. Лоты можно включать вручную, но баннер предупреждает. |
| > 0 | Лоты с суммой < стоимости автоматически выключаются, их чекбоксы становятся недоступны. |
6. Лоты: добавление, редактирование, плюс/минус
6.1 Добавить лот вручную
рулетка
- Открой рулетку: https://dchdonate.ru/
- Перейди на вкладку “Лоты”.
- Введи название и сумму.
- Нажми кнопку добавления (+ Добавить лот).
Если кнопка неактивна - ты не авторизован (выполни вход в админке).
МЕСТО ДЛЯ СКРИНШОТА F1
Рулетка: поля “название/сумма” + кнопка добавления
Скриншот F1. Можно пометить 1 - название, 2 - сумма, 3 - кнопка.
6.2 Изменить сумму лота (плюс/минус через поле “+”)
рулетка
У каждого лота есть числовое поле + (delta). Оно принимает положительные и отрицательные значения. Изменение применяется по Enter и сохраняется в базе.
- Найди нужный лот в списке.
- В поле “+” введи, например, 100 и нажми Enter - сумма увеличится.
- Введи -1000 и нажми Enter - сумма уменьшится.
Чтобы автообновление не сбивало ввод, рекомендуется пауза обновления при фокусе в поле (если включено в твоей версии).
МЕСТО ДЛЯ СКРИНШОТА F2
Рулетка: строка лота с полем “+” и примером -1000
Скриншот F2. Можно пометить поле и кнопку/иконку, если есть.
6.3 Изменить название лота
рулетка
- Кликни по названию (если оно редактируемое) или используй элемент редактирования рядом.
- Внеси изменения и сохрани (Enter/потеря фокуса - зависит от реализации).
7. Объединение лотов (merge)
Объединить два лота в один
drag&drop
Объединение делается перетаскиванием одного лота на другой (как правило - за “ручку” перетаскивания).
- Убедись, что авторизация активна.
- Возьми лот за “ручку” (иконка/зона перетаскивания).
- Перетащи на второй лот и отпусти.
- Сумма первого прибавится ко второму, первый исчезнет.
МЕСТО ДЛЯ СКРИНШОТА G1
Merge: где “ручка” + стрелка на целевой лот
Скриншот G1. Поставь отметки: A - источник, B - цель.
8. Колесо: включение/исключение, прокрутка
8.1 Включить/исключить лоты из колеса
чекбоксы
- Перейди на вкладку “Колесо”.
- Слева отображается список участников/лотов с чекбоксами.
- Чекбокс включён → лот участвует. Выключен → не участвует.
Если задан порог стоимости стрима, “недостаточные” лоты автоматически выключаются и чекбокс становится disabled.
МЕСТО ДЛЯ СКРИНШОТА H1
Колесо: список чекбоксов + пример disabled
Скриншот H1. Пометь: 1 - обычный чекбокс, 2 - disabled (ниже порога).
8.2 Кнопки под списком
управление
- Включить все - включает все лоты, которые не заблокированы порогом.
- Отключить все - выключает все лоты.
- Перегенерировать цвета - меняет цвета сегментов (визуально).
МЕСТО ДЛЯ СКРИНШОТА H2
Кнопки “Включить все / Отключить все / Перегенерировать цвета” + баннер стоимости
Скриншот H2. Пометь кнопки 1–3, баннер 4.
8.3 Прокрутка колеса
spin
- Убедись, что включён хотя бы один лот.
- Нажми кнопку «Крутить».
- Дождись остановки. Победитель определяется указателем.
Если включённых лотов нет, колесо будет бессмысленным. Сначала включи лоты или снизь стоимость стрима.
МЕСТО ДЛЯ СКРИНШОТА H3
Колесо в момент вращения + указатель победителя
Скриншот H3. Можно пометить указатель стрелкой.
9. Победитель и «Списать за стрим»
9.1 Окно победителя
modal
После остановки колеса показывается окно с победившим лотом.
- Нажми «Крутить» и дождись результата.
- В модалке будет кнопка «Списать за стрим».
МЕСТО ДЛЯ СКРИНШОТА I1
Модалка победителя + кнопка “Списать за стрим”
Скриншот I1. Пометь: 1 - победитель, 2 - кнопка списания.
9.2 Что делает «Списать за стрим»
логика
- Берёт текущую “Стоимость стрима” из админки.
- Списывает эту сумму с победившего лота.
- Если после списания сумма стала ≤ 0 - лот может быть удалён (зависит от серверной логики).
- Список лотов обновляется, и порог стоимости снова применяется.
Если стоимость стрима не задана, списание не будет работать корректно - сначала установи стоимость в админке.
10. Удаление лотов и очистка
10.1 Удалить один лот
рулетка
- В списке лотов нажми иконку удаления (корзина) напротив нужного лота.
- Лот исчезнет из списка и из колеса (если участвовал).
МЕСТО ДЛЯ СКРИНШОТА J1
Строка лота с кнопкой удаления
Скриншот J1. Пометь корзину стрелкой.
10.2 Очистить все лоты
рулетка
- Нажми кнопку “Удалить всё / Очистить”.
- Подтверди действие (если есть подтверждение).
11. Тестовые донаты и проверка
11.1 Где смотреть тестовые донаты
ссылки
DonatePayИстория транзакций
Открыть
DonationAlertsЛента донатов
Открыть
Если донаты не “доходят” в приложение: проверь подключение DA/DP в админке и смотри серверные логи (pm2).
11.2 Проверка на рулетке
чеклист
- Сделай тестовый донат в DA или DP.
- Убедись, что донат появился по ссылке истории.
- Проверь, что сумма соответствующего лота изменилась (если в твоём режиме донаты попадают в лоты).
- Проверь, что Telegram-уведомление пришло (если включено).
12. Частые проблемы
Не могу управлять рулеткой (кнопки серые)auth
- Открой админку и выполни вход.
- В DevTools на рулетке проверь /api/state → authed: true.
- Если ранее переключал домены/куки - очисти cookies для dchdonate.ru и войди заново.
Плюс/минус не меняет сумму после обновления спискаlots
- Изменение суммы должно отправляться на сервер (а не только менять локальный state).
- Проверь в Network запрос POST /api/lots/<id>/plus (статус 200).
- Если автообновление мешает вводу - включи “паузу автообновления при фокусе в input”.
В колесе остаются “недостаточные” лотыstream cost
- Проверь, что стоимость стрима задана > 0 в админке.
- Проверь, что после пересчёта вызывается перерисовка (обычно через save()/renderAll()).
DA подключение не работаетda
- Проверь корректность OAuth Client Secret (не API key).
- Проверь redirect_uri (www/не-www).