База данных кое-как заполняется
This commit is contained in:
parent
baf2e2561a
commit
f81fb60969
8 changed files with 58 additions and 43 deletions
|
@ -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
8
docs/start.md
Normal 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
41
src/bot.ts
Normal 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();
|
|
@ -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 .
|
||||||
|
|
||||||
|
|
||||||
# Требуемые переменные окружения
|
# Требуемые переменные окружения
|
||||||
|
|
25
src/index.ts
25
src/index.ts
|
@ -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();
|
|
|
@ -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
0
src/sqlite.ts
Normal file
2
start.sh
2
start.sh
|
@ -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;
|
Loading…
Add table
Reference in a new issue