Telegram Döviz Botu Oluşturma

Telegram Döviz Botu Oluşturma

Hepinize merhaba dostlarım 😊. Bu yazımda sizlere daha önceden göstermiş olduğum telegram botu yapma işlemini bir dostumun isteği ve uğraştığı borsa takibi sonucunda yapmaya karar verdim. Bu aşamada da sizlere de en azından bunun nasıl yapıldığı konusunda bir örnek olarak hazırlamış olduğum ve kodlaması ayrı mutluluk verecek, kullanımı ayrı bir mutluluk verecek konu olan "Telegram Üzerinden Döviz Sorgulama" botumuzu kodlanmasını göstereceğim 😊. Kemerlerinizi bağlamışsanız başlayalım

Öncelikle dostlarım projemizi npm ile ilişkilendirmemiz lazım. Örnek olarak doviz isminde bir klasör açın ve terminalden gelip npm init yazdıktan sonra enter enter komutlarını verdiğiniz taktirde projemiz npm ile ilişkilenecektir 😊. (takılan dostlarım buradan yardım alabilir). Projemizi npm ile ilişkilendirdikten sonra kullanacağımız araçları yavaş yavaş yüklememiz lazım dostlarım. Öncelikle terminalimizi açıp

npm install --save telegraf

komutumuzu yazıp enter tuşuna basalım. Modülümüz yüklendikten sonrasında ise

npm install --save tcmb-doviz

komutumuzu yazalım ve bu modülümüzü de yükleme işleminden geçirelim 😊. Bu kurulum ve işlemler tamamlandıktan sonra gelelim telegram uygulamamıza ve BotFather botundan biz kendi adımıza bir bot oluşturmak isteyelim. Bu botumuzun ismi de "Doviz" olsun dostlarım 😊. Hemen bunu da oluşturalım (bot oluşturmakta takılan dostlarım varsa buradan ulaşabilir 😊). Daha sonrasında ise botumuz oluşunca bize bir token kodu verecektir dostlarım 😊. Bu kodunuzu aman ha saklı tutun tavsiyemdir 😊. Daha sonra bir index.js dosyası oluşturalım ve içerisine

const { Telegraf } = require('telegraf')

const bot = new Telegraf("TOKEN_KODUNUZ")
bot.start((ctx) => ctx.reply('Döviz Sorgulama Botu'))   //   /start komutu gelirse
bot.help((ctx) => ctx.reply('/doviz komutunu verince bize gelen mesaja para biriminin kısaltmasını vereceğiz,  /quit komutu da bize hoşçakal diyecektir'))   //  /help   komutu gelirse

bot.command('quit', (ctx) => {
    ctx.reply("Doviz Botu Size Hoşçakal Dedi")
})

bot.launch()   // botu çalıştır

şeklinde kodlarımızı yazdık 😊. Şimdi gelelim en önemli kısmımıza yani dostlarım /doviz komutunu aldığımızda ekranımıza gelecek olan mesajları ayarlama işlemlerine 😊. Bot.launnch() ve Bot.command() kodlarımızın üzerine, Bot.help() komutumuzun altına gelip

bot.command("doviz",(ctx)=>{
    ctx.replyWithMarkdown('Bana bir para birimi gönder (Örneğin: usd,eur)');
});

şeklinde komutumuzu yazdık dostlarım 😊. Kodu çalıştırdığımızda bizim karşımıza gelecek olan sonuç aşağıdaki gibidir

şeklinde bize mesaz verecektir 😊. Bizim de istediğimiz tam anlamıyla buydu dostlarım 😊. Şimdi gelelim yüklemiş olduğumuz tcmb-doviz modülümüzü bu methodumuz altında kullanmaya başlayalım. Kod kısmına gelip ctx.replayWiithMarkdown() methodumuzun altına aşağıdaki kodlarımızı yazalım

 bot.on('text', (ctx) => {
        (async () => {
            const TCMB_Doviz = require('tcmb-doviz');
            const Doviz = new TCMB_Doviz();
            const res = await Doviz.DovizListesi();
            console.log(res);
        })();
})

şeklinde kodlarımızı yazdık. Burada bu kodumuzun amacı şudur dostlarım. Hani /doviz komutumuzu yazdığımızda bize botumuz "Bana bir para birimi gönder" diyordu ya işte bu kısımda biz örnek olarak bir parametre gönderdiğimiz durumda burada bütün dovizleri console.log() ile terminalimize bastıracaktır 😊. Hemen bunu da örnekle göstereyim 😊. Öncelikle terminalimizi açalım ve

node index.js

komutumuzu yazalım. Daha sonra telegram uygulamamıza gelelim ve

şeklinde isteğimizi yazalım 😊. Sonrasında terminalimize baktığımızda ise

{
  tarih: '04/13/2021',
  kurlar: [
    {
      isim: 'Amerikan Doları',
      kod: 'USD',
      alis: '8.1383',
      satis: '8.1530'
    },
    {
      isim: 'Avustralya Doları',
      kod: 'AUD',
      alis: '6.1783',
      satis: '6.2186'
    },
    {
      isim: 'Danimarka Kronu',
      kod: 'DKK',
      alis: '1.2996',
      satis: '1.3060'
    },
    { isim: 'Euro', kod: 'EUR', alis: '9.6805', satis: '9.6979' },
    {
      isim: 'İngiliz Sterlini',
      kod: 'GBP',
      alis: '11.1674',
      satis: '11.2256'
    },
    {
      isim: 'İsviçre Frangı',
      kod: 'CHF',
      alis: '8.7776',
      satis: '8.8340'
    },
    {
      isim: 'İsveç Kronu',
      kod: 'SEK',
      alis: '0.94500',
      satis: '0.95479'
    },
    {
      isim: 'Kanada Doları',
      kod: 'CAD',
      alis: '6.4538',
      satis: '6.4829'
    },
    {
      isim: 'Kuveyt Dinarı',
      kod: 'KWD',
      alis: '26.8188',
      satis: '27.1697'
    },
    {
      isim: 'Norveç Kronu',
      kod: 'NOK',
      alis: '0.95268',
      satis: '0.95909'
    },
    {
      isim: 'Suudi Arabistan Riyali',
      kod: 'SAR',
      alis: '2.1701',
      satis: '2.1740'
    },
    { isim: 'Japon Yeni', kod: 'JPY', alis: '7.4203', satis: '7.4695' },
    {
      isim: 'Bulgar Levası',
      kod: 'BGN',
      alis: '4.9220',
      satis: '4.9864'
    },
    { isim: 'Rumen Leyi', kod: 'RON', alis: '1.9557', satis: '1.9813' },
    {
      isim: 'Rus Rublesi',
      kod: 'RUB',
      alis: '0.10481',
      satis: '0.10619'
    },
    {
      isim: 'İran Riyali',
      kod: 'IRR',
      alis: '0.01927',
      satis: '0.01952'
    },
    { isim: 'Çin Yuanı', kod: 'CNY', alis: '1.2357', satis: '1.2519' },
    {
      isim: 'Pakistan Rupisi',
      kod: 'PKR',
      alis: '0.05291',
      satis: '0.05360'
    },
    {
      isim: 'Katar Riyali',
      kod: 'QAR',
      alis: '2.2177',
      satis: '2.2468'
    }
  ]
}

şeklide uzun uzun bize verileri verecektir dostlarım 😊. Burada hangi para birimi ne kadar, alışı ne kadar satışı ne kadar rahatlıkla görebiliyoruz 😊. Daha sonrasında ise geliyoruz kodlama kısmımızda biraz değişiklik yapıyoruz çünkü kullanıcı belirli istek yapıyor hepsini göstermemiz pek uygun olmaz 😊. Index.js dosyamıza gelip bot.on('text') komutumuzun altında ve

        var sonuc;   // para birimi algılama kontrolcüsü
        var para_birim = [];   // para birimlerini bu dizi içerisinde tutacağız

        (async () => {
            const TCMB_Doviz = require('tcmb-doviz');
            const Doviz = new TCMB_Doviz();
            const res = await Doviz.DovizListesi();   // bütün para birimlerini, alış satış değerlerini aldık
            res.kurlar.map(function (value,index){    // gelen diziyi tek tek döndürdük
                para_birim.push(value.kod)   // her bir para birimini dizi içerisine aktardık
                if (value.kod == ctx.message.text.toUpperCase()){   //--------------> ctx.message.text.toUppercase() çok önemli. Kullanıcıdan gelen örneğin usd veya eur ise USD veya EUR şekline dönüştürdük
                    ctx.reply("Kur: "+value.kod+"\n Alış: "+value.alis+"\n Satış: "+value.satis)    // gelen mesajı bastırdık
                    sonuc=1;   // işlem başarılı sonuç true oldun dedik
                }
            })

            if (sonuc!=1){
                ctx.reply("Para Birimi Algılanamadı")   // bu kısımda ise para birimine adam random basarsa algılama dedik 
            }
        })();

şeklinde komutlarımızı yazalım 😊. Telegram botumuzu açalım ve

şeklinde botumuzu test ettiğimizde her şeyin sorunsuz bir şekilde çalıştığını çok rahat bir şekilde göreceğiz dostlarım 😊.

 

Eveeeet dostlarım 😊. Bu yazımda sizlere daha önce anlatmış olduğum Telegram Chatbot Oluşturma konumuzu öğrendikten sonra bir pratik yapmak üzere bu konuyu yani Telegram Üzerinde Döviz Sorgulama botunu geliştirdik. Çok eğlenceli ve çok güzel bir süreç geçirdik. Umarım faydalı olmuşumdur ve sizlerin de bot oluşturma işleminde biraz daha pratik kazanmanızı sağlamışımdır 😊. Eksik veya hatalı bir anlatım yapmış isem dostlarım benimle iletişime geçmekten çekinmeyin 😊. Konu çok hafif de olsa biraz karmaşık veya zor gelmiştir dostlarım anlıyorum 😊. Bu aşamada sizlerden yapmanızı istediğim şey "İstikrarlı ve Azimli Olmanız, Bolca Pratik Yapmanı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 😊

Muhammed Fatih BAĞCIVAN
Yazar Hakkında

Kendi Halinde Bir Backend Developer

Önceki YazıJavascript JSON Kullanımı
Sonraki YazıPHP Soyut Class (Abstract Class) Kullanımı
Yorumlar (1)
halil brk
15.11.2022

TypeError: TCMB_Doviz is not a constructor diye hata veriyor. bunun sebebi ne olabilir sizce

Yorum Yapabilirsiniz