Telegram

Поиск сообщений

Документация: 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+' --json

Legacy сохраняет прежние фильтры и неточный поиск. --regex — отдельный режим JavaScript iu для всего текста, с изолированным рабочим потоком и лимитами; --regex --language lucene запрещён. Программный контракт сохранённого запроса включает язык и версию; общий предварительный просмотр миграции не сохраняет результаты неточного поиска.

Полный справочник

Основное руководство по языку содержит таблицы операторов и полей, Unicode и экранирование, пресеты, лимиты, ошибки и десять выполняемых примеров. Техническая спецификация описывает зафиксированную грамматику, AST и схему, эталонные примеры и компилятор. Архив объясняет загрузку и полноту; команды перечисляют текущие параметры.

На этой странице