Перевод на TypeScript без поддержки БД

This commit is contained in:
bogdan zažigin 2022-11-27 20:45:14 +03:00
parent bd423007f5
commit 3443f093e9
7 changed files with 46 additions and 37 deletions

View file

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

View file

@ -1,21 +0,0 @@
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

@ -2,10 +2,10 @@ FROM node:lts-buster-slim
WORKDIR /usr/src/app
COPY src/package.json .
COPY package.json .
RUN npm install
COPY src/app.js .
COPY index.ts .
# Требуемые переменные окружения

12
src/index.ts Normal file
View file

@ -0,0 +1,12 @@
import { Bot } from "grammy";
const bot = new Bot(`${process.env.BOT_TOKEN}`);
bot.command("start", (ctx) => {
ctx.reply("Список команд доступен в сплывающем меню от знака «/» в поле ввода сообщения. Если Вы ещё не зарегистрированы в системе, сделайте это в первую очередь по команде /register.");});
bot.command("register", (ctx) => {
ctx.reply("Данная команда на данный момент не работает.");});
bot.start();

View file

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

14
src/tsconfig.json Normal file
View file

@ -0,0 +1,14 @@
{
"compilerOptions": {
"target": "ES2021",
"lib": [
"ES2021"
],
"module": "commonjs",
"rootDir": "./",
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"strict": true,
"skipLibCheck": true
}
}

View file

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