рдореМрд╕рдо рдХреА рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдлреНрд▓рд╛рд╕реНрдХ рдкрд░ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдмреЙрдЯ

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░, рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдорд╛рд╕реНрдХреЛ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдореМрд╕рдо рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди рдореЗрдВ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдмреЙрдЯ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдПред


рдпрд╣ рд▓реЗрдЦ рдкрд╛рдпрдерди рдореЗрдВ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИ, рдЬреЛ рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрд╛рд╣рд░реА рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред


рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдФрд░ рдПрдкреАрдЖрдИ:


  • рдкрд╛рдпрдерди рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд╣реИ
  • рдлреНрд▓рд╛рд╕реНрдХ - рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд░реВрдкрд░реЗрдЦрд╛,
  • рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдмреЙрдЯ рдПрдкреАрдЖрдИ,
  • рд╡реЗрджрд░рд╕реНрдЯреИрдХ рдПрдкреАрдЖрдИ
  • Ngrok рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрд░рдВрдЧ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реЗрд╡рд╛ рд╣реИред

рд╕рдм рдХреБрдЫ рдХреИрд╕реЗ рдЪрд▓реЗрдЧрд╛?


  1. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмреЙрдЯ рдХреЛ рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рд╕рдВрджреЗрд╢ рд▓рд┐рдЦрддрд╛ рд╣реИред
  2. рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдВрджреЗрд╢ рдХреЛ рд╕рд░реНрд╡рд░ рдкрд░ рдлреЙрд░рд╡рд░реНрдб рдХрд░рддрд╛ рд╣реИред
  3. рд╕рд░реНрд╡рд░ рд╡реЗрджрд░рд╕реНрдЯреИрдХ рд╕реЗ рдореМрд╕рдо рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИред
  4. рд╕рд░реНрд╡рд░ рдореМрд╕рдо рдХреА рдЬрд╛рдирдХрд╛рд░реА рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдХреЛ рднреЗрдЬрддрд╛ рд╣реИред
  5. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореМрд╕рдо рдХреА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред

рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдкрдВрдЬреАрдХрд░рдг рдмреЙрдЯ


рдЗрд╕ рд╕реНрддрд░ рдкрд░, рд╣рдореЗрдВ рдПрдХ рдмреЙрдЯ рдмрдирд╛рдиреЗ рдФрд░ рдЙрд╕ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЖрджреЗрд╢ рдХреЗ рд╕рд╛рде рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдореЗрдВ @botfather bot рд▓реЙрдиреНрдЪ рдХрд░реЗрдВред


/start

рд╣рдо рдмреЙрдЯ рд╕реЗ рд╕рдВрджреЗрд╢ рдХреЗ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдПрдХ рдирдпрд╛ рдмреЙрдЯ рдмрдирд╛рддреЗ рд╣реИрдВред


рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдкрдВрдЬреАрдХрд░рдг рдмреЙрдЯ!


рдмреЙрдЯ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдЗрд╕реЗ рдХреБрдЫ рд╕рдВрджреЗрд╢ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЗрд╕реЗ рдареАрдХ рдХрд░реЛред


рдлреНрд▓рд╛рд╕реНрдХ рдорджрдж


рдлреНрд▓рд╛рд╕реНрдХ рдкрд╛рдпрдерди рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдореЗрдВ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлреНрд░реЗрдорд╡рд░реНрдХ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╡реЗрд░реНрдХреЗрдЬрдЧ рдЯреВрд▓рдХрд┐рдЯ, рд╕рд╛рде рд╣реА рдЬрд┐рдВрдЬрд╛ 2 рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рддрдерд╛рдХрдерд┐рдд рдорд╛рдЗрдХреНрд░реЛрдлреНрд░реЗрдо рдХреА рд╢реНрд░реЗрдгреА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ - рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдиреНрдпреВрдирддрд░ рдврд╛рдБрдЪреЗ рдЬреЛ рдЬрд╛рдирдмреВрдЭрдХрд░ рдХреЗрд╡рд▓ рд╕рдмрд╕реЗ рдмреБрдирд┐рдпрд╛рджреА рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред


PyPI, 1.0 Python 2.7, Python 3.3 .


.


Flask


Python . . .


$ mkdir weather_bot
$ cd weather_bot
$ python3 -m venv venv

Flask.


(venv)$ pip install Flask

Installation.


Flask


weather_bot app.py .


from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

.


(venv)$ export FLASK_APP=app.py
(venv)$ flask run
 * Running on http://127.0.0.1:5000/

http://127.0.0.1:5000/ , "Hello, World!".
Quickstart.


localhost ngrok


Ngrok тАФ , .


  1. ngrok.
  2. .
  3. HTTP 5000 .

