Разделение для каждого написавшего пользователя без путаницы. vk api longpoll

Пишу игрового бота на vk api и столкнулся с проблемой, что не пойму, как позволить 2 и более пользователям одновременно взаимодействовать с ботом в разных местах, что из-за моей цели является обязательным параметром.
Для чуть большей понятности, приведу такой примерный отрывок кода(и чтоб избежать слишком сильного нагромождения, не буду в данном отрывке цитировать import'ы и т.п.). Пусть 1 пользователь будет печатать в месте "x", а второй только напишет боту

 for event in longpoll.listen():
    if event.type == VkEventType.MESSAGE_NEW and event.to_me and event.text:
        ranbow = random.randint(1,999)
        ranbow2 = random.randint(1,999)
        ranbow3 = ranbow * ranbow2 
        api.messages.send(user_id=event.user_id, message= "Кто ты?" , random_id = ranbow3)
        
        for event in longpoll.listen():
            if event.type == VkEventType.MESSAGE_NEW and event.to_me and event.text:
                if event.text == "Бублик":
                    ranbow = random.randint(1,999)
                    ranbow2 = random.randint(1,999)
                    ranbow3 = ranbow * ranbow2 
                    api.messages.send(user_id=event.user_id, message= "Вкусный?" , random_id = ranbow3)
                    for event in longpoll.listen():
                        if event.type == VkEventType.MESSAGE_NEW and event.to_me and event.text:
                            #Пусть это будет место X
                            if event.text == "Да":
                                ranbow = random.randint(1,999)
                                ranbow2 = random.randint(1,999)
                                ranbow3 = ranbow * ranbow2 
                                api.messages.send(user_id=event.user_id, message= "Круто тебе" , random_id = ranbow3)
                elif event.text == "Крутой пользователь stackoverflow, который читает это":
                    ranbow = random.randint(1,999)
                    ranbow2 = random.randint(1,999)
                    ranbow3 = ranbow * ranbow2 
                    api.messages.send(user_id=event.user_id, message= "А поможешь с распределением?" , random_id = ranbow3)
                    for event in longpoll.listen():
                        if event.type == VkEventType.MESSAGE_NEW and event.to_me and event.text:

                            if event.text == "Да":
                                ranbow = random.randint(1,999)
                                ranbow2 = random.randint(1,999)
                                ranbow3 = ranbow * ranbow2 
                                messages.send(user_id=event.user_id, message= "Спасибо:3" , random_id = ranbow3)
                             if event.text == "Не-а":
                                ranbow = random.randint(1,999)
                                ranbow2 = random.randint(1,999)
                                ranbow3 = ranbow * ranbow2 
                                messages.send(user_id=event.user_id, message= "Всё равно спасибки, что посмотрели!" , random_id = ranbow3)

Тогда получится, что второй пользователь свои сообщением заденет первого, от чего образуется каша, чего мне всовсем не нужно. Как сделать так, чтоб оба пользователя могли одновременно отвечать боту, притом ни одного из них не задело бы вторым


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

Автор решения: Иван Борисов

Я делал так и все работало

while True:
        try:
            for event in longpoll.listen():
                if event.type == VkEventType.MESSAGE_NEW:
                    if event.to_me:
                       Часть кода...

Я предполагаю, что это происходит из-за, что ты несколько раз пишешь следующее, т.е. создаешь новые циклы в цикле

 for event in longpoll.listen():
    if event.type == VkEventType.MESSAGE_NEW and event.to_me and event.text:
→ Ссылка