Есть надёжный признак, по которому софт для работы с чатами делится надвое. Спросите: «могу я задать разный текст для разных чатов?» Ответ «да, конечно» ничего не значит — уточните: «а разный текст для одного и того же чата с разных аккаунтов?»
Настройка — не список полей, а пять уровней
Обычная модель настроек плоская: есть кампания, у неё параметры. Наша — послойная, и каждый следующий слой перебивает предыдущий.
| Уровень | Что здесь задают |
|---|---|
| Кабинет | умолчания на всё сразу |
| Папка (она же кампания) | свои паузы, круги (круг — один проход аккаунта по всему своему списку чатов), расписание, тексты, защита |
| Аккаунт | свои тексты |
| Чат | «не чаще чем раз в N минут» |
| Связка «этот аккаунт → этот чат» | свой текст и своё медиа именно в этот чат именно с этого аккаунта |
Практическая деталь, ради которой всё это и работает: пустое поле папки не затирает значение кабинета. Вы меняете в кампании два поля из тридцати — остальные двадцать восемь продолжают жить по общим умолчаниям. Это звучит как мелочь ровно до тех пор, пока у вас не появится двадцатая папка, в каждой из которых пришлось бы заново заполнять всё.
Текст: четыре ступени строгого приоритета
Когда приходит время отправить сообщение в конкретный чат конкретным аккаунтом, система идёт по списку сверху вниз и берёт первое, что найдёт.
- Текст для связки «аккаунт + чат». Высший приоритет. Здесь живут фразы вроде «ребят, я тут уже спрашивал про N — ответили, делюсь» — то, что имеет смысл только в этом чате и только от этого аккаунта.
- Тексты аккаунта. Не один текст, а список вариантов: на каждую отправку берётся случайный. Это уровень «легенды» — аккаунт говорит своим голосом во всех чатах.
- «Избранное» аккаунта. Сообщение, написанное прямо в Telegram, в кабинет его переносить не надо: удобно, когда текст с картинкой уже собран руками.
- Общий текст кампании. То, что вписали в поле рассылки.
Порядок именно такой, и в коде он оговорён отдельной строкой: «Избранное» никогда не перебивает личные тексты. Оговорка существует потому, что интуиция подсказывает обратное — человек кладёт свежий текст в «Избранное», ждёт, что пойдёт он, а идёт личный текст аккаунта, заданный неделю назад.
Что ложится сверху на выбранный текст
- Спинтакс
{привет|здорово|добрый день}— случайный вариант на каждую отправку, вложенность до трёх уровней. - Режим без пересечений — шаблон заранее нарезается так, чтобы разным аккаунтам достались разные варианты. Работает он только для общего текста кампании и намеренно не трогает личные тексты: личный текст вы писали руками, резать его не надо.
- Медиа — тоже двухуровнево: своё на связку «аккаунт + чат», иначе общее на кампанию.
- Имитация набора — перед отправкой аккаунт «печатает» полсекунды-две.
Одна незаметная вещь, которая спасает от позора: для личных текстов аккаунта и чата спинтакс раскрывается всегда, даже если общая галочка выключена. Иначе фигурные скобки уехали бы в чат буквально — и выглядело бы это как брак продукта, а не как выключенная настройка.
Пауз шесть, и они про разное
«Пауза между сообщениями» — на самом деле не одна настройка, а шесть независимых, и путать их дорого.
| Что регулирует | Умолчание |
|---|---|
| Между чатами у одного аккаунта | 30–60 секунд |
| Старт следующего аккаунта после предыдущего | 300 секунд |
| Отдых между кругами | 60–180 секунд |
| Не писать в тот же чат с того же аккаунта чаще чем | выключено |
| Индивидуально для конкретного чата: «не чаще чем» | выключено |
| Пауза профиля темпа (для модулей, которые его спрашивают) | 30–90 секунд — умолчание, изменить пока нельзя |
Все они — вилки «от–до», а не числа: сообщения, приходящие как по метроному, читаются в чате как поток от автомата, и разговор об них ломается. И ещё одна деталь, которую видно только по поведению: пауза считается от начала операции, а не после неё. Если обработка чата заняла сорок секунд, а пауза выпала тридцать — ждать никто не будет, темп держится по факту. Круги считаются так же, от начала круга: иначе долгий круг и отдых складывались бы, и график расползался бы день ото дня.
Расписание, которое усыпляет, а не выключает
Расписание рассылки задаётся на папку и на кабинет, и в нём три вещи: часовой пояс отдельным полем (а не «время сервера»), список окон вида 09:00–14:00 — их может быть несколько, и галочки по дням недели. Окно через полночь поддержано отдельно.
Ключевое отличие от «остановки по таймеру»: вне окна рассылка засыпает и просыпается сама. Задача не заканчивается и не требует перезапуска руками.
Окно проверяется в трёх местах: при старте задачи, перед каждым кругом и перед каждым следующим чатом внутри круга. Последняя проверка — самая важная и самая неочевидная: круг идёт около часа, и без неё рассылка регулярно вылезала бы за границу окна, то есть работала бы ночью.
Что ещё настраивается на уровне связки
- Галочки чатов — на пару «аккаунт + чат». Можно выключить чат у одного аккаунта и оставить у остальных: например, если в этом чате аккаунт уже примелькался.
- Служебные чаты вычитаются сами. Ваша собственная группа отчётов и мониторинга в цели не попадёт — реклама в свой же служебный чат не уедет.
- Порядок обхода чатов можно перемешивать, а можно оставить последовательным — тогда следующий круг продолжится с того чата, на котором остановились.
- Круги — конечным числом или бесконечно, с отдыхом между ними.
И защита, которую не надо включать: вторую рассылку на ту же папку создать нельзя — это запрещено на уровне базы, а не проверкой в интерфейсе. Двойной клик по кнопке «Запустить» физически не может породить две задачи, которые пойдут по одним и тем же чатам.
Зачем вам это знать, даже если вы не наш клиент
Глубина настройки — не список галочек, а ответ на вопрос, на каком объекте живёт значение. Кампания, аккаунт, чат или связка «аккаунт + чат» — это четыре разных ответа, и они дают четыре разных потолка того, что вы вообще можете сделать.
Поэтому при выборе любого инструмента спрашивайте не «есть ли настройка X», а «на каком уровне она задаётся и что перебивает». Софт, где всё живёт на уровне кампании, упрётся ровно в тот момент, когда у вас станет больше десяти чатов и больше трёх аккаунтов, — то есть тогда, когда вы наконец начнёте зарабатывать.