PBSCANPRO BET SCAN
PBSCAN · руководство

Помощь по сканеру

От первого просмотра до настройки уведомлений. Описания ниже взяты из подсказок текущей версии интерфейса.

Как работает сканер

LIVE обрабатывает уже идущие матчи, PREMATCH — матчи до начала. Общий процесс получает наблюдения, сравнивает коэффициенты и денежные показатели, применяет настройки администратора и сохраняет подходящие сигналы. Посетитель работает с отображением уже полученных данных.

«Игры» показывает матчи и рынки, «Дашборд дня» — сводку, «Статистика» — движения, «Сигналы» — события, «Результаты сигналов» — расчёты и экспорт. Лог, история сканирования, общие настройки и запуск/остановка доступны только администратору.

Выбранное окно, например 10 минут, определяет расчёт изменений. График и таблица могут показывать всю сохранённую историю активного LIVE; расчётные точки выделяются отдельно. Наличие более старой опорной точки не означает, что всю историю нужно удалять. При отсутствии свежих точек карточка сообщает о недостатке данных.

Фильтры просмотра сужают список на экране. Общие фильтры создания сигналов меняет администратор: они влияют на новые события и Telegram. Изменение фильтра просмотра не запускает новый сканер и не пересчитывает старые сигналы задним числом.

Указанные интервалы 15/60 секунд — настройки, а не гарантия времени обновления каждого матча. Классы «сильный» и «подтверждён» описывают движение, но не обещают выигрыш.

Справочник фильтров и подсказок

Ниже 95 пояснений текущего интерфейса. Настройки источника, прокси и рассылки предназначены администратору. На телефоне раскрывайте пункты касанием.

Классификация сигнала

Классы описывают движение, не вероятность выигрыша. Сильный: движение ≥40% независимо от денег. Подтверждён: движение от 15% до 40% и минимум 2 признака: Chg ≥20%, скорость ≥50 €/мин, доля исхода в рынке ≥50%. Без подтверждения: движение от 20% до 40% и ни одного из этих признаков. Обычный: остальные случаи. Пороги эвристические; прибыльность ими не доказана.

Фильтр результата

Показывает только выбранный итог расчёта: Победа, Проигрыш, Возврат, Ожидает результата или Нет данных. Внутри программы технические коды результата остаются неизменными.

DROP / RISE

Фильтрует статистику по направлению сигнала. DROP и RISE являются независимыми цепочками даже для одного матча, рынка и исхода.

Коэффициент от

Минимальный коэффициент выбранного для статистики сигнала. Если в цепочке были повторы, используется коэффициент последнего повтора.

Коэффициент до

Максимальный коэффициент выбранного для статистики сигнала. Граница включительна.

Движение от, %

Минимальная величина directional-движения выбранного сигнала: DROP% или RISE% в зависимости от направления строки.

Минута сигнала от

Показывает сигналы, созданные начиная с указанной игровой минуты. Это минута самого выбранного сигнала, а не минута фиксации HT/FT.

Страна

Текстовый фильтр по стране, полученной из источника. Сканер не угадывает страну по названиям команд.

Лига

Текстовый фильтр по названию лиги/турнира, полученному из источника.

Рынок

Текстовый фильтр по рынку сигнала, например Match Odds, Draw no Bet или Over/Under 2.5 Goals.

Исход

Фильтр по конкретному исходу сигнала: например 1, X, 2, Over, Under, Yes или No.

Первичный или повтор

В основной статистике каждая независимая repeat-цепочка представлена последним сигналом. «Только первичные» оставляет цепочки без повторов; «Только повторы» — цепочки, где выбранный последний сигнал имеет repeat_num ≥ 1.

Дата от

Нижняя граница даты выбранного статистического сигнала.

Дата до

Верхняя граница даты выбранного статистического сигнала.

Bot Token

Токен вашего Telegram-бота. Как получить: 1. Откройте @BotFather в Telegram 2. Отправьте /newbot 3. Придумайте имя и username бота 4. Скопируйте полученный токен (вида 123456:ABC-DEF...) Куда вставить: в это поле.

Chat ID (fallback)

ID чата или группы для отправки сигнала, когда маршрутизация по группам фактически не используется. Когда используется: • список маршрутов пуст; • все маршруты выключены. Когда НЕ используется: если есть хотя бы один активный маршрут, но его условия не подошли — fallback не обходит правила маршрутов. Как узнать Chat ID: добавьте бота в чат, отправьте сообщение и получите ID через подходящего Telegram-бота/метод API. Для группы ID часто отрицательный. Важно: повреждённый JSON маршрутов обрабатывается fail-closed — сигнал не отправляется через fallback в обход ошибки.

Номер повторного сигнала для Телеграмма

Фильтр влияет только на Telegram. Первичный сигнал всегда остаётся в разделе «Сигналы» и SQLite, но при включённом фильтре в Telegram не отправляется. 1 = начиная с ПОВТОР №1 2 = начиная с ПОВТОР №2 3 = начиная с ПОВТОР №3 и т.д. После достижения выбранного номера последующие допустимые повторы тоже отправляются. Если фильтр выключен — Telegram получает первичный сигнал и повторы как раньше.

Минимальный номер повтора для Telegram

Работает только когда включён переключатель «Номер повторного сигнала для Телеграмма». 1 — первичный сигнал блокируется для Telegram, отправка начинается с ПОВТОР №1. 2 — отправка начинается с ПОВТОР №2 и т.д. Сигналы, заблокированные этим Telegram-фильтром, всё равно сохраняются в SQLite/админке и обновляют cooldown/repeat-state. AI для заблокированного Telegram-сигнала не запускается.

Маршруты Telegram

Каждый маршрут — отдельный получатель сигналов со своими правилами. Поля маршрута: • Имя — название маршрута (для себя) • Chat ID — куда отправлять • Мин % / Макс % — диапазон падения/роста для этого маршрута • Лимит/сутки — сколько максимум сигналов в день (0 = без лимита) • Теги — какие уровни риска пропускать: ALL, HIGH, REVIEW, NORMAL (можно несколько через запятую). Пример: чат для HIGH-рисков с лимитом 20/сутки и чат для REVIEW с лимитом 100/сутки.

Режим поиска изменений

Что именно искать в движении коэффициентов: • Только падение — сигнал только когда кеф падает (классический риск) • Только рост — только когда растёт (например, для ставок на «против») • Падение + рост — во всём выбранном окне независимо ищет максимальное хронологическое падение и максимальный хронологический рост; если проходит одно направление — создаётся один сигнал, если оба — два сигнала по очереди, начиная с большего процента • Игнорировать — полностью выключить поиск (полезно для отладки)

Минуты матча для сигналов

Ограничивает создание сигналов по текущей минуте матча. Можно включить одно, несколько или все правила. Весь матч — сигналы разрешены на любой минуте. С минуты — например 20: только с 20-й минуты и позже. До минуты — например 70: только до 70-й минуты включительно. Диапазон — например 20–70: только внутри диапазона включительно. Если включено несколько правил, они работают как ИЛИ: достаточно попасть хотя бы в одно. Если включён «Весь матч», остальные правила не ограничивают сигналы. Активные правила показываются отдельной шапкой в сигнале админки и Telegram.

Весь матч

Если включено, минутный фильтр разрешает сигнал на любой минуте. Это правило фактически перекрывает остальные минутные ограничения, потому что минутные правила объединяются через ИЛИ.

С минуты N

Разрешает создание сигнала начиная с указанной минуты и позже. Граница включительна: значение 20 разрешает и 20-ю минуту. Если одновременно включены другие минутные правила, достаточно пройти хотя бы одно из них.

До минуты N

Разрешает создание сигнала до указанной минуты включительно. Например 70 означает 0–70. Несколько включённых минутных правил работают через ИЛИ.

Диапазон минут

Разрешает сигналы только внутри указанного диапазона, обе границы включительны. Например 20–70 пропускает 20, 35 и 70. Вместе с другими минутными правилами работает через ИЛИ.

Фильтр исхода

Какие исходы обрабатывать сканеру: • Все — Over, Under, Yes, No, 1, X, 2 • Только Over — только «Больше» на тоталах • Только Under — только «Меньше» на тоталах • Over + Under — только тоталы, без исходов 1X2 и BTTS Совет: для футбола часто достаточно Over/Under — они наиболее ликвидные.

Порог падения %

Минимальная величина DROP, необходимая для прохождения directional-детектора. Как ищется: во всём выбранном окне находится максимальное хронологическое падение: более ранний пик → более поздний минимум. Поздний обратный рост не отменяет уже найденное падение. Формула: (peak − low) / peak × 100. Пример: 2.00 → 1.35 → 1.51 даёт DROP 32.5%. При пороге 30% направление проходит. Для итогового сигнала остальные включённые фильтры тоже должны пройти.

Порог роста %

Минимальная величина RISE для режима «Рост» или «Падение + рост». Как ищется: во всём окне находится максимальный хронологический рост: более ранний минимум → более поздний максимум. Ранее произошедшее падение не мешает найти последующий рост. Формула: (high − low) / low × 100. Пример: 1.35 → 1.51 даёт RISE ≈ 11.85%. В BOTH DROP и RISE считаются независимо и могут создать два отдельных сигнала.

Окно сравнения (минуты)

Для Betwatch LIVE любое окно N отсчитывается по игровым минутам: от текущей минуты минус N (не раньше 0′) до текущей минуты включительно. Обычные минуты дополнительно не отсекаются. Не нужно ждать заполнения всего окна: достаточно 2 валидных наблюдений. Подтверждение неизменной цены внутри окна может служить базой нового движения. Точки вне игрового окна не участвуют в DROP/RISE и связанных метриках. При выключенном фильтре используется вся доступная сохранённая история.

Максимум игр за цикл

Сколько live-игр сканировать за один цикл. Влияет на: • Нагрузку на сервер сканера • Скорость обработки Если поставить слишком много — цикл будет долгим, а сайт может начать отдавать ошибки.

Задержка между циклами

Пауза в секундах между двумя последовательными сканированиями. • 10–15 сек — почти real-time • 30–60 сек — спокойный режим, меньше нагрузки Не ставьте меньше 5 сек — забанят в сканере.

Таймаут запроса

Максимальное время ожидания ответа от сканера. Если сайт тормозит — увеличьте до 20–30 сек. Если интернет быстрый — можно оставить 15 сек.

Фильтр по падению

Учитывать падение коэффициентов при поиске сигналов. Обычно включён. Выключите только если хотите искать исключительно рост.

Фильтр по времени

Использовать скользящее окно в минутах (задаётся в «Окне»). Если выключить — сканер будет использовать все точки матча без ограничения по времени. Это может привести к ложным сигналам на медленных трендах. Рекомендуется держать включённым.

Фильтр по коэффициенту

Проверяет только текущий коэффициент исхода в момент анализа. Исторические peak/low могут находиться за пределами этого диапазона — это не отменяет сигнал, если текущий кеф проходит. Условие: Мин. кеф ≤ текущий кеф ≤ Макс. кеф. Границы включительны. Фильтр не заменяет DROP/RISE, Odds Range или First→Last: это отдельная проверка, которая при включении входит в общую AND-цепочку.

Минимальный текущий коэффициент

Нижняя граница фильтра по коэффициенту. Проверяется текущий кеф, а не peak/low из истории. Значение на границе проходит.

Максимальный текущий коэффициент

Верхняя граница фильтра по коэффициенту. Проверяется текущий кеф. Значение на границе проходит.

Размах кефа

Показывает насколько сильно «гулял» коэффициент внутри окна, независимо от направления. Формула: (пик − низ) / низ × 100 Зачем: ловит крупные движения, даже если кеф в итоге вернулся на место. Пример: размах 20% означает что кеф в окне двигался на 20% от минимума.

Минимальный Odds Range

Нижняя граница размаха коэффициента внутри окна. Формула размаха: (max − min) / min × 100. Это движение в любую сторону и оно не заменяет DROP/RISE.

Максимальный Odds Range

Верхняя граница допустимого размаха коэффициента внутри окна. Если рассчитанный Odds Range выше этого значения, фильтр не проходит.

Чистый % кефа

Разница между первым и последним коэффициентом в окне. Формула: (последний − первый) / первый × 100 • Отрицательное значение = падение • Положительное = рост Отличие от «Падения»: тут важен итог, а не экстремум. Если кеф сначала упал на 30%, а потом вернулся — «падение» покажет 30%, а «чистый %» покажет 0%.

Минимальный First→Last %

Нижняя граница чистого изменения от первой к последней точке: (last − first) / first × 100. Значение может быть отрицательным: например −20% означает чистое падение.

Максимальный First→Last %

Верхняя граница чистого изменения First→Last. Для отбора только чистого падения можно использовать отрицательный диапазон; для роста — положительный.

Фильтр по сумме

Пропускать только рынки, где сумма на конкретном исходе попадает в диапазон €. Зачем: отсеивает «мёртвые» рынки, где денег почти нет — там любое движение это шум. Совет: мин. 100 €, чтобы видеть только ликвидные движения.

Минимальная сумма на исходе

Нижняя граница текущего Summ на конкретном исходе. Это не общая сумма матча и не сумма рынка. Проверка действует только когда включён фильтр «По сумме».

Максимальная сумма на исходе

Верхняя граница текущего Summ на конкретном исходе. Значение на границе проходит.

Фильтр по загрузке %

Загрузка исхода = сумма на исходе / сумма на рынке × 100. Показывает насколько сильно этот исход «перегружен» деньгами относительно всего рынка. Пример: если на исходе 700 € из 1 000 € всего на рынке — загрузка 70%. Такой исход может быть «под давлением». Совет: мин. 20–30%.

Минимальная загрузка исхода

Минимальная доля денег на исходе внутри его рынка: Summ исхода / Summ рынка × 100. Если исходные данные загрузки недоступны, значение равно 0% и сравнивается с заданным минимумом. Старые значения не подставляются вместо текущего нуля.

% денег на исходе от суммы матча

Считает сумма на исходе / общая сумма на матче × 100. Отличие от «Загрузки»: загрузка считается от суммы рынка, а этот фильтр — от суммы всего матча. Пример: на матче всего 50 000 €, из них 3 000 € на конкретном исходе = 6%. Это уже много. Совет: мин. 5–10% отлично отсеивает шум на периферийных рынках.

Минимальная доля от денег матча

Нижняя граница Summ исхода / общая сумма матча × 100. Не путать с «загрузкой %», где знаменатель — сумма конкретного рынка.

Максимальная доля от денег матча

Верхняя граница доли денег конкретного исхода от общей суммы матча. Для Betwatch используется сумма известных объёмов. Отсутствующие объёмы не блокируют проверку. Если положительной суммы нет, доля 0% и ноль сравнивается с порогами фильтра.

Фильтр по Change%

Сумма процентов прироста денег между соседними накопленными суммами выбранного LIVE-окна. Было 1 000 €, добавилось 800 €, итог 1 800 €: Change 800 € / 80%. Первый шаг — 0%. Каждый положительный прирост делится на предыдущую сумму; процент округляется до 2 знаков, затем проценты складываются. Пример: 1000 → 1100 → 1300 → 1 450 €: 0% + 10,00% + 18,18% + 11,54% = Σ Chg 39,72%. Учитываются все точки, включая несколько внутри одной игровой минуты.

Минимальный Σ Chg

Нижняя граница суммы процентов прироста денег между соседними точками окна. Каждый прирост делится на предыдущую сумму и округляется до 2 знаков; первый шаг — 0%.

Максимальный Σ Chg

Верхняя граница Σ Chg за выбранное окно. Σ Chg складывает округлённые до 2 знаков проценты прироста денег между соседними суммами.

Money Velocity

Скорость положительного притока денег на исход внутри текущего окна: сумма всех положительных ΔSumm делится на доступную длительность истории в минутах. Важно: текущая история сканера имеет минутную точность. Если длительность определить нельзя, скорость равна 0 €/мин и сравнивается с заданными порогами. После перехода на собственные 15-секундные snapshots метрика станет точнее автоматически.

Минимальная скорость денег

Нижняя граница Money Velocity: Σ положительных ΔSumm / длительность истории в минутах. Если длительность ≤ 0 и скорость нельзя вычислить, скорость равна 0 €/мин и сравнивается с заданными порогами.

Максимальная скорость денег

Верхняя граница Money Velocity. Метрика измеряет скорость положительного притока денег и не заменяет Σ Chg.

Игнорировать смену счёта

Если счёт изменился (гол/очко) — кефы обычно резко скачут. Это нормальное поведение рынка, а не аномалия. • Включено — сканер не отправит сигнал, если счёт менялся (меньше ложных) • Выключено — сканер будет сигналить даже при смене счёта (больше сигналов, но много ложных) Рекомендуется: включить.

