questionnaire
Описание
Telegram-бот для проведения опроса о доверии к искусственному интеллекту в российских университетах.
Языки
- Python92,9%
- JavaScript5%
- Shell0,9%
- Dockerfile0,8%
- HTML0,4%
год назад
год назад
год назад
год назад
год назад
год назад
год назад
год назад
год назад
год назад
год назад
10 месяцев назад
год назад
год назад
год назад
README.md
Telegram-бот для проведения опроса
О проекте
Проект представляет собой Telegram-бота для проведения опроса о доверии к искусственному интеллекту в российских университетах. Бот проводит анкетирование пользователей, собирая их ответы на различные вопросы о применении и отношении к ИИ в высшем образовании.
Функциональность
- Проведение опроса через Telegram-бот
- Поддержка различных типов вопросов:
- Одиночный выбор
- Множественный выбор
- Шкала оценки
- Текстовые ответы
- Составные вопросы
- Условные вопросы с ветвлением
- Поддержка голосовых сообщений для варианта "Другое"
- API для мониторинга и экспорта данных
Установка и запуск
Требования
- Python 3.8 или выше
- pip (менеджер пакетов Python)
- Docker и Docker Compose (для запуска с Minio)
Установка зависимостей
Настройка окружения
- Создайте файл
в корневой директории проекта на основе.env.env.example - Добавьте в него следующие переменные:
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