Rumah > hujung hadapan web > tutorial js > Cara Membina Chatbot Telegram Pertama Anda Dengan Node.js

Cara Membina Chatbot Telegram Pertama Anda Dengan Node.js

Jennifer Aniston
Lepaskan: 2025-02-14 08:28:11
asal
860 orang telah melayarinya

Cara Membina Chatbot Telegram Pertama Anda Dengan Node.js

Jadi, pagi ini anda bangun dengan idea untuk membangunkan cara untuk menyimpan dan melabel artikel menarik yang telah anda baca. Setelah bermain dengan idea itu, anda memikirkan chatbot telegram adalah penyelesaian yang paling mudah untuk masalah ini.

Dalam panduan ini, kami akan memandu anda melalui semua yang anda perlu tahu untuk membina chatbot Telegram pertama anda menggunakan JavaScript dan Node.js.

Untuk bermula, kita perlu mendaftarkan bot baru kami dengan apa yang dipanggil botfather untuk menerima token akses API kami.

Takeaways Key

    Daftar bot anda dengan botfather di telegram untuk mendapatkan token akses API, yang diperlukan untuk menjalankan kod bot.
  • Gunakan javascript dan node.js untuk kod bot anda. Tutorial menggunakan projek node.js mudah dengan dua kebergantungan: dotenv dan node-telegram-bot-api.
  • Buat arahan bot dengan lulus token akses API dan menetapkan pilihan pengundian untuk benar. Ini membolehkan bot untuk memeriksa mesej masuk secara berkala.
  • Terokai pilihan lanjutan seperti menghantar papan kekunci dengan pilihan yang telah ditetapkan. Anda juga boleh meminta data, seperti nombor telefon atau geolokasi seseorang.
  • Untuk menggunakan bot anda, anda boleh menggunakan platform awan seperti Heroku, AWS, dan Google Cloud, atau penyedia hosting tradisional. Proses yang tepat akan bergantung pada platform yang anda pilih.
pendaftaran bot dengan @botfather

Langkah pertama ke arah bot Telegram kami sendiri adalah mendaftarkan bot dengan botfather. Botfather adalah bot itu sendiri yang menjadikan hidup anda lebih mudah. Ia membantu anda dengan mendaftarkan bot, mengubah keterangan bot, menambah arahan, dan memberikan anda token API untuk bot anda.

Token API adalah langkah yang paling penting, kerana ini membolehkan anda menjalankan kod yang dapat melaksanakan tugas untuk bot.

1. Mencari botfather

Botfather boleh didapati di telegram dengan mencari 'botfather'. Klik pada botfather rasmi, ditunjukkan dengan ikon tanda semak putih dalam bulatan biru.

Cara Membina Chatbot Telegram Pertama Anda Dengan Node.js 2. Mendaftarkan bot baru

Sekarang kita telah menemui Botfather, mari kita bercakap dengannya! Anda boleh memulakan perbualan dengan menaip /Newbot. Botfather akan meminta anda memilih nama untuk kedua -duanya. Nama ini boleh menjadi apa -apa dan tidak perlu unik. Untuk menjaga perkara yang mudah, saya menamakan artikel bot saya.

Seterusnya, anda akan diminta untuk memasukkan nama pengguna untuk bot. Nama pengguna mestilah unik dan berakhir dalam bot. Oleh itu, saya memilih michiel_article_bot, kerana nama pengguna itu belum diambil. Ini juga akan menjadi nama pengguna yang anda gunakan untuk mencari bot dalam medan carian Telegram.

Cara Membina Chatbot Telegram Pertama Anda Dengan Node.js

Bapabot akan mengembalikan mesej kejayaan dengan token anda untuk mengakses Telegram HTTP API. Pastikan untuk menyimpan token ini dengan selamat, dan pastinya tidak berkongsi dengan orang lain.

Cara Membina Chatbot Telegram Pertama Anda Dengan Node.js

3. Mengubah Bot

kita dapat mengubah suai bot lagi dengan menambahkan keterangan atau menetapkan perintah yang kita ingin bot tahu. Anda boleh mesej bot dengan teks /setcommands. Ia akan menunjukkan kepada anda cara memasukkan arahan dengan format Command1 - Description.

Untuk bot saya, saya menetapkan penanda buku perintah - simpan artikel yang menarik url.

Cara Membina Chatbot Telegram Pertama Anda Dengan Node.js

Jika anda melihat bot anda sekarang, anda akan melihat ikon perintah di kotak sembang yang menunjukkan arahan yang ada. Anda boleh membuat lebih banyak arahan yang berfungsi dan tidak menyenaraikannya melalui Botfather. Walau bagaimanapun, dari sudut pandangan UX, saya cadangkan mendaftarkan semua arahan yang ada dengan Botfather.

Cara Membina Chatbot Telegram Pertama Anda Dengan Node.js

kita boleh menetapkan privasi bot dengan /setprivacy. Anda boleh mengaktifkan atau melumpuhkannya. Secara lalai, nilai privasi ditetapkan untuk didayakan, yang bermaksud bot anda hanya akan menerima mesej yang bermula dengan simbol atau dengan menyebut nama pengguna bot.

Tetapan ini boleh dilumpuhkan yang bermaksud bahawa bot anda boleh menerima semua mesej yang dihantar ke kumpulan. Anda perlu menambah bot ke kumpulan anda untuk menerima semua mesej ini.

Cara Membina Chatbot Telegram Pertama Anda Dengan Node.js

Senarai semua arahan yang ada boleh didapati di sini:

Cara Membina Chatbot Telegram Pertama Anda Dengan Node.js

Akhirnya, kita bersedia untuk memulakan pengekodan. Pastikan anda mempunyai token akses API siap.

pengekodan arahan bot pertama anda

Pertama sekali, semasa tutorial ini, kami akan menggunakan kod berikut yang telah saya sediakan.

Ia adalah projek node.js mudah yang hanya mempunyai dua kebergantungan: dotenv dan node-telegram-bot-api. Pakej pertama digunakan untuk membuat fail konfigurasi .Env yang akan memegang token akses API kami. Pakej kedua bertindak sebagai pembalut node.js untuk API Bot Telegram, yang akan kami gunakan untuk tutorial ini.

1. Menyediakan projek

Untuk memulakan, klon repositori GitHub dan buka projek dalam editor kegemaran anda. Seterusnya, buat fail .env dalam akar projek anda dan tambahkan satu baris - token = yourtoken. Gantikan anda dengan token yang anda terima dari Botfather.

Untuk memastikan sambungan berfungsi, menavigasi ke akar projek di terminal anda dan jalankan NPM bermula. Perintah permulaan NPM akan menjalankan fail app.js anda dan harus menyambung ke bot anda. Jika anda tidak melihat apa -apa kesilapan, kami baik untuk pergi!

2. Buat arahan bot pertama

Pertama sekali, kita perlu membuat bot dengan lulus token akses API kami dan menetapkan pilihan pengundian untuk benar. Ini bermakna bot akan menyemak mesej masuk secara berkala.

<span>require('dotenv').config();
</span><span>const TelegramBot = require('node-telegram-bot-api');
</span>
<span>const token = process.env.TOKEN;
</span>
<span>// Created instance of TelegramBot
</span><span>const bot = new TelegramBot(token, {
</span>   <span>polling: true
</span><span>});
</span>
Salin selepas log masuk
Salin selepas log masuk

Sekarang bot telah dibuat, mari kita lihat coretan kod berikut yang mewakili perintah /penanda buku kami. Kami menetapkan pendengar untuk mesej teks yang masuk, Ontext, dan tentukan untuk mencari mesej yang bermula dengan /penanda buku, seperti yang kita nyatakan dalam rentetan regex.

