From bd423007f56465152e67585a2d39f1d090e615b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=97=D0=B0=D0=B6=D0=B8=D0=B3=D0=B8=D0=BD=20=D0=91=D0=BE?= =?UTF-8?q?=D0=B3=D0=B4=D0=B0=D0=BD=20=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5?= =?UTF-8?q?=D0=B5=D0=B2=D0=B8=D1=87?= Date: Sun, 27 Nov 2022 12:29:54 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=D1=8E?= =?UTF-8?q?=D1=89=D0=B0=D1=8F=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D1=8F=20?= =?UTF-8?q?=D1=81=20=D0=BF=D0=BE=D0=B4=D0=BA=D0=BB=D1=8E=D1=87=D1=91=D0=BD?= =?UTF-8?q?=D0=BD=D0=BE=D0=B9=20=D0=91=D0=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dockerfile | 17 +++++++++++++++++ docs/readme.md | 16 ++++++++++++++++ src/app.js | 21 +++++++++++++++++++++ src/main.js | 17 ----------------- src/package.json | 7 +++---- start.sh | 3 +++ 6 files changed, 60 insertions(+), 21 deletions(-) create mode 100644 dockerfile create mode 100644 docs/readme.md create mode 100644 src/app.js delete mode 100644 src/main.js create mode 100644 start.sh diff --git a/dockerfile b/dockerfile new file mode 100644 index 0000000..433f29c --- /dev/null +++ b/dockerfile @@ -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 \ No newline at end of file diff --git a/docs/readme.md b/docs/readme.md new file mode 100644 index 0000000..ce924d3 --- /dev/null +++ b/docs/readme.md @@ -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 +``` + diff --git a/src/app.js b/src/app.js new file mode 100644 index 0000000..f433c49 --- /dev/null +++ b/src/app.js @@ -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'); +}); \ No newline at end of file diff --git a/src/main.js b/src/main.js deleted file mode 100644 index 7efc63c..0000000 --- a/src/main.js +++ /dev/null @@ -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')); \ No newline at end of file diff --git a/src/package.json b/src/package.json index 49b75fe..1d3d5fc 100644 --- a/src/package.json +++ b/src/package.json @@ -1,14 +1,13 @@ { "name": "bot-telegram_employment_in_zaboal-s_it-studio", - "version": "0", "description": "Бот в Telegram для трудоустройства соискателей в ИТ-студию Зажигина", "author": "Богдан Зажигин ", - "main": "main.js", + "main": "app.js", "scripts": { - "start": "node main.js" + "start": "node app.js" }, "dependencies": { - "sqlite": "4.1.2", + "sqlite3": "5.1.2", "telegraf": "4.11.2" } } \ No newline at end of file diff --git a/start.sh b/start.sh new file mode 100644 index 0000000..a0d48c7 --- /dev/null +++ b/start.sh @@ -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 \ No newline at end of file