Оновлення учасника чату
Оновлення учасника чату — це подія Bot API, яка повідомляє про зміну статусу людини в чаті: приєднання, вихід, бан, підвищення до адміністратора. Воно приходить як обʼєкт ChatMemberUpdated зі старим і новим статусом учасника, часом зміни та, для приєднання за запрошувальним посиланням, самим посиланням. Telegram не надсилає його за замовчуванням, тож бот має запросити тип оновлення chat_member і бути адміністратором чату.
Що містить оновлення
Обʼєкт ChatMemberUpdated містить чат, користувача, який виконав дію, дату зміни в Unix-часі, попередній запис учасника та новий запис учасника. Два необовʼязкові поля описують, як людина прийшла: invite_link називає ChatInviteLink, яким вона скористалась, а via_join_request має значення true, коли адміністратор схвалив прямий запит на вступ. Запис учасника має один із шести типів: власник, адміністратор, учасник, обмежений, той, що вийшов, і заблокований. Приєднання — це перехід зі статусу «вийшов» або від відсутності запису до статусу «учасник». Порівняння старого й нового статусу дозволяє відрізнити приєднання від підвищення чи виключення.
Воно вимкнене, доки його не запросити
Коли бот реєструє вебхук або опитує getUpdates із порожнім списком allowed_updates, Telegram надсилає всі типи оновлень, крім chat_member, message_reaction і message_reaction_count. Щоб отримувати chat_member, бот має явно вказати chat_member в allowed_updates і бути адміністратором чату. Бот, який зареєстрував вебхук до того, як запросив цей тип, нічого не отримує й не бачить помилки, тож ознака відсутньої підписки — нульова кількість приєднань, схожа на тихий тиждень. Повʼязане оновлення my_chat_member повідомляє про зміну статусу самого бота, наприклад коли його додали адміністратором або видалили.
Як це використовує Autogram
Autogram підписує свій вебхук Telegram на оновлення message, my_chat_member і chat_member. Він читає chat_member, щоб відносити приєднання до іменованих запрошувальних посилань. Він ігнорує кожне оновлення без invite_link — це приєднання через публічний username каналу, виходи, виключення та підвищення — і відкидає оновлення для чатів, які жоден користувач Autogram не підключив. Людину він вважає присутньою, коли новий статус — member, administrator або creator. Час приєднання він бере з поля date оновлення, а не з моменту отримання запиту, тож оновлення, яке Telegram повторно доставив після збою, все одно показує, коли людина справді приєдналась.
Обмеження, які варто врахувати
Оновлення повідомляє про зміни з моменту підписки й не несе історії. Telegram не відтворює приєднання, що сталися до підписки, тож звіт про джерела завжди починається з дати підписки. Вебхук має швидко відповідати на кожне оновлення успішним HTTP-статусом, бо Telegram повторює невдалу доставку, а повільний обробник перетворює одне приєднання на кілька запитів. Обробляйте кожне оновлення ідемпотентно, адже повторно доставлене оновлення виглядає так само, як перше.
Пов’язані терміни
Пов’язані функції
Застосуйте ці поняття на практиці
Автоматизуйте публікацію в Telegram за допомогою ШІ-контенту, оцінки якості та розумного планування.