Telegram botu yapmak

Botlara son zamanlarda internette sıkça rastladığımızı söyleyebiliriz. Telegram ve Facebook’un geliştiriciler için Bot API’leri oluşturduğunu duyurmasını, şirketlerin ve uygulamaların kendi botlarını oluşturmasını, geleceğin yapay zeka dünyasına adım atmak olarak yorumluyorum.

Telegram botunu yapmaya, Telegram’a girerek başlayalım. Kişi arama bölümüne “botfather” yazalım. Bu bot, Telegram’ın geliştiricilere sunduğu resmi bottur. Kişiyi ekledikten sonra konuşma açıp /start diyoruz. Bu esnada bize gönderebileceğimiz komutları listeleyecektir. Yeni bir bot oluşturacağımız için ilk olarak /newbot komutunu gönderiyoruz. Daha sonra bizden botun ismini soracaktır. Buraya botun adını giriyoruz. Örneğin “Örnek Bot” diyebiliriz. Daha sonra botun kullanıcı adını soracaktır. Bunu da “ornek_bot” yapalım. Kullanıcı adını başarılı olarak aldıysak bize bir erişim kodu (access token) verecektir. Bu kodu saklayalım.

Botun access token’ı tekrar almak için /token, botun tanıtım mesajını /setabouttext, profil resmini ise /setuserpic komutuyla ayarlayabilirsiniz. Diğer komutlara /help ile ulaşabilirsiniz.

Şimdi sırada botu yapmak var. Telegram botu için ihtiyacımız olan 2 şey var. Token kodu ve bir sunucu. Bu sunucu kişisel bilgisayarınız ya da Raspberry Pi’niz bile olabilir.

Bu botu Telegram API’sini kullanarak kendiniz de oluşturabilirsiniz ya da Github üzerinden arama yaparak, kullandığınız dile göre yüzlerce Telegram API kütüphanesi bulabilirsiniz.

Github’da bulduğum Node.js ile yazılmış telegram-bot-api kütüphanesiyle bir örnek yapalım.

var telegram = require('telegram-bot-api');
var api = new telegram({
        token: 'ACCESS_TOKEN'
});
api.on('message', function(message)
{
    // Gelen mesaj
    console.log(message);
});
Bu örnekte message event handler'ını kullanarak Telegram API’den gelen verileri dinleyip console.log ile yazdırıyoruz.

Örnek bir JSON çıktısı:

{"message_id":411,"from":{"id":2038006111,"first_name":"Ekin","username":"kullanici_adi"},"chat":{"id":2038006111,"first_name":"Ekin","username":"kullanici_adi","type":"private"},"date":1469621956,"text":"merhaba","entities":[{"type":"bot_command","offset":0,"length":7}]}

Şimdi sendMessage metodunu kullanarak kullanıcıya mesaj gönderme örneğini görelim.

var telegram = require('telegram-bot-api');
var api = new telegram({
        token: 'ACCESS_TOKEN'
});
api.sendMessage({
        chat_id: 'CHAT_ID',
        text: 'MESAJ_İÇERİĞİ'  })
    .then(function(message)
    {
        // Mesajın gönderilme bilgisi
        console.log(message);
    })
    .catch(function(err)
    {
          // Hata mesajı
        console.log(err);
    });

Şimdi bu örneği bir handler ve sendMessage kullanarak "echo botu" yapalım.

var telegram = require('telegram-bot-api');
var api = new telegram({
    token: 'ACCESS_TOKEN'
    updates: {
        enabled: true,
        get_interval: 1000
    }
});
api.on('message', function(message)
{
    //Mesaj geldi!
    var response = "";
    if (message.text == "naber") {
        response = "iyiyim senden?";
    }
    else {
        response = message.text;
    }
    //Gelen mesaj "naber" ise kendi cevabımızı verdik, değilse gönderenin dediğini tekrarladık. Bunu sadece örnek verme amacıyla yaptık.
    //text parametresi ile gönderilen mesajlar kullanıcıya gider.
    api.sendMessage({
        chat_id: message.chat.id,
        text: response
    })
    .then(function(message)
    {
        // Mesajın gönderilme bilgisi
        console.log(message);
    })
    .catch(function(err)
    {
        // Hata mesajı
        console.log(err);
    });
});

Yapmamız gereken tek şey gelen mesaja göre cevap vermek. Bu basit bir örnekti. Tabiki if ve else ile bitmiyor. Kendi kütüphanenizi yazabilirsiniz ya Github'daki bot engine'lerden birini kullanarak da yapabilirsiniz. Bundan sonrası sizin ne yapmak istediğinize bağlı.