tgs search messages#

Поиск сообщений в одном или нескольких чатах, каналах или группах.

Использование#

tgs search messages [query] [flags]

Аргумент query обязателен и задает текст для поиска.

Флаги#

ФлагСокр.ТипПо умолчаниюОписание
--chat-cstring[]Чат для поиска (username, телефон, ID; можно указывать несколько раз или через запятую). Обязателен, если не задан --folder.
--folderstring""Искать во всех чатах этой папки (id или имя); пиры папки суммируются с --chat
--from-fstringФильтр по отправителю (username, телефон или ID)
--filterstringФильтр по типу сообщения (см. допустимые значения)
--afterstringТолько сообщения после даты (YYYY-MM-DD или unix timestamp)
--beforestringТолько сообщения до даты (YYYY-MM-DD или unix timestamp)
--topicint0ID темы форума
--limit-lint50Максимум сообщений в ответе (1-100)
--cursorstringКурсор пагинации из предыдущего ответа
--max-waitint60Максимум секунд ожидания при FLOOD_WAIT
--no-cacheboolfalseОтключить кеш разрешения пиров
--include-commentsboolfalseТакже искать в дискуссионной группе каждого канала
--profile-pstringИмя профиля аккаунта

Порядок определения профиля, если --profile не указан: переменная TGS_PROFILE -> файл .tgs.yaml -> "default".

Допустимые значения фильтров#

photo, video, photo-video, document, url, gif, voice, music, round-video, geo, contact, pinned, mention, phone-call, chat-photo.

Примеры#

Поиск по ключевому слову в канале:

tgs search messages "release notes" -c @golang

Поиск в нескольких чатах:

tgs search messages "deployment" -c @devops_team -c @infrastructure

Фильтр по отправителю и типу сообщения:

tgs search messages "config" -c @mygroup --from @alice --filter document

Поиск в диапазоне дат:

tgs search messages "outage" -c @incidents --after 2025-01-01 --before 2025-06-01

Поиск по всем чатам в папке:

tgs search messages "announcement" --folder Work

Пагинация результатов:

tgs search messages "bug" -c @dev -l 10 --cursor "eyJvIjo1MCwiZCI6MH0"

Вывод#

Возвращает JSON с массивом найденных сообщений, полем total и опциональным cursor для пагинации.

JSON (по умолчанию):

{
  "messages": [
    {
      "id": 520,
      "chat": {"id": -1001006503122, "type": "channel", "title": "Pavel Durov"},
      "date": "2026-05-23T13:26:07Z",
      "text": "WhatsApp encryption is a giant fraud...",
      "media": {"type": "webpage"},
      "views": 1128733,
      "forwards": 10748,
      "replies": 540,
      "reactions": [
        {"emoji": "👍", "count": 8412},
        {"emoji": "🔥", "count": 2103},
        {"emoji": "❤", "count": 991}
      ]
    }
  ],
  "total": 285,
  "cursor": "eyJvIjo1MjAsImQiOjB9"
}

Текст (--output text):

[2026-05-23 13:26:07] Pavel Durov: WhatsApp encryption is a giant fraud... [👁 1128733 ↻ 10748 💬 540 👍 8412 🔥 2103 ❤ 991]
[2026-05-23 14:02:11] Go Talks | @rob: generics landed in 1.18 [💬 4]

Каждая строка имеет вид [дата] чат: текст для постов в каналах или [дата] чат | автор: текст, когда у сообщения есть отдельный отправитель (группы, супергруппы). Счётчики реакций и просмотров добавляются в квадратных скобках, если присутствуют.

Поля сообщения#

ПолеТипОписание
idintID сообщения внутри чата
chatobject{id, type, title?, username?}id в форме Bot API (отрицательный для channel/supergroup/group, положительный для private), поэтому его можно сразу передать в --chat; type это channel, supergroup, group или private
fromobjectОтправитель (отсутствует для постов канала, присутствует для групп и комментариев)
datestringUTC-таймштамп в формате RFC3339
textstringТекст сообщения
mediaobjectТип и метаданные вложения; отсутствует для текстовых сообщений
reply_to_msg_idintID сообщения, на которое отвечают; в discussion-группах указывает на forwarded-пост канала
topic_idintID темы форума (если применимо)
views, forwards, repliesintСчётчики активности (для постов канала)
reactionsarrayМассив {emoji, count}; кастомные эмодзи — как custom:<doc_id>, платные —
cursorstringКурсор пагинации; отсутствует, если результатов больше нет

Смотрите также#