StellandYT
@StellandYT
Программист Python

Как отслеживать сообщения от пользователя вк Python 3 Vk api?

Здравствуйте
Не могу разобраться, как отследить сообщение от пользователя в вк боте на Python.
Пример:
Есть код:
from vk_api.longpoll import VkLongPoll, VkEventType
from vk_api.keyboard import VkKeyboard, VkKeyboardColor
from vk_api.utils import get_random_id
import vk_api
from datetime import datetime

token = "5f4f65......9cabb12"
vk = vk_api.VkApi(token=token)

session_api = vk.get_api()
longpoll = VkLongPoll(vk)

def create_keyboard(response):
    keyboard = VkKeyboard(one_time=True)

    if response.lower() == 'начать':
        keyboard.add_button('Девушку', color=VkKeyboardColor.DEFAULT)
        keyboard.add_button('Парня', color=VkKeyboardColor.DEFAULT)
        keyboard.add_button('Всё равно', color=VkKeyboardColor.DEFAULT)

    keyboard = keyboard.get_keyboard()
    return keyboard

while True:
    for event in longpoll.listen():
        if event.type == VkEventType.MESSAGE_NEW:
            print('Сообщение пришло в: ' + str(datetime.strftime(datetime.now(), "%H:%M:%S")))
            print('Текст сообщения: ' + str(event.text))
            print('Id пользователя: ' + str(event.user_id))
            response = event.text.lower()
            keyboard = create_keyboard(response)
            user_id = event.user_id

            if event.from_user and not event.from_me:
                if response == 'начать':
                    vk.method('messages.send',
                              {'user_id': event.user_id, 'message': 'Привет! \n'
                                                                    'Я помогу тебе найти пару или просто друзей. \n'
                                                                    'Можно я задам тебе пару вопросов?',
                               'random_id': get_random_id(),
                               'keyboard': keyboard})


                elif response == 'девушку' or response == 'парня' or response == 'всё равно':
                    vk.method('messages.send',
                              {'user_id': event.user_id, 'message': 'Хорошо...\n'
                                                                    'А как тебя зовут?', 'random_id': get_random_id()})

            print('--------------------------------------------')


После выбора Кого найти, пользователю задают вопрос об его Имени.
Как отследить его введённое имя?

Буду очень благодарен за помощь :)

P.S Не обращайте сильного внимания на код, я только учись ;)
  • Вопрос задан
  • 887 просмотров
Решения вопроса 1
Тебе нужно создать класс пользователя и объявить в нём 3 поля: id, name, isNameSelect и создать список объектов данного класса.
Если человек пишет первый раз (то есть пользователя с таким id нет в списке), надо его туда добавить.
Если человек написал 'девушку', 'парня' или 'всё равно', ты устанавливаешь этому человеку значение isNameSelect true. И потом проверяешь, если у человека isNameSelect true, то установить ему name которое он написал
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы