Telegram’da Benim de Bir Tuzum Olsun
“… Benim de Bir Tuzum Olsun” serisinin muhtemel son yazısıyla karşınızdayım.
Bu sefer malzemelerimiz ve mimarimiz şu şekilde:
- Bir adet BotFather :)
- Bir adet NodeJS
- Aldığı kadar Raspberry Pi

Telegram Bot API adımı öncesini Slack’te Benim de Bir Tuzum Olsun ve Play Store’da Benim de Bir Tuzum Olsun yazılarımdan öğrenebilirsiniz.
Burada farklı olarak uygulamamı çalıştırdığım alan olarak Heroku yerine Raspberry Pi kullandım. Raspberry Pi üzerinde gerekli konfigurasyonları yaparak yerel bir bilgisayar gibi kullanıp istediğiniz uygulamayı çalıştırabilirsiniz. Bu yazımda ağırlıklı olarak Telegram Bot’u hazırlama ve NodeJS ile botumuzu yönlendirme kısımlarına yer vereceğim.
Öncelikle bir Telegram botu yazabilmek için, bir Telegram botuna ihtiyacımız var. Cümlemin karmaşıklığı ve ironisi sizi yanıltmasın, BotFather Telegram’ın bot oluşturma ve yönetme için hazırlamış olduğu bir Telegram botudur.
Buradan onunla arkadaş olabilir ve aşağıda benim de benzerini yaptığım adımlarla kendi botunuzu oluşturabilirsiniz.

Yukarıdaki işlemler sonrasında size botunuzu yönetebilmeniz için bir token veriyor. Daha sonrasında botunuza herhangi bir aksiyon aldırmak istiyorsanız bu token’ı kullanmanız gerekecek.
Nodejs tarafında botunuzu yönetebilmeniz için bir çok paket bulunuyor. Benim kullandığım pakete buradan ulaşabilirsiniz.
Aşağıdaki gibi basit bir şekilde botumuzu tanımladık.
const TelegramBot = require('node-telegram-bot-api');const token = 'YOUR_TOKEN';
var bot = new TelegramBot(token, {polling: true});
Daha sonrasında, botumuz başlatıldığında ve son kullanıcılar ile konuşurken alabileceğimiz aksiyonlar için event handler’lar ekliyoruz.
bot.on('message', (msg) => {const chatId = msg.chat.id;/* Burada işlem yapmak istediğiniz kodları yazıyorsunuz. Ben mesela burada translate api'sine gidip yazılan değeri çevirip ardından aşağıdaki kod satırı ile yanıt dönüyorum. */bot.sendMessage(chatId, 'Girilen Kelime : Çevirisi');});
Benim botum temel olarak iki yeteneğe sahip:
- 09:00–21:00 saatleri arasında 00 ve 30 dakikalarda kelime önerisi yapmak.
- Kendisine iletilen Türkçe kelime/cümle içeren mesajlar için İngilizce karşılıkları ile yanıtlamak.
/* Kullanıcı ilk defa geldiğinde, "start" düğmesine tıklamak zorunda ve aşağıdaki koşul ile bu durumda yapacağımız işlemleri belirleyebiliriz. */
if (msg.text === "/start") {
// Ben burada kelime önerebilmek için cron job tanımlıyorum.}
Buradan ya da farklı bir bot paketi üzerinden botunuza yeni yetenekler ekleyebilir ve daha farklı botlar hazırlayabilirsiniz.
Botuna açıklama, profil fotoğrafı gibi özellikler de eklemek için aşağıdaki adımları uygulayabilirsiniz:

/setuserpic komutunu çalıştırdığınızda image url’i değil, direkt olarak bir arkadaşınıza fotoğraf gönderiyor gibi profil fotoğrafı olmasını istediğiniz fotoğrafı göndermelisiniz.
Telegram botuma buradan ulaşabilirsiniz.

Vakit ayırdığınız için teşekkür ederim, diğer yazılarıma da göz atmayı unutmayın :)