devolw
@devolw
Новорег в программирование

Python Vk Bot (миллионер), что исправить для корректной работы?

Принцип работы бота следующий, имеется csv файл с вопросами/ ответами, из файла создается словарь, из словаря выбирается рандомная строка, после идет работа с выбранной рандомной строкой.
Не могу реализовать функцию, если юзер отвечает правильно - задается следующий вопрос (15 вопросов на игру) + каждый новый вопрос отличался от предыдущего

Вот мой код

import vk_api
from vk_api.longpoll import VkLongPoll, VkEventType
import csv
import random

session = vk_api.VkApi(token="TOKEN")

# Функция отправки сообщения
def sendMessage(user_id, message):
    session.method("messages.send", {
        "user_id": user_id,
        "message": message,
        "random_id": 0
    })

# Импортируем csv файл, записываем его в словарь

with open('millionerQuestions(1).csv', mode='r', encoding='utf-8-sig') as f:
    reader = csv.DictReader(f, delimiter=";")
    millionerList = list(reader)
    randomLine = random.choice(millionerList)

for event in VkLongPoll(session).listen():
    if event.type == VkEventType.MESSAGE_NEW and event.to_me:
        text = event.text
        user_id = event.user_id

        if text == "/start":
            sendMessage(user_id, "Здравствуйте! Хотите сыграть в игру?")
        if text == "Нет":
            sendMessage(user_id, "Жаль :( Когда надумаете напишите команду /start")

        if text == "Да":
            sendMessage(user_id, "Начнем!")

            # Из рандомной строки словаря выводим вопрос
            sendMessage(user_id, randomLine["Question"])

            # Из этой же строки словаря выводим варианты ответов
            sendMessage(user_id, randomLine["allAnswer"])
            sendMessage(user_id, 'Введите ваш ответ: ')

           # Сравниваем ответ юзера с правильным ответом из словаря
            if text == (randomLine["correctAnswer"]):
                sendMessage(user_id, 'Совершенно верно!')
            if text != (randomLine["correctAnswer"]):
                sendMessage(user_id, 'Вы проиграли :(')
  • Вопрос задан
  • 126 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
SpectrumData Екатеринбург
от 150 000 до 200 000 ₽
Гринатом Москва
от 150 000 ₽
DIGITAL SECTOR Краснодар
от 150 000 до 250 000 ₽