Nodejs Бот Для Telegram С Обработкой Математических Выражений



Начало работы Сначала мы создаем каталог, в котором будет храниться сам бот.

NodeJS Бот для Telegram с обработкой математических выражений

Здесь мы инициализируем npm.

  
  
  
  
  
  
  
  
  
   

npm init



NodeJS Бот для Telegram с обработкой математических выражений



Используемые модули

В разработке буду использовать TypeScript и библиотеку СлимБот .

Для установки SlimBot пишем:

npm install slimbot

Мы также создаем файл tsconfig.json для TypeScript с помощью этого кода:

{ "compilerOptions": { "outDir": ".

/app/", "target": "ES6" }, "include": [ ".

/ts/*" ] }

Как мы видим, все файлы .

ts будут храниться в папке ts, а наш скомпилированный код бота — в папке приложения.

Поэтому создаем папки ts и app:

mkdir ts app

Теперь наша папка выглядит так:

NodeJS Бот для Telegram с обработкой математических выражений



Давайте начнем кодировать

В папке ts создайте файл Config.ts со следующим кодом:

const config = { token: "", nameBot: "Math Bot", nameBotShort: "MB" } export { config };

Токен мы видим, но он пустой, так как мы его еще не получили и сам телеграм-бот не создали.

Для этого зайдите к @BotFather и создайте с ним бота.



NodeJS Бот для Telegram с обработкой математических выражений



NodeJS Бот для Telegram с обработкой математических выражений

Мы получили токен — 1150111738:AAGs6yfHbDIhgOJVu7LocOqwDYxHrHp2MgM. Теперь добавим это в нашу конфигурацию.

Когда у нас есть конфигурация, токен и бот, мы можем создать основной файл контроллера.

ts. Он примет все запросы.

В контроллере.

ts пишем такой код:

import { config } from '.

/Config'; import Slimbot from 'slimbot'; const slimbot:Slimbot = new Slimbot(config.token); slimbot.on('message', (message)=>{ console.log(message); }); slimbot.startPolling();

Если вы все сделали правильно, то когда вы пишете сообщение, оно отправляется на нашу консоль в виде JS-объекта:

{ message_id: 1, from: { id: 866278523, is_bot: false, first_name: 'Andrey', last_name: 'Pavlov', username: 'Semi4', language_code: 'ru' }, chat: { id: 866278523, first_name: 'Andrey', last_name: 'Pavlov', username: 'Semi4', type: 'private' }, date: 1593329677, text: '/start', entities: [ { offset: 0, length: 6, type: 'bot_command' } ] }

Объект представлен следующими значениями: from - информация из какого профиля было отправлено сообщение, Chat - информация из какого чата было отправлено сообщение, message_id - что это за сообщение (подсчет сообщений бота), date - время в Формат UNIX, текст: текст сообщения и сущности — информация о тексте сообщения, длине, смещении, типе.

Отсюда извлекаем идентификатор чата и само сообщение.

Мы также отправляем идентичное сообщение пользователю:

slimbot.on('message', (message)=>{ const ID = message.chat.id; let text = message.text; slimbot.sendMessage(ID, text); });

Компилируем, запускаем нашего бота и смотрим.



NodeJS Бот для Telegram с обработкой математических выражений

Все работает идеально.

Теперь нам нужно научить его математическим выражениям, для этого мы можем использовать eval, но он компилирует код, а это значит, что если пользователь знает js, то он может получить все данные, используя, например, файловую систему.

Поэтому мы будем использовать библиотеку Формула Соединять:

import formula from 'formula'; const { run } = formula;

И обновите обработчик сообщения:

slimbot.on('message', (message)=>{ const ID = message.chat.id; let text = message.text; slimbot.sendMessage(ID, run(text)); });

Запускаем, вуаля! Вы пишете боту математическое выражение, и он ответит.


CBStudio & копия 2020 Теги: #api #Telegram #bot #node.js #typescript #math #formula
Вместе с данным постом часто просматривают: