- PVSM.RU - https://www.pvsm.ru -
В декабре 2024 я запустил антиспам-бот для Макс — по той же схеме, что уже годами работает в Telegram. Через месяц платформа удалила бота без объяснений. Поддержка отвечала: «работаем над вашим вопросом, ждите». Досудебная претензия заказным письмом — разблокировка и ответ в духе «вы согласились с правилами при регистрации».
Если вы разработчик ботов и думаете зайти в Макс — расскажу историю моей разработки в МАКс. В декабре 2025 я перенес алгоритмы из своего антиспам бота в Телеграм в МАКС, много прихлось менять, т.к. API сильно отличается, и запустил его в работу. 31 января 2026 MAX убрал антиспам-бота без письма и без причины в кабинете. Просто бота удалили, при этом в Макс-бизрес он показывался как рабортающий . Десять дней писем в поддержку — один ответ "мы разбираемся, ожидайте". 17 февраля отправил досудебную претензию, через несколько дней бот снова появился в списке, но ещё неделю на любую команду API отвечал ошибкой. Пишу это не как рекламу MAX и не как войну с MAX — просто зафиксировать, что перенос бота из Telegram сюда оказался не «ещё один webhook», а отдельная головоломка. Поделюсь двумя своими разработками: антиспам (перенос TG-логики) и «Почтальон» (мост Макс ↔ Telegram), который родился уже после блокировки.
Это моя первая публикация на Хабре — прошу не судить строго. Разработкой занимаюсь больше 40 лет; последний год в основном пишу ботов для Макс. Отправил в поддержку несколько сотен тикетов — большинство закрыли с сообщением «Ваш вопрос закрыт» и без видимых изменений в API, часть чинили оперативно.
В арсенале три бота в Макс: антиспам, «Почтальон» (мост Макс ↔ Telegram) и розыгрыши призов. Розыгрыши здесь не разбираю — другая предметная область. Фокус на том, что полезно коллегам-разработчикам.
Короткий баланс без маркетинга платформы. Лезть в MAX имеет смысл, если вам нужны живые пользователи, здесь "голубой океан" возможнойсте, мало конкурентов, но вы готовы к тому, что документация врёт, а бота могут выключить и "включить" его будет крайне сложно. Ну а поддеркжка, она как и в Телеграмм, почти отсутствует. Если нужен предсказуемый API — я бы пока не переносил сюда единственный источник дохода.
Вывод, с которым живу: Макс — поле для тех, кто готов к запасным каналам, подробным логам и тому, что платформа может откатить месяц работы одним щелчком. Если вам нужна предсказуемая экосистема уровня Telegram Bot API 9.x — пока рано ставить всё на Макс.
Прежде чем про ботов — про архитектуру. У меня все боты устроены одинаково:
HTTP-запрос → webhook.php → обработка → exit
Никаких «долгоживущих» PHP-процессов между событиями. Каждый webhook — чистый контекст. Флаги вроде «удалить сообщение при следующем update» живут только внутри текущего запроса.
Для Макс, где события приходят пачками и не всегда предсказуемо, это не академический совет, а способ не словить гонки и «залипшее» состояние между вызовами.
В Telegram мой user_ban работает по принципу «установил и забыл»: эвристики по имени, ссылкам, языку, флуду, массовым рассылкам — без ручных списков стоп-слов. Порт в Макс выглядел прямолинейно: тот же webhook, бан/мут, уведомления админам в личку.
В Telegram я привык: deleteMessage либо сработал, либо вернул понятный код ошибки. В MAX на одном и том же chat_id удаление то проходило, то нет — при тех же галочках в UI админа. А ещё "феничка" MAKC меня радует 6й месяц: бот может доавить пользователя в любой чат без его согласия... или не добавить, причем однозначного ответа почему это происходит или не происходит поддержка не знает!
Конкретные примеры из продакшена:
Права админа — бот добавлен, формально админ, но отдельные операции (удаление, бан) ведут себя иначе, чем в TG. Приходилось проверять не «что написано в UI», а «что вернул API на этом chat_id». Или право в канале "Редактировать чужие посты" на самом деле нужно чтобы бот мог править собственный пост!
Сырой webhook — писать в лог всё сто приходит, максимально подробно. Да, лог огромный, лишние ресурсы, но иначе потом ни в поддержку не напишешь, ни сам нге поймешь.
Уведомления нескольким админам — в больших бесплатных чатах (≥10 участников) рассылать всем админам каждый mayBe-спам — убить личку и выйти за лимиты API. Пришлось ввести одного модератора уведомлений (/setNotify): команды модерации доступны всем админам, а авто-уведомления — одному слоту (или в чат админов).
Бан пользователя — В МАКС это не совсем БАН! Пользователь может снова вступить по ссылке приглашению (той самой публичной по котрой все вступают) или его может добавить любой участник!.
Разбан пользователя — В МАКС это самая большая непредсказуемость! У меня накопилось два десятка пользователей, которых невозможно разбанить (Тикет есть давно, ТП о них знает и ничего не может сделать)
Нет частичных и временных ограничений пользователя - приходится всё эмулировать, чтобы пользователя не удалять из чата, а только запретить ему писать.
Не буду раздувать юридическую часть. Инженерные выводы:
не держите единственную точку контакта с пользователями внутри платформы;
логируйте всё, что может понадобиться при разборе;
имейте план Б на случай удаления бота — у меня он стал вторым продуктом (см. кейс 2).
После блокировки Телеграм в России я оказался в ситуации, знакомой многим: Telegram недоступен или режется, Макс — работает. Все контакты в Телеграм. Нужно читать личку Telegram и отвечать так, чтобы собеседник видел ответ в том же диалоге TG.
Так появился «Почтальон»: пересылка Макс ↔ Telegram с ответами из Макс обратно в исходный диалог.
В БД — таблица пересылок. Каждая строка — направление потока, не «настройка бота» абстрактно:
Режим 0 (⇢): Макс → Telegram — посты из канала Макс в группу TG
Режим 1 (⇠): Telegram → Макс — входящие из TG-группы в личку Макс
Режим 2 (⇄): обе стороны — чат Макс ⟷ чат TG
Отдельный сценарий — автоматизация профиля Telegram (Настройки → Аккаунт → Автоматизация чатов): вся входящая переписка профиля уходит в личку Макс; «Ответить» в Макс возвращает текст клиенту в TG.
Главный источник багов у новичков: путаница, кто такой tg в строке связки — это не id клиента, а id группы/канала или владельца профиля.
В профиле TG можно подключить только одного бота автоматизации. У корпоративных пользователей уже стоял свой автоответчик. Заменить его на «Почтальона» — потерять ответы на типовые вопросы.
Решение: встроить автоответчик в «Почтальона». Один бот:
пересылает входящее в Макс;
сразу отвечает клиенту в TG по правилам (фразы, кнопки, медиа);
опционально дописывает в пересылку: 🤖 Автоответил: … — коллеги в Макс видят, что клиенту уже ответили.
Корпоративные клиенты не могли выкинуть старый автоответчик из автоматизации TG — пришлось вшить автоответ в Почтальона .
Следующий запрос пришёл от пользователей, не от ТЗ: пересылать не в личку Макс, а в групповой чат, чтобы несколько менеджеров смотрели потоки в одном месте. Ответ из Макс уходит автору в TG — несколько менеджеров смотрят один чат в MAX, отвечают — уходит в тот же диалог TG.
У Tg для пересылки больших файлов существует локальный сервер Telegram Bot API, его нужно установить на своем сервере и все запросы переадресовывать на свой сервер. У Макс такого сервера нет, но есть проблема с частыми ошибками при загрузке файлов на сервер Макс, что создает неудобства, когда пост опубликован в канале TG, а в Макс бот почтальон "пропихивает" его через 10 минут.
Отдельный практический сценарий: периоды, когда из мессенджеров нормально работает только Макс — запасной продолжает работать.
Лог сырого webhook — файл на диск при превышении порога или при error от API; в оперативный лог — ссылка, не полный JSON.
Изоляция вторичных подсистем — у меня есть каталог чатов и синки; ошибка каталога не роняет webhook основного бота. Сначала бизнес-логика, потом всё остальное — в try/catch или на shutdown.
Не дублировать webHookBegin() в боте с урезанным набором полей — потеряете кнопки, payload и отладку. Один вход через базовый класс.
Тикеты в поддержку — не тестовая среда — писать полезно, но релизный цикл на ответы саппорта не вешать.
Связь с пользователями вне платформы — канал, сайт, email; платформа может отключить бота без объяснений.
Сценарий «бот удалили» — что видит пользователь, как переустановить, как не потерять данные.
Один webhook = один запрос — не проектировать сброс static-state между запросами; следующий webhook — новый процесс.
Если после прочтения остались вопросы по API, webhook, модерации или странным ответам поддержки — завёл чат для разработчиков, которые уже ковыряют Макс [1] или только собираются. Там нет официальной поддержки платформы — зато есть люди, которые уже получили по зубам и могут сказать «у нас тоже так было».
Год назад я бы сказал: перенесу антиспам за неделю. Сейчас три бота в проде, несколько сотен тикетов в ТП и один раз бота удалили молча. Если пойдёте в MAX — закладывайте терпение, логи, запасной канал связи с пользователями и не верьте, что «раз написал — дальше платформа не тронет». Остальное — в комментариях, если будут вопросы по конкретным методам API.
P.S. Подробные инструкции к описанным кейсам (документация, не реклама):
Антиспам: https://htmlweb.ru/max/anti_spam_bot.php [2]
Почтальон: https://htmlweb.ru/max/postman.php [3]
Боты в Макс: @id616301431999_bot [4] (антиспам), @id616301431999_2_bot [5] (почтальон). В Telegram: @postman_max_bot [6].
Буду рад конструктивной критике в комментариях, особенно от тех, кто тоже пилит под Макс.
Автор: kdg22
Источник [7]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/razrabotka/452898
Ссылки в тексте:
[1] завёл чат для разработчиков, которые уже ковыряют Макс: https://max.ru/join/Q6fF_rIh_UuSqUjkUlTL5VHY8KIT8oFprDCf8M7h5O4
[2] https://htmlweb.ru/max/anti_spam_bot.php: https://htmlweb.ru/max/anti_spam_bot.php
[3] https://htmlweb.ru/max/postman.php: https://htmlweb.ru/max/postman.php
[4] @id616301431999_bot: https://max.ru/id616301431999_bot
[5] @id616301431999_2_bot: https://max.ru/id616301431999_2_bot
[6] @postman_max_bot: https://t.me/postman_max_bot
[7] Источник: https://habr.com/ru/articles/1044896/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1044896
Нажмите здесь для печати.