Python ile Telegram Bot Yapımı

Telegram Botu Oluşturma

Telegramda bot oluştururken babaların babası BotFather’dan yardım alıyoruz.

  • İlk önce BotFather 'a yeni bir bot oluşturma isteği yolluyoruz;

/newbot

  • Daha sonra botumuza isim veriyoruz;

@KekikAkademi Python Veri Kazıma Örneği

  • Ardından botumuz için kullanıcı adı oluşturuyoruz. Bu kullanıcı adı _bot veya bot ile bitmek zorunda.

KekikAkademiPythonBot

  • Bize döndürdüğü token’i bir yere kayıt ediyoruz. (Token’e daha sonra da ulaşılabiliyor, yeni token istenebiliyor. Çok dert bir durum değil.)

1052180975:AAHnsgm1U3pygiaY1tWxVUpnoeh-byvECLg

Bu token artık geçersiz olduğu için gönül rahatlığıyla paylaşabiliyorum :slight_smile:

/mybots komutu ile oluşturduğumuz bota açıklama fotoğraf vs. ekleyip değiştirebilir; tokeni yenileme işlemlerini yapabiliriz…

  • Oluşturduğumuz bot’a girip ( @KekikAkademiPythonBot ) /start diyerek botu başlatıyoruz.

Bot Kontrolü ve Chat id Öğrenmek

  • Botumuzun düzgün çalışıyor olduğunu teyit etmek için https://api.telegram.org/bot{token}/getMe adresini kontrol ediyoruz.

https://api.telegram.org/bot1052180975:AAHnsgm1U3pygiaY1tWxVUpnoeh-byvECLg/getMe

  • Ardından bota (@KekikAkademiPythonBot ) herhangi bir mesaj yazarak botla etkileşime geçiyoruz.

  • Daha sonra https://api.telegram.org/bot{token}/getUpdates adresini kullanarak gelen verilerin json çıktısı nı elde ediyoruz. Bu çıktıda bizim için önemli olan id parametresidir. Bu parametrenin değerini de not alalım.

https://api.telegram.org/bot1052180975:AAHnsgm1U3pygiaY1tWxVUpnoeh-byvECLg/getUpdates

Şu an elimizde token ve id parametreleri var.

Artık bu iki parametre ile botumuzu kontrol edeceğiz…

Betiği Telegram Botuna Bağlama

Kütüphaneler

Python ile telegram’a veri göndermek için basit iki kütüphane;

import requests     # Eski Usul istek atıcı dostumuz
import telebot      # Yeni nesil dostumuz

Telegram Bağlantısı

Bot_Token = "XXXXXXXX:XXXXXXXXXX"   # Bot Token Tanımlaması
Chat_ID = "XXXXXXXXX"               # Chat ID Tanımlaması

# telebot'a Tokenimizi bağlayalım

KekikPython = telebot.TeleBot(Bot_Token)

Eski Usul requests Metodu;

requests ile Mesaj Gönderme

Mesaj = "Merhaba, Beni requests Gönderdi!"

DataForLink = {'text': Mesaj}

requests.post("https://api.telegram.org/bot" + Bot_Token +
              "/sendMessage?chat_id=" + Chat_ID ,
              data=DataForLink)

Gönderdiğimiz istek şu şekilde;

https://api.telegram.org/botXXXXXXXX:XXXXXXXXXX/sendMessage?chat_id=XXXXXXXXXdata=&text=Merhaba, Beni requests Gönderdi!

veya

Mesaj = "Merhaba, Beni requests Gönderdi!"

requests.post("https://api.telegram.org/bot" + Bot_Token +
              "/sendMessage?chat_id=" + Chat_ID +
              "&text=" + Mesaj)

https://api.telegram.org/botXXXXXXXX:XXXXXXXXXX/sendMessage?chat_id=XXXXXXXXX&text=Merhaba, Beni requests Gönderdi!

requests ile Dosya Gönderme

Dosya = open(r"DocTest_KekikAkademi.txt", 'rb')

# veya "C:\Users\kekik\Desktop\kodlama\DocTest_KekikAkademi.txt"

FilesForLink = {'document': Dosya}

requests.post("https://api.telegram.org/bot" + Bot_Token +
              "/sendDocument?chat_id=" + Chat_ID ,
              files=FilesForLink)

requests ile Resim Gönderme

Eğer Fotoğrafta Çözünürlük Kaybı Yaşanmasını İstemiyorsanız Dosya Olarak Gönderin.

Resim = open(r"FotoTest_KekikAkademi.png", 'rb')

# veya "C:\Users\kekik\Desktop\kodlama\FotoTest_KekikAkademi.png"

ImgForLink = {'photo': Resim}

requests.post("https://api.telegram.org/bot" + Bot_Token +
              "/sendPhoto?chat_id=" + Chat_ID ,
              files=ImgForLink)

Yeni Nesil TeleBot Metodu;

TeleBot ile Mesaj Gönderme

Mesaj = "Merhaba, Beni TeleBot Gönderdi!"

KekikPython.send_message(Chat_ID, Mesaj)

TeleBot ile Dosya Gönderme

Dosya = open(r"DocTest_KekikAkademi.txt", 'rb')

# veya "C:\Users\kekik\Desktop\kodlama\DocTest_KekikAkademi.txt"

KekikPython.send_document(Chat_ID, Dosya)

TeleBot ile Resim Gönderme

Eğer Fotoğrafta Çözünürlük Kaybı Yaşanmasını İstemiyorsanız Dosya Olarak Gönderin.

Resim = open(r"FotoTest_KekikAkademi.png", 'rb')

# veya "C:\Users\kekik\Desktop\kodlama\FotoTest_KekikAkademi.png"

KekikPython.send_photo(Chat_ID, Resim)

Kodların Tamamı

Basit Telegram RAT Projesi

Daha fazla resim eklemek isterdim ancak ilk post’um olduğu için yetkim yok :slight_smile:

5 Beğeni

Selam, ellerine saglik.

Variable isimlerini kucuk harfle baslatmayi dusunmez misin? Bu haliyle kodu okumasi baya zor oluyor. GitHub da ayni sebepten dolayi yanlis renklendirmis.

4 Beğeni

aa öyle bi durum olduğunu bilmiyodum açıkçası, benim için öncelikli olan kodun çalışması ve açık bir şekilde anlatılmasıydı :slight_smile:

Python’da değişken ve fonksiyon isimlerinin tamamını küçük harfle yazıp kelimeleri birbirinden _ ile ayırıyoruz. Sınıflar için ise UpperCamelCase kullanıyoruz. Daha çok bilgi için buraya bakabilirsiniz:

2 Beğeni

Kendi icinde tutarli oldugu surece PEP-8’i bile dinlememeye okeyim aslinda ama bu Class’larin buyuk, variable’larin kucuk olmasi cok kafama kaziliymis, hakikaten okurken zorlandim kodu :slight_smile:

2 Beğeni

tavsiyeleriniz için teşekkür ederim :blush:

Çok teşekkür ederim çok açıklayıcı ve güzel olmuş

burda böyle bi çıktı war
{'ok': False, 'error': 'Got unexpected response. (404) - {"ok":false,"error_code":404,"description":"Not Found"}'}
ve mesaj gelmyo

Ben de 3 tane bot yaptım ve geliştiriyorum.
Biri fal bakan Telegram: Contact @faldafalbot
Biri rüya tabiri yapan Telegram: Contact @ruyara_bot
Diğeri de sohbet eden bir bot ama henüz geliştirme aşamasında.

2 Beğeni