Сборка chatmember
Обновления о составе участников
Три верхнеуровневых update: chat_member, my_chat_member и chat_join_request.
- +
my_chat_member— изменение членства самого бота: добавили в чат, назначили администратором, кикнули. Приходит тому боту, чей статус изменился. - +
chat_member— изменение членства любого другого участника. Приходит каждому боту-администратору чата. Именно на нём строится журнал входов, выходов, банов, мутов и снятий ограничений. - +
chat_join_request— заявка на вступление в чат с включённым одобрением. Приходит ботам-администраторам; отвечать на неё уже умеют approveChatJoinRequest и declineChatJoinRequest.
Каждый update несёт объект ChatMemberUpdated (chat, from, date, old_chat_member, new_chat_member) или ChatJoinRequest (chat, from, user_chat_id, date). Внутри — полный ChatMember со статусом и правами can_*.
old_chat_member восстанавливается по типу перехода: агрегат хранит только текущее состояние, поэтому прежний статус выводится из события (вступление — из left, повышение — из member). new_chat_member всегда точен.
Чтобы получать эти типы, перечислите их в allowed_updates у getUpdates. Продолжает линию служебных полей new_chat_members / left_chat_member из сборкой moderator.
Уточнение от 27 августа: до ботов эти три типа тогда так и не дошли. Сервер формировал их правильно, но очередь обновлений их не сохраняла и отдавала пустыми — сборка update-store-all-kinds. Читаемыми они стали только после сборки chatmember-required-fields.