Поиск сообщений
Документация: v0.24.0
tg messages search ищет только в общем локальном архиве, без сети и отметок о прочтении.
Начните с одного слова, которое помните из сообщения:
tg messages search "договор"Команда ищет среди сообщений, уже сохранённых на компьютере. Если нужного периода нет, сначала загрузите историю выбранного чата по инструкции архива. По умолчанию ищется точное слово: Lucene — язык для добавления фраз, фильтров и условий. Для опечаток и неточного поиска выберите --language legacy. Ниже — примеры фильтров; поля и regex нужны только для более сложных запросов.
Быстрый старт
tg messages search 'invoice AND (kind:group OR kind:private)' --json
tg messages search 'from:"Alice Synthetic" date:[2026-01-01 TO 2026-02-01}' --timezone Europe/Madrid --json
tg messages search 'preset:secret kind:saved' --json
tg messages search 'text:/pass(port)?/' --json
tg messages search 'chat:"Work" AND body:/.*invoice.*/' --json
tg messages search 'has:file' --jsonЗамените имена в примерах своими. Слова и фразы ищутся точно, без автоматического исправления
опечаток или поиска по части слова. alpha OR beta gamma означает (alpha OR beta) AND gamma;
alpha OR beta AND gamma означает alpha OR (beta AND gamma). Для ясности используйте скобки.
Поля и операторы
Поддерживаются text/body/from/chat/date/kind/has/topic/in/preset, логические группы и группы полей, включающие и исключающие границы диапазонов, подстановочные знаки и регулярные выражения Lucene с ограничениями. topic требует одного обязательного чата. kind:bot выбирает собеседника-бота; in:bots выбирает аккаунты Bot API. filename/mime/size/tag не поддерживаются, как и fuzzy/proximity/boost/interval. Неизвестные поля вызывают ошибку, а не превращаются в буквальный текст запроса.
Даты и регулярные выражения
--timezone выбирает часовой пояс IANA; дата без времени означает календарный день.
Включающая верхняя граница охватывает весь день, исключающая — не включает его; день при переводе
часов может длиться не 24 часа. Точные метки времени заключайте в кавычки, указывая секунды и смещение.
Регулярное выражение text ищет целое нормализованное слово; body — весь исходный текст с учётом
регистра. Для части текста используйте .*. Это подмножество Lucene, без проверок окружения,
обратных ссылок и флагов JavaScript. Превышение лимита строк, байтов, состояний, операций или времени
вызывает явную ошибку; сузьте область поиска.
Архив и ответ для программ
Пустой результат не доказывает, что сообщение никогда не отправляли. JSON сообщает версию запроса,
полноту и охват, аккаунты и чат, а также готовность индекса даже без совпадений. lastSyncedAt сейчас
равен null; перечень профилей не считается полным. JSONL содержит только найденные элементы;
для охвата используйте --json. Незавершённый словарный индекс требует tg store migrate;
историю загружает tg store fetch. Поисковые пресеты лишь находят возможные совпадения,
не проверяя действительность ключей или паролей.
Переход с прежнего поиска
tg messages search 'from:alice after:7d invoice -draft' --language legacy --json
tg messages search --regex 'invoice\s+\d+' --jsonLegacy сохраняет прежние фильтры и неточный поиск. --regex — отдельный режим JavaScript iu для всего текста, с изолированным рабочим потоком и лимитами; --regex --language lucene запрещён. Программный контракт сохранённого запроса включает язык и версию; общий предварительный просмотр миграции не сохраняет результаты неточного поиска.
Полный справочник
Основное руководство по языку содержит таблицы операторов и полей, Unicode и экранирование, пресеты, лимиты, ошибки и десять выполняемых примеров. Техническая спецификация описывает зафиксированную грамматику, AST и схему, эталонные примеры и компилятор. Архив объясняет загрузку и полноту; команды перечисляют текущие параметры.