Apabila mesej bermula dengan /penanda buku, kod kami akan dilaksanakan. Pertama sekali, kami menyimpan ID sembang, kerana kami ingin menghantar mesej kembali ke sembang pengguna ini.

Seterusnya, kami periksa sama ada pengguna telah menggunakan arahan dengan betul. Kami mengharapkan URL diluluskan dengan arahan seperti ini: /bookmark www.google.com.

Jika tidak ada URL yang ditentukan, kami menghantar mesej kembali ke CHATID yang disimpan memberitahu pengguna untuk memberi kami URL. Jika mereka menghantar URL, kami menyimpan URL dan menghantar mesej kejayaan mereka.

<span>// Listener (handler) for telegram's /bookmark event
</span>bot<span>.onText(<span>/<span>\/bookmark</span>/</span>, (msg<span>, match</span>) => {
</span>   <span>const chatId = msg.chat.id;
</span>   <span>const url = match.input.split(' ')[1];
</span>   <span>// 'msg' is the received Message from Telegram
</span>   <span>// 'match' is the result of executing the regexp above on the text content
</span>   <span>// of the message
</span>
   <span>if (url === undefined) {
</span>       bot<span>.sendMessage(
</span>           chatId<span>,
</span>           <span>'Please provide URL of article!',
</span>       <span>);
</span>       <span>return;
</span>   <span>}
</span>
   <span>URLs.push(url);
</span>   bot<span>.sendMessage(
</span>       chatId<span>,
</span>       <span>'URL has been successfully saved!',
</span>   <span>);
</span><span>});
</span>
Salin selepas log masuk
Salin selepas log masuk

anda mungkin perasan kami menggunakan dua parameter untuk fungsi panggil balik Msg dan perlawanan. Harta MSG mewakili mesej penuh yang anda terima sedangkan perlawanan mewakili hasil dari ungkapan biasa yang telah kami tentukan. Imej di bawah menunjukkan anda MSG penuh, dan selepas ---- ia menunjukkan perlawanan.

Cara Membina Chatbot Telegram Pertama Anda Dengan Node.js

Apabila kami mencuba perintah kami dalam sembang dengan bot, kami menerima hasil berikut:

Cara Membina Chatbot Telegram Pertama Anda Dengan Node.js

Jika anda melihat hasil yang sama, tahniah! Anda baru sahaja membuat arahan bot pertama anda. Mari kita lihat pilihan yang lebih maju seperti menghantar papan kekunci dengan pilihan yang telah ditetapkan.

3. Pilihan papan kekunci

Sekarang kita tahu bagaimana untuk membuat arahan tersuai, mari kita lihat lebih mendalam pada pilihan papan kekunci. Adalah mungkin untuk menghantar papan kekunci yang telah ditetapkan dengan arahan anda untuk mengehadkan pilihan pengguna. Ia boleh semudah menyekat pengguna untuk menjawab dengan ya atau tidak

3.1 Papan kekunci biasa

Mari kita lihat coretan kod berikut. Kami telah menambah parameter ketiga ke fungsi bot.sendmessage kami. Objek ini mentakrifkan pilihan untuk papan kekunci kami. Jika anda melihat lebih dekat di Reply_markup.Keyboard, anda dapati array yang mengandungi lebih banyak tatasusunan. Setiap array di sini mewakili baris dengan pilihan. Ini membantu anda dengan pilihan pemformatan yang lebih penting atau mempunyai teks butang yang lebih lama.

<span>// Listener (handler) for showcasing different keyboard layout
</span>bot<span>.onText(<span>/<span>\/keyboard</span>/</span>, (msg) => {
</span>   bot<span>.sendMessage(msg.chat.id, 'Alternative keybaord layout', {
</span>       <span>'reply_markup': {
</span>           <span>'keyboard': [['Sample text', 'Second sample'], ['Keyboard'], ['I\'m robot']],
</span>           <span>resize_keyboard: true,
</span>           <span>one_time_keyboard: true,
</span>           <span>force_reply: true,
</span>       <span>}
</span>   <span>});
</span><span>});
</span>
Salin selepas log masuk
Salin selepas log masuk