Фильтр по счёту

Использовать информацию о счёте в алгоритме фильтрации. Если выключить — сканер перестанет проверять счёт и учитывать голы, что приведёт к большому количеству ложных сигналов после каждого забитого мяча. Рекомендуется держать включённым.

Фильтр по списку рынков

Если включено — сканируются только те рынки, которые вы отметили галочками ниже. Если выключено — сканируются все доступные рынки в сканере. Зачем: чтобы не тратить ресурсы на неинтересные рынки (например, вам нужны только тоталы). Совет: включите и отметьте 3–5 ликвидных рынков.

Использовать прокси

Настройка браузерного источника, доступная только администратору. Адаптер Betwatch API использует прямое соединение и этот список не применяет. Обычным пользователям настройка не нужна.

Список прокси

Один прокси на строку. Поддерживаемые форматы: • host:port • http://host:port • http://user:pass@host:port • socks5://user:pass@host:port Сканер будет брать их по кругу (round-robin). Кнопка 🔍 Проверить проверит работоспособность всех указанных прокси через httpbin.org/ip.

Применить сценарий

Загружает все сохранённые настройки из выбранного сценария в форму. Не забудьте нажать 💾 Сохранить внизу или запустить сканер, чтобы изменения вступили в силу.

Сохранить сценарий

Сохраняет текущие настройки формы под указанным именем. Полезно если у вас несколько стратегий (например, «Спокойная» для топ-лиг и «Агрессивная» для мелких турниров).

Тема интерфейса

Переключение между светлой и тёмной темой. Выбор сохраняется в браузере и применяется на всех страницах сайта.

Экспорт / Импорт настроек

Экспорт JSON — сохраняет все текущие настройки в файл. Удобно для бэкапа или переноса на другой компьютер. Импорт JSON — загружает настройки из файла. Текущие настройки будут перезаписаны. В экспорт не попадают пароли от прокси и токены — будьте осторожны.

Проверка Telegram

Отправляет тестовое сообщение в указанный чат. Зачем: убедиться что Bot Token и Chat ID корректны, а бот имеет право писать в чат. Если сообщение не пришло — проверьте: • Бот добавлен в чат • Chat ID скопирован без лишних пробелов • Токен актуален (не отозван в @BotFather)

Telegram ПРЕМАТЧ

Включено — ПРЕМАТЧ использует Bot Token, Chat ID и маршруты LIVE. Выключено — можно задать отдельного бота/канал для ПРЕМАТЧ. Настройки LIVE при этом не меняются.

ПРЕМАТЧ · 🔑 Bot Token

Ключ Telegram-бота для PREMATCH. Используется только при выключенном наследовании Telegram из LIVE. Не передавайте его другим людям.

ПРЕМАТЧ · 💬 Chat ID (fallback)

Получатель PREMATCH по умолчанию, когда не выбран маршрут. При наследовании LIVE используются настройки LIVE.

ПРЕМАТЧ · 🔁 Номер повторного сигнала для Telegram

Ограничивает отправку в Telegram, но не сохранение сигналов. При включении первичный сигнал не отправляется; повторы отправляются начиная с указанного номера.

ПРЕМАТЧ · 🔢 Отправлять начиная с ПОВТОР №

1 означает первый повтор после первичного сигнала; 2 — второй повтор и следующие. Цепочки PREMATCH независимы от LIVE.

Маршруты Telegram ПРЕМАТЧ

Отдельные маршруты только для ПРЕМАТЧ. Если включено использование Telegram LIVE, фактически применяются маршруты LIVE.

Проверка Telegram ПРЕМАТЧ

Отправляет тестовое сообщение именно с настройками ПРЕМАТЧ. Если включено «Использовать Telegram из LIVE», проверяются LIVE-реквизиты.

ПРЕМАТЧ · Тип создаваемого сигнала

Ограничивает сохранение сигналов и Telegram выбранным классом движения. Все — без ограничения. Класс не прогнозирует выигрыш.

Режим поиска изменений

Падение, рост или оба направления. В часовом окне проверяется направление последнего изменения до текущей котировки. В режиме всей истории оба движения независимы.

Фильтр исхода

Все — тоталы, Yes/No, 1/X/2, точный счёт и все девять сочетаний тайм/матч. Остальные варианты ограничивают тип исхода, как в LIVE.

ПРЕМАТЧ · 📉 Порог падения %

Минимальное хронологическое падение по сохранённой истории последних 48 часов PREMATCH: от более раннего пика к последующему минимуму. Пример 2 → 1.7: 15%. Неизменный опрос не обнуляет движение.

ПРЕМАТЧ · 📈 Порог роста %

Минимальный хронологический рост по сохранённой истории последних 48 часов PREMATCH: от более раннего минимума к последующему максимуму. Пример 2 → 2.3: 15%. Неизменный опрос не обнуляет движение.

ПРЕМАТЧ · 🎮 Макс. игр

Число матчей, анализируемых за цикл. По умолчанию 100. При 475 матчах обход занимает 5 циклов; это не проверка каждого матча раз в минуту.

ПРЕМАТЧ · Порядок обхода

По очереди — матчи сменяют друг друга и все получают проверку. Крупнейшие по сумме — каждый цикл выбираются самые ликвидные, остальные могут не проверяться.

ПРЕМАТЧ · ⏳ Интервал проверки

Betwatch опрашивается каждые 60 секунд. Для конкретного матча интервал может быть больше из-за лимита игр, времени запросов и ошибок. Анализируется сохранённая история последних 48 часов до начала матча.

ПРЕМАТЧ · ⏰ Таймаут (сек)

Сколько секунд ждать ответ одного HTTP-запроса. Таймаут не задаёт частоту проверки матча. Неуспешный запрос не считается новым снимком.

ПРЕМАТЧ · Включить поиск падения (DROP)

Разрешает сигналы падения в режимах DROP и BOTH. В режиме BOTH рост проверяется независимо, даже если этот переключатель выключен.

ПРЕМАТЧ · 📈 По коэффициенту

Текущий коэффициент должен находиться между От и До включительно. Выключенный фильтр не ограничивает коэффициент.

ПРЕМАТЧ · 📐 Размах кэфа в окне (%)

За сохранённую историю последних 48 часов исхода PREMATCH: (максимальный коэффициент − минимальный) / минимальный × 100. Неотрицательный размах должен попасть в диапазон От–До.

ПРЕМАТЧ · 📏 Чистый % кэфа (первый → последний)

(Последний коэффициент − первый) / первый × 100 за выбранное окно коэффициентов PREMATCH; в режиме всей истории — за последние 48 часов. Падение отрицательное, рост положительный.

ПРЕМАТЧ · 💰 По сумме

Проверяет текущие деньги на выбранном исходе, а не на всём рынке или матче. Порог в единицах API; валюта не подтверждена.

ПРЕМАТЧ · 📊 Загрузка, %

Сумма выбранного исхода / сумма его рынка × 100. Минимальная доля в рынке; это не доля от всего матча. Если долю невозможно вычислить, используется 0%. Включённый фильтр сравнивает этот ноль с установленными порогами.

ПРЕМАТЧ · 💶 % исхода от суммы матча

Текущая сумма исхода / сумма всех полученных рынков матча × 100. Используется сумма всех известных объёмов. Отсутствующие объёмы не блокируют сигнал; при нулевой или неизвестной сумме доля 0% и ноль сравнивается с порогами фильтра.

ПРЕМАТЧ · 📈 Суммарное изменение Σ Chg, %

Сумма процентов поступлений за сохранённую историю последних 48 часов. Было 1 000 €, добавилось 800 €, итог 1 800 €: Change 800 € / 80%. Каждый прирост делится на предыдущую сумму и округляется до двух знаков. Уменьшение или неизвестный объём дают вклад 0%. Коэффициенты и скорость денег рассчитываются по сохранённой истории последних 48 часов.

ПРЕМАТЧ · 💨 Скорость денег, €/мин

Сумма поступлений за сохранённую историю последних 48 часов исхода, делённая на время между первым и последним изменением. Время — обычные минуты.

Пояснение

PREMATCH сканирует ближайшие 12 часов. Этот фильтр определяет, за сколько часов до начала матча разрешены сигналы. Окно анализа коэффициентов задаётся отдельно.

Рынки ПРЕМАТЧ

