База данных кое-как заполняется

This commit is contained in:
bogdan zažigin 2022-12-03 20:57:57 +03:00
parent baf2e2561a
commit f81fb60969
8 changed files with 58 additions and 43 deletions

View file

@ -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`», отвечая первой подсказкой для пользователя на последующие действия, а на вторую, тем что команда ещё в действительности свои функции не выполняет. Официально запускается от имени [@emp_zaboal_bot](https://emp_zaboal_bot.t.me) и администрируется [Богданом](https://zaboal.t.me). Руководство по запуску описано в [`docs/start.md`](start.md).
## Запуск бота
Для запуска требуются 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
```

8
docs/start.md Normal file
View file

@ -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
```

41
src/bot.ts Normal file
View file

@ -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();

View file

@ -5,7 +5,7 @@ WORKDIR /usr/src/app
COPY package.json . COPY package.json .
RUN npm install RUN npm install
COPY index.ts . COPY bot.ts .
# Требуемые переменные окружения # Требуемые переменные окружения

View file

@ -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();

View file

@ -2,13 +2,14 @@
"name": "bot-telegram_zaboal-employment", "name": "bot-telegram_zaboal-employment",
"version": "0.0.1", "version": "0.0.1",
"description": "Бот в Telegram для трудоустройства в ИТ-студию Зажигина.", "description": "Бот в Telegram для трудоустройства в ИТ-студию Зажигина.",
"main": "index.ts", "main": "bot.ts",
"scripts": { "scripts": {
"start": "ts-node index.ts" "start": "ts-node bot.ts"
}, },
"author": "Зажигин Богдан Алексеевич <za.boal@vk.com>", "author": "Зажигин Богдан Алексеевич <za.boal@vk.com>",
"dependencies": { "dependencies": {
"grammy": "1.12.0" "grammy": "1.12.0",
"sqlite3": "5.1.2"
}, },
"devDependencies": { "devDependencies": {
"ts-node": "^10.9.1", "ts-node": "^10.9.1",

0
src/sqlite.ts Normal file
View file

View file

@ -1,3 +1,3 @@
# Сборка и запуск контейнера Docker # Сборка и запуск контейнера Docker
docker build src -t bot-telegram_zaboal-employment; docker build src -t bot-telegram_zaboal-employment;
docker run bot-telegram_zaboal-employment; 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;