Kod ini memberikan hasil berikut apabila menghantar mesej /papan kekunci ke bot kami.

Cara Membina Chatbot Telegram Pertama Anda Dengan Node.js

Selanjutnya, kita juga boleh menentukan papan kekunci sebaris dengan data tambahan setiap pilihan.

3.1 Keyboard inline

Papan kekunci sebaris akan ditunjukkan dalam sembang, dan tidak di bawah kotak input mesej anda. Seperti yang kita mahu melabelkan URL yang kita serahkan, kita boleh melakukan ini dengan menunjukkan pengguna kategori yang tersedia. Ini adalah bagaimana papan kekunci kami kelihatan sekarang:

Cara Membina Chatbot Telegram Pertama Anda Dengan Node.js

Mari kita lihat kod di bawahnya. Reply_markup kini mentakrifkan harta inline_keyboard. Selebihnya markup tetap sama. Setiap array mewakili baris. Walau bagaimanapun, bukannya hanya lulus teks, kita juga boleh lulus objek dengan teks dan callback_data untuk mengetahui pilihan apa yang telah anda pilih.

<span>require('dotenv').config();
</span><span>const TelegramBot = require('node-telegram-bot-api');
</span>
<span>const token = process.env.TOKEN;
</span>
<span>// Created instance of TelegramBot
</span><span>const bot = new TelegramBot(token, {
</span>   <span>polling: true
</span><span>});
</span>
Salin selepas log masuk
Salin selepas log masuk

Bahagian seterusnya menerangkan cara menggunakan pengendali untuk menerima data panggil balik.

3.2 Panggilan balik dari papan kekunci

Sekiranya kita mahu menerima data panggilan balik, kita perlu mendengar peristiwa jenis ini.

<span>// Listener (handler) for telegram's /bookmark event
</span>bot<span>.onText(<span>/<span>\/bookmark</span>/</span>, (msg<span>, match</span>) => {
</span>   <span>const chatId = msg.chat.id;
</span>   <span>const url = match.input.split(' ')[1];
</span>   <span>// 'msg' is the received Message from Telegram
</span>   <span>// 'match' is the result of executing the regexp above on the text content
</span>   <span>// of the message
</span>
   <span>if (url === undefined) {
</span>       bot<span>.sendMessage(
</span>           chatId<span>,
</span>           <span>'Please provide URL of article!',
</span>       <span>);
</span>       <span>return;
</span>   <span>}
</span>
   <span>URLs.push(url);
</span>   bot<span>.sendMessage(
</span>       chatId<span>,
</span>       <span>'URL has been successfully saved!',
</span>   <span>);
</span><span>});
</span>
Salin selepas log masuk
Salin selepas log masuk

Harta Mesej di CallbackQuery mengandungi keseluruhan mesej dari pengguna. Harta data mengandungi data panggil balik kategori kami.

anda mungkin telah melihat ralat reka bentuk sekarang. Bagaimana jika kita mempunyai dua arahan yang menghantar semula data panggilan balik? Anda mungkin mendapat tingkah laku atau balasan yang sangat pelik.

Oleh itu, adalah disyorkan untuk menghantar semula objek JSON yang tersendiri yang juga memegang label untuk mengenal pasti yang memerintah data panggilan balik. Lihatlah amalan terbaik berikut:

<span>// Listener (handler) for showcasing different keyboard layout
</span>bot<span>.onText(<span>/<span>\/keyboard</span>/</span>, (msg) => {
</span>   bot<span>.sendMessage(msg.chat.id, 'Alternative keybaord layout', {
</span>       <span>'reply_markup': {
</span>           <span>'keyboard': [['Sample text', 'Second sample'], ['Keyboard'], ['I\'m robot']],
</span>           <span>resize_keyboard: true,
</span>           <span>one_time_keyboard: true,
</span>           <span>force_reply: true,
</span>       <span>}
</span>   <span>});
</span><span>});
</span>
Salin selepas log masuk
Salin selepas log masuk
anda boleh menggunakan data dari pilihan arahan untuk beralih ke logik perniagaan tertentu arahan ini.

Kami sedang dalam perjalanan untuk menjadi Telegram Bot Jedis. Untuk menjadi tuan yang dipelajari sepenuhnya, mari kita meneroka permintaan data.

3.3 Permintaan Data - Nombor Telefon

Adalah mungkin untuk meminta data, seperti nombor telefon seseorang atau geolokasi. Untuk tutorial ini, kami mempamerkan cara meminta nombor telefon dengan papan kekunci alternatif.

<span>// Listener (handler) for telegram's /label event
</span>bot<span>.onText(<span>/<span>\/label</span>/</span>, (msg<span>, match</span>) => {
</span>   <span>const chatId = msg.chat.id;
</span>   <span>const url = match.input.split(' ')[1];
</span>
   <span>if (url === undefined) {
</span>       bot<span>.sendMessage(
</span>           chatId<span>,
</span>           <span>'Please provide URL of article!',
</span>       <span>);
</span>       <span>return;
</span>   <span>}
</span>
   tempSiteURL <span>= url;
</span>   bot<span>.sendMessage(
</span>       chatId<span>,
</span>       <span>'URL has been successfully saved!',
</span>       <span>{
</span>           <span>reply_markup: {
</span>               <span>inline_keyboard: [[
</span>                   <span>{
</span>                       <span>text: 'Development',
</span>                       <span>callback_data: 'development'
</span>                   <span>}, {
</span>                       <span>text: 'Lifestyle',
</span>                       <span>callback_data: 'lifestyle'
</span>                   <span>}, {
</span>                       <span>text: 'Other',
</span>                       <span>callback_data: 'other'
</span>                   <span>}
</span>               <span>]]
</span>           <span>}
</span>       <span>}
</span>   <span>);
</span><span>});
</span>
Salin selepas log masuk
Pengguna akan menerima permintaan berikut dalam sembangnya:

Cara Membina Chatbot Telegram Pertama Anda Dengan Node.js Apabila anda mengklik butang nombor telefon saya, anda dapatkan permintaan nombor telefon berikut:

Cara Membina Chatbot Telegram Pertama Anda Dengan Node.js ini adalah bagaimana ia kelihatan selepas kami memberi akses:

Cara Membina Chatbot Telegram Pertama Anda Dengan Node.js Akhirnya! Anda adalah Bot Telegram yang penuh dengan Jedi. Buat masa ini, lebih banyak maklumat dan sumber boleh didapati di sini:

    perbezaan antara mesej swasta dan awam
  • pelbagai jenis peristiwa
  • tutorial oleh hosein2398 pada github
Tinggal di sini juga - kami akan kembali bulan depan dengan tutorial yang menyelidiki lebih jauh ke dalam ciri -ciri canggih Telegram API.

Soalan Lazim (Soalan Lazim) Mengenai Membina Chatbot Telegram Pertama Anda Dengan Node.js

Apakah prasyarat untuk membina chatbot telegram dengan node.js?

Untuk membina chatbot telegram dengan node.js, anda perlu mempunyai pemahaman asas tentang JavaScript dan Node.js. Anda juga perlu memasang Node.js dan NPM (Pengurus Pakej Node) pada komputer anda. Di samping itu, anda perlu membuat bot di telegram menggunakan botfather, yang akan memberi anda tanda yang anda akan gunakan untuk berinteraksi dengan API Telegram. 🎜> Botfather adalah bot di telegram yang membolehkan anda membuat bot baru. Untuk membuat bot baru, mulakan sembang dengan Botfather, kemudian ikuti arahan. Anda akan diminta memilih nama dan nama pengguna untuk bot anda. Sebaik sahaja anda telah melakukan ini, Botfather akan memberi anda token, yang anda akan gunakan untuk berinteraksi dengan API Telegram. 🎜> Untuk berinteraksi dengan API Telegram menggunakan node.js, anda boleh menggunakan pakej nod-telegram-bot-api. Pakej ini menyediakan antara muka yang mudah dan kuat untuk API Telegram. Anda boleh memasangnya menggunakan npm, kemudian memerlukannya dalam kod anda. Anda kemudian boleh membuat bot baru menggunakan token yang disediakan oleh Botfather, dan menggunakan kaedah yang disediakan oleh pakej untuk berinteraksi dengan API. Pakej Node-Telegram-Bot-API menyediakan kaedah Ontext, yang boleh anda gunakan untuk mengendalikan mesej teks yang dihantar ke bot anda. Kaedah ini mengambil ungkapan biasa dan fungsi panggil balik sebagai hujah. Fungsi panggil balik dipanggil apabila mesej yang sepadan dengan ungkapan biasa diterima. Objek Mesej diserahkan kepada fungsi panggil balik, yang boleh anda gunakan untuk membalas mesej. Gunakan kaedah SendMessage yang disediakan oleh pakej Node-Telegram-Bot-API. Kaedah ini mengambil dua hujah: ID sembang penerima, dan teks mesej. Anda boleh mendapatkan ID sembang dari objek mesej yang dihantar ke fungsi panggil balik kaedah ontext.

Bagaimana saya boleh menggunakan bot saya? Ia ke pelayan supaya ia dapat berjalan secara berterusan. Terdapat banyak pilihan untuk ini, termasuk platform awan seperti Heroku, AWS, dan Google Cloud, serta penyedia hosting tradisional. Proses yang tepat akan bergantung kepada platform yang anda pilih, tetapi secara amnya melibatkan menolak kod anda ke platform, kemudian memulakan bot menggunakan alat platform.

Bagaimana saya boleh mengendalikan pelbagai jenis mesej, seperti foto atau pelekat?

Pakej nod-telegram-bot-api menyediakan kaedah untuk mengendalikan pelbagai jenis mesej. Sebagai contoh, anda boleh menggunakan kaedah OnPhoto untuk mengendalikan mesej foto, atau kaedah onsticker untuk mengendalikan mesej pelekat. Kaedah ini berfungsi sama dengan kaedah ontext, mengambil fungsi panggil balik yang dipanggil apabila mesej jenis yang sepadan diterima. Tambah arahan tersuai ke bot anda menggunakan kaedah arahan yang disediakan oleh pakej nod-telegram-bot-api. Kaedah ini mengambil rentetan dan fungsi panggilan balik sebagai argumen. Rentetan adalah nama arahan, dan fungsi panggil balik dipanggil apabila arahan diterima. Anda boleh menggunakan objek mesej yang dihantar ke fungsi panggil balik untuk bertindak balas terhadap arahan. bidang sembang. Pakej Node-Telegram-Bot-API menyediakan kaedah oninlineQuery, yang boleh anda gunakan untuk mengendalikan pertanyaan sebaris. Kaedah ini mengambil fungsi panggil balik, yang dipanggil apabila pertanyaan sebaris diterima. Anda boleh menggunakan objek pertanyaan sebaris yang diluluskan kepada fungsi panggil balik untuk menjawab pertanyaan. Satu kaedah biasa ialah menggunakan penyataan Console.log dalam kod anda untuk mencetak maklumat mengenai keadaan bot anda. Anda juga boleh menggunakan alat debugging seperti debugger node.js atau devtools krom. Di samping itu, pakej nod-telegram-bot-api menyediakan kaedah onError, yang boleh anda gunakan untuk mengendalikan sebarang kesilapan yang berlaku semasa bot anda sedang berjalan.

Atas ialah kandungan terperinci Cara Membina Chatbot Telegram Pertama Anda Dengan Node.js. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan