Пять уровней и одна связка: когда одного текста на все чаты мало

Пока у вас три чата и один аккаунт, настройка — это поле для текста и кнопка «старт». Дальше начинается настоящая работа: в этот чат нужен другой тон, в тот нельзя чаще раза в сутки, у этого аккаунта своя легенда, а вон в тех двух вас уже знают. Разбираем, как устроена настройка, когда общих полей перестаёт хватать.

Есть надёжный признак, по которому софт для работы с чатами делится надвое. Спросите: «могу я задать разный текст для разных чатов?» Ответ «да, конечно» ничего не значит — уточните: «а разный текст для одного и того же чата с разных аккаунтов?»

Настройка — не список полей, а пять уровней

Обычная модель настроек плоская: есть кампания, у неё параметры. Наша — послойная, и каждый следующий слой перебивает предыдущий.

УровеньЧто здесь задают
Кабинетумолчания на всё сразу
Папка (она же кампания)свои паузы, круги (круг — один проход аккаунта по всему своему списку чатов), расписание, тексты, защита
Аккаунтсвои тексты
Чат«не чаще чем раз в N минут»
Связка «этот аккаунт → этот чат»свой текст и своё медиа именно в этот чат именно с этого аккаунта

Практическая деталь, ради которой всё это и работает: пустое поле папки не затирает значение кабинета. Вы меняете в кампании два поля из тридцати — остальные двадцать восемь продолжают жить по общим умолчаниям. Это звучит как мелочь ровно до тех пор, пока у вас не появится двадцатая папка, в каждой из которых пришлось бы заново заполнять всё.

Текст: четыре ступени строгого приоритета

Когда приходит время отправить сообщение в конкретный чат конкретным аккаунтом, система идёт по списку сверху вниз и берёт первое, что найдёт.

  1. Текст для связки «аккаунт + чат». Высший приоритет. Здесь живут фразы вроде «ребят, я тут уже спрашивал про N — ответили, делюсь» — то, что имеет смысл только в этом чате и только от этого аккаунта.
  2. Тексты аккаунта. Не один текст, а список вариантов: на каждую отправку берётся случайный. Это уровень «легенды» — аккаунт говорит своим голосом во всех чатах.
  3. «Избранное» аккаунта. Сообщение, написанное прямо в Telegram, в кабинет его переносить не надо: удобно, когда текст с картинкой уже собран руками.
  4. Общий текст кампании. То, что вписали в поле рассылки.

Порядок именно такой, и в коде он оговорён отдельной строкой: «Избранное» никогда не перебивает личные тексты. Оговорка существует потому, что интуиция подсказывает обратное — человек кладёт свежий текст в «Избранное», ждёт, что пойдёт он, а идёт личный текст аккаунта, заданный неделю назад.

Что ложится сверху на выбранный текст

  • Спинтакс {привет|здорово|добрый день} — случайный вариант на каждую отправку, вложенность до трёх уровней.
  • Режим без пересечений — шаблон заранее нарезается так, чтобы разным аккаунтам достались разные варианты. Работает он только для общего текста кампании и намеренно не трогает личные тексты: личный текст вы писали руками, резать его не надо.
  • Медиа — тоже двухуровнево: своё на связку «аккаунт + чат», иначе общее на кампанию.
  • Имитация набора — перед отправкой аккаунт «печатает» полсекунды-две.

Одна незаметная вещь, которая спасает от позора: для личных текстов аккаунта и чата спинтакс раскрывается всегда, даже если общая галочка выключена. Иначе фигурные скобки уехали бы в чат буквально — и выглядело бы это как брак продукта, а не как выключенная настройка.

Пауз шесть, и они про разное

«Пауза между сообщениями» — на самом деле не одна настройка, а шесть независимых, и путать их дорого.

Что регулируетУмолчание
Между чатами у одного аккаунта30–60 секунд
Старт следующего аккаунта после предыдущего300 секунд
Отдых между кругами60–180 секунд
Не писать в тот же чат с того же аккаунта чаще чемвыключено
Индивидуально для конкретного чата: «не чаще чем»выключено
Пауза профиля темпа (для модулей, которые его спрашивают)30–90 секунд — умолчание, изменить пока нельзя

Все они — вилки «от–до», а не числа: сообщения, приходящие как по метроному, читаются в чате как поток от автомата, и разговор об них ломается. И ещё одна деталь, которую видно только по поведению: пауза считается от начала операции, а не после неё. Если обработка чата заняла сорок секунд, а пауза выпала тридцать — ждать никто не будет, темп держится по факту. Круги считаются так же, от начала круга: иначе долгий круг и отдых складывались бы, и график расползался бы день ото дня.

Расписание, которое усыпляет, а не выключает

Расписание рассылки задаётся на папку и на кабинет, и в нём три вещи: часовой пояс отдельным полем (а не «время сервера»), список окон вида 09:00–14:00 — их может быть несколько, и галочки по дням недели. Окно через полночь поддержано отдельно.

Ключевое отличие от «остановки по таймеру»: вне окна рассылка засыпает и просыпается сама. Задача не заканчивается и не требует перезапуска руками.

Окно проверяется в трёх местах: при старте задачи, перед каждым кругом и перед каждым следующим чатом внутри круга. Последняя проверка — самая важная и самая неочевидная: круг идёт около часа, и без неё рассылка регулярно вылезала бы за границу окна, то есть работала бы ночью.

Что ещё настраивается на уровне связки

  • Галочки чатов — на пару «аккаунт + чат». Можно выключить чат у одного аккаунта и оставить у остальных: например, если в этом чате аккаунт уже примелькался.
  • Служебные чаты вычитаются сами. Ваша собственная группа отчётов и мониторинга в цели не попадёт — реклама в свой же служебный чат не уедет.
  • Порядок обхода чатов можно перемешивать, а можно оставить последовательным — тогда следующий круг продолжится с того чата, на котором остановились.
  • Круги — конечным числом или бесконечно, с отдыхом между ними.

И защита, которую не надо включать: вторую рассылку на ту же папку создать нельзя — это запрещено на уровне базы, а не проверкой в интерфейсе. Двойной клик по кнопке «Запустить» физически не может породить две задачи, которые пойдут по одним и тем же чатам.

Зачем вам это знать, даже если вы не наш клиент

Глубина настройки — не список галочек, а ответ на вопрос, на каком объекте живёт значение. Кампания, аккаунт, чат или связка «аккаунт + чат» — это четыре разных ответа, и они дают четыре разных потолка того, что вы вообще можете сделать.

Поэтому при выборе любого инструмента спрашивайте не «есть ли настройка X», а «на каком уровне она задаётся и что перебивает». Софт, где всё живёт на уровне кампании, упрётся ровно в тот момент, когда у вас станет больше десяти чатов и больше трёх аккаунтов, — то есть тогда, когда вы наконец начнёте зарабатывать.

Читайте дальше

разбор

Тысяча отправок за круг

практика

Машина ровная, человек рваный

Откуда факты. Уровни настроек и правило «пустое поле не затирает значение выше», четырёхступенчатый приоритет текста, поведение спинтакса для личных текстов, шесть разных пауз с их умолчаниями, три точки проверки расписания и запрет второй рассылки на папку средствами базы — всё это поведение работающего кода. Границы, включая отсутствие суточного потолка на аккаунт и невозможность задать лимит отдельного чата, названы блоком выше.

Настройка на связку «аккаунт + чат»

Самый частный уровень настройки — не чат и не аккаунт, а их пара. На нём живут текст, медиа и включённость чата.