Кристалл — многофункциональный бот для модерации, статистики и управления беседами. 5 рангов доступа, кастомные и переименование стандартных ролей, гибкое управление командами в VIP-чатах, рейтинг участников, сюжетные ивенты и проверка подписки на паблик. Подтверждение критичных команд защищает от случайных наказаний, а VIP-статус можно купить прямо в мини-приложении через ЮMoney.
!help
Нажмите на роль — бот отредактирует сообщение и покажет команды именно этой роли. Никакого спама в чате: всё в одном сообщении. Кнопка «📚 Показать все команды» — полный список, а «📁 По категориям» возвращает обратно.
messages.edit — сообщение обновляется, а не дублируется.
📚 Интерактивное меню !help! Теперь команда !help
открывает короткий экран с выбором роли — пользователь видит только свои команды.
Клик по роли редактирует сообщение, кнопка «📚 Показать все команды» раскрывает полный
список, а «📁 По категориям» возвращает обратно. Плюс публичный
скам-лист
и спам-лист.
Команда !help открывает короткий экран с кнопками ролей. Пользователь выбирает роль — бот показывает команды только этой роли. Посмотреть демо →
Одна кнопка — и перед вами полный список всех команд бота. Кнопка «📁 По категориям» возвращает обратно на экран выбора роли. Переключение идёт через messages.edit, без спама в чате.
Отдельная страница с мошенниками и обманщиками. Причина, доказательства, вложения, источник записи. Нажмите «Подробнее» — откроется модальное окно. Открыть →
Список пользователей, замеченных в спаме, рекламе и массовых рассылках. Отдельная статистика: сколько добавлено за 30 дней и сколько всего. Открыть →
Форма с защитой: CSRF-токен, honeypot, rate-limit по IP (3 заявки в 24 часа), авто-определение VK ID из ссылки. Все заявки проверяются вручную за 3 рабочих дня. Подать →
Отдельные вкладки «Логи юзеров» и «Логи ивентов» в панели администратора. Фильтры по пользователю, действию, дате, уровню (info / success / warning / error).
!ban, !kick, !warn, !mute, !vig, !addmod, !addadmin, !editowner и другие теперь требуют нажатия [✅ Подтвердить] в чате. Никаких случайных банов из-за опечатки.
Не хотите каждый раз подтверждать? !settings toggle confirm_actions — и все команды выполняются сразу. Настройка запоминается отдельно для каждой беседы.
Прямо в мини-приложении: выберите тариф, оплатите картой или кошельком ЮMoney. VIP активируется автоматически в течение минуты.
При нажатии на кнопку подтверждения появляется всплывающая плашка ВК снизу экрана — «✅ Действие выполняется…» — и исчезает через 10 секунд. Красиво и по-нативному.
7 дней · 49 ₽ · 30 дней · 99 ₽ · 90 дней · 399 ₽ · 365 дней · 1399 ₽. Чем больше срок — тем выгоднее.
Сюжетный ивент в 3 главы: Светильники Джека → Тысячелетний Тыквенный Король → Ритуал изгнания. Призы: VIP-статус, кристаллы, эксклюзивные роли.
Полная история развития бота. Фильтруйте по типу изменений или разверните полный список.
!help синхронизируются с переименованием ролей в VIP-чатах: если Создатель переименовал роль в «Страж», кнопка автоматически подхватит новое имяmessages.edit — сообщение обновляется, а не дублируетсяmenu (выбор роли) · main (все команды) · категория (одна роль)getHelpMenuText() — текст короткого экрана менюbuildHelpKeyboard() — новая логика клавиатуры: всегда показывает роли + одну контекстную кнопку снизуhandleHelpView() — поддерживает три режима: menu / main / категория ролиhandleHelpView корректно обрабатывает menu и main как отдельные ключи/scam.php с карточками пользователей, источником (вручную / по заявке / авто) и модальным окном «Подробнее»/scam-apply.php с CSRF, honeypot, rate-limit по IP (3 заявки / 24ч) и авто-определением VK ID из ссылки/spam.php с рекламщиками и рассыльщиками + статистика за 30 днейuser_action_log) + вкладка в админке с фильтрами по юзеру, действию, дате и уровнюevent_log) + вкладка в админке с топа и игроковscam_applications / user_action_log / event_log сразу после инициализации + диагностическая плашка в табе «Заявки»getScamApplications(): LIMIT/OFFSET передаются как INT напрямую (плейсхолдеры ломались на некоторых PDO-конфигурациях) + catch(Throwable) с логомcountScamApplications() — заменён на catch(Throwable) с логом, баги больше не «глотаются»ChatManager::scamApplicationsTableExists() — публичная проверка наличия таблицы для админкиuser_action_log) — баны, кики, муты, выдачи ролей, VIP, платежиevent_log) — активность игроков, атаки по боссу, разгаданные загадки!-sms — удаление сообщения делается штатным !clear!help раздел «Публичные» переименован в «Пользователь»confirm_actions: миграция NULL → 1 — старые записи больше не дают ложных «выключено»resetRatingInChat)!ban, !kick, !warn, !mute, !vig, !addmod, !addsenmod, !addadmin, !addspec, !editowner, !demote теперь требуют подтверждения кнопкойconfirm_actions — вкл/выкл подтверждение отдельно для каждого чата. Дефолт: включено. Управление: !settings toggle confirm_actions (уровень 40+)!settings toggle confirm_actions»pending_actions удаляется сразу — второй клик ничего не сделаетpending_actions: token, action, peer_id, from_id, target_id, reason, extra (JSON), cmid, created_atpending_actions (>1 часа) при каждой инициализацииcmids из messages.getById — исправлена ошибка «One of (peer_id, cmids) is undefined»VK::call() — fallback-запросы больше не засоряют лог ожидаемыми ошибкамиmessages.getById → messages.getHistory count=1!help и перестаёт работать для всех!clear выключена в этой беседе. 👤 Отключил: [id123|Иван Иванов]» — сообщение автоудаляется через 10 секунд!togglecommand !clear off, !togglecommand !mute on, !togglecommand reset-all!help и !start невозможно выключить ни через бота, ни через miniappchat_commands в БД: chat_id, command, enabled, disabled_by, disabled_at (уникальный ключ (chat_id, command))ChatManager: isCommandEnabledInChat(), setCommandEnabledInChat(), getChatCommandInfo(), getAllChatCommandStatuses(), clearChatCommandStatuses()chat_commands — таблица создаётся автоматически при инициализации ChatManager🚫 3 выкл)get_commands_map (полная карта команд + статусы), get_chat_commands, toggle_chat_command, clear_chat_commands!help, и в разделах по категориям (callback-кнопки)chat_commands команда считается включённой — без нагрузки на БД для чатов без кастомизации!ping = !пинг, !kick = !кик, !ban = !бан, !mute = !мут и т.д.!settings set command_language ru или !settings set command_language en!settings set lang ru/enchat_settings.command_language (VARCHAR(8), по умолчанию ru) с авто-миграциейCommandHandler::setCommandLanguage() — явная запись с гарантией наличия колонки и проверкой результата через SELECTCommandHandler::translateCommandInText() — переводит русский алиас в каноническую EN-команду до всех проверок. Аргументы не трогаетcmd_ru в карте команд getCommandsMap() — русское отображаемое имя!help показывается текущий язык: 🇷🇺 Русский / 🇬🇧 English + его код для диагностики!settings basic, !settings list) язык отображается с флагом и текущим значением!help для Директораglobal не выводятся в getHelpTextForCategory()ensureCommandLanguageColumn() — гарантирует наличие колонки при инициализации CommandHandlergetCommandLanguage(): пишет chat_db_id, raw-значение и итоговый результатstandardRoleNamesCache в ChatManager — ускорение !help, !roles, !stats!renamerole [уровень] [имя] для VIP-чатов!help, !roles, !stats, !admins, !roleinfo, !addadmin и другими командами!help автоматически подхватывают переименование!help динамически обновляются!renamerole [уровень] reset — сброс одной роли!renamerole reset-all — сброс всех переименованийstandard_role_names в БД!help: переключение разделов прямо в сообщенииChatManagergoodbye!settings toggle goodbye — включить/выключить прощальное сообщение в чатеvip_goodbye для кастомного сообщения в VIP-беседахChatManager::sendFarewell() — отправляет прощание и в чат, и в ЛС удалённому пользователю{user}, {user_name}, {moderator}, {chat}, {action}, {reason}sendFarewell() после исключенияchat_settings: колонки goodbye и vip_goodbye (авто-миграция)chatlog_api.php — топ-12 бесед, маскированные ID, VIP-меткиtoggle, set, show, reset, basic, list, help1/0, вкл/выкл, on/off, ✅/❌group → group_ для удобства вводаchat_settings: гарантирует все 26 колонокChatManager::getRules() и setRules() работают с chat_settings.rules + fallback на chats.rulesCommandHandlerfastcgi_finish_request() — ответ VK отдаётся за ~10ms, тяжёлая логика работает после!bot_errors.log, быстрее чтение и анализ!setnick Генералnicks расширена колонками set_by и set_atNameDecliner — правила русских имён и фамилий (исключения: Лев, Пётр, Павел, Илья, Никита)getExpiredMutes() и getExpiredBans() в ChatManagercron.php с блокировкой через flockindex.php — авторазбан и автоснятие мута теперь тихие30, 30м, 2ч, 3д, 1нparseDuration() и pluralize()!help[id123|Имя Фамилия] везде — хелпер mention()!help)getUserName() в ChatManager с fallback через users.get2147483647, >= 2000000000, <= 0 больше не попадают в БД@id2147483647 из списков !nicklist, !admins, !roleinfoisValidVkUserId() — единая точка проверки$msg!helprefreshChatTitle()refreshChatTitle() + автообновление раз в 5 минутkick+readd)error 27getUserGlobalStats() в ChatManager/ убранСюжетные события, которые бот проводит в беседах. Нажмите на активный ивент, чтобы открыть полное описание сюжета, глав и команд. Отключённые ивенты показаны серым.
VIP-статус можно приобрести прямо в мини-приложении ВКонтакте с оплатой через ЮMoney (карта или кошелёк). Оплата защищена, VIP активируется автоматически.
Ответы на популярные вопросы о работе бота, ивентах, ролях и VIP-статусе. Если не нашли ответ — напишите в сообществе vk.com/cm_manager.
!start.
!ban ·
!kick ·
!warn ·
!mute ·
!vig
!addmod ·
!addsenmod ·
!addadmin ·
!addspec
!editowner ·
!demote
confirm_actions
управляется через команду !settings.
Настройка независима для каждой беседы — можно включить только там, где нужно.
!settings toggle confirm_actions — переключить вкл/выкл
!settings set confirm_actions 0 — выключить
!settings set confirm_actions 1 — включить обратно
!settings show confirm_actions — посмотреть текущее значение
!settings reset confirm_actions — сбросить (вернётся в положение «включено»)
!addmod — Младший модератор (10)
!addsenmod — Старший модератор (20)
!addadmin — Младший администратор (30)
!addspec — Старший администратор (40)
!giverole — выдать кастомную роль
!removerole.
Все действия доступны и через веб-панель VK Mini App. Владелец чата может передать свои права командой !editowner.
confirm_actions).
!renamerole 10 Страж.
!addrole Принц 25.
!help, !roles, !stats, !admins и других командах.
!togglecommand !clear off — выключить !clear
!togglecommand !mute on — включить обратно
!togglecommand reset-all — сбросить всё
!help и не работает у участников.
При попытке её использовать бот напишет «🚫 Команда выключена в этой беседе. 👤 Отключил: Иван Иванов».
Команды !help и !start защищены — их выключить нельзя.
!renamerole)
!addrole)
HW-2026-A1B2C3D4E5F6.
!vipstats HW-2026-A1B2C3D4E5F6
!vipstats не отображается в !help — она известна только победителю.
!сладость, атаки по боссу, разгадывание загадок или украсть у других игроков командой !украсть (ответом на сообщение).
!загадка и !ответ.
!атака.
!ивент выкл [ключ].
Например, для Хэллоуина: !ивент выкл halloween.
!ивент вкл halloween.
Список всех ивентов и их ключей: !ивент.
!help.
Отображаются только те команды, которые доступны вам по роли — так проще ориентироваться.
confirm_actions,
критичные команды ждут нажатия кнопки [✅ Подтвердить].
Добавьте бота прямо сейчас и получите полный контроль над модерацией, ролями, рейтингом и VIP-функциями. Подтверждение критичных команд защитит от случайных наказаний, а VIP можно купить прямо в мини-приложении через ЮMoney.