@Martin_Shelby

Как одновременно обрабатывать запросы 2 и более аккаунтов?

Доброго дня! При создании бота столкнулся с такой проблемой, что при отправке сообщений с двух разных аккаунтов ВК, бот работает последовательно, то есть всё равно, что если бы я писал боту с одного аккаунта. Допустим, если Пользователь 1 в меню дошёл до выбора проектов(в коде project1 и тд), а Пользователь 2 находится в меню выбора игры(в коде game1 и тд) и Пользователь 2 выбирает допустим game1, то он переходит сразу в меню выбора серверов(в коде server1 и тд), хотя по логике вещей должен был перейти в меню выбора проектов.
Как можно решить эту проблему?
Использую библиотеки: asyncio и aiovk

async def main():
    session = TokenSession(access_token=TOKEN())
    api = API(session)
    longpoll = BotsLongPoll(session, mode=8, group_id=VK_GROUP_ID())

    while True:
        try:
            data = await longpoll.wait()
            updates = data['updates']

            for event in updates:
                if event['type'] == 'message_new':
                    payload = event['object']['message']['payload']
                    responce = event['object']['message']['text'].lower
                    dict_event = event['object']['message']

                    if payload == '{"button":"1"}':
                        await api('messages.send',
                                  peer_id=event['object']['message']['peer_id'],
                                  message="game 1\n",
                                  random_id=0,
                                  keyboard=keyboardReturnMenu)

                    elif (responce == '1') and (payload_event == '{"button":"1"}'): \
                        stage3_menu1 = 1
                        await api('messages.send',
                                  peer_id=event['object']['message']['peer_id'],
                                  message="project 1\n",
                                  random_id=0,
                                  keyboard=keyboardReturnMenu)

                    elif (stage3_menu1 == 1) and (responce == '1'):
                        stage3_menu1 = 0
                        await api('messages.send',
                                  peer_id=event['object']['message']['peer_id'],
                                  message="server 1\nserver 2\nserver 3\n",
                                  random_id=0,
                                  keyboard=keyboardReturnMenu)


                    if dict_event.get('payload') != None:
                        payload_event = event['object']['message']['payload']
                    else:
                        payload_event = None

        except Exception as E:
            time.sleep(1)
            await session.close()
  • Вопрос задан
  • 498 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы