Skip to content

termertop1gg/octagon-task

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎓 Student Assistant Bot

Телеграм-бот, разработанный на Node.js, который помогает студентам организовывать учебный процесс, следить за расписанием и узнавать о мероприятиях университета. Проект включает в себя полноценную панель администратора для управления контентом.

🚀 Функциональные возможности

👨‍🎓 Для студентов:

  • Регистрация и выбор группы: Выбор учебной группы из списка или подача заявки на создание новой.
  • 📅 Расписание: Просмотр расписания занятий на неделю (с указанием аудиторий и предметов).
  • 📝 Задачи (To-Do): Создание личных задач с дедлайнами.
    • Уведомления: Бот автоматически напоминает о дедлайне за 1 день.
    • Формат: Удобный ввод даты (ДД.ММ.ГГГГ).
    • Валидация: Нельзя создать задачу с датой в прошлом.
  • 🎉 Мероприятия: Просмотр списка ближайших университетских событий.

👮‍♂️ Для администратора:

  • Модерация групп: Одобрение или отклонение заявок на создание новых учебных групп.
  • Управление расписанием: Удобное заполнение расписания (просто отправьте список предметов, бот сам их пронумерует).
  • Управление мероприятиями: Добавление и удаление анонсов событий.
  • 📢 Рассылка: Отправка уведомлений всем пользователям бота.
  • Оповещения: Автоматическое уведомление студентов при изменении расписания их группы.

🛠 Технологический стек

  • Платформа: Node.js
  • База данных: MySQL (используется драйвер mysql2 с защитой от SQL-инъекций).
  • Telegram API: Библиотека node-telegram-bot-api.
  • Планировщик: Библиотека node-schedule (Cron-задачи для уведомлений).
  • Безопасность: Переменные окружения (dotenv).

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

1. Клонирование репозитория

git https://github.com/termertop1gg/octagon-task.git
cd octagon-task

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

npm install

3. Настройка Базы Данных (MySQL)

  1. Откройте phpMyAdmin или консоль MySQL.
  2. Создайте базу данных student_assistant.
  3. Выполните следующий SQL-скрипт для создания таблиц:
CREATE DATABASE IF NOT EXISTS student_assistant;
USE student_assistant;

-- Таблица групп
CREATE TABLE IF NOT EXISTS `groups` (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50) NOT NULL UNIQUE,
    is_approved BOOLEAN DEFAULT FALSE
);

-- Таблица пользователей
CREATE TABLE IF NOT EXISTS users (
    telegram_id BIGINT PRIMARY KEY,
    username VARCHAR(255),
    role ENUM('student', 'admin') DEFAULT 'student',
    group_id INT,
    FOREIGN KEY (group_id) REFERENCES `groups`(id) ON DELETE SET NULL
);

-- Таблица задач
CREATE TABLE IF NOT EXISTS tasks (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id BIGINT,
    title VARCHAR(255) NOT NULL,
    deadline DATETIME,
    is_notified BOOLEAN DEFAULT FALSE,
    FOREIGN KEY (user_id) REFERENCES users(telegram_id)
);

-- Таблица мероприятий
CREATE TABLE IF NOT EXISTS events (
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(255) NOT NULL,
    description TEXT,
    event_date DATETIME,
    location VARCHAR(255)
);

-- Таблица расписания
CREATE TABLE IF NOT EXISTS schedule (
    id INT AUTO_INCREMENT PRIMARY KEY,
    group_id INT NOT NULL,
    day_of_week ENUM('Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота') NOT NULL,
    lesson_number INT NOT NULL,
    subject VARCHAR(255) NOT NULL,
    location VARCHAR(100),
    FOREIGN KEY (group_id) REFERENCES `groups`(id) ON DELETE CASCADE
);

4. Настройка переменных окружения

Создайте файл .env в корне проекта и заполните его своими данными:

BOT_TOKEN=ВАШ_ТОКЕН_ОТ_BOTFATHER
DB_HOST=localhost
DB_USER=root
DB_PASSWORD=
DB_NAME=student_assistant

5. Запуск

node index.js

👑 Как стать администратором

По умолчанию все новые пользователи получают роль student. Чтобы выдать себе права администратора:

  1. Запустите бота и нажмите /start.
  2. Зайдите в базу данных (phpMyAdmin).
  3. Найдите свой telegram_id в таблице users.
  4. Выполните SQL-запрос:
UPDATE users SET role = 'admin' WHERE telegram_id = ВАШ_ID;
  1. Перезапустите бота или напишите команду /admin.

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

student-bot/
├── node_modules/       # Библиотеки
├── .env                # Конфигурация (не публикуется в Git)
├── .gitignore          # Исключения для Git
├── index.js            # Основной код бота
├── package.json        # Описание проекта и зависимостей
└── README.md           # Документация

🛡 Безопасность

  • Токены и пароли скрыты в .env.
  • Используются Prepared Statements для защиты от SQL Injection.
  • Реализована проверка прав доступа (Admin Middleware).
  • Обработка polling_error для предотвращения падения бота.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors