Команды бота

    Редактирование файла

    Создать автоматизацию

    Создать правило автоотправки

    Переслать сообщение в...

    • Загрузка списка групп...

    HuskyNET — Chat Theme 5.5.5.5.1

    Тёмная тема WordPress: чат, командная строка и дашборд в одном окне. Сайт выглядит как мессенджер — слева чаты, по центру команды и плитки, справа события.

    Версия темы в style.css: 2.14. Схема таблиц чатов: DB 2.2.

    Возможности

    • Переписки и сообщества — личные чаты 1+1, избранное (сообщения себе), диалоги и группы; гости читают открытое, авторы пишут, создатель управляет участниками.
    • Командная строка — поле «Введите команду…»: поиск по сайту, новости, AI, управление чатом, вложения файлов.
    • Главная как хаб — плитки нейросетей, сайтов, групп, мини-приложений и баннеров проектов; контент из записей, страниц и чатов.
    • Лента справа — напоминания, непрочитанные, события автопостинга (Telegram, VK и др.).
    • Медиа как в соцсетях — галереи, превью ссылок, видео, пересылка, закреп, push в браузере.
    • Поиск и фильтры — поиск по чатам, теги, период, закреплённые сообщения, массовое выделение.
    • AI-диалоги — режим с контекстной памятью через плагин AI Mode (ai-mode=1).
    • REST API — внешние системы публикуют и читают сообщения (Application Passwords); ответы обогащаются превью и полями видео.

    Требования

    • WordPress 6.0+ (Application Passwords — с 5.6).
    • PHP 8.0+ (библиотека Web Push; рекомендовано 8.1).
    • MySQL 5.7+ / MariaDB 10.4+.
    • mod_rewrite (или эквивалент) для ЧПУ /dialog/{slug} и REST.
    • HTTPS — для Web Push и сервис-воркера.
    • WP Cron — для плагинов автопостинга и планировщика команд.

    Плагины (новости, AI, соцфид, напоминания) лежат в wp-content/plugins/ рядом с темой, не внутри неё.

    Установка и запуск

    1. Скопируйте тему в wp-content/themes/chat-theme5_5_5_5_1.
    2. В админке WordPress: Внешний вид → Темы — активируйте Husky Chat Theme.
    3. При активации тема создаёт/обновляет таблицы wp_chat_dialogs, wp_chat_user_dialog_status, wp_chat_dialog_versions (версия схемы CHAT_THEME_DB_VERSION = 2.2).
    4. Установите и включите плагины из wp-content/plugins (Chat Enhancer, AI, новости, social feed — по необходимости).
    5. REST: создайте Application Password в профиле пользователя. Инструкции — `inc/api/SETUP.md`.
    6. Push (по желанию): сгенерируйте VAPID-ключи скриптом в _dop для уведомлений/ и сохраните их в настройках. Нужен HTTPS. См. `docs/NOTIFICATIONS.md`.

    Локально подойдёт любой стек с PHP 8+ (OpenServer, LocalWP, wp-env). Включите WP_DEBUG и WP_DEBUG_LOG при разработке.

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

    Главная (чат не открыт)

    1. Откройте корень сайта.
    2. Сверху всегда поле «Введите команду…».
    3. Ниже — дашборд:

    — плитки быстрого доступа (сайты/сервисы; админ правит шестерёнкой, опция quick_access_sites);
    — до 12 публичных групп;
    — до 10 записей категории со слагом PRO;
    — выбранные страницы (список ID в index.php, $homepage_page_ids);
    — блоки сообщений из конкретных чатов (chat_theme_display_chat_posts).

    1. Чтобы карточка проекта попала в ряд записей на главной, запись WordPress должна быть в категории PRO.

    После перехода в диалог центр становится лентой сообщений; дашборд скрывается.

    Левое меню

    1. Нажмите иконку меню (гамбургер) или откройте панель на десктопе.
    2. Личные — подгруппы «Пользователи» (в т.ч. Избранное) и «Диалоги». У WP-админа ниже — свёрнутые черновики.
    3. Группы — мои группы и «Доступные группы» (блок скрыт, если список пуст).
    4. Инфо — страницы и записи WordPress; открываются в попапе (прямой URL — отдельная страница).
    5. Клик по человеку всегда открывает канонический личный чат 1+1 (is_dm), а не общий диалог.

    У гостя: «Текущий диалог» только при своём черновике (по IP), затем группы, люди, инфо.

    Личный чат, диалог, группа

    1. Клик по пользователю — личная переписка; в шапке имя и аватар собеседника.
    2. Команда dialog to-add логин (или ПКМ → добавить) снимает is_dm навсегда: чат становится диалогом.
    3. В группе создатель добавляет/удаляет участников, меняет роли «автор» / «подписчик» (ПКМ по участнику).
    4. Шестерёнка «Действия»: удалить чат, если есть право chat_theme_can_delete_dialog.
    5. «Избранное» — чат себе; участников добавить нельзя; первым в списке пересылки.

    Командная строка

    1. Введите текст в поле «Введите команду…» и нажмите отправку (или кнопку / для списка команд).
    2. Примеры: dialog add Название, dialog to логин, wp запрос, news тема, ai вопрос.
    3. Скрепка или drag-and-drop — вложения. В AI-диалоге (ai-mode=1) обычный текст уходит в модель как bot ….
    4. Полный список — `docs/COMMANDS.md`.

    Сообщения

    1. Над пузырём (у кого есть edit_posts): правка, удаление, пересылка, шаринг, закреп.
    2. Картинки без текста — сетка на всю ширину (как VK); с текстом — галерея сверху, пузырь снизу.
    3. Поиск, теги, дата и закреп — круглые кнопки справа в колонке чата.
    4. Пересылка: Избранное → личные чаты (по имени собеседника) → диалоги → группы; только куда можно писать.

    Правая панель

    1. Колокольчик открывает ленту: сверху напоминания (HuskyTodo), ниже события опросов, автопостинга и непрочитанных.
    2. Клик по напоминанию открывает связанный чат; «+ Добавить напоминание» — модалка задачи.
    3. Push в браузере — после разрешения уведомлений и настройки VAPID.

    REST для внешних систем

    1. Создайте Application Password в профиле WP.
    2. Базовый URL: /wp-json/my-chat/v1/.
    3. Чтение чата: GET /chats/{slug}. В сообщениях есть preview_url и при видео — video_type, video_url, video_embed_src, video_page_url (для агрегаторов вроде vc_clone).
    4. Публикация — `inc/api/HOW_TO_PUBLISH.md`.

    Структура проекта

    chat-theme5_5_5_5_1/
    ├── functions.php              # ядро: AJAX, права, команды, миграции БД, push
    ├── index.php                  # главная: командная строка + дашборд плиток
    ├── single-post-chat.php       # шаблон открытого диалога
    ├── page.php / header.php / footer.php
    ├── style.css                  # стили темы (Version 2.14)
    ├── sw.js                      # Service Worker (Web Push)
    ├── js/
    │   ├── chat-theme.js          # состояние чата, кеш, команды, лента уведомлений
    │   └── script.js              # меню, попапы, вспомогательный UI
    ├── inc/
    │   ├── api/                   # REST Chat_Theme_REST_API + инструкции
    │   ├── content-tiles-widget.php
    │   ├── admin-chats.php        # пункт «Чаты» в админке WP
    │   └── ajax-handlers.php
    ├── template-parts/            # меню, сайдбар, плитки, карточки постов из чатов
    ├── vendor/web-push/           # Minishlink Web Push
    ├── _dop для уведомлений/      # VAPID, проверка установки push
    ├── docs/                      # архитектура, гайды, AI_RULES
    ├── CHANGELOG.md
    └── README.md

    Слои, таблицы и потоки данных — в `docs/ARCHITECTURE.md`.

    Технологии

    • WordPress / PHP 8+ — тема, шаблоны, AJAX admin-ajax.php, REST.
    • jQuery / ES5 — клиентское состояние в js/chat-theme.js (без сборщика).
    • JSON в LONGTEXT — история сообщений в wp_chat_dialogs.dialog_context.
    • Minishlink Web Push — серверная отправка браузерных уведомлений.
    • Service Worker (`sw.js`) — показ push и переход в диалог.
    • Font Awesome — иконки интерфейса.
    • Плагины через фильтр chat_theme_handle_backend_command — AI, новости, поиск, соцфид.

    Разрешения, интеграции, ключи

    Права WordPress

    | Кто | Что может |
    | — | — |
    | Гость | Читать открытые группы, безопасные команды без записи |
    | Авторизованный | Личные чаты, сообщения (если чат разрешает), команды |
    | Создатель чата (user_id) | Удаление своего чата, роли, метаданные, участники |
    | Автор в чате (opponent) | Писать; без прав создателя не удаляет чужую группу |
    | edit_posts | Инструменты под пузырём (edit/delete/forward/pin) |
    | manage_options | Любые группы/диалоги, роли везде, плитки главной |

    Подробности — `docs/PERMISSIONS.md`.

    Ключи и токены (не в репозитории темы)

    • REST: Application Password в профиле пользователя WP.
    • Web Push: пара VAPID (генератор в _dop для уведомлений/generate-vapid-keys.php).
    • AI / новости / соцсети: опции соответствующих плагинов, не файлы темы.

    Точка расширения для плагинов: фильтр chat_theme_handle_backend_command. Сохранять ответы ботов только через безопасные хелперы (read → modify → write), иначе ленивая загрузка затрёт историю. См. `docs/PLUGIN_INTEGRATION.md`.

    История изменений

    Все значимые изменения в теме документируются в этом файле.

    [Unreleased]

    Changed

    • README / архитектура: ряд записей на главной берётся из категории WordPress со слагом PRO ($homepage_category_slug в index.php); страницы — из $homepage_page_ids.
    • README приведён к полной структуре продукта: возможности, требования, установка, сценарии (главная, меню, чаты, команды, сообщения, панель, REST), дерево, стек, права и ключи. Убрана таблица версий из README (история только здесь).
    • docs/ARCHITECTURE.md: удалён склеенный дубликат старой редакции; исправлена двойная нумерация §7; добавлены дерево файлов, таблицы БД 2.2, маршрут /dialog/{slug}, правило opponent при save.
    • Добавлен docs/AI_RULES.md — куда класть фичи, схема сообщений, текущий этап темы.
    • README / архитектура / UI-гайд: тема описана как трёхколоночный хаб (меню, командная строка + плитки, лента событий), а не только как «чат с вкладками».
    • UI-гайд: мобильные правила (закрытие меню, фокус поля ввода, --app-height, слайдеры).

    Added

    • Правая панель уведомлений v2: единый поток событий (опросы HSF / размещения SCP / непрочитанные) с ленивой подгрузкой чанками по 15 (chat_theme_notification_feed); poll/placement за 24 часа.
    • Компактные карточки напоминаний в панели: иконка диалога, клик открывает чат, edit/delete при наведении; карточка «+ Добавить напоминание» (HuskyTodo 1.9).
    • Левое меню: подсветка текущего диалога; списки предзагружаются один раз (без wipe при открытии чата); исправлен ранний openMenu до инициализации user_id.
    • Пункт «Удалить» в меню «Действия» (шестерёнка) для диалогов/групп по правам chat_theme_can_delete_dialog.
    • ПКМ по участнику: «В авторы» / «В подписчики» (AJAX my_set_member_role).
    • Аккордеон левого меню в стиле блока авторизации: «Личные» → Пользователи + Диалоги; «Группы» → Группы + Доступные группы.
    • «Избранное»: чат сообщений себе (is_favorites), пункт в «Пользователи», первым в списке пересылки.
    • Поле is_dm в wp_chat_dialogs (DB 2.1): канонический личный чат 1+1; клик по человеку всегда открывает/создаёт именно его.
    • Команды dialog to-add / dialog to-del (раньше были только в подсказках).
    • GUI: ПКМ на участнике — «Удалить из чата»; ПКМ на боте — «Добавить в чат» (модальный список пользователей).
    • REST API: обогащение сообщений полями preview_url, video_type, video_url, video_embed_src, video_page_url через enrich_message_for_api() — для внешних потребителей (тема vc_clone и др.).
    • Функция chat_theme_get_message_video_info() — извлекает данные видео из вложений и HTML (VK embed, <video>, Telegram).
    • Fallback для VK: парсинг vk.com/video… и vk.com/wall… (widget_post) при превью type=video_thumb, если embed вырезан wp_kses_post.
    • chat_theme_message_persist_video_fields() — сохраняет video_* в JSON сообщения до kses.
    • Фильтр chat_theme_kses_allow_hsf_video_embed — не вырезает data-embed-src / data-vk-url у VK-embed.

    Fixed

    • Мобильные: плавная анимация VK/link-слайдеров восстановлена (высота после transform, translate3d, native smooth scroll).
    • Мобильные: после авторизации не открывается панель профиля; редирект на главную; sessionStorage панели сбрасывается.
    • Мобильные: программный фокус на #chat-input отключён — клавиатура открывается только по тапу в поле.
    • VK/link-слайдеры: высота контейнера подстраивается под активный слайд (пузырь сжимается/растягивается), без пустоты от самого высокого кадра.
    • Пересылка: сообщение ищется надёжнее (String msg_id, локальный реестр после поиска/закрепов, fallback DOM/AJAX).
    • Мобильное меню: при переходе в диалог панель всегда закрывается; не восстанавливается поверх открытого /dialog/….

    Changed

    • Панель #notifications-sidebar: убраны заголовок «Уведомления» и аккордеоны (напоминания / HSF / SCP / непрочитанные); вместо них — блок напоминаний + лента карточек событий.
    • Попап WP-страниц/записей: один заголовок в шапке, крестик справа; без «Назад к списку»; пункты «Инфо» открываются в попапе (прямой URL — отдельная страница).
    • VK-галереи: та же позиция/отступ, что у обычных пузырей; вогнутый вырез вокруг аватарки на самой галерее.
    • Картинки внутри пузыря и в превью ссылок (плагин +my-chat-link-handler-5: слайдер / одиночные / inline) — всегда со скруглением.
    • Сообщения с картинками-вложениями + текст: сначала VK-галерея без пузыря, снизу текстовый пузырь той же ширины (message-with-gallery).
    • Картинки во всех видах постов — на всю ширину блока/пузыря и со скруглением (одиночные, слайдер, альбом, inline).
    • Посты только с картинками: без пузыря, сетка на всю ширину колонки (как VK); при нечётном числе первая картинка на ширину двух.
    • Черновики: скрыты у WP-авторов; у админов — свёрнутая подгруппа в «Личные» после диалогов.
    • «Доступные группы» не показываются, если список пуст.
    • У гостя «Текущий диалог» только при своём черновике (по IP) и первым в меню.
    • Вкладка «Люди» для авторизованных убрана и объединена с «Личные» (подгруппы Пользователи / Диалоги).
    • Список пересылки: Избранное → личные чаты по имени оппонента → диалоги → группы (внутри блока по алфавиту); только где пользователь создатель или автор и может писать.
    • Права: WP-админ удаляет любые группы и меняет роли; создатель группы/диалога имеет полные права в своём чате.
    • Инструменты под пузырём сообщения (edit/delete/forward/share/pin + save/cache) доступны всем с правом WP edit_posts (Автор, Редактор, Админ), а не только создателю чата.
    • Подгруппа «Диалоги» не показывает чаты с is_dm=1 (они через «Пользователи»).
    • Ярлык «Личный чат» только при is_dm=1; иначе приватный чат — «Диалог».
    • В личном чате в шапке/правой колонке показываются имя и аватар собеседника; служебное dialog_title редактируется отдельно («Имя диалога»).
    • У ботов (Хаски, Рыжий кот) аватары с ярко-синей обводкой — те же параметры, что у онлайн-статуса (зелёная).

    Fixed

    • Компактные боковые отступы аккордеона «Личные»/«Группы» — больше места под названия диалогов.
    • Пункт «Удалить» в шестерёнке: прямоугольная заливка вместо «растянутого круга» (конфликт с border-radius: 50% у .delete-dialog-button).
    • Создатель диалога (в т.ч. WP Автор) снова может менять превью/аватар: на фронте сравнивался числовой user_id со строкой из wp_localize_script.
    • Обновление списка групп после подписки учитывает аккордеон .menu-accordion-host.
    • dialog to-add / dialog to-del не обрабатывались бэкендом («Неизвестная команда»).
    • chat_theme_get_message_video_info(): сохранённый video_page_url (wall) больше не блокирует повторный разбор HTML на data-video-embed-src / data-embed-src.
    • kses: разрешены data-video-embed-src и data-video-page-url на .social-feed-post.
    • Паритет доменов vk.ru в chat_theme_parse_vk_video_from_text() (video/clip/wall).
    • chat_theme_get_message_preview_url() игнорирует default-link-image.png (котёнок-заглушка link-handler).
    • В личной переписке сообщения от оппонента (не владельца) снова сохраняются: add/edit/delete_message_safe и кэш изображений больше не передают opponent в chat_theme_save_or_update_dialog, из‑за чего срабатывала проверка «смена участников» только для владельца/админа.
    • saveCurrentDialog отправляет opponent_ids только при создании личной переписки, а не при каждом сохранении.

    [1.10.0] — 2025-11-25

    Added

    • Добавлена поддержка плагина AI Mode (@ai-mode) для работы с нейросетями
    • Добавлено поле ai_mode в объект currentDialog на фронтенде для отслеживания AI режима
    • Реализована автоматическая обёртка пользовательских сообщений в команду bot [текст] в AI-диалогах
    • Добавлена передача флага ai_mode из бэкенда на фронтенд при загрузке диалога

    Changed

    • Обновлена функция chat_theme_get_dialog_by_slug() для выборки поля ai-mode из БД
    • Обновлена функция handle_load_dialog_by_slug() для передачи ai_mode в ответе AJAX
    • Улучшена логика обработки команд: предотвращено дублирование сообщений в AI-диалогах
    • Обновлена функция processCommand() для автоматической обработки AI команд

    Fixed

    • Исправлена проблема дублирования сообщений в AI-диалогах (ai-mode=1)
    • Исправлена логика сохранения сообщений: фронтенд не сохраняет сообщения, если их сохраняет плагин
    • Улучшена синхронизация между фронтендом и бэкендом при работе с AI

    [1.9.0] — 2025-11-24

    Added

    • Добавлен столбец ai-mode (по умолчанию 0) в таблицу wp_chat_dialogs для фиксации статуса режима ИИ с поддержкой контекста.
    • Создан файл CHANGELOG.md и добавлена ссылка в документацию.

    Edit Message

    Attachments:

    AI Assistant

    Enter your instruction to edit the text: