Telegram ChatBot Oluşturma
Hepinize merhaba dostlarım :). Bu yazımda sizlere son zamanlarda yazılımcıların platformu olarak nitelendrilen ve hemen hemen her yazılımcının kullandığı ve aynı zamanda kullanması gerektiği bir platform olan Telegram üzerinde chatbot nasıl oluşturulur size ondan bahsedeceğim. Öncelikle bu yazıyı yazmamı isteyen ve benim de telegram chatbot üzerinde bilgi almamı sağlayan Agit IŞIK hocama sonsuz teşekkür ediyorum :). O halde sözü daha fazla uzatmadan hemen konumuza geçelim :)
Telegram ChatBot Nedir ?
Eveeeet dostlarım geldik işin en can alıcı kısmına :). Chatbot dan genel olarak bahsedecek olursak (teorik bir anlatım dışında işin mantığını anlatmak istiyorum) kullanıcıdan gelen metin veya komutları işleyen ve kullanıcıya bir değer döndüren, aynı karşımızda bir insanla chat yapar gibi çalışan telegram sistemi olarak adlandırabiliriz :). Örnek olarak hangi durumlarda kullanılır diye soruyorsanız dostlarım mesela döviz listesini anlık çekme işlemi olsun, hava durumu sorgulama işlemleri olsun bu durumlarda bu chatbot bize yardımcı olur :). Şimdi gelelim bu chatbot nasıl oluşturulu ona bakalım :)
Telegram ChatBot Oluşturma
Chatbot un ne olduğunu artık anladığımıza göre dostlarım artık gelelim bu chatbot un nasıl oluşturulacağına :). Öncelikle telegram ı açıp arama kısmına BotFather yazmamız gerekiyor. Ulaşamayan dostlarım buradan ulaşabilirler :). Şimdi BotFather kısmını açtığımıza göre artık gelelim teker teker adımlarımıza :)
- /newbot yazarak bir chatbot oluşturma isteğimizi söylüyoruz :). /newbot yazıp enter tuşuna basalım
- Komutumuzu verdikten sonra bize gelen çıktı "Alright, a new bot. How are we going to call it? Please choose a name for your bot." şeklinde oluyor. Bize diyor ki "Tabii ki yeni bir bot oluştururum senin için :). Bu botun ismii ne olsun ?" diyor :). Biz de örnek olarak gelelim "Telegram İlk Botumuz" olsun ve enter tuşuna basalım
- Bize bu adımda BotFather tekrardan bir mesaj gönderiyor. Bu mesaj da şu "Good. Now let's choose a username for your bot. It must end in `bot`. Like this, for example: TetrisBot or tetris_bot.". Burada diyor ki: "Her şey gayet güzel :). Şimdi sen bu bota bir kullanıcı adı tanımla ama sonunda 'Bot' ibaresi içermeli" uyarısını veriyor. Biz de örnek olarak "ilkbotumuz_bot" şeklinde yazıp enter tuşuna basalım :).
Daha sonra işlemlerin başarılı bir şekilde gerçekleştiği yazısı gelecek karşımıza :). Yazıda ise
Done! Congratulations on your new bot. You will find it at t.me/ilkbotumuz_bot. You can now add a description, about section and profile picture for your bot, see /help for a list of commands. By the way, when you've finished creating your cool bot, ping our Bot Support if you want a better username for it. Just make sure the bot is fully operational before you do this.
Use this token to access the HTTP API:
**********
Keep your token secure and store it safely, it can be used by anyone to control your bot.
For a description of the Bot API, see this page: https://core.telegram.org/bots/api
şeklinde bir uyarı verecektir :). Burada bize diyor ki "Dostum senin için bir bot oluşturdum. Buna t.me/ilkbotumuz_bot linkinden ulaşabilirsin :). HTTP API istekleri için de al sana token kodun :)" şeklinde bize mesaj gönderiyor. Tabii ki herkesin token kodu özel olduğu için bunu gizli tutuyorum :). Bu aşamaya kadar tamam isek artık bizim telegram tarafında bir botunmuz var :). Şimdi ise gelelim bunu kodlamaya dökelim dostlarım
Botumuzu Kodlayalım
Eveeet artık telegram üzerinde botumuzu oluşturduğumuza göre gelelim artık bu koda kullanıcıdan gelen istekler doğrultusunda nasıl bir cevap gönderme işlemini sağlayabiliriz gelin ona bakalım :).
Öncelikle botumuzu node.js üzerinde yazacağımızı baştan söylemek istiyorum dostlarım :). Bunun için node.js proje geliştirme ortamını kurmamız lazım :). Kurulum hakkında bilgi için buradan ulaşabilirsiniz :). Şimdi bizim projemiz telegram botu yazmamız üzerine olduğu için projemizin ismine telegrambotumuz ismini verelim ve kuruluma başlayalım :). Kurulumu yaptıktan sonra terminalimize gelelim ve npm in telegram bot geliştiricileri için sağladığı Telegraf kütüphanesini yükleyelim :). Bunun için terminalimize gelip
npm install --save telegraf
şeklinde kodumuzu yazıp enter tuşuna basalım :). Gerekli yüklemeler sonunda package.json dosyamız aşağıdaki gibi olacaktır :)
{
"name": "telegrambotumuz",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "MFS",
"license": "MIT",
"dependencies": {
"telegraf": "^4.3.0"
}
}
şeklindeki gibi dependencies kısmına telegraf kütüphanesinin yüklendiğini rahatlıkla görüyoruz :). Şimdi bu kısma kadar tamamız. Gelelim proje klasörümüz içerisine app.js isimli bir dosya oluşturalım ve aşağıdaki kodlarımızı yazalım
const { Telegraf } = require('telegraf') // modülümüzü kullanalım
const bot = new Telegraf("**********") // sizin tokeniniz
bot.start((ctx) => ctx.reply('Hoşgeldin Dostum')) // bot çalışınca karşınıza çıkacak (/start yazınca da çalışır)
bot.help((ctx) => ctx.reply('Bana bir sticker gönder')) // /help yazınca bize gelecek olan mesaj
bot.on('sticker', (ctx) => ctx.reply('😜')) // biz sticker gönderince bottan gelecek olan karşılık :)
bot.hears('selam dostum', (ctx) => ctx.reply('Selaaaam :)')) // botumuza 'selam dostum' yazınca bize geri dönecek olan sonuç :)
bot.launch() // botumuzu çalıştıralım
şeklinde kodumuzu yazdık :). Daha sonra terminalimize gelelim ve
node app.js
komutunu verelim :). Sonrasında ise telegramı açalım ve botumuza giriş yapalım :). Aşağıdaki resimdeki gibi mesajımızı gönderelim ve çıktımızı alalım :)
Resim 1: https://prnt.sc/1127fnr
şeklinde ekranımıza küçük bir çıktı gelecektir dostlarım :). Şimdi gelelim sizinle web teknolojilerinin vazgeçilmezi olan html,css,javascript komutları geldiğinde WEB, C,C++ yazdığımızda ise GÖMÜLÜ SİSTEM yazan bir bot ayarlayalım :). Hemen kod kısmına gelip kodlarımızı "bot.launch()" üzerinde yazmaya başlayalım :). Proje dosyamızı açalım ve
bot.on('text', (ctx) => { // EĞER BİR YAZI GELİRSE
var sonuc = ctx.message.text // YAZININ İÇERİĞİNİ AL
if (sonuc=="html" || sonuc=="css" || sonuc=="javascript"){
ctx.reply("WEB")
}
else if(sonuc=="C++" || sonuc=="C"){
ctx.reply("GÖMÜLÜ SİSTEM")
}else{
ctx.reply("Anlayamadım Dostum")
}
})
kodumuzu yazalım. Burada gelen html,css,javascript mesajları karşılığında bize WEB mesajını döndürecek, C,C++ mesajları karşılığında da bize GÖMÜLÜ SİSTEM mesajını geri döndürecektir :). Eğer bunlardan farklı olarak bir metin gönderirsek insanlarda olan bir özelliğimizi koyduğumuz için bize "Anlayamadım Dostum :)" uyarısını verecektir. Hemen test edelim
Resim 2: https://prnt.sc/1127co6
şeklinde ekranımıza bir çıktı verecektir :). Şimdi gelelim konuşmadan çıkma özelliğini nasıl yaparız onu da inceleyelip konuyu bitirelim :). Bunun için de diğer komutlarımızda yazdığımız gibi "bot.launch()" üzerinde bir kodlama yapacağız :). Hemen bunu da yazalım :). Gelelim app.js içerisine ve
bot.command('quit', (ctx) => { // /quit yazdığımızda çalışır
ctx.reply("Görüşürüz Dostum Kendine Çok Dikkat Et :)") // çıkış yaparken bot mesaj versin
ctx.leaveChat() // çıkış yap
})
kodunu yazalım :). Telegram üzerine gelip
Resim 3: https://prnt.sc/112784w
komutumuzu yazdığımızda sohbetten çıktığımızı bota belirtiyoruz ve bot da bize "Görüşürüz Dostum Kendine Çok Dikkat Et :)" şeklinde bir uyarı vererek bizimle görüşmeyi sonlandırıyor :)
Eveeeet dostlarım :). Bu yazımda elimden geldiğince Telegram üzerinde bot nasıl oluşturulur, nasıl programlanır ondan bahsettim. Yalnız bu botu herkese erişim halinde sunmak için yazdığımız node.js uygulamasını deploy etmemiz lazım. İleriki zamanlarda bu konuya da değineceğim :). Bu konumda eksik veya hatalı bir anlatım yapmışsam benimle iletişime geçmekten çekinmeyin dostlarım :). Bu arada konu biraz zor gelebilir anlıyorum. Bunun için sizlerden isteğim her yazımın altında da dediğim gibi "İstikrarlı ve Azimli Olmalı, Bolca Pratik Yapmalısınız :).". Bu dediklerimi hayat felsefeniz yaptığınız sürece başarı sizler için kaçınılmaz olacaktır :)
Hayallerinizi gerçekleştirmeniz ve güzel yerlere gelmeniz dileklerimle... İyi çalışmalar dilerim :)
Yazar Hakkında
Kendi Halinde Bir Backend Developer