Существует ряд действий, которые, как я ожидал (и хотел бы), должны генерировать события user вебхука, но этого не происходит. Прежде чем я начну создавать отчёты об ошибках (или отправлять pull-запросы), я хотел бы лучше понять причины этого.
| действие | ожидаемое событие user |
|---|---|
| аккаунт деактивирован администратором | user_logged_out |
| аккаунт анонимизирован администратором | user_logged_out |
| пользователь вышел сам через кнопку «Выйти из всех» | user_logged_out |
| — | — |
| добавлен в группу | user_updated |
| удалён из группы | user_updated |
| уровень доверия повышен/понижен | user_updated |
| статус модератора предоставлен/отозван | user_updated |
| статус администратора предоставлен/отозван | user_updated |
| снято приостановление | user_updated |
| наложен/снят запрет на публикации | user_updated |
- Первые три действия приводят к глобальному выходу пользователя со всех сессий (аннулирование всех сессий), но, в отличие от других подобных действий (например, выход пользователя, инициированный администратором), эти три не генерируют событие user/user_logged_out (или какое-либо другое событие).
- Добавление или удаление из группы генерирует событие group_user, но не событие user. События group_user сами по себе не очень полезны, так как содержат только внутренние числовые идентификаторы групп и пользователей. С другой стороны, запись
"user", отправляемая при событии user, содержит действительно полезную информацию обо всех группах, к которым принадлежит пользователь, включая названия групп и детали отношений пользователя с этими группами. - При повышении уровня доверия пользователя генерируется событие user_promoted, которое содержит данные, очень похожие, но не идентичные данным события user. При понижении уровня доверия аналогичное событие не генерируется вообще.
- При изменении статуса модератора или администратора события user не генерируются. (Косвенные доказательства действий предоставления статуса для конкретного пользователя можно найти в событиях group_user; прямых доказательств действий отзыва статуса для конкретного пользователя нет.)
- При приостановлении аккаунта пользователя генерируется событие user/user_logged_out (с полями
"suspended_reason"и"suspended_till", указывающими причину и срок приостановления), но события нет при снятии приостановления. При наложении или снятии запрета на публикации события вообще не генерируются.
Являются ли эти упущения преднамеренными?
Мой общий подход таков: «Если данные в записи "user" события user изменились, то должно быть сгенерировано событие user». Это, вероятно, охватывает больше ситуаций, чем те, которые сейчас вызывают события. Однако те несколько случаев, которые я перечислил в таблице выше, являются для меня наиболее важными на данный момент, поскольку все они связаны с изменениями в статусе авторизации пользователя.