Python İle Telegram Botu Yapmak

WenxWar

Üye
5 Eki 2022
88
55
Silivri
Selamlar ben WENXWAR
Farklı Farklı Kaynaklardan Araştırdığım Python İle Telegram Botu Yapma Konusunu Bildiğim Kadarıyla Sizlere Aktarmaya Çalışacağım.
Umarım Beğenirsiniz.. Keyifli Okumalar.

Bu işleme adım adım bakacak olursak,sırasıyla;


Adım 1 :
Telegram hesabınızı açın ve arama çubuğuna “BotFather” yazın.

1.png



Adım 2 :
“BotFather” üzerine tıklayın ve “Başlat” butonuna tıklayın.

2-1024x494.png


Adım 3 :
“/newbot” yazın.

3-1024x197.png


Adım 4 :
Benzersiz bot adı belirleyin.(Örnek Tele Bot)

4-1024x328.png


Adım 5 :
Şimdi botunuz için benzersiz bir kullanıcı adı yazın.

Unutmayın: kullanıcı adı 'bot' ile bitmelidir.


Adım 6 :
Benzersiz bir kullanıcı adı verdikten sonra aşağıdaki gibi bir mesaj alacaksınız. HTTP API'sine erişmek için bir belirteç içerir. Simgenizi güvende tutun ve güvenli bir şekilde saklayın.

5-1024x552.png


Adım 7 :
Webhook yanıtı için Flask app oluşturma.
Öncelikle bilgisayarınıza python ve flask kurmanız gerekecek.

Python:
pip install Flask

Python:
from flask import Flask[/I][/SIZE][/COLOR][/I][/B]
 
[B][I][COLOR=rgb(255, 255, 255)][SIZE=4][I]app = Flask(__name__)[/I][/SIZE][/COLOR][/I][/B]
 
[B][I][COLOR=rgb(255, 255, 255)][SIZE=4][I]@app.route('/')
def index():
    return "<h1>Welcome!</h1>"[/I][/SIZE][/COLOR][/I][/B]
 
[B][I][COLOR=rgb(255, 255, 255)][SIZE=4][I]if __name__ == '__main__':
   app.run(threaded=True)

Flask app'ın düzgün çalışıp çalışmadığını kontrol etmek için bu kodu çalıştırın. Kodu çalıştırdığınızda karşınıza “ http://127.0.0.1:5000/ ” şeklinde bir sunucu bağlantısı gelecektir, bu bağlantıya tıklayın, “Hoş Geldiniz!” yanıtını göreceğiniz web sayfasına yönlendirileceksiniz.


Adım 8 :
NGROK kurulumu.

Ngrok'a gidin ve "ngrok http 5000" komutunu yazın, bu komutu çalıştırdıktan sonra linkleri alacaksınız.

7-1.png-876%C3%97285-1-1024x339.png


Bu Ngrok bağlantılarından HTTPS bağlantısını kopyalayın ve tarayıcınıza yapıştırın. “Hoş Geldiniz!” yanıtını göreceksiniz. önceki adımla aynı.


Adım 9 :
Webhook kurun.

Şimdi telgraf botu için Webhook ayarlamamız gerecek..

Bağlantıyı tarayıcınızda çalıştırarak yapabilirsiniz.

Kod:
https://api.telegram.org/bot<Your Bot Token>/setWebhook?url=<URL that you got from Ngrok>

Bağlantıyı web tarayıcınızda çalıştırdıktan sonra, aşağıdaki resimde gösterilen yanıtı alacaksınız.


Adım 10 :
JSON yanıtı alın.

Artık bota yazacağımız herhangi bir metin için telegram botundan JSON yanıtını almamız gerekecek.

Şimdi VS Code'u açın ve aşağıdaki kodu ekleyin ve önceki kodu çalıştırdığınız aynı Ngrok bağlantısında çalıştırın.

Python:
from flask import Flask
from flask import request
from flask import Response
import requests[/I][/SIZE][/COLOR][/I][/B]
 
[B][I][COLOR=rgb(255, 255, 255)][SIZE=4][I]app = Flask(__name__)[/I][/SIZE][/COLOR][/I][/B]
 
[B][I][COLOR=rgb(255, 255, 255)][SIZE=4][I]@app.route('/', methods=['GET', 'POST'])
def index():
    if request.method == 'POST':
        msg = request.get_json()
        print(msg)
      
        return Response('ok', status=200)
    else:
        return "<h1>Welcome!</h1>"[/I][/SIZE][/COLOR][/I][/B]
 
 
[B][I][COLOR=rgb(255, 255, 255)][SIZE=4][I]if __name__ == '__main__':
   app.run(debug=True)

Telegram sohbet botunuz için belirteci aldığınız BotFather'da, URL'yi Telegram botunuza yönlendirmek için de dosyalayabilirsiniz.

10-1024x527.png


Bundan sonra botla sohbeti başlatmak için Botu Başlat'a tıklayın. Ardından, "test botu" gibi istediğiniz herhangi bir mesajı veya istediğiniz herhangi bir şeyi yazın.

11-1.png


Botunuza “test bot” yazdıktan sonra şimdi Vscode'a gidin, aşağıdaki JSON'u terminalinizde dosyalayacaksınız.

12-1024x107.png


Burada telegram botuna yazdığımız mesajı text olarak arka uçta alabildiğimizi görebiliriz.


Adım 11 :
metin mesajını bottan gönderin.

Kullanıcıdan “hi” mesajına cevap almak için kodu yazacağız ve “hi” dışında bir şey ima edilirse “webhook'tan” ile cevap vereceğiz.

Python:
from flask import Flask
from flask import request
from flask import Response
import requests[/I][/SIZE][/COLOR][/I][/B]
 
[B][I][COLOR=rgb(255, 255, 255)][SIZE=4][I]TOKEN = "<Your Bot Token>"
app = Flask(__name__)[/I][/SIZE][/COLOR][/I][/B]
 
[B][I][COLOR=rgb(255, 255, 255)][SIZE=4][I]def parse_message(message):
    print("message-->",message)
    chat_id = message['message']['chat']['id']
    txt = message['message']['text']
    print("chat_id-->", chat_id)
    print("txt-->", txt)
    return chat_id,txt[/I][/SIZE][/COLOR][/I][/B]
 
[B][I][COLOR=rgb(255, 255, 255)][SIZE=4][I]def tel_send_message(chat_id, text):
    url = f'https://api.telegram.org/bot{TOKEN}/sendMessage'
    payload = {
                'chat_id': chat_id,
                'text': text
                }
  
    r = requests.post(url,json=payload)
    return r[/I][/SIZE][/COLOR][/I][/B]
 
[B][I][COLOR=rgb(255, 255, 255)][SIZE=4][I]@app.route('/', methods=['GET', 'POST'])
def index():
    if request.method == 'POST':
        msg = request.get_json()
      
        chat_id,txt = parse_message(msg)
        if txt == "hi":
            tel_send_message(chat_id,"Hello!!")
        else:
            tel_send_message(chat_id,'from webhook')
      
        return Response('ok', status=200)
    else:
        return "<h1>Welcome!</h1>"[/I][/SIZE][/COLOR][/I][/B]
 
[B][I][COLOR=rgb(255, 255, 255)][SIZE=4][I]if __name__ == '__main__':
   app.run(debug=True)

Telegram Botunda aşağıdaki yanıtı alacağız.

13.png


14-1024x197.png


Adım 12 :
Görüntüyü Alın.

Artık görüntüyü telegram botundan da alabiliriz.

Python:
from flask import Flask
from flask import request
from flask import Response
import requests

TOKEN = "<Your Bot Token>"[/I][/SIZE][/COLOR][/I][/B]
 
[B][I][COLOR=rgb(239, 239, 239)][SIZE=4][I]app = Flask(__name__)[/I][/SIZE][/COLOR][/I][/B]
 
[B][I][COLOR=rgb(239, 239, 239)][SIZE=4][I]def tel_parse_message(message):
    print("message-->",message)
    try:
        chat_id = message['message']['chat']['id']
        txt = message['message']['text']
        print("chat_id-->", chat_id)
        print("txt-->", txt)[/I][/SIZE][/COLOR][/I][/B]
 
[B][I][COLOR=rgb(239, 239, 239)][SIZE=4][I]        return chat_id,txt
    except:
        print("NO text found-->>")[/I][/SIZE][/COLOR][/I][/B]
 
[B][I][COLOR=rgb(239, 239, 239)][SIZE=4][I]def tel_send_message(chat_id, text):
    url = f'https://api.telegram.org/bot{TOKEN}/sendMessage'
    payload = {
                'chat_id': chat_id,
                'text': text
                }
  
    r = requests.post(url,json=payload)[/I][/SIZE][/COLOR][/I][/B]
 
[B][I][COLOR=rgb(239, 239, 239)][SIZE=4][I]    return r[/I][/SIZE][/COLOR][/I][/B]
 
[B][I][COLOR=rgb(239, 239, 239)][SIZE=4][I]def tel_send_image(chat_id):
    url = f'https://api.telegram.org/bot{TOKEN}/sendPhoto'
    payload = {
        'chat_id': chat_id,
        'photo': "https://raw.githubusercontent.com/fbsamples/original-coast-clothing/main/public/styles/male-work.jpg",
        'caption': "This is a sample image"
    }[/I][/SIZE][/COLOR][/I][/B]
 
[B][I][COLOR=rgb(239, 239, 239)][SIZE=4][I]    r = requests.post(url, json=payload)
    return r[/I][/SIZE][/COLOR][/I][/B]
 
[B][I][COLOR=rgb(239, 239, 239)][SIZE=4][I]@ app.route('/', methods=['GET', 'POST'])
def index():
    if request.method == 'POST':
        msg = request.get_json()
        try:
            chat_id, txt = tel_parse_message(msg)
            if txt == "hi":
                tel_send_message(chat_id,"Hello, world!")
            elif txt == "image":
                tel_send_image(chat_id)[/I][/SIZE][/COLOR][/I][/B]
 
[B][I][COLOR=rgb(239, 239, 239)][SIZE=4][I]            else:
                tel_send_message(chat_id, 'from webhook')
        except:
            print("from index-->")[/I][/SIZE][/COLOR][/I][/B]
 
[B][I][COLOR=rgb(239, 239, 239)][SIZE=4][I]        return Response('ok', status=200)
    else:
        return "<h1>Welcome!</h1>"[/I][/SIZE][/COLOR][/I][/B]
 
[B][I][COLOR=rgb(239, 239, 239)][SIZE=4][I]if __name__ == '__main__':
    app.run(threaded=True)

İşte telgraftan alacağınız cevap.

15-1024x518.png


Şimdilik Bu kadar Arkadaşlar İsterseniz Daha fazla araştırarak devamını getirmeye çalışırım..
OKUDUĞUNUZ İÇİN TEŞEKKÜRLER..

Araştırma Kaynakları : GeeksforGeeks | A computer science portal for geeks

Towards Data Science

Python Programming Blog
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.