Chat member update
A chat member update is the Bot API event that reports a change in the status of a person in a chat: a join, a leave, a ban, a promotion to administrator. It arrives as a ChatMemberUpdated object with the old and new member status, the time of the change and, for a join through an invite link, the link that was used. Telegram does not send it by default, so a bot must ask for the chat_member update type and must be an administrator of the chat.
What the update contains
The ChatMemberUpdated object holds the chat, the user who performed the action, the date of the change in Unix time, the previous member record and the new member record. Two optional fields describe how a person arrived: invite_link names the ChatInviteLink they used, and via_join_request is true when an administrator approved a direct join request. A member record is one of six types: owner, administrator, member, restricted, left and banned. A join is a change from left, or from no record, to member. Comparing the old and the new status is how a consumer tells a join from a promotion or a kick.
It is off unless you ask for it
When a bot registers a webhook or polls getUpdates with an empty allowed_updates list, Telegram sends every update type except chat_member, message_reaction and message_reaction_count. To receive chat_member updates the bot must list chat_member explicitly in allowed_updates and must be an administrator in the chat. A bot that registered its webhook before it asked for the type receives nothing and raises no error, so the symptom of a missing subscription is a join count of zero that looks like a quiet week. The related my_chat_member update reports changes to the status of the bot itself, for example when it is added as an administrator or removed.
How Autogram uses it
Autogram subscribes its Telegram webhook to message, my_chat_member and chat_member updates. It reads chat_member to attribute joins to named invite links. It ignores every update that has no invite_link, which covers joins through the public channel username, leaves, kicks and promotions, and it drops updates for chats that no Autogram user has connected. It counts a person as present when the new status is member, administrator or creator. It stores the join time from the date field of the update instead of the time it received the request, so an update that Telegram redelivers after an outage still reports when the person really joined.
Limits to plan around
The update tells you about changes from the moment you subscribe and carries no history. Telegram does not replay joins that happened before the subscription, so a source report always starts on the subscription date. The webhook should answer every update with a successful HTTP status quickly, because Telegram retries a failed delivery and a slow handler turns one join into several requests. Handle each update idempotently, since a redelivered update looks the same as the first one.
Related terms
Related features
Put these concepts to work
Automate your Telegram publishing with AI content, quality scoring, and smart scheduling.