VkApi, Python. Проблема с longpoll.check()
В своего бота хочу встроить подобную структуру:
if msg_text == '12':
sender_user(from_id, '1') #отправляет в чат "1" при выполнении условия
for event in longpoll.check(): #прослушивает одно следующее сообщение
if event.type == VkEventType.MESSAGE_NEW:
msg_text = event.text.lower()
if msg_text == '1':
sender_user(from_id, 'gotovo')
elif msg_text == '2':
sender_user(from_id, 'lol')
else:
sender_user(from_id, 'idk')
Эта структура уже стоит в бесконечном цикле с longpoll.listen(), который непрерывно слушает чат.
Проблема заключается в том, что после ввода "12" в чат, бот отвечает мне сообщением "1", которое почему-то уже идет в счет следующего условия и выдает мне "gotovo". Если код выполняется последовательно, то почему ответ бота "1" прослушивается командой longpoll.check(), которая идет ПОСЛЕ ответа? Задержки после ответа никакого результата не дают, двойной longpoll.check() ставить не хочу, потому что все может работать криво. Без ответа бота "1" код работает так, как мне нужно. Но этот ответ мне необходим.
Ответы (1 шт):
Рабочая структура:
if msg_text == '12':
sender_user(from_id, '1')
for event in longpoll.check():
if event.type == VkEventType.MESSAGE_NEW:
msg_text = event.text.lower()
for event in longpoll.check():
if event.type == VkEventType.MESSAGE_NEW:
msg_text = event.text.lower()
if msg_text == '1':
sender_user(from_id, 'gotobo')
elif msg_text == '2':
sender_user(from_id, 'lol')
else:
sender_user(from_id, 'idk')
Один пустой longpoll.check() ловит сообщение-ответ, а второй слушает следующие команды.