Начало работы
Сначала мы создаем каталог, в котором будет храниться сам бот.
Здесь мы инициализируем npm.
npm init
Используемые модули
В разработке буду использовать TypeScript и библиотеку СлимБот .
Для установки SlimBot пишем: npm install slimbot
Мы также создаем файл tsconfig.json для TypeScript с помощью этого кода: {
"compilerOptions": {
"outDir": ".
/app/", "target": "ES6" }, "include": [ ".
/ts/*"
]
}
Как мы видим, все файлы .
ts будут храниться в папке ts, а наш скомпилированный код бота — в папке приложения.
Поэтому создаем папки ts и app: mkdir ts app
Теперь наша папка выглядит так:
Давайте начнем кодировать
В папке ts создайте файл Config.ts со следующим кодом: const config = {
token: "",
nameBot: "Math Bot",
nameBotShort: "MB"
}
export { config };
Токен мы видим, но он пустой, так как мы его еще не получили и сам телеграм-бот не создали.
Для этого зайдите к @BotFather и создайте с ним бота.
Мы получили токен — 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);
});
Компилируем, запускаем нашего бота и смотрим.
Все работает идеально.
Теперь нам нужно научить его математическим выражениям, для этого мы можем использовать 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
-
Интернет – Это Не Все Для Всех
19 Oct, 24 -
Вычисления В Промышленности
19 Oct, 24 -
Потоковое Аудио Стало Проще
19 Oct, 24 -
Арон, Реймон
19 Oct, 24 -
Борн, Макс
19 Oct, 24 -
Как Подключить Icloud К Gmail Без Ошибок?
19 Oct, 24 -
Выбор Usb-Флеш-Накопителя
19 Oct, 24