Работающая версия с подключённой БД

This commit is contained in:
bogdan zažigin 2022-11-27 12:29:54 +03:00
parent a10eb7e3fa
commit bd423007f5
6 changed files with 60 additions and 21 deletions

17
dockerfile Normal file
View file

@ -0,0 +1,17 @@
FROM node:lts-buster-slim
WORKDIR /usr/src/app
COPY src/package.json .
RUN npm install
COPY src/app.js .
# Требуемые переменные окружения
# Токен бота Telegram от бота @BotFather
ENV BOT_TOKEN=""
# Путь к базе данных внутри контейнера, монтируется из файловой системы хоста
ENV DB_PATH="./dbase.db"
CMD npm run start

16
docs/readme.md Normal file
View file

@ -0,0 +1,16 @@
# Бот в Telegram для трудоустройства
Бот основан на фреймворке [Telegraf](https://www.npmjs.com/package/telegraf) под Telegram API для NodeJS. Предназначен для запуска в контейнере Docker, файл сборки можно видеть под названием `dockerfile`. Главный метод запуска проекта — через bash файл `start.sh` от имени администратора.
На данный момент бот поддерживает только команду `/start`, отвечая на неё подсказкой для пользователя на последующие действия. Но с одной командой делать то и нечего.
## Запуск
Для запуска требуются 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
```

21
src/app.js Normal file
View file

@ -0,0 +1,21 @@
const sqlite3 = require('sqlite3').verbose();
const db = new sqlite3.Database(process.env.DB_PATH, sqlite3.OPEN_READWRITE);
const { Telegraf } = require('telegraf');
const bot = new Telegraf(process.env.BOT_TOKEN);
bot.command("start", (ctx) => { // Команда инициации диалога, инструктирование первых шагов
ctx.reply("Список команд доступен в сплывающем меню от знака «/» в поле ввода сообщения. Если Вы ещё не зарегистрированы в системе, сделайте это в первую очередь по команде /register.")
});
bot.launch();
// Нормальная остановка работы проекта
process.once('SIGINT', () => {
bot.stop('SIGINT');
});
process.once('SIGTERM', () => {
bot.stop('SIGTERM');
});

View file

@ -1,17 +0,0 @@
const { Telegraf } = require('telegraf');
const bot = new Telegraf(process.env.BOT_TOKEN);
bot.command("start", (ctx) => // Команда инициации диалога, инструктирование первых шагов
ctx.reply("Список доступных команд доступен по кнопке слева от поля ввода сообщения. Если Вы ещё не зарегистрированы в системе, сделайте это в первую очередь по команде /register.")
)
bot.command("register", (ctx) => // Команда регистрации в схеме базы данных организационной структуры
ctx.reply("Это команда регистрации. Она пока не работает.")
)
bot.launch();
// Нормальная остановка работы бота
process.once('SIGINT', () => bot.stop('SIGINT'));
process.once('SIGTERM', () => bot.stop('SIGTERM'));

View file

@ -1,14 +1,13 @@
{ {
"name": "bot-telegram_employment_in_zaboal-s_it-studio", "name": "bot-telegram_employment_in_zaboal-s_it-studio",
"version": "0",
"description": "Бот в Telegram для трудоустройства соискателей в ИТ-студию Зажигина", "description": "Бот в Telegram для трудоустройства соискателей в ИТ-студию Зажигина",
"author": "Богдан Зажигин <za.boal@vk.com>", "author": "Богдан Зажигин <za.boal@vk.com>",
"main": "main.js", "main": "app.js",
"scripts": { "scripts": {
"start": "node main.js" "start": "node app.js"
}, },
"dependencies": { "dependencies": {
"sqlite": "4.1.2", "sqlite3": "5.1.2",
"telegraf": "4.11.2" "telegraf": "4.11.2"
} }
} }

3
start.sh Normal file
View file

@ -0,0 +1,3 @@
# Запуск
docker build . -t zaboal/bot-telegram_employment;
docker container run -v /home/zaboal/work/organizations/zazhigin-s_it-studio/databases/local_organizational-structure.db:/usr/src/app/dbase.db zaboal/bot-telegram_employment