$ ./ngrok http 5000


, Telegram , . , Telegram. POST setWebhook. .


$ curl --location --request POST 'https://api.telegram.org/bot{token}/setWebhook' \
--header 'Content-Type: application/json' \
--data-raw '{
    "url": "{url}"
}'

{token} тАФ 840446984:AAFuVTW-FYP5tJVu8mqhc9y4E0j1fr2lCD0, BotFather,
{url} тАФ https://32515a83.ngrok.io, ngrok. . https, Telegram url.


cURL wiki.


"ok": true, .


{
    "ok": true,
    "result": true,
    "description": "Webhook was set"
}

, . app.py .


from flask import Flask, request

app = Flask(__name__)

@app.route("/", methods=["GET", "POST"])
def receive_update():
    if request.method == "POST":
        print(request.json)
    return {"ok": True}

Flask. Ctrl+C .


(venv)$ flask run

. Telegram. , .


рдХрдВрд╕реЛрд▓ рдореЗрдВ рд╕рдВрджреЗрд╢!



, . "pong" .


API Telegram sendMessage. .


requests, , . .


(venv)$ pip install requests

requests from flask import Flask, request app.py.


import requests

id . Telegram-.


chat_id = request.json["message"]["chat"]["id"]

, id .


def send_message(chat_id, text):
    method = "sendMessage"
    token = "840446984:AAFuVTW-FYP5tJVu8mqhc9y4E0j1fr2lCD0"
    url = f"https://api.telegram.org/bot{token}/{method}"
    data = {"chat_id": chat_id, "text": text}
    requests.post(url, data=data)

requests .


send_message() receive_update().


send_message(chat_id, "pong")

app.py


from flask import Flask, request
import requests

app = Flask(__name__)

def send_message(chat_id, text):
    method = "sendMessage"
    token = "840446984:AAFuVTW-FYP5tJVu8mqhc9y4E0j1fr2lCD0"
    url = f"https://api.telegram.org/bot{token}/{method}"
    data = {"chat_id": chat_id, "text": text}
    requests.post(url, data=data)

@app.route("/", methods=["GET", "POST"])
def receive_update():
    if request.method == "POST":
        print(request.json)
        chat_id = request.json["message"]["chat"]["id"]
        send_message(chat_id, "pong")
    return {"ok": True}


current Weatherstack API .
2 Query Params: access_key тАФ 86a3fe972756lk34a6a042bll348b1e3, , query тАФ , , тАФ Moscow.


.


app = Flask(__name__).


def get_weather():
    params = {"access_key": "86a3fe972756lk34a6a042bll348b1e3", "query": "Moscow"}
    api_result = requests.get('http://api.weatherstack.com/current', params)
    api_response = api_result.json()
    return f"   {api_response['current']['temperature']} "

receive_update() "pong" .


weather = get_weather()
send_message(chat_id, weather)

рд╕рдВрдкреВрд░реНрдг рдлреНрд▓рд╛рд╕реНрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдХреЛрдб рдореЗрдВ 3 рдХрд╛рд░реНрдп рд╣реЛрддреЗ рд╣реИрдВ: рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рд╕реЗ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛, рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬрдирд╛ рдФрд░ рд╡реЗрджрд░рд╕реНрдЯреИрдХ рд╕реЗ рдореМрд╕рдо рдХреА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ред


from flask import Flask, request
import requests

app = Flask(__name__)

def get_weather():
    params = {"access_key": "86a3fe972756lk34a6a042bll348b1e3", "query": "Moscow"}
    api_result = requests.get('http://api.weatherstack.com/current', params)
    api_response = api_result.json()
    return f"   {api_response['current']['temperature']} "

def send_message(chat_id, text):
    method = "sendMessage"
    token = "840446984:AAFuVTW-FYP5tJVu8mqhc9y4E0j1fr2lCD0"
    url = f"https://api.telegram.org/bot{token}/{method}"
    data = {"chat_id": chat_id, "text": text}
    requests.post(url, data=data)

@app.route("/", methods=["GET", "POST"])
def receive_update():
    if request.method == "POST":
        print(request.json)
        chat_id = request.json["message"]["chat"]["id"]
        weather = get_weather()
        send_message(chat_id, weather)
    return {"ok": True}

рдмрд╕ рдЗрддрдирд╛ рд╣реА! рдЗрд╕ рд╕рд░рд▓ рддрд░реАрдХреЗ рд╕реЗ, рд╣рдордиреЗ рдореЙрд╕реНрдХреЛ рдХреЗ рдореМрд╕рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдмреЙрдЯ рдХреЛ рд╕рд┐рдЦрд╛рдпрд╛ред


All Articles