NodeJS Bot untuk Telegram dengan memproses ekspresi matematika

Awal pekerjaan



Pertama, kita membuat direktori tempat bot itu sendiri akan disimpan.



Direktori kosong dengan bot



Di sini kita menginisialisasi npm.



npm init


Inisialisasi Npm



Modul yang digunakan



Dalam pengembangan, saya akan menggunakan TypeScript dan perpustakaan SlimBot .



Untuk menginstal SlimBot, kami meresepkan:



npm install slimbot


Kami juga membuat file tsconfig.json untuk TypeScript dengan kode yang diberikan:



{
    "compilerOptions": {
        "outDir": "./app/",
        "target": "ES6"
    },
    "include": [
        "./ts/*"
    ]
}


Seperti yang bisa kita lihat, semua file .ts akan disimpan dalam folder ts, dan kode bot yang dikompilasi akan terkandung dalam folder aplikasi. Oleh karena itu, kami membuat ts dan folder aplikasi:



mkdir ts app


Folder kami sekarang terlihat seperti ini:



gambar



Mari mulai coding



Di folder ts, buat file Config.ts dengan kode yang diberikan:



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


Kami melihat token, tetapi kosong, karena kami belum menerimanya dan belum membuat bot itu sendiri di telegram. Untuk melakukan ini, buka @BotFather dan buat bot untuk itu.



gambargambar



Kami menerima token - 1150111738: AAGs6yfHbDIhgOJVu7LocOqwDYxHrHp2MgM. Sekarang mari kita letakkan di config kita.



Setelah kita memiliki config, token dan bot, kita dapat membuat file controller.ts utama. Dia akan menerima semua permintaan. Tulis kode ini di controller.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();


Jika Anda melakukan semuanya dengan benar, maka saat menulis pesan, pesan itu dikirim ke konsol kami sebagai objek 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' } ]
}


Objek disajikan dari nilai-nilai berikut: dari - informasi dari profil mana pesan dikirim, obrolan - informasi dari mana obrolan pesan dikirim, message_id - akun mana (bot's read message) adalah pesan, tanggal - waktu dalam format UNIX, teks: teks pesan dan entitas - informasi tentang teks pesan, panjang, offset, jenis.



Dari sini kami mengekstrak ID obrolan dan pesan itu sendiri. Kami juga mengirim pesan yang identik kepada pengguna:



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


Kompilasi, jalankan bot dan tontonan kami.



gambar



Semuanya bekerja dengan sempurna. Sekarang kita perlu melatihnya dalam ekspresi matematika, untuk ini kita dapat menggunakan eval, tetapi dia mengkompilasi kode, yang berarti bahwa jika pengguna tahu js dia bisa mendapatkan semua data menggunakan misalnya sistem file. Oleh karena itu, kita akan menggunakan Formula



library.Connect:



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


Dan perbarui penangan pesan:



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


Mari kita mulai, voila! Anda menulis ekspresi matematika ke bot dan itu adalah jawabannya.






CBStudio & salin 2020



All Articles