Important
Математическая механика пошагового определения мест и расчёта вероятностей следующего выбывания основана на проекте naugam/fixed_wheel.
В PapichWheel алгоритм адаптирован под архитектуру локального приложения: случайный угол генерируется через WebCrypto, результат определяется фактическим сектором под стрелкой, а синхронизация вкладок, сохранение состояния, назначение мест и анимации реализованы отдельно.
Локальное приложение для проведения донат-аукциона на Windows. Оно принимает новые донаты из DonatePay и DonationAlerts, помогает распределять их по лотам и запускает колесо на выбывание в отдельном режиме для OBS.
Приложение работает только на вашем компьютере: локальный сервер слушает 127.0.0.1:5500.
Готовая версия находится на странице Latest release.
- Скачайте
PapichWheel_Setup.bat. - Создайте отдельную папку для приложения и поместите файл туда.
- Запустите
PapichWheel_Setup.bat. Он распакует файлы приложения и удалит себя. - Запустите
start_koleso.bat. - Откроется админка:
http://127.0.0.1:5500/koleso_papich.html?view=admin
Работающий сервер отображается значком в системном трее. Через меню значка можно открыть приложение, открыть лог или завершить сервер.
Требования:
- Windows 10 или Windows 11;
- Windows PowerShell 5.1 или новее;
- современный браузер;
- интернет для донат-сервисов, проверки обновлений, поиска и функций OpenRouter.
- создание, редактирование и удаление лотов;
- ручное изменение суммы каждого лота;
- очередь новых, обработанных и проигнорированных донатов;
- подключение DonatePay и DonationAlerts;
- прием только новых донатов без повторного добавления уже обработанных;
- восстановление необработанной очереди после перезапуска сервера;
- автоматическая конвертация донатов DonationAlerts из USD и EUR в рубли;
- тестовые донаты без реальной оплаты;
- колесо на выбывание с отдельным режимом для OBS;
- синхронизация админки и вкладки колеса;
- таймер аукциона;
- настройка масштаба и размеров панелей;
- опциональный AI-разбор сообщений через OpenRouter;
- поиск игр в Steam и аниме при создании нового лота;
- автоматическая проверка наличия новой версии.
Админка предназначена для управления аукционом:
- добавления и редактирования лотов;
- обработки донатов;
- настройки интеграций;
- управления таймером и колесом;
- просмотра AI-предложений.
Не показывайте админку и вкладку «Настройки» на стриме.
Нажмите «Открыть колесо в отдельной вкладке» или откройте:
http://127.0.0.1:5500/koleso_papich.html?view=wheel
Именно эту вкладку рекомендуется захватывать в OBS.
- Откройте «Настройки» > «Донат-сервисы».
- В карточке DonatePay нажмите «Подключить».
- Выберите регион: Россия (
donatepay.ru) или Европа (donatepay.eu). - Вставьте API Key.
- Завершите подключение.
Приложение использует локальную копию клиента Centrifuge для WebSocket-подключения и восстанавливает пропущенные события после переподключения.
- Откройте «Настройки» > «Донат-сервисы».
- В карточке DonationAlerts нажмите «Подключить».
- Выберите быстрый вход или подключение через собственное OAuth-приложение.
- Разрешите доступ на сайте DonationAlerts.
- Дождитесь статуса подключения.
Для собственного OAuth-приложения укажите redirect URL:
http://127.0.0.1:5500/koleso_papich.html
Старые донаты не добавляются как новые при первом подключении.
Суммы DonationAlerts в USD и EUR пересчитываются в рубли по курсам ЦБ РФ. Курс загружается локальным сервером и кэшируется. Если актуальный или сохраненный курс недоступен, донат не должен молча зачисляться с неверной суммой — приложение показывает проблему конвертации.
DonatePay не проходит через эту конвертацию.
Функция необязательна и по умолчанию требует подтверждения пользователя.
AI может:
- определить, к какому существующему лоту относится сообщение;
- предложить создать новый лот;
- искать игры в Steam;
- искать аниме;
- автоматически применить предложение при настроенных порогах уверенности.
Настройка:
- Создайте API key на OpenRouter.
- Откройте «Настройки» > «AI-разбор донатов».
- Сохраните ключ.
- При необходимости задайте локальный HTTP/HTTPS proxy.
- Нажмите «Проверить».
- Включите AI-подсказки и выберите режим подтверждения.
Модель по умолчанию — google/gemini-2.5-flash-lite. Ее можно заменить на другую модель OpenRouter, поддерживающую требуемый структурированный ответ. Запросы к OpenRouter могут расходовать платный баланс вашего аккаунта.
Данные разделены между браузером и локальным сервером.
В браузерном localStorage хранятся:
- лоты и суммы;
- состояние колеса и таймера;
- обработанные донаты;
- настройки интерфейса;
- несекретные настройки интеграций и AI.
Секреты хранятся отдельно:
%LOCALAPPDATA%\PapichWheel\secrets.json
API Key DonatePay, токен DonationAlerts и ключ OpenRouter защищаются Windows DPAPI для текущего пользователя Windows и не сохраняются в браузерном localStorage.
Серверные очереди и кэши находятся в:
%LOCALAPPDATA%\PapichWheel\cache
Технический лог release-версии:
assets\server.log
«Новый аукцион» очищает лоты, донаты и AI-результаты текущего аукциона, но сохраняет подключения и настройки.
«Сбросить все данные» удаляет:
- браузерное состояние проекта;
- лоты и историю донатов;
- серверные очереди и кэши;
- сохраненные токены и API-ключи;
- технический лог приложения очищается.
Полный сброс необратим.
- Закройте приложение через значок в системном трее.
- Скачайте новый
PapichWheel_Setup.batиз Latest release. - Поместите его рядом с существующим
start_koleso.bat. - Запустите установщик.
- Снова запустите
start_koleso.bat.
Файлы приложения будут заменены. Данные из %LOCALAPPDATA%\PapichWheel и браузерное состояние при обычном обновлении не удаляются.
- Сервер привязан только к
127.0.0.1:5500. - API защищен случайным токеном текущего процесса.
- Проверяются заголовки
HostиOrigin. - Статические пути ограничены известными файлами приложения.
- Для страницы применяется Content Security Policy.
- Секретные значения маскируются в логах и хранятся через DPAPI.
Несмотря на защиту, соблюдайте правила:
- скачивайте установщик только из этого репозитория;
- не показывайте админку, настройки, токены и лог на трансляции;
- не публикуйте свою папку
%LOCALAPPDATA%\PapichWheel; - не запускайте измененный
PapichWheel_Setup.batиз неизвестного источника; - закрывайте сервер, когда приложение не используется.
- Убедитесь, что используется Windows.
- Проверьте, не запущена ли другая копия на порту
5500. - Откройте адрес админки вручную.
- Посмотрите
assets\server.log.
Проверить занятость порта можно командой:
Get-NetTCPConnection -LocalPort 5500 -ErrorAction SilentlyContinueПроверьте скрытые значки Windows. Если сервер не запустился, откройте assets\server.log.
- Открывайте приложение через
127.0.0.1:5500, а не как локальныйfile://. - Для собственного OAuth-приложения проверьте App ID и точный redirect URL.
- Проверьте доступ к DonationAlerts и повторите авторизацию.
- Проверьте выбранный регион и API Key.
- Убедитесь, что сеть не блокирует WebSocket DonatePay.
- При ошибке лимита запросов дождитесь следующей попытки восстановления.
- Проверьте статус интеграции.
- Убедитесь, что сбор донатов не поставлен на паузу.
- Учитывайте, что при первом подключении старая история не добавляется.
- Проверьте очередь «В ожидании» и
assets\server.log.
- Проверьте ключ OpenRouter кнопкой «Проверить».
- Проверьте название модели и наличие баланса OpenRouter.
- Если OpenRouter недоступен напрямую, настройте HTTP/HTTPS proxy.
- Убедитесь, что выбранная модель поддерживает структурированный ответ.
Основные файлы:
start_koleso.bat
koleso_papich.html
centrifuge.min.js
local_server.ps1
tray.ico
tray-error.ico
build_release_single_bat.ps1
tests/
.github/workflows/release-latest.yml
build_release_single_bat.ps1 создает dist/PapichWheel_Setup.bat. В установщик включаются только шесть файлов приложения:
start_koleso.bat
assets/koleso_papich.html
assets/centrifuge.min.js
assets/local_server.ps1
assets/tray.ico
assets/tray-error.ico
Тесты и workflow нужны только для проверки и сборки релиза и не попадают в пользовательский установщик.