├── public └── prev.png ├── .gitignore ├── package.json ├── README.md ├── questions ├── html_questions.json ├── react_questions.json ├── css_questions.json └── js_questions.json └── index.js /public/prev.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FilimonovAlexey/tech-interview-trainer/HEAD/public/prev.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # production 12 | /build 13 | 14 | # misc 15 | .DS_Store 16 | .env.local 17 | .env.development.local 18 | .env.test.local 19 | .env.production.local 20 | .env 21 | npm-debug.log* 22 | yarn-debug.log* 23 | yarn-error.log* 24 | 25 | leaderboard.db 26 | 27 | /logs -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tech-interview-trainer", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "start": "nodemon index.js" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "date-fns": "^3.6.0", 14 | "dotenv": "^16.4.5", 15 | "grammy": "^1.23.0", 16 | "nodemon": "^3.1.0", 17 | "sqlite": "^5.1.1", 18 | "sqlite3": "^5.1.7" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Telegram Бот для Подготовки к Собеседованию на Frontend Разработчика 2 | 3 | Этот Telegram бот разработан для помощи в подготовке к собеседованиям на позицию Frontend разработчика. Бот предлагает викторины по различным категориям, таким как HTML, CSS, JavaScript и React, и предоставляет рейтинговый режим для оценки навыков пользователя. 4 | 5 |  6 | 7 | ## Функциональности бота 8 | - **Старт**: Пользователь начинает взаимодействие с ботом, используя команду `/start`. Бот приветствует пользователя и предлагает выбрать категорию вопросов или включить рейтинговый режим. 9 | - **Викторины**: Пользователь выбирает одну из категорий (HTML, CSS, JavaScript, React) и отвечает на вопросы. После каждого ответа бот сообщает, правильный ли ответ, и предлагает следующий вопрос. 10 | - **Рейтинговый режим**: Пользователь отвечает на вопросы из всех категорий до первой ошибки. Количество правильных ответов фиксируется как очки, которые сохраняются в таблице лидеров. 11 | - **Таблица лидеров**: Пользователь может посмотреть топ-10 игроков, набравших наибольшее количество очков в рейтинговом режиме. 12 | - **Профиль**: Команда `/profile` позволяет пользователю просмотреть информацию о количестве правильных ответов в каждой категории, а также последний результат в рейтинговом режиме. 13 | 14 | ## Используемые технологии 15 | - **Node.js**: Серверная платформа для выполнения JavaScript-кода. 16 | - **grammy**: Модуль для создания Telegram ботов. 17 | - **sqlite**: Встраиваемая база данных для хранения результатов пользователей. 18 | - **date-fns**: Библиотека для форматирования дат и времени. 19 | - **dotenv**: Модуль для загрузки переменных окружения из `.env` файла. 20 | 21 | ## Структура проекта 22 | - `index.js` - Главный файл с логикой бота. 23 | - `questions/` - Папка с файлами вопросов по HTML, CSS, JavaScript и React. 24 | - `leaderboard.db` - Файл базы данных SQLite для хранения таблицы лидеров. 25 | 26 | ## Демо бота 27 | Обзор возможностей бота и инструкция по настройке - [Смотреть на YouTube](https://youtu.be/fzgzOgq5_ho) 28 | Опробовать бота можно в Telegram по ссылке - [@Tehnomaniak_trainer_bot](https://t.me/Tehnomaniak_trainer_bot) 29 | 30 | ## Деплой бота на сервер 31 | Видео-гайд по деплою Telegram бота на сервер - [Смотреть на YouTube](https://youtu.be/vPqAYdjkm4o) 32 | 33 | * Установим Git и обновим компоненты системы 34 | ```bash 35 | sudo apt update 36 | sudo apt install git 37 | ``` 38 | 39 | * Клонируем репозиторий с ботом на сервер: 40 | ```bash 41 | git clone https://github.com/FilimonovAlexey/tech-interview-trainer.git 42 | ``` 43 | 44 | * Переходим в папку проекта: 45 | ```bash 46 | cd tech-interview-trainer 47 | ``` 48 | 49 | * Устанавливаем Node.js и пакетный менеджер npm 50 | ```bash 51 | sudo apt install nodejs 52 | sudo apt install npm 53 | ``` 54 | 55 | * Обновим Node js и npm, после выполняем перезапуск сервера 56 | ```bash 57 | sudo npm install -g n 58 | sudo n stable 59 | ``` 60 | * Устанавливаем все зависимости 61 | ```bash 62 | cd tech-interview-trainer 63 | npm i 64 | ``` 65 | 66 | * Создаем глобальную переменную 67 | ```bash 68 | nano .env 69 | ``` 70 | 71 | * Создаем внутри файлов .env две переменные 72 | ```bash 73 | BOT_API_KEY='' 74 | ADMIN_ID='' 75 | ``` 76 | 77 | * Устанавливаем pm2 для запуска бота 78 | ```bash 79 | npm i pm2 -g 80 | ``` 81 | 82 | * Запуск бота на сервере 83 | ```bash 84 | pm2 start index.js 85 | ``` 86 | 87 | ## Документация по grammy js 88 | 89 | [Документация grammy js](https://grammy.dev/guide/) 90 | 91 | 92 | ## Authors 93 | 94 | - [@FilimonovAlexey](https://github.com/FilimonovAlexey) -------------------------------------------------------------------------------- /questions/html_questions.json: -------------------------------------------------------------------------------- 1 | { 2 | "questions": [ 3 | { 4 | "question": "Что такое тег