Bug’ımın Botu — İftar Botu

Anıl Atalay
3 min readJan 25, 2020

Merhaba sevgili okur,
Ramazan’da iftar için yazmış olduğum buglarla dolu olan Telegram botumu anlatmaya çalışacağım. Telegram kullanmıyor iseniz hemen indirip kullanmanızı şiddetle tavsiye ediyorum. (Selçuk Ermaya‘ya ithafen) İftar botu için arabirim olarak Telegram’ı kullanacak olsam da, diğer bot destekli mesajlaşma uygulamalarını da (Messenger, Slack, Skype vb.) tercih edebilirsiniz.

Baba Gibi Bot?
Telegram’da botu oluşturmakla başlayalım. @BotFather’ın bizim botumuza özel oluşturduğu TOKEN’ı ileride kullanmak adına kenara alalım.

Bilgisayarımızda bir dizin seçerek ‘iftar-bot’ adında bir klasör oluşturup geliştirme sürecini başlatıyoruz. Terminal üzerinde

yazarak nodejs için gerekli olan package.json dosyasını oluştuyoruz. ‘app.js’ adında bir dosya oluşturup artık bu dosya üzerinde kod yazabiliriz.

Neyi Nerede Neden?
Node.js: Hızlı ve kolay bot geliştirmek adına seçildi.
telegraf.js: Telegram Bot API’nin Node.js için yazılmış bot kütüphanesi.
axios: Node.js için yazılmış HTTP istemcisi.
moment: Tarih ve saatler için esnek ve kolay işler yapabilmenizi sağlayan javascipt kütüphanesi.
monosay: Bot istatistikleri ve veritabanı ihtiyacımız için kullanışlı bir platform.
Bize botumuzu geliştirmekte yardımcı olacak bu arkadaşların artıları ve eksileri vardır elbet. Hepsinin alternatifleri mevcut seçimi size bırakıyoruz. 🙂

Ramazan Geçeli Ay Oldu?
Botu Ramazan ayına girmeden önce yazdım fakat sürekli bug çıkıyor, hep bir şeyler ters gidiyordu. Aslında benim de suçum yoktu, ülkemizde düzgün şekilde İftar saatlerini çekebileceğim bir servis mevcut değildi. Sağolsun bir arkadaşın heroku üzerinde yayınladığı (ezanvakti.herokuapp.com) şehirlere göre iftar saatlerini veren servisi görüp (İçimden teşekkürlerimi ileterek) onu kullanmaya karar verdim. Tam benim istediğim şekilde olmasa da bulabildiğimin en iyisi oydu. İş arkadaşlarımın destekleriyle botu bir noktaya kadar getirebildim. Tabi botu kısmen bitirdiğimde Razaman çoktan bitmişti. 🙂 Konum bazlı iftar saati özelliğinde ısrar etmesem aslında bir günde biterdi hadi hadi 🙂 Baktım çözmezlik diz boyu oturup bunu bloğumun ilk postu olarak yazmaya karar verdim.

Tam Gaz Devam?
Terminal üzerinden npm paketlerini yüklemekle devam edelim. Sırasıyla;

tabi bunları tek satırda da yazabilirdik, böyle daha havalı ama. ‘node_modules’ içinde paketleri görebilirsiniz. Bir değişiklik yapmak istediğinizde ‘package.json’ üzerinde değişikliği kaydedip ‘npm install’ demeniz yeterlidir. Paketleri ‘app.js’ dosyasına import edebilim.

Botu oluşturup ‘Hello Word’ü (Geleneklerimizden vazgeçmiyoruz) bot üzerinde cevap olarak bir görelim.

Çalıştırmak için terminale ‘node app.js’ yazdıktan sonra Telegram üzerinden sizin botun ismini aratarak botu bulabilir, sohbete başlamak için de start’a basarak botu tetikleyebilirsiniz. Cevap olarak yukarıdaki kod bloğunda değişiklik yapmadıysanız botun cevap olarak size ‘Hello World’ döndüğünü görebilirsiniz.

Bırak Şimdi Hello’yu
Şu anki senaryomuzda bota ne yazarsanız yazın cevap olarak size iftar saatini dönecektir. Github hesabım üzerinden kodları paylaşıyorum göz atmak isterseniz diye. 🙂

Kimler Kullandı Bu Botu?
İyi güzel de botu yazdık fakat kaç kişi kullandı, nasıl iletişim kurdular, bir hata oldu mu gibi bir sürü sorumuz da oldu. İşte tam olarak bu soruların cevabını monosay kardeşimiz bizim yerimize cevaplıyor. (bir alkış alalım) Tabi bu arkadaşta şu an sormadığımız bir çok sorunun cevabı da var ama bizi ilgilendiren kısım şimdilik bu. Bir hesap oluşturarak monosay’i kullanmaya başlayalım. Hemen bir bot oluşturalım ve platform olarak telegraf’ı seçip, monosay’in bizim için oluşturmuş olduğu TOKEN’ı alıp Node.js uygulamamıza geri dönüyoruz. Monosay’i botumuza entegre etmek için iki satır kod yetiyor inanılır gibi değil 🙂

İşte bu kadar kolay hadi deneyelim. Bot’a bir şeyler yazıp monosay’a geri dönüyoruz. Buradan anlık mesajlaşmalar, botu kullanan, kullanmayı bırakan, seven sevmeyen herkesi görebilirsiniz.

Son Söz
İftar botunu sizlere anlatmaya çalıştım. Lokasyon bazlı iftar saatini sorgulama ve monosay üzerinde data saklama özelliklerini anlatmasam da kodları github üzerinden paylaştım. Okuduğunuz için teşekkür ederim, bir başka post’ta görüşmek dileğiyle.

--

--