Vladimir Bryzgalov c0ff5a9227 docs: finalize self-hosted updates spec + implementation plan (1.2.0)
Spec finalized after brainstorm + pre-impl verification: PUC v5.6 pinned,
Gitea raw URL cache headers verified, release.sh uses browser_download_url
from API response (not guessed format), changelog-to-HTML conversion via awk,
two fast-forward commits per release (no force-push).

Plan decomposes into 19 tasks: vendor PUC → tests → JSON skeleton → boot
wiring → gitignore/gitattributes → release.sh incrementally (validate, bump,
commit+push, zip, Gitea release, upload, regenerate JSON, JSON commit) →
changelog body → actual release run → deploy to домработница.рус.
2026-04-21 20:59:52 +05:00

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
=== CF7 Spam → Telegram ===
Contributors: vbryzgalov
Tags: contact-form-7, telegram, spam, flamingo
Requires at least: 6.0
Tested up to: 6.9
Requires PHP: 7.4
Stable tag: 1.1.0
License: GPLv2 or later

Пересылает в Telegram-группу submissions CF7, помеченные как спам, с эвристической оценкой «похоже клиент / неясно / похоже спам».

== Description ==

Решает узкую задачу: среди отсечённого Akismet/Honeypot спама иногда встречаются реальные заявки клиентов. Плагин пересылает всё содержимое таких submissions в общую TG-группу с пометкой классификации (🟢/🟡/🔴), причиной попадания в спам, IP/UA, UTM.

Требует установленных плагинов Contact Form 7 и Flamingo.

== Installation ==

1. Загрузите папку `cf7-spam-to-telegram` в `/wp-content/plugins/`.
2. Активируйте плагин в меню «Плагины».
3. Откройте «Настройки → CF7 Spam → TG», укажите Bot Token и Chat ID группы, сохраните.
4. Нажмите «Отправить тестовое сообщение», чтобы проверить.

== Changelog ==

= 1.1.0 =
* New: Silent drop — заявки, удовлетворяющие hard-rule (нет позитивных
  сигналов + короткое латинское имя или ≥3 полей-плейсхолдеров) или
  score ≤ -5, не отправляются в TG. По умолчанию при установке/апгрейде
  включён dry-run режим (помечает сообщение «[БЫЛО БЫ DROPPED]»);
  реальный дроп включается чекбоксом в настройках.
* New: Settings → блок «Silent drop» с переключателями dry-run, hard-rule,
  score-порогом и статистикой счётчиков.
* New: Dashboard widget показывает количество дропов.
* New: filter `cf7stg_should_enqueue` для внешних override-правил.
* New: filter `cf7stg_hard_drop_rules` для точечного отключения hard-rules.

= 1.0.4 =
* Fix: PhoneParser больше не склеивает цифры из соседних полей при flatten через `\n` / `\t`.
* Fix: Flamingo `_from_email` используется как `your-email` только если содержит `@`; `_from_name` больше не маппится.
* New: `FieldDetector` — fallback-поиск имени и e-mail по значению, когда на форме нестандартные ключи полей (`text-211`, `name_user` и т.п.).
* UX: Dashboard-виджет «CF7 Spam → Telegram» отображается всегда (статус очереди), а не только при ошибках.
* UX: В ретроспективной выгрузке по умолчанию `0` дней (без ограничения по дате).

= 1.0.3 =
* Fix: Убрана `tel:`-кнопка в inline_keyboard (Telegram Bot API отклонял `tel:` URL с HTTP 400).
* Fix: HTTP 4xx ответы Telegram (кроме 429 rate-limit) теперь классифицируются как permanent — записи сразу помечаются failed, без 5 бесполезных retry.
* Fix: `FlamingoHelper::extract_fields` берёт значения из `_field_*` мета, а не из пустого `_fields`-массива.

= 1.0.2 =
* Fix: Activator регистрирует `cron_schedules` фильтр до `wp_schedule_event` — без этого кастомный интервал `cf7stg_every_minute` не существовал в момент активации и cron никогда не срабатывал.
* Fix: Autoloader корректно маппит классы с `_` (например, `Settings_Page`, `Interface_Spam_Source`) в файлы с дефисами.
* Fix: Поправлен неверный Punycode-пример в документации.
* Fix: Honeypot теперь hard override → label=spam (weighted -5 был недостаточен для перевеса положительных сигналов).

= 1.0.0 =
* Первый релиз.
S
Description
WordPress plugin: forwards CF7 spam submissions to Telegram with heuristic classification
Readme 418 KiB
1.2.1 Latest
2026-05-01 20:20:30 +05:00
Languages
PHP 95.2%
Shell 4%
JavaScript 0.5%
CSS 0.3%