Telegram

Рейтинги сохранённых сообщений и авторов

Сравнивайте сохранённые сообщения и людей в Telegram: активность, показатели разговоров, охват и доказательства каждого результата.

Статистика использует stats → resource → view. Исполняемая команда — tg. Команды читают локальное хранилище и по умолчанию не подключаются. Сначала загрузите нужную историю; рейтинг описывает имеющиеся данные, а не всю активность в мессенджере.

tg stats messages top 'chat:room date:[2026-10-01 TO 2026-10-08}' --measure reactions --limit 10 --json
tg stats contacts top 'chat:room date:[2026-10-01 TO 2026-10-08}' --score helpful --min-messages 3 --json
tg stats contacts top --weights '{"messages":0.4,"active-days":0.6}' --timezone Europe/Madrid --json

Метрики и оценки

ОбъектМетрикиПо умолчанию
Сообщенияviews, reactions, forwards, comments, replies, thread-sizereactions
Авторы-людиmessages, words, reactions, replies, answers, answer-time, threads, active-daysmessages

answer-time сортирует по возрастанию медианного времени в миллисекундах; остальные метрики — по убыванию. --message-kind posts или comments выбирает подтверждённые типы перед агрегацией. Неизвестные старые связи отмечаются, а не угадываются. Связанные комментарии канала могут находиться в сохранённой группе обсуждения; ответ перечисляет дополнительно включённые группы обсуждения и их покрытие.

--score helpful задаёт веса: ответы 0,5, ответы других 0,25, реакции 0,25. --score active задаёт веса: активные дни 0,6, сообщения 0,4. Обе оценки применяются к авторам. --score engaging даёт одинаковый вес реакциям и ответам других; оценки авторов используют показатели на сообщение и требуют пяти выбранных сообщений, если --min-messages не меняет порог. --weights заменяет все веса набора. Имена должны быть поддерживаемыми компонентами для объекта, веса — конечными и неотрицательными, хотя бы один — положительным. --measure несовместим с оценками.

Версия оценки 1 нормализует каждый компонент по максимальному значению среди всех подходящих строк до применения --limit: 100 × sum(weight × value / maximum) / sum(weight). Нулевой максимум даёт нулевой вклад. Отсутствующие компоненты с положительным весом исключают строку из оценки. Нулевой вес игнорирует компонент. Ответ включает максимумы, значения компонентов, их вклады и число исключений.

Область и качество данных

Запросы используют строгий Lucene с --chat, --source, --exact и --timezone, как поиск сообщений. Страница рейтинга содержит 1–100 строк. Условия по тексту и автору выбирают ранжируемые сообщения; контекст ответов использует разрешённые сохранённые сообщения того же периода без этих фильтров текста и автора. Метрики графа отклоняют неоднозначные ветви дат: используйте общий положительный диапазон дат.

Счётчики просмотров, реакций, пересылок и комментариев — накопительные сохранённые снимки. Время наблюдения и актуальность неизвестны; фильтр дат выбирает сообщения, а не реакции, полученные за этот период. Неизвестные счётчики отличаются от нулевых. Суммы реакций авторов могут быть частичными с числом сообщений с известными и неизвестными данными. --sync-first проходит проверки и ограничен; он загружает новые сообщения, но не обновляет старые счётчики.

Ответы определяются эвристически: вопрос содержит ? после удаления URL, а его первый прямой ответ от другого известного автора-человека засчитывается как ответ. Ответы самому себе и отправители-каналы не подходят. Слова в версии 1 — последовательности букв и цифр после удаления URL. Активные дни используют выбранный часовой пояс. Покрытие и качество графа показывают, когда имеющаяся история неполна. Ни одна метрика не доказывает полезность.

Проверить доказательства

Каждая строка возвращает drilldown.selection и точные drilldown.evidence.arguments для команды доказательств. Передайте эту выборку как JSON вместе с выданным идентификатором сообщения или ID человека в мессенджере:

tg stats messages evidence msg:telegram/fixture/room/101 --selection "$selection" --component replies --limit 20 --json
tg stats contacts evidence 42 --selection "$selection" --component answers --limit 20 --json

Ответы включают исходное сообщение; отвеченные вопросы — вопрос и засчитанный ответ. Метрики снимков показывают измеренные сообщения, а не списки читателей или поставивших реакции. Доказательства messages автора показывают все выбранные сообщения даже при ранжировании по оценке. Доказательства активных дней перечисляют исходные сообщения; их вклады по одному на сообщение не суммируются в уникальные дни.

Доказательства включают total, included, hasMore и nextCursor. Продолжайте с теми же аргументами и --cursor. Изменение строки, участвующей в расчёте, делает курсор недействительным; начните снова без него. Каждая страница сохраняет целые строки в пределах 64 KiB для items. Одна слишком большая строка направляет к messages show. Расчёт отпечатка ограничен 50 000 строками и 8 MiB сохранённых входных данных; сузьте чаты или даты, если запрос превышает лимит. JSON выборки ограничен 64 KiB.

Сохранить рейтинг с определёнными объектами

tg searches create weekly --selection "$selection"
tg stats contacts top --saved weekly --limit 20 --json

Используйте соответствующий объект — сообщения или контакты. Определённые ID и границы дат остаются закреплёнными; дополнительные слова запроса сужают сохранённую область. Указанные параметры рейтинга заменяют сохранённые. Закреплённые выборки читают имеющиеся данные и отклоняют --sync-first; для обновления запустите обычный запрос. История записывает параметры, а не содержимое результатов. Доказательства никогда не записываются в историю поиска.

MCP обнаруживает и вызывает те же пути через существующие три инструмента. Выборка там представлена структурированным объектом. Публичный интерфейс и ссылки на стандарты см. в контракте команд и стандарте CLI.