@kolomiec_artiom

Flask + API VK. Создание опросного-бота. Как проверять запросы на сервер в Flask?

Добрый вечер! Решил создать опрос-бота для ВК на Python, использовал микрофреймворк flask. Код:IuEFCsmK7sU.jpg

Соответственно, каждый раз, когда идет запрос на сервер (Т.е когда пользователь шлет сообщение в личку группы) у меня вызывается функция "processing" и далее по накатанной. Но мне нужно, чтобы после того, как пользователь отправил определенный символ ('1', допустим) у меня вызывалась уже новая функция (начало опроса). В этой функции задавался бы первый вопрос, потом пользователь на него отвечал, потом задавал бы второй вопрос и т.д

Как это можно реализовать? Как запустить функцию при вводе определенного символа знаю. А как сделать так, чтобы сообщение в этой функции выводилось только тогда, когда пользователь отвечал на предыдущее?

Пример выходных данных:
Б - бот, П - пользователь

(Б): Напишите "1", чтобы начать опрос

(П): 1

(Б): Как вы относительно к stackoverflow?

(П): Положительно

(Б): Как вы относительно к python?

(П): Нормально

(Б): Спасибо за прохождение опроса!
  • Вопрос задан
  • 751 просмотр
Пригласить эксперта
Ответы на вопрос 3
ну так что мешает после ввода 1 сгенерировать идентификатор сессии опроса и с ним работать ?
Ответ написан
Ahen
@Ahen
Универсальный дилетант
Мы же будем хранить результаты опроса в какой либо базе?
Там же и храните сессии пользователей, логика пррста: Проверяем есть ли пользователь с id vk в нашей базе, если нет - создаем запись, если есть проверяем id вопроса на который должен в текущий момент отвечать пользователь, записываем ответ, задаем следующий вопрос, записываем id нового вопроса пользователю.

Структура простейшая из трех столбцов - id с автоинкриментом, id vk, id вопроса.

При таком походе легко реализовать возможность вернуться к предыдущему вопросу, не потерять данные при подении питона.
Ответ написан
YardalGedal
@YardalGedal
yeah boy
Вам нужно использовать базу данных. Простейшая структура которая пришла в голову это две таблицы в MySQL. В первой храняться состояния, номер вопроса и идентификатор юзера, а во второй все ответы пользователей, номер вопроса, идентификатор пользователя и ответ на этот вопрос.

Можно обойтись и одной -- проверять сразу во второй базе сколько вопросов прошел пользователь, но при больших данных будут проблемы.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Marilyn Москва
от 100 000 до 130 000 ₽
от 90 000 до 130 000 ₽
УК «RED» Екатеринбург
от 70 000 до 100 000 ₽