{"id":19584187,"url":"https://github.com/FilimonovAlexey/tech-interview-trainer","last_synced_at":"2025-04-27T11:31:48.614Z","repository":{"id":239337358,"uuid":"799258178","full_name":"FilimonovAlexey/tech-interview-trainer","owner":"FilimonovAlexey","description":"Telegram Бот для подготовки к собеседованию на Frontend разработчика. JavaScript + grammY","archived":false,"fork":false,"pushed_at":"2024-06-25T15:52:25.000Z","size":5069,"stargazers_count":8,"open_issues_count":1,"forks_count":4,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-11-11T07:46:59.842Z","etag":null,"topics":["grammyjs","javascript","javascript-bot","sqlite","telegram-bot"],"latest_commit_sha":null,"homepage":"https://t.me/Tehnomaniak_trainer_bot","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FilimonovAlexey.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-05-11T15:46:02.000Z","updated_at":"2024-07-21T16:06:29.000Z","dependencies_parsed_at":"2024-05-29T15:25:05.330Z","dependency_job_id":null,"html_url":"https://github.com/FilimonovAlexey/tech-interview-trainer","commit_stats":null,"previous_names":["filimonovalexey/tech-interview-trainer"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FilimonovAlexey%2Ftech-interview-trainer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FilimonovAlexey%2Ftech-interview-trainer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FilimonovAlexey%2Ftech-interview-trainer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FilimonovAlexey%2Ftech-interview-trainer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FilimonovAlexey","download_url":"https://codeload.github.com/FilimonovAlexey/tech-interview-trainer/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224069574,"owners_count":17250454,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["grammyjs","javascript","javascript-bot","sqlite","telegram-bot"],"created_at":"2024-11-11T07:47:08.968Z","updated_at":"2024-11-11T07:47:09.628Z","avatar_url":"https://github.com/FilimonovAlexey.png","language":"JavaScript","funding_links":[],"categories":["Полезные проекты"],"sub_categories":[],"readme":"# Telegram Бот для Подготовки к Собеседованию на Frontend Разработчика\n\nЭтот Telegram бот разработан для помощи в подготовке к собеседованиям на позицию Frontend разработчика. Бот предлагает викторины по различным категориям, таким как HTML, CSS, JavaScript и React, и предоставляет рейтинговый режим для оценки навыков пользователя.\n\n![](./public/prev.png)\n\n## Функциональности бота\n- **Старт**: Пользователь начинает взаимодействие с ботом, используя команду `/start`. Бот приветствует пользователя и предлагает выбрать категорию вопросов или включить рейтинговый режим.\n- **Викторины**: Пользователь выбирает одну из категорий (HTML, CSS, JavaScript, React) и отвечает на вопросы. После каждого ответа бот сообщает, правильный ли ответ, и предлагает следующий вопрос.\n- **Рейтинговый режим**: Пользователь отвечает на вопросы из всех категорий до первой ошибки. Количество правильных ответов фиксируется как очки, которые сохраняются в таблице лидеров.\n- **Таблица лидеров**: Пользователь может посмотреть топ-10 игроков, набравших наибольшее количество очков в рейтинговом режиме.\n- **Профиль**: Команда `/profile` позволяет пользователю просмотреть информацию о количестве правильных ответов в каждой категории, а также последний результат в рейтинговом режиме.\n\n## Используемые технологии\n- **Node.js**: Серверная платформа для выполнения JavaScript-кода.\n- **grammy**: Модуль для создания Telegram ботов.\n- **sqlite**: Встраиваемая база данных для хранения результатов пользователей.\n- **date-fns**: Библиотека для форматирования дат и времени.\n- **dotenv**: Модуль для загрузки переменных окружения из `.env` файла.\n\n## Структура проекта\n- `index.js` - Главный файл с логикой бота.\n- `questions/` - Папка с файлами вопросов по HTML, CSS, JavaScript и React.\n- `leaderboard.db` - Файл базы данных SQLite для хранения таблицы лидеров.\n\n## Демо бота\nОбзор возможностей бота и инструкция по настройке - [Смотреть на YouTube](https://youtu.be/fzgzOgq5_ho)  \nОпробовать бота можно в Telegram по ссылке - [@Tehnomaniak_trainer_bot](https://t.me/Tehnomaniak_trainer_bot)\n\n## Деплой бота на сервер\nВидео-гайд по деплою Telegram бота на сервер - [Смотреть на YouTube](https://youtu.be/vPqAYdjkm4o)  \n\n* Установим Git и обновим компоненты системы\n```bash\nsudo apt update\nsudo apt install git\n```\n\n* Клонируем репозиторий с ботом на сервер:\n```bash\ngit clone https://github.com/FilimonovAlexey/tech-interview-trainer.git\n```\n\n* Переходим в папку проекта:\n```bash\ncd tech-interview-trainer\n```\n\n* Устанавливаем Node.js и пакетный менеджер npm\n```bash\nsudo apt install nodejs\nsudo apt install npm\n```\n\n* Обновим Node js и npm, после выполняем перезапуск сервера\n```bash\nsudo npm install -g n\nsudo n stable\n```\n* Устанавливаем все зависимости\n```bash\ncd tech-interview-trainer\nnpm i\n```\n\n* Создаем глобальную переменную\n```bash\nnano .env\n```\n\n* Создаем внутри файлов .env две переменные\n```bash\nBOT_API_KEY=''\nADMIN_ID=''\n```\n\n* Устанавливаем pm2 для запуска бота\n```bash\nnpm i pm2 -g\n```\n\n* Запуск бота на сервере\n```bash\npm2 start index.js\n```\n\n## Документация по grammy js\n\n[Документация grammy js](https://grammy.dev/guide/)\n\n\n## Authors\n\n- [@FilimonovAlexey](https://github.com/FilimonovAlexey)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FFilimonovAlexey%2Ftech-interview-trainer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FFilimonovAlexey%2Ftech-interview-trainer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FFilimonovAlexey%2Ftech-interview-trainer/lists"}