TelegramBot
March 12, 2020

Python ile Telegram Bot Yapımı | 1

Bu dökümanda Python ile pyTelegramBotAPI kütüphanesini kullanarak kendi Telegram botumuzu nasıl yapabileceğimize bakacağız. Botumuzu yazarken pyTelegramBotAPI kütüphanesinin TeleBot sınıfını kullanacağız. AsyncTeleBot sınıfını async fonksiyonlar hakkında bilgisi olan kullanabilir. Anlatım herşeyi ile detaylı değil temele dayalı olacaktır.

  • İlk olarak modülümüzü yükleyelim.
pip install pyTelegramBotAPI
  • Şimdi ise modülü dahil ederek bir bot adında bir TeleBot tanımlayalım. Bunun için bir tokene ihtiyaç duyacağız. Token almak için @botfather ile iletişime geçip /newbot komutu ile yeni bir bot oluşturma isteği gönderiyoruz. Ardından bizden botumuz için bir isim bekliyor. İsmi gönderdikten sonra is bot için bir kullanıcı adı istiyor. Bot için oluşturacağınız kullanıcı adının sonu botum_bot ya da botumbot olarak bitmeli.
from telebot import TeleBot

bot = TeleBot(token="xxxxxxxxx:xxxxxx-xxxxx-xxxxx-xxxxx") 
#Kendi token değerinizi giriniz. Token değerini kimse ile paylaşmayınız.
  • Artık botumuz için ilk adımları atmaya başlayabiliriz. Kullanıcıdan aldığımız mesajları görmek için handlerlar yardımı ile kontrol edeceğiz. Handlerlar decoratorler ile kullanılarak bize bir message adında json gönderiyor. Bunun içindeki bilgilerle bot üzerinden mesaj gönderiyoruz. En iyisi örnek kullanıma geçelim :)
@bot.message_handler(commands=['start']) #/start komutu girildiğinde...
def baslatma_mesaji(message): #message ismini değiştirebilirsiniz biz message kullanacağız
     bot.reply_to(m, "Merhaba, ben bir botum.")
  • Bu şekilde botumuza bir handler oluşturmuş ve her /start komutuna "Merhaba, ben bir botum." mesajı yazmasını sağlamış olduk. Handlerın kullanabileceği parametreler:
    commands=['komut_adı'] : /komut_adı yazıldığında altındaki fonksiyon çalışır.
    content_types=['text'] : Bir metin mesajı yazıldığında altındaki fonskiyon çalışır.
    func=lambda m: True : Fonksiyondaki filitreye göre çalışır. Buradaki m: True sayesinde her mesaj atıldığında çalışmış olur.
    regexp= : Python regex kütüphanesindeki gibi mesaj filitreye uygunsa çalışır.

    Content_typesın alabilecekleri ;
    text audio document photo sticker video video_note voice location contact new_chat_members left_chat_member new_chat_title new_chat_photo delete_chat_photo group_chat_created supergroup_chat_created channel_chat_created migrate_to_chat_id migrate_from_chat_id pinned_message
  • Şimdi gelelim message objesinden elde edebileceklerimize.
    - message.message_id = Mesajın sohbetteki numarasını verir.
    - message.chat.id = Mesajın sohbetteki ID numarasını verir.
    - message.chat.title = Mesajın gönderildiği sohbetin adını verir.
    - message.chat.type = Mesajın gönderildiği sohbetin tipi. "private", "supergroup"
    - message.from_user.id = Mesajı gönderenin ID numarasını verir.
    - message.from_user.first_name = Mesajı gönderenin ismini verir.
    - message.from_user.last_name = Mesajı gönderenin soyismini verir.
    - message.from_user.username = Mesajı gönderenin kullanıcı adını verir.
    - message.from_user.is_bot = Mesajı gönderen bir bot ise True değeri döndürür.
    - message.from_user.language_code = Mesajı gönderenin kullandığı dili verir. (!)
    - message.text = Yazılan mesajın yazısını verir.
    - message.date = Mesajın gönderildiği unix zamanı verir. Unix zaman 1/1/1970 00:00:00 zamanından beri geçen saniye sayısıdır.

Bu bilgileri öğrendiğimize göre ilk olarak bir örnek olması için bizim yazdıklarımızı tekrar eden bir bot yazalım.

from telebot import TeleBot

token = "TOKENİNİZ"

bot = TeleBot(token=token)

@bot.message_handler(content_types=['text']) #Yazı yazılırsa...
def tekrar_et(m):
     alinan_mesaj = m.text #kullanıcının girdiği mesaj.
     bot.reply_to(m, alinan_mesaj) #Tekrar edeceğimiz kısım.


bot.polling() #Gelecek mesajları dinlemeye hazırım.

Bu şekilde ilk botumuzu oluşturmuş ve bot yapımı için bir temek atabilmiş olduk. Diğer bölümde merhodlara değinip daha farklı neler yapabileceğimize bakacağız. Bu botun kodlarına echo_bot.py üzerinden ulaşabilirsiniz.

📃 Yandex.Disk Bünyemizdeki veriler 1 TB'a ulaşmıştır :) 🎊

Paylaşılan Kursların Tümünü @KekikKahve Grubu notlarından Çağırabilirsiniz..

🕊️ Bize oy verip paylaşarak destek olmaya ne dersin? ✌🏼