Зміна статусу користувача в чаті#

Використання#

Керуйте подіями, які залишають користувачів або приєднуються

from aiogram.filters import IS_MEMBER, IS_NOT_MEMBER

@router.chat_member(ChatMemberUpdatedFilter(IS_MEMBER >> IS_NOT_MEMBER))
async def on_user_leave(event: ChatMemberUpdated): ...

@router.chat_member(ChatMemberUpdatedFilter(IS_NOT_MEMBER >> IS_MEMBER))
async def on_user_join(event: ChatMemberUpdated): ...

Або створіть власні умови, використовуючи попередньо визначений набір статусів і переходів.

Explanation#

class aiogram.filters.chat_member_updated.ChatMemberUpdatedFilter(member_status_changed: _MemberStatusMarker | _MemberStatusGroupMarker | _MemberStatusTransition)[source]#
member_status_changed#

Ви можете імпортувати з aiogram.filters усі доступні варіанти statuses, status group або transitions:

Статуси#

ім’я

Опис

CREATOR

Власник чату

ADMINISTRATOR

Адміністратор чату

MEMBER

Учасник чату

RESTRICTED

Обмежений користувач (може бути не учасником)

LEFT

Не є учасником чату

KICKED

Вигнанийадміністраторами учасник

Статуси можна розширити маркером is_member, додавши префікс + (для is_member == True) або - (для is_member == False) , наприклад +RESTRICTED або -RESTRICTED

Групи статусів#

Окремі статуси можна комбінувати за допомогою побітового оператора or, наприклад CREATOR | ADMINISTRATOR

ім’я

Опис

IS_MEMBER

Комбінація статусів (CREATOR | ADMINISTRATOR | MEMBER | +RESTRICTED).

IS_ADMIN

Комбінація статусів (CREATOR | ADMINISTRATOR).

IS_NOT_MEMBER

Комбінація статусів (LEFT | KICKED | -RESTRICTED) .

Переходи#

Переходи можна визначити за допомогою операторів порозрядного зсуву >> і <<. Старий статус учасника чату має бути визначений ліворуч для оператора >> (праворуч для <<), а новий статус має бути вказаний праворуч для >> оператор (ліворуч для <<)

Напрямок переходу можна змінити за допомогою оператора побітової інверсії: ~JOIN_TRANSITION призведе до обміну старих і нових статусів.

ім’я

Опис

JOIN_TRANSITION

Означає, що статус змінено з IS_NOT_MEMBER на IS_MEMBER (IS_NOT_MEMBER >> IS_MEMBER)

LEAVE_TRANSITION

Означає, що статус змінено з IS_MEMBER на IS_NOT_MEMBER (~JOIN_TRANSITION)

PROMOTED_TRANSITION

Означає, що статус змінено з (MEMBER | RESTRICTED | LEFT | KICKED) >> ADMINISTRATOR ((MEMBER | RESTRICTED | LEFT | KICKED) >> ADMINISTRATOR)

Примітка

Зауважте, що якщо ви визначаєте об’єднання статусів (через |), вам потрібно буде додати дужки для оператора перед використанням оператора зсуву через пріоритети оператора.

Дозволені обробники#

Дозволені типи оновлень для цього фільтра:

  • my_chat_member

  • chat_member