Python vk_api. Как поймать события выхода человека из беседы и кикнуть его?

Пользуюсь VkLongPoll из vk_api.longpool
Авторизация с помощью токена в сообществе

vk = vk_api.VkApi(token=token)
longpoll = VkLongPoll(vk)

def main_loop(self) -> None:
        for event in self.longpoll.listen():
            # Как то сделать проверку на выход из беседы
            # И потом кикать через removeChatUser как я понял

Как поймать это событие и кикнуть того, кто вышел из беседы?


Ответы (1 шт):

Автор решения: nomnoms12

Для начала стоит сказать, что Вы используете неправильный модуль. Вам нужен vk_api.bot_longpoll.

Отследить выход человека из беседы можно, проверяя сообщение на наличие ключа action с типом chat_kick_user.

Пример (Python 3.8+):

from vk_api import VkApi
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType


ACCESS_TOKEN = ''  # Подставьте свой!
GROUP_ID =         # Подставьте свой!


vk_session = VkApi(token=ACCESS_TOKEN)
vk = vk_session.get_api()
longpoll = VkBotLongPoll(vk_session, GROUP_ID)


def main():
    for event in longpoll.listen():
        if event.type == VkBotEventType.MESSAGE_NEW and (action := event.obj['message'].get('action')):
            if action['type'] == 'chat_kick_user':
                vk.messages.removeChatUser(
                    chat_id=event.chat_id,
                    user_id=action['member_id'],
                )


if __name__ == '__main__':
    main()

Не забудьте, что боту необходимо выдать права администратора беседы:

введите сюда описание изображения

→ Ссылка