diff --git a/docs/readme.md b/docs/readme.md index bf10e13..41d65fa 100644 --- a/docs/readme.md +++ b/docs/readme.md @@ -1,15 +1,5 @@ -# Бот в Telegram для трудоустройства +# Бот в Telegram для управления Личным кабинетом в ИТ-студии Зажигина -Бот написан на TypeScript с помощью фреймворка [Grammy](https://www.npmjs.com/package/grammy) для Telegram API. Предназначен для запуска в контейнере Docker, файл сборки можно видеть под названием `dockerfile`. Главный метод запуска проекта — через файл Bash скрипта `start.sh` от имени администратора. +Бот описан в [`src/bot.ts`](../src/index.ts) на [TypeScript](https://www.typescriptlang.org/docs "Документация TypeScript") с помощью фреймворка [Grammy](https://grammy.dev/guide "Документация Grammy") над [Telegram Bot API](https://core.telegram.org/bots/api "Документация Telegram Bot API"). Предназначен для запуска в контейнере [Docker](https://docs.docker.com/reference "Документация Docker") через [NodeJS](https://nodejs.org/api/ "Документация NodeJS"), файл сборки можно видеть под названием [`src/dockerfile`](../src/dockerfile). Главный метод запуска проекта — через файл [Bash](https://www.gnu.org/software/bash/manual/bash.html "Документация Bash") скрипта [`start.sh`](../start.sh) от имени администратора. -На данный момент бот поддерживает только команду «`/start`» и «`/register`», отвечая первой подсказкой для пользователя на последующие действия, а на вторую, тем что команда ещё в действительности свои функции не выполняет. - - -## Запуск бота - -Для запуска требуются 2 переменных окружения: `BOT_TOKEN`, токен бота Telegram получаемый от [BotFather](https://t.me/BotFather), и `DB_PATH`, путь к базе данных на хосте. `BOT_TOKEN` указывается в `dockerfile` на 13-й строке после «`ENV BOT_TOKEN=`», а `DB_PATH` в `start.sh` на 3-й после «…`-v`» и до «`:`…». - -Затем нужно запустить файл `start.sh` от имени администратора: -```bash -sudo bash start.sh -``` \ No newline at end of file +Официально запускается от имени [@emp_zaboal_bot](https://emp_zaboal_bot.t.me) и администрируется [Богданом](https://zaboal.t.me). Руководство по запуску описано в [`docs/start.md`](start.md). \ No newline at end of file diff --git a/docs/start.md b/docs/start.md new file mode 100644 index 0000000..8e30ea0 --- /dev/null +++ b/docs/start.md @@ -0,0 +1,8 @@ +## Запуск бота + +Для запуска требуются 2 переменных окружения: `BOT_TOKEN`, токен бота Telegram получаемый от [BotFather](https://t.me/BotFather), и `DB_PATH`, путь к базе данных на хосте. `BOT_TOKEN` указывается в [`src/dockerfile`](../src/dockerfile) на 13-й строке после «`ENV BOT_TOKEN=`», а `DB_PATH` в [`start.sh`](../start.sh) на 3-й после «…`-v`» и до «`:`…». + +Затем нужно запустить файл [`start.sh`](../start.sh) от имени администратора: +```bash +sudo bash start.sh +``` \ No newline at end of file diff --git a/src/bot.ts b/src/bot.ts new file mode 100644 index 0000000..02f66ee --- /dev/null +++ b/src/bot.ts @@ -0,0 +1,41 @@ +import { Bot } from "grammy"; +const bot = new Bot(`${process.env.BOT_TOKEN}`); + + +const sqlite3 = require("sqlite3"); +const db = new sqlite3.Database(process.env.DB_PATH) + +function newPerson(values: string){ + console.log("В таблицу people вносятся данные: " + `${values}`); + db.run(`INSERT INTO people(per_name, per_email) VALUES (${values});`); +} + + + +bot.command("start", (ctx) => { + ctx.reply( + "Вы можете ознакомиться с тем как использовать данного бота по команде `/help`", + { parse_mode: "MarkdownV2" } + ); +}); + +bot.command("help", (ctx) => { + ctx.reply( + "Список команд доступен в сплывающем меню от знака «/» в поле ввода сообщения\\. Но если Вы ещё не зарегистрированы в системе, сделайте это в первую очередь по команде: `/register \"[полное имя]\", \"[электропочта]\"`", + { parse_mode: "MarkdownV2" }, + ); +}); + +bot.command("register", (ctx) => { + if (ctx.match != '') { + newPerson(`${ctx.match}`); + } else { + ctx.reply( + "Данная команда требует аргументы, введённые в формате `\"[полное имя]\", \"[электропочта]\"`\\. Например: `/register \"Зажигин Богдан Алексеевич\", \"za.boal@vk.com\"`", + { parse_mode: "MarkdownV2" } + ); + } +}); + + +bot.start(); \ No newline at end of file diff --git a/src/dockerfile b/src/dockerfile index 14c6c75..e6d51e3 100644 --- a/src/dockerfile +++ b/src/dockerfile @@ -5,7 +5,7 @@ WORKDIR /usr/src/app COPY package.json . RUN npm install -COPY index.ts . +COPY bot.ts . # Требуемые переменные окружения diff --git a/src/index.ts b/src/index.ts deleted file mode 100644 index f1d47e9..0000000 --- a/src/index.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { Bot } from "grammy"; -const bot = new Bot(`${process.env.BOT_TOKEN}`); - - - -bot.command("start", (ctx) => { - ctx.reply("Вы можете ознакомиться с тем как использовать данного бота по команде /help"); -}); - -bot.command("help", (ctx) => { - ctx.reply( - "Список команд доступен в сплывающем меню от знака «/» в поле ввода сообщения\\. Если Вы ещё не зарегистрированы в системе, сделайте это в первую очередь по команде: `/register [полное имя] <[электропочта]>`", - { parse_mode: "MarkdownV2" }, - ); -}); - -bot.command("register", (ctx) => { - ctx.reply("Данная команда на данный момент не работает, никого нигде не регистрирует. Данная функция ещё в разработке"); - if (ctx.match != '') { - ctx.reply(`Вы дали команде аргументы: ${ctx.match}`); - } -}); - - -bot.start(); \ No newline at end of file diff --git a/src/package.json b/src/package.json index cb0442c..bc4881c 100644 --- a/src/package.json +++ b/src/package.json @@ -2,13 +2,14 @@ "name": "bot-telegram_zaboal-employment", "version": "0.0.1", "description": "Бот в Telegram для трудоустройства в ИТ-студию Зажигина.", - "main": "index.ts", + "main": "bot.ts", "scripts": { - "start": "ts-node index.ts" + "start": "ts-node bot.ts" }, "author": "Зажигин Богдан Алексеевич ", "dependencies": { - "grammy": "1.12.0" + "grammy": "1.12.0", + "sqlite3": "5.1.2" }, "devDependencies": { "ts-node": "^10.9.1", diff --git a/src/sqlite.ts b/src/sqlite.ts new file mode 100644 index 0000000..e69de29 diff --git a/start.sh b/start.sh index 9f1b621..c1708d9 100644 --- a/start.sh +++ b/start.sh @@ -1,3 +1,3 @@ # Сборка и запуск контейнера Docker docker build src -t bot-telegram_zaboal-employment; -docker run bot-telegram_zaboal-employment; \ No newline at end of file +docker run -v /home/zaboal/work/organizations/zazhigin-s_it-studio/databases/local_organizational-structure.db:/usr/src/app/dbase.db bot-telegram_zaboal-employment; \ No newline at end of file