mrNiKitus

"Обещаю со следующего семестра всё сдавать вовремя."

https://mrnikitus.ru/nkschedule – Браузер CuteChrome

Расписание занятий NKSchedule

В 2020 году я начинал изучать Python и в качестве эксперимента написал бота для расписания занятий. Поначалу я думал, что он будет небольшой, не умел нормально организовывать код, и всё пришло к тому, что внедрение нового функционала было очень сложным действием.

Спустя 2 года я вновь вернулся к этой идее, но проработал всё гораздо тщательнее и использовал весь свой накопленный опыт.

NKSchedule – сервис расписания занятий, состоящий из веб-сайта и Telegram-бота. Он позволяет составлять расписания или автоматически обновлять их, а также получать уведомления.

Сервис доступен по адресу schedule.mrnikitus.ru. Все функции полностью работают.

Используемые технологии

  • Контейнеризация: Docker
  • Веб-сервер: nginx 1.22.0
  • Backend (серверная часть):
    • Сервис расписания, обработка команд бота и API: Django 4.0.7
    • Статические файлы Django: WhiteNoise 6.2.0
    • Telegram-бот: python-telegram-bot 13.11
    • Асинхронная обработка запросов: Celery 5.2.7
    • Рассылка уведомлений и планировщик: django-celery-beat 2.3.0
    • Автоматическое обновление расписания: Puppeteer 18.2.1 и ws 8.9.0 (Node.js 16.17)
    • Базы данных: PostgreSQL 14.5 и Redis
  • Frontend (клиентская часть):
    • Фреймворк: React 18.2.0 (Vite 3.1.0)
    • Сжатие HTML-страниц: vite-plugin-html 3.2.0
    • Интерфейс: Ant Design 4.23.3
    • Календарь: FullCalendar 5.11.3
    • Управление состоянием приложения: MobX 6.6.2

Содержание

  1. Бот
  2. Веб-сайт
  3. Функционал администратора

Бот

Функционал бота примерно идентичен первой версии, но внешний вид и взаимодействие с некоторыми функциями сделан немного по-другому.

Настройка группы и подгруппы

Справка по пользованию ботом

Расписание занятий

Информация о текущей неделе и настройка уведомлений (начало)

Настройка уведомлений (продолжение)

Веб-сайт

Веб-сайт предлагает небольшой функционал, просто показывает расписание занятий.

Главная страница

Страница просмотра расписания

Окно с информацией о выбранном занятии

Функционал администратора

Администратор может менять расписание в окне, которое открывается при нажатии кнопки "Редактировать занятие" в окне информации о занятии. Это стандартный раздел админ-панели Django, открывающийся внутри окна с помощью некоторых костылей...

Изменение занятия

© 2026 mrNiKitus