Выключено — анализируются все доступные рынки матча сканера. Включено — только отмеченные ниже. Настройки LIVE не изменяются.

ПРЕМАТЧ · Использовать прокси для ПРЕМАТЧ

Настройка браузерного источника. Адаптер Betwatch API использует прямое соединение и этот список прокси не применяет.

Личные фильтры и Telegram

17. ЛИЧНЫЕ ФИЛЬТРЫ И ОБЩИЙ TELEGRAM БОТ

Один общий сканер получает матчи. У каждого пользователя собственные условия LIVE и PREMATCH в разделе «Мои фильтры и Telegram». Эти настройки не изменяют источник, прокси и настройки других людей. Каждый профиль рассчитывает сигналы прежним алгоритмом ScannerCore по общим исходным наблюдениям. Сетевой опрос матчей остаётся одним; для пользователей не запускаются дополнительные запросы Betwatch. Выбранное пользователем окно, ограничения денег, классификация, повторы и групповые условия применяются при расчёте, а не к готовым сигналам администратора. В режиме сайта источник передаёт рынки личным расчётам до применения рыночного фильтра администратора. Доступны матчи, которые охватывает общий источник: его лимит и порядок обхода задаёт владелец.

Страны и лиги пополняются из текущих матчей и сохранённого журнала сигналов. Каталог хранится в site_data/accounts.db и не исчезает после окончания матча. При первом включении исторические значения добавляются порциями; это может занять время. Это полный доступный набор из источника и сохранённых данных, а не обещание перечислить все лиги мира. Одинаковые названия лиг разных стран различаются. Рынки имеют русское пояснение и оригинальное название; неизвестный рынок остаётся под названием источника.

В списках стран и лиг есть поиск, множественный выбор и «Все, включая новые». Для рынков сохранена прежняя логика: если фильтр рынков выключен, рассматриваются все; если включён — только выбранные. Если выбрать «Все», новые значения тоже подходят. Если снять «Все» и не отметить ни одного значения, уведомлений не будет. Страны, лиги и рынки применяются одновременно. Остальные параметры сохраняют прежние названия и правила: коэффициенты, направление движения, сумма и загрузка исхода, доля денег, Σ Chg, скорость денег, диапазон коэффициентов и первый → последний, правила минут LIVE, время до начала PREMATCH, тип сигнала, повторы и группировка. Окно LIVE задаётся в секундах: 600 — 10 минут, 1200 — 20 минут. Окно коэффициентов PREMATCH: вся история либо 1, 3, 4, 5, 6 часов, как в прежнем сканере. Правила минут объединяются прежним способом; «Весь матч» разрешает весь матч. Группировка и счётчики повторов индивидуальны. Номер повтора 1 означает первый повтор; включение этого ограничения исключает первичный сигнал из уведомлений, но не из личной базы. Сохранение настроек действует на следующие наблюдения и не запускает повторную отправку старой истории.

18. TELEGRAM ДЛЯ АДМИНИСТРАТОРА

Создайте отдельного бота уведомлений через официальный @BotFather, командой /newbot. Запишите username и сохраните токен в менеджере паролей. Не присылайте токен в чат. Бот для входа через Telegram и бот личных уведомлений настраиваются независимо.

На сервере откройте PowerShell в C:\PBSCAN и выполните:
.\.venv\Scripts\python.exe site_manage.py telegram-shared
Введите username без @, затем токен. Токен вводится скрыто и сохраняется только в site.private.json. Перезапустите задачу сайта. Повторно init выполнять не нужно.

Для этого бота должен работать только один получатель getUpdates. Не вставляйте его токен в старые глобальные настройки Telegram LIVE/PREMATCH и не запускайте одновременно две копии сайта. Если раньше использовался webhook, его нужно отключить в прежней интеграции осознанно; сайт сам его не удаляет. При конфликте страница «Доставка Telegram» покажет проблему. В этой сборке используется исходящее подключение к Telegram, отдельный входящий порт для бота не требуется.

Откройте /admin/telegram под администратором. Здесь видны состояние обработчика и последние 200 доставок: очередь, отправлено, отменено, отклонено Telegram, неизвестный результат. Сетевые ошибки не выводят токен. «Отправлено» означает подтверждение Telegram, а не прочтение человеком. Если результат неизвестен, автоматического повтора нет, чтобы не создавать дубль. Проверяйте такой случай вручную. Отклонённые запросы также не повторяются автоматически. Если Telegram ограничивает частоту, проверьте причину до повторной настройки; архив не обещает неограниченную пропускную способность.

