Автоответы
Настройте правила автоответов для Telegram, проверьте их без отправки и управляйте ответами только указанным тестовым аккаунтам.
tg serve может отвечать на входящие сообщения по вашим правилам. Два условия не дают ему писать людям, которым вы не собирались отвечать:
- Отвечает только тестовым аккаунтам. Ответ уходит только отправителю из
testersв файле правил. В новом файлеtestersпуст, поэтому никто не получит ответ, пока вы не добавите свой тестовый аккаунт. - Отправка выключена, пока вы её не включите.
permissions.replies.sendдолжен бытьallow.askозначает отказ: у фонового сервера некого спросить.
Полные списки параметров — в commands.md.
Создать и включить правило
tg replies add away
tg replies edit away --template 'Thanks, {{ sender.firstName | default: "there" }}! I will answer in the morning.'
tg replies edit away --outside 09:00-19:00 --days mon-fri --timezone Europe/Madrid
tg replies edit away --per-chat 1/12h --per-person 1/1dadd создаёт выключенное правило со всеми явно записанными настройками. Правила хранятся в <profile>.replies.json, в той же папке, что configFile из вывода tg config show --json. Добавьте ID своего тестового аккаунта в testers:
{ "testers": [{ "id": "1000001" }], "rules": [ … ] }ID правил состоят из строчных букв, цифр и -; каждый уникален. Правило, отправляющее ответ, нельзя включить с пустым шаблоном.
Затем посмотрите, что правило ответило бы, включите его и запустите сервер:
tg replies test --since-time 7d
tg replies on away
tg config set permissions.replies.send allow
tg servereplies test читает только сообщения, уже сохранённые в локальном хранилище. Ничего не отправляет, не меняет и никогда не подключается. tg replies off away выключает одно правило.
Условия и аудитория
replies edit меняет только указанные поля. Список через запятую заменяет весь список; пустая строка очищает его.
| Что | Параметры |
|---|---|
| Действие | --do reply,task — ответ, задача или оба |
| Чаты | --kinds dialog,group, --chats, --not-chats |
| Условия | --words, --question / --no-question, --mentions-me / --no-mentions-me |
| Отправители | --people, --not-people, --contacts-only / --no-contacts-only |
| Ответ | --template, --as-reply / --no-as-reply |
| Лимиты | --per-chat, --per-person, например 1/12h |
| Рабочее время | --outside, --days, --timezone, --no-hours |
При первой настройке рабочего времени укажите вместе интервал, дни и часовой пояс; затем можно менять по одному. Ошибочное изменение не перезаписывает файл; остальные правила, testers и записи об ответах сохраняются.
tg replies audience показывает, кому может отвечать весь файл правил. --reply all разрешает всех; --reply listed — только разрешённые списки. --allow-people, --allow-chats, --deny-people и --deny-chats заменяют эти списки; запрет важнее разрешения. Поверх аудитории всё равно действует testers. Действие task открывает задачу на этом компьютере и не ограничивается аудиторией.
Шаблоны и модель
В шаблоне можно использовать sender.firstName, sender.name, chat.title, chat.kind и now (в часовом поясе правила или UTC, если рабочее время не задано), с фильтрами вроде {{ now | date: "%H:%M" }}. Текст входящего сообщения не является переменной шаблона. Неизвестные переменные и фильтры отклоняются.
Модель может написать только блок ai; всё вне него — ваш текст:
Thanks, {{ sender.firstName | default: "there" }}!
{% ai %}Briefly confirm you got the message; I will answer tomorrow.{% else %}I will answer tomorrow.{% endai %}Содержимое блока — инструкция модели. Входящий текст передаётся модели отдельно, как данные. Если модель не настроена, нет согласия или вызов не удался, отправляется текст else; без else сообщение остаётся без ответа, а причина записывается.
Выберите модель через models.replies.provider (openai или anthropic), models.replies.model и, для своего сервера, models.replies.baseUrl; models.default заполняет незаданные значения. Храните ключ через tg models text key set.
Для модели нужно отдельное согласие, независимо от права на отправку:
tg replies consents show
tg replies consents grant
tg replies consents revoke
tg replies consents deny -1002000002
tg replies consents allow -1002000002grant разрешает передавать данные входящих сообщений выбранному провайдеру для всего профиля. deny запрещает передавать модели сообщения одного чата; allow снимает этот запрет, но не выдаёт согласия. Для нового провайдера или адреса endpoint нужно новое согласие. tg replies test --ai отправляет сохранённые сообщения модели, чтобы вы могли посмотреть её текст; в Telegram по-прежнему ничего не отправляется.
На что правило никогда не отвечает
- Ваши сообщения, каналы, боты и сообщения, отправленные от имени чата.
- Отредактированное сообщение, уже обработанное сообщение и всё, что пришло до запуска
serve. - В группе — сообщение, которое не упоминает вас и не отвечает вам, если правило не указывает эту группу в
chats.
Лимиты perChat и perPerson обязательны для каждого правила, поэтому два автоответчика, отвечающих друг другу, остановятся при первом достигнутом лимите.
Остановить и проверить
tg replies pause
tg replies resume
tg replies status
tg sends listpause останавливает все правила сразу, включая работающий serve, без перезапуска; resume отменяет паузу. status показывает, разрешена ли отправка, какие правила включены и кому могут отвечать. sends list показывает каждый ответ с отправившим его правилом.