MooDuSh — расширенная версия SyncShare для автоматизации тестов на Moodle и OpenEdu.
| Режим | Описание |
|---|---|
| Палочка (Wand) | Показывает кнопку рядом с каждым вопросом. Нажмите, чтобы увидеть статистику и выбрать ответ. |
| Авто-вставка (Auto-Insert) | Автоматически заполняет ответы на основе статистики сразу при открытии теста. |
| Авто-прорешивание (Auto-Solve) | Решает весь тест и автоматически переходит на следующие страницы. |
| Режим | Описание |
|---|---|
| Палочка | Inline-кнопки рядом с каждым вопросом — показывает проверенные ответы и статистику. |
| Авто-вставка | Вставляет найденные ответы и подводит к вопросам, где нужен ручной ввод. |
| Автоматический режим | Полностью автоматическое решение с авто-переходом между разделами. |
- Авто-переход после прохождения раздела
- Обновление состояния активного раздела
- Боковая панель со статистикой по всем вопросам
- Резервная статистика (как в Moodle)
- Опциональная проверка ответов в режиме авто-вставки без нажатия «Отправить»
- Настраиваемая задержка авто-перехода
- Горячие клавиши для показа/скрытия палочки
- Поддержка обычных вопросов, текстовых полей, медиа-вариантов и MatchingTable-задач OpenEdu
Откройте последний GitHub Release и скачайте moodush-extension.zip. Распакуйте архив в удобное место.
Для разработки можно клонировать репозиторий:
git clone https://github.com/KOSFin/MooDuSh-from-syncshare.git
cd MooDuSh-from-syncshare
npm ci
npm run build:extension- Откройте
chrome://extensions/ - Включите Режим разработчика (переключатель в правом верхнем углу)
- Нажмите Загрузить распакованное расширение
- Выберите папку с файлами MooDuSh (где лежит
manifest.json) - Готово — иконка MooDuSh появится на панели расширений
Примечание: MooDuSh автоматически заменит оригинальное расширение SyncShare, если оно установлено, так как оба используют одинаковые ключи Chrome. Весь функционал SyncShare сохраняется.
Если расширение установлено как unpacked-папка, обновите его внешним скриптом:
./scripts/update.shНа Windows:
.\scripts\update.ps1После обновления откройте chrome://extensions/ и нажмите кнопку обновления у MooDuSh. Само расширение не перезаписывает свою папку из Chrome — это делает только внешний скрипт, запущенный пользователем.
Для работы с OpenEdu необходим персональный токен из Telegram-бота.
- Откройте Telegram-бота: @paramext_bot
- Нажмите Start или отправьте команду
/start - Бот ответит сообщением с вашим персональным токеном — скопируйте его
- Нажмите на иконку MooDuSh на панели Chrome
- Примите политику в первом экране popup
- Вставьте токен в поле подключения
- При необходимости включите Использовать свой backend и измените URL
- Нажмите Проверить — статус должен стать Онлайн
- Откройте тест на openedu.ru
- Рядом с вопросами появятся кнопки палочки с ответами
- Выберите подходящий режим в настройках расширения
Moodle работает сразу после установки без дополнительной настройки токена.
- Нажмите на иконку MooDuSh
- Убедитесь, что выбрана вкладка Moodle
- Выберите режим:
- Палочка — кнопка рядом с каждым вопросом (по умолчанию)
- Авто-вставка — автоматическое заполнение ответов
- Авто-прорешивание — полная автоматизация (нажмите Старт для запуска)
- Настройте горячую клавишу для показа/скрытия палочки (по умолчанию
Escape) - Нажмите Сохранить
Для запуска своего OpenEdu-бэкенда:
cp env.example .env
docker compose up -d --buildВ .env обязательно поменяйте:
POSTGRES_PASSWORD=change_me_postgres
API_TOKEN=change_me_api_token
ADMIN_TOKEN=change_me_admin_password
ADMIN_SECRET_KEY=change_me_long_random_secret
TELEGRAM_BOT_TOKEN=123456:telegram_bot_token
BOT_LINK=https://t.me/moodush_botWorkflow .github/workflows/extension.yml гоняет тесты, собирает moodush-extension.zip и публикует Release только по tag v* или ручному запуску.
| Variable | Пример | Назначение |
|---|---|---|
OPENEDU_API_BASE_URL |
https://paramext.ruka.me/api |
Публичный URL OpenEdu backend для popup/build config |
MOODLE_API_BASE_URL |
https://syncshare.naloaty.me/api |
Публичный URL Moodle backend |
BOT_LINK |
https://t.me/moodush_bot |
Ссылка на Telegram-бота для получения ключа |
UPDATE_CHECK_URL |
https://paramext.ruka.me/api/v2/update |
Endpoint проверки обновлений |
RELEASE_PUBLIC_KEY |
публичный PEM/ключ | Публичный ключ проверки release manifest |
| Secret | Назначение |
|---|---|
RELEASE_SIGNING_PRIVATE_KEY |
Приватный ключ для подписи release-manifest.json |
Во frontend build config нельзя добавлять секретные API-токены: все, что попадает в js/build_config.js, видно пользователю расширения.
Локально npm test дополнительно прогоняет HTML из test-files/*.html, если папка есть. Raw HAR/HTML могут содержать чувствительные данные, поэтому перед добавлением в репозиторий их нужно санитизировать. В CI есть fallback-fixtures, чтобы базовые тесты parser/course map работали без приватных файлов.
| Команда | Описание |
|---|---|
/start |
Регистрация и получение персонального токена |
/token |
Показать текущий токен + кнопка перегенерации |
/stats |
Статистика: количество тестов, вопросов и правильных ответов |
/help |
Справка по командам и настройке |
В разделе Настройки API (кнопка внизу popup) можно настроить подключение к бэкенду отдельно для Moodle и OpenEdu:
- Адрес API — URL сервера (по умолчанию
https://syncshare.naloaty.me/apiдля Moodle,https://paramext.ruka.me/apiдля OpenEdu) - Bearer токен — персональный токен из Telegram-бота
- Таймаут запросов — время ожидания ответа от сервера в миллисекундах
- Проверить API — проверка доступности сервера
- Сбросить путь — сброс адреса API к значению по умолчанию
MooDuSh/
manifest.json — конфигурация расширения (Manifest V3)
env.example — пример переменных окружения
scripts/update.sh — удобное обновление через Git
js/
popup_new.js — логика popup-окна расширения
platform_settings.js — управление настройками
content_logic.js — контент-скрипт для Moodle
openedu_content.js — контент-скрипт для OpenEdu
openedu_shared.js — общие функции OpenEdu
background_worker.js — фоновый Service Worker
commons.js — общие утилиты
quiz_attempt.js — обработка попыток Moodle
quiz_board.js — доска вопросов Moodle
quiz_overview.js — обзор теста Moodle
html/
popup/ — HTML popup-окна
css/
popup/ — стили popup
widgets/ — стили виджетов (контекстное меню, палочка OpenEdu)
python/
app/ — бэкенд (FastAPI + PostgreSQL + Telegram-бот)
_locales/ — локализация (ru, en)
В: Расширение не показывает ответы на OpenEdu
О: Проверьте, что вы зарегистрированы в @moodush_bot, токен вставлен в настройках API, и статус API — «Онлайн».
В: Кнопки палочки не появляются
О: Убедитесь, что вы находитесь на странице теста. Попробуйте обновить страницу. Проверьте, что палочка не скрыта горячей клавишей.
В: Как обновить расширение?
О: Если скачивали через Git, выполните ./scripts/update.sh, затем обновите расширение в chrome://extensions/.
В: Как вернуться на оригинальный SyncShare?
О: Удалите MooDuSh из chrome://extensions/ и установите SyncShare из Chrome Web Store.
В: Авто-прорешивание не переходит на следующую страницу (Moodle)
О: Проверьте, что текст кнопки «Далее» в настройках совпадает с текстом на странице (по умолчанию «Следующая страница»).
Если что-то не работает или есть идеи по улучшению — создайте issue в репозитории:
Пожалуйста, опишите:
- Что именно не работает
- На какой платформе (Moodle / OpenEdu)
- Скриншот ошибки из консоли (F12 -> Console), если есть
Если расширение вам помогло, поставьте звезду на GitHub — это очень мотивирует продолжать разработку!
Made with ❤️ by MooDuSh contributors