Доставка ограничена одной попыткой каждые две секунды для общей очереди. Сообщения, ожидающие более 15 минут, отменяются. Это ограничение нужно учитывать при росте числа пользователей; высоконагруженная рассылка ещё не проверена. Старые сигналы при первом запуске сайта массово не рассылаются. Буфер общих наблюдений ограничен 64 МиБ и 4096 записями; переполнение означает пропуск наблюдений, а не разрешение отправлять устаревшие сигналы. Свежесть проверяется прежними пределами 45/90 секунд. Нагрузочную пригодность для большого числа подписчиков требуется измерить отдельно.

19. TELEGRAM ДЛЯ ПОЛЬЗОВАТЕЛЯ

1. Войдите на сайт с действующим пробным или месячным доступом.
2. Откройте «Мои фильтры и Telegram». Для каждой нужной фазы выберите страны, лиги, рынки, тип сигнала и диапазоны; включите уведомления и сохраните.
3. Нажмите «Подключить Telegram», затем «Открыть бота и нажать Начать».
4. В Telegram нажмите «Начать». Обычный личный диалог с общим ботом создаётся автоматически: группу или канал создавать не нужно, Chat ID и токен вводить не нужно.
5. Вернитесь на сайт и обновите страницу: должно появиться «Telegram подключён».
6. Дождитесь нового сигнала, подходящего под личные условия. Старую историю бот не пересылает.

Ссылка одноразовая, действует 10 минут и заменяется при создании новой. Не передавайте её другим. Один Telegram привязывается к одному аккаунту. Чтобы сменить получателя, сначала отключите привязку. Смена пароля или отзыв сессий делает старую привязку недействительной; подключите Telegram заново.

При отсутствии сообщений проверьте действующий доступ, подключение, включение нужной фазы и сохранение фильтров. Убедитесь, что не выбран пустой список и бот не заблокирован. Администратор проверяет, создаёт ли сканер новые подходящие сигналы, и смотрит страницу доставки. Истечение подписки, блокировка аккаунта, отключение Telegram или изменение фильтров отменяют ожидающие сообщения; уже начавшаяся отправка может завершиться.

Личные профили, каталог, привязки и общая очередь находятся в site_data/accounts.db. Индивидуальные истории, сигналы, состояния повторов и групп хранятся в site_data/personal/<номер аккаунта>/live.db и prematch.db. Эти базы создаются автоматически; вручную удалять или заменять их нельзя. Сохраняйте всю папку site_data, включая вложенные папки и SQLite-файлы WAL/SHM остановленной установки. При обновлении переносите всю site_data, site.private.json и обе существующие базы сканера согласно разделу 12. Новые таблицы добавляются автоматически; старые базы не заменяются архивными. Прежний журнал и цепочки сигналов сохраняют свои правила хранения. Перед каждым обновлением обязательна резервная копия остановленной установки.

Документация Telegram: https://core.telegram.org/bots/features#botfather ; https://core.telegram.org/bots/api#getupdates ; https://core.telegram.org/bots/api#sendmessage . Проверки сборки выполняются с имитацией Telegram; реальный токен на вашем сервере пока не проверен.

Экспорт и анализ

XLSX и CSV UTF-8 (ZIP) находятся во вкладке результатов. Лист «Сигналы» содержит последние записи цепочек с фильтрами экрана. «Все сигналы и повторы» содержит все сохранённые отдельные события выбранной фазы; остальные фильтры просмотра на этот лист не действуют. «Полнота цепочек» отмечает пропуски.

Новый журнал сохраняется 30 дней. Удалённые до обновления повторы восстановить нельзя. Пустой результат раннего повтора не означает проигрыш: индивидуальный расчёт мог не сохраниться. Для анализа первого входа нельзя подставлять коэффициент или результат последнего повтора.

Если внешний сервис не читает XLSX, распакуйте CSV ZIP: каждый лист — отдельный файл UTF-8 с разделителем «;». Ошибка внешнего обработчика не доказывает повреждение книги.