From 3443f093e9db6e9ed6c8a10809ae93875a8dd758 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 20:45:14 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=B2=D0=BE=D0=B4=20?= =?UTF-8?q?=D0=BD=D0=B0=20TypeScript=20=D0=B1=D0=B5=D0=B7=20=D0=BF=D0=BE?= =?UTF-8?q?=D0=B4=D0=B4=D0=B5=D1=80=D0=B6=D0=BA=D0=B8=20=D0=91=D0=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/readme.md | 9 ++++----- src/app.js | 21 --------------------- dockerfile => src/dockerfile | 4 ++-- src/index.ts | 12 ++++++++++++ src/package.json | 19 ++++++++++++------- src/tsconfig.json | 14 ++++++++++++++ start.sh | 4 ++-- 7 files changed, 46 insertions(+), 37 deletions(-) delete mode 100644 src/app.js rename dockerfile => src/dockerfile (86%) create mode 100644 src/index.ts create mode 100644 src/tsconfig.json diff --git a/docs/readme.md b/docs/readme.md index ce924d3..bf10e13 100644 --- a/docs/readme.md +++ b/docs/readme.md @@ -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 -``` - +``` \ No newline at end of file diff --git a/src/app.js b/src/app.js deleted file mode 100644 index f433c49..0000000 --- a/src/app.js +++ /dev/null @@ -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'); -}); \ No newline at end of file diff --git a/dockerfile b/src/dockerfile similarity index 86% rename from dockerfile rename to src/dockerfile index 433f29c..8dde8d9 100644 --- a/dockerfile +++ b/src/dockerfile @@ -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 . # Требуемые переменные окружения diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..1e930b3 --- /dev/null +++ b/src/index.ts @@ -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(); \ No newline at end of file diff --git a/src/package.json b/src/package.json index 1d3d5fc..cb0442c 100644 --- a/src/package.json +++ b/src/package.json @@ -1,13 +1,18 @@ { - "name": "bot-telegram_employment_in_zaboal-s_it-studio", - "description": "Бот в Telegram для трудоустройства соискателей в ИТ-студию Зажигина", - "author": "Богдан Зажигин ", - "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": "Зажигин Богдан Алексеевич ", "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" } } \ No newline at end of file diff --git a/src/tsconfig.json b/src/tsconfig.json new file mode 100644 index 0000000..4a6db86 --- /dev/null +++ b/src/tsconfig.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "target": "ES2021", + "lib": [ + "ES2021" + ], + "module": "commonjs", + "rootDir": "./", + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "strict": true, + "skipLibCheck": true + } +} \ No newline at end of file diff --git a/start.sh b/start.sh index a0d48c7..bb33a01 100644 --- a/start.sh +++ b/start.sh @@ -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 \ No newline at end of file