Telegram Bot Geliştirme #2 – GetUpdates ve WebHook

Serinin ilk konusunda (#1) Telegram’da nasıl bot oluşturulacağını gördük ve bir adet erişim kodu(token) aldık. Şimdi bu erişim kodunu ve Telegram API‘lerini kullanarak botumuzu yöneteceğiz.

Temel olarak aşağıdaki formatı kullanacağız:

https://api.telegram.org/bot<token>/<METHOD>

Örneğin, ilk isteğimizi yapalım.

Not: <token> yazılı yere kendi erişim kodunuzu yazın.

https://api.telegram.org/bot123456:ABC-DEF1234ghIkl-zyx57W2v1u3ew11/getMe

Dönen cevap (bir problem olmazsa) aşağıdaki gibi olmalıdır.

{
    "ok": true,
    "result": {
        "id": 1033398393,
        "is_bot": true,
        "first_name": "Peptr",
        "username": "peptr_bot",
        "can_join_groups": true,
        "can_read_all_group_messages": false,
        "supports_inline_queries": false
    }
}

Görüldüğü gibi bize JSON formatında botumuza ait bilgileri döndü. Artık botumuz ile nasıl iletişime geçeceğimizi biliyoruz, haydi başlayalım!

Telegram Bot API ile Güncellemeleri Nasıl Alırız?

Telegram bu konuda bize 2 seçenek sunuyor. Ya GetUpdates metodu ile gelen bütün mesajları tek seferde alacağız ya da WebHook metodu ile mesaj geldikçe belirttiğimiz sunucuya bildirim gitmesini sağlayacağız.

GetUpdates Metodunun Kullanımı

Bu yöntem varsayılan olarak gelen yöntemdir ve bota gönderilen son mesajlar alınarak işlem yürütülür. Aşağıdaki isteği, tarayıcı veya Postman gibi aracı bir program ile gönderiyoruz.

{
    "ok": true,
    "result": [
        {
            "update_id": #,
            "message": {
                "message_id": 3,
                "from": {
                    "id":     ,
                    "is_bot": false,
                    "first_name": "Yunus Emre",
                    "last_name": "Geldegül",
                    "username": "    ",
                    "language_code": "tr"
                },
                "chat": {
                    "id":     ,
                    "first_name": "Yunus Emre",
                    "last_name": "Geldegül",
                    "username": "    ",
                    "type": "private"
                },
                "date": 1579783328,
                "text": "Bot ile ilk sohbet :)"
            }
        }
    ]
}

Böylece bota gelen bütün mesajlar buraya düşecek ve belli bir süre sonra silinecektir. Bota gelen mesajların güncelliğini update_id alanı ile kontrol edebilirsiniz.

WebHook Metodunun Kullanımı

Bota gönderilen bütün mesajları anlık olarak almak istiyorsanız bu yöntemi kullanabilirsiniz. Ancak bunun için botu ayarlamamız gerekiyor ve aşağıdaki şekilde istek gönderiyoruz:

https://api.telegram.org/bot<token>/setWebhook?url=<istegin_gonderilecegi_web_adresi>

İsteğimize dönen yanıt aşağıdaki gibi olmalıdır.

{
    "ok": true,
    "result": true,
    "description": "Webhook is already set"
}

Artık bota gönderilen bütün mesajlar, aynen belirttiğimiz adrese gönderilecektir. getWebhookInfo komutu ile kontrol edebiliriz.

https://api.telegram.org/bot<token>/getWebhookInfo

Dönen yanıt aşağıdaki gibiyse sorun yok demektir.

{
    "ok": true,
    "result": {
        "url": "    ",
        "has_custom_certificate": false,
        "pending_update_count": 1,
        "last_error_date": 1579784145,
        "last_error_message": "    ",
        "max_connections": 40
    }
}

Not: İsteğin yapılacağı URL adresinin gizli olmasını Telegram önemle belirtiyor. Yanlış kişilerin elinde olursa, bot alakasız yerlere istek gönderebilir. =)

Şimdilik bu bölümü bitiriyoruz. İlerleyen yazılarda Python ile küçük bir uygulama hazırlayacağız. Son olarak aşağıya faydalı olabilecek birkaç yazı bırakıyorum. İyi okumalar!

Leave a comment