Работающая версия с подключённой БД
This commit is contained in:
parent
a10eb7e3fa
commit
bd423007f5
6 changed files with 60 additions and 21 deletions
17
dockerfile
Normal file
17
dockerfile
Normal 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
16
docs/readme.md
Normal 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
21
src/app.js
Normal 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');
|
||||||
|
});
|
17
src/main.js
17
src/main.js
|
@ -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'));
|
|
|
@ -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
3
start.sh
Normal 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
|
Loading…
Add table
Reference in a new issue