Repository navigation
rankings
Use this page when you run or follow a group or channel and want facts instead of a feeling: which messages attracted attention, who answers questions, which questions still wait, and whether newcomers stay. You will learn what to ask your AI agent, which command it runs, what the answer looks like and where the numbers can mislead.
Some words on this page:
-
Saved history is the copy of messages that
tgkeeps on this computer. Every report counts only this copy. If the relevant messages are missing, download the history first. - Observed means seen in saved history. An answer, a join or a reaction that was never downloaded is not counted, so a missing value is unknown, not zero.
- A counter is a number Telegram keeps on a message, such as views or reactions.
| Question | Command |
|---|---|
| Which messages got the most reactions | tg personal stats messages top |
| Who answers questions most | tg personal stats contacts top |
| Which questions wait for an answer | tg personal stats messages unanswered |
| How quickly one person replies | tg personal stats contacts responses |
| Whether newcomers got help | tg personal stats chats newcomers |
| Whether newcomers stay | tg personal stats chats retention |
| Which posts were viewed but not discussed | tg personal stats messages discussion |
| How fresh views and reactions are | tg personal stats messages counters show |
The requests, names and results below are fictional examples. Replace the chat name with yours. Tables show how an agent can present its answer; commands with --json return data for it.
Find the messages with the most recorded reactions.
Your request:
Show the three most-reacted-to messages in Hiking.
Command:
tg personal stats messages top --chat "Hiking" --measure reactions --limit 3 --jsonExample agent answer:
Message Reactions Packing list 18 Trip photos 11 New route 7
Your agent can open the original messages so you can check the context. Counters are cumulative totals, not reactions received only during a selected period.
Compare people by their observed answers to questions.
Your request:
Who answered the most questions in Hiking? Show three people.
Command:
tg personal stats contacts top --chat "Hiking" --measure answers --limit 3 --jsonExample agent answer:
Person Answers Alex Rivera 4 Lena 2 Sam 1
Answer counts help you find examples of participation; they do not prove a person’s helpfulness.
Find older questions without an observed direct answer.
Your request:
Which questions in Hiking have waited more than a day?
Command:
tg personal stats messages unanswered --chat "Hiking" --older-than 24h --jsonExample agent answer:
One question has no observed answer.
From Question Waiting Ira Who will bring the cooking pot? 2 days History is incomplete: an answer may be missing from the archive.
Questions are detected by a question mark outside links. A direct reply from another known person qualifies; an unrelated next message does not close the question.
See the number of answers and waiting times for a selected person.
Your request:
How quickly does Alex Rivera answer questions in Hiking? Show an example.
Command:
tg personal stats contacts responses --chat "Hiking" --answerer "Alex Rivera" --jsonExample agent answer:
Metric Result Observed answers 1 Median waiting time 2 days p90 waiting time 2 days Both values come from one answer, so the sample is small. I can open the question and its linked answer.
The median is the middle observed waiting time; p90 is the upper boundary for about 90% of answers. Selecting a person does not establish that they were an administrator in the past.
Check whether people who recently joined received answers to their questions.
Your request:
Did newcomers to Hiking get help during their first week?
Command:
tg personal stats chats newcomers "Hiking" --within 7d --jsonExample agent answer:
Newcomer Questions Answered Kate 2 2 Oleg 1 0 Oleg has no observed answer. One person’s joining date is unknown, so their first week was not calculated.
By default, the report selects joins from the last 30 days. First seeing someone in the archive does not establish their joining date.
Compare observed membership one day, one week and one month after joining.
Your request:
How many Hiking newcomers stayed after a day, a week and a month? Show gaps in the data.
Command:
tg personal stats chats retention "Hiking" --checkpoints 1d,7d,30d --within 7d --timezone UTC --jsonExample agent answer:
After joining Stayed among observable members Unknown Not due yet 1 day 1 of 1 — 100% 1 1 7 days 1 of 2 — 50% 0 1 30 days No observable denominator 2 1 The denominators differ, so these percentages are not a complete retention curve. No observed message does not prove that someone was silent.
This needs known joining dates and saved member lists. Absence from a partial list remains unknown. Saved member lists of groups you run help collect data for later reports.
Find viewed posts with little recorded discussion.
Your request:
Which posts in News received views but no discussion?
Command:
tg personal stats messages discussion --chat "News" --min-views 100 --max-replies 0 --jsonExample agent answer:
Post Stored views Observed replies New route 240 0 This is an absence of discussion in available history. Missing comments could change the conclusion.
Check when views and reactions were observed separately.
Your request:
Check the age of Hiking’s view and reaction counts without refreshing anything.
Command:
tg personal stats messages counters show --chat "Hiking" --counters views,reactions --max-age 24h --limit 20 --jsonExample agent answer:
Message field Value Observed Views 0 1 hour ago — fresh Reactions 0 3 days ago — stale Fields have independent freshness. A missing value is shown as unknown, not zero.
Before fetching new counters, ask for the exact messages and limits.
tg personal stats messages counters refresh --chat "Hiking" --counters views,reactions --max-messages 20 --sync-time 30s --dry-run --jsonPlan: at most 20 messages, up to 30 seconds. Views and reactions are supported. This is a preview: no connection or refresh has occurred.
A real refresh needs your request. It reads counters from Telegram and saves observations locally; it sends no messages, marks nothing read and requests no view increment. Comments can also be refreshed where Telegram supplies them.
When several people match, the agent shows candidates and asks you to choose. Failing to identify someone does not mean zero activity. Even an explicitly selected ID without observations remains unknown: JSON exposes identityKnown: false, status: unknown.
An empty report with incomplete history does not establish that there were no questions or answers. Ask the agent to open the source messages and show the available-history limits.
You can select a period, choose a measure or combined score, and save a selection for another report. Scoring formulas, exact evidence arguments and page limits live in the shared statistics specification and the command reference for statistics.
To verify a finding, ask the agent to open the question, answer or members behind that report row. Before the next report, check archive coverage.