questionnaire

0

Описание

Telegram-бот для проведения опроса о доверии к искусственному интеллекту в российских университетах.

Языки

  • Python92,9%
  • JavaScript5%
  • Shell0,9%
  • Dockerfile0,8%
  • HTML0,4%
README.md

Telegram-бот для проведения опроса

О проекте

Проект представляет собой Telegram-бота для проведения опроса о доверии к искусственному интеллекту в российских университетах. Бот проводит анкетирование пользователей, собирая их ответы на различные вопросы о применении и отношении к ИИ в высшем образовании.

Функциональность

  • Проведение опроса через Telegram-бот
  • Поддержка различных типов вопросов:
    • Одиночный выбор
    • Множественный выбор
    • Шкала оценки
    • Текстовые ответы
    • Составные вопросы
    • Условные вопросы с ветвлением
  • Поддержка голосовых сообщений для варианта "Другое"
  • API для мониторинга и экспорта данных

Установка и запуск

Требования

  • Python 3.8 или выше
  • pip (менеджер пакетов Python)
  • Docker и Docker Compose (для запуска с Minio)

Установка зависимостей

Настройка окружения

  1. Создайте файл
    .env
    в корневой директории проекта на основе
    .env.example
  2. Добавьте в него следующие переменные:
TELEGRAM_BOT_TOKEN=your_bot_token MINIO_ENDPOINT=minio:9000 MINIO_ACCESS_KEY=minioadmin MINIO_SECRET_KEY=minioadmin MINIO_BUCKET=voice-responses MINIO_SECURE=false

Запуск с использованием Docker

Ручной запуск бота

Ручной запуск API

API для работы с данными

Доступные эндпоинты

1. Статус ответов

GET /answers/status

Возвращает информацию о:

  • Общем количестве пользователей
  • Количестве завершенных анкет
  • Проценте завершения

2. Экспорт ответов конкретного пользователя

GET /answers/export/{user_id}

Создает Excel-файл с ответами выбранного пользователя, где:

  • Каждый ответ в отдельной строке
  • Включает номер вопроса, текст вопроса и ответ

3. Экспорт ответов всех пользователей

GET /answers/export-all

Создает Excel-файл со всеми ответами, где:

  • Каждый пользователь в отдельной строке
  • Ответы на вопросы в отдельных столбцах

4. Список голосовых сообщений

GET /voice-messages

Возвращает список всех голосовых сообщений с информацией:

  • ID ответа
  • ID пользователя
  • Номер вопроса
  • Дата создания

5. Получение ссылки на голосовое сообщение

GET /voice-messages/{response_id}

Возвращает временную ссылку для доступа к голосовому сообщению:

  • URL для скачивания или воспроизведения
  • Время действия ссылки (по умолчанию 1 час)

Формат данных в Excel

  • Ответы на вопросы с множественным выбором объединяются через точку с запятой
  • Составные вопросы разбиваются на отдельные подвопросы
  • Все файлы сохраняются в директории
    exports
    с временной меткой в имени
  • Голосовые сообщения отмечаются как "[Голосовое сообщение]" и могут быть получены через API

Структура проекта

├── bot.py # Основной файл бота ├── questions.py # Конфигурация вопросов ├── api.py # API для экспорта данных ├── models.py # Модели данных SQLAlchemy ├── minio_utils.py # Утилиты для работы с Minio ├── requirements.txt # Зависимости проекта ├── docker-compose.yml # Конфигурация Docker ├── Dockerfile # Файл сборки Docker ├── .env # Конфигурация окружения ├── exports/ # Директория для экспортированных файлов └── data/ # Директория с данными (включая БД)

Технологии

  • Python
  • python-telegram-bot
  • FastAPI
  • pandas
  • SQLAlchemy
  • openpyxl
  • Minio (для хранения голосовых сообщений)
  • Docker & Docker Compose

Лицензия

MIT