рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдХреЗ рд╕рд╛рде рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдг рдкреНрд░рдмрдВрдзрди

рдХреНрдпреВрдП рдЗрдВрдЬреАрдирд┐рдпрд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВрдиреЗ рдПрдХ рдЖрддреНрдо-рдкрд░реАрдХреНрд╖рдг рдкреНрд░рдгрд╛рд▓реА рд╡рд┐рдХрд╕рд┐рдд рдХреАред рдХрдИ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛:

  • рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ CI рдореЗрдВ рдЕрдкрдиреА рдиреМрдХрд░рд┐рдпрд╛рдВ рдмрдирд╛рдиреА рдереАрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╣рд╛рде рд╕реЗ рдЪрд▓рд╛рдирд╛ рдерд╛ред
  • рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рд╕реНрд╡-рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ред
  • рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдХрд╣реАрдВ рд╕реЗ рднреА рдСрдЯреЛрдЯреЗрд╕реНрдЯ рдЪрд▓рд╛рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрдерддрд╛ред
  • рдХреНрдпреВрдП рдореИрдиреБрдЕрд▓ рдЯреЗрд╕реНрдЯ рдЗрдВрдЬреАрдирд┐рдпрд░ рдЦреБрдж рдСрдЯреЛрдЯреЗрд╕реНрдЯ рдирд╣реАрдВ рдЪрд▓рд╛ рд╕рдХрддреЗ рдереЗред

рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЙрдЯ рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдмрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдЬреЛ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдХрд╡рд░ рдХрд░реЗрдЧрд╛ред

рд╡рд┐рдЪрд╛рд░ рдХрд╛ рд╡рд┐рд╡рд░рдг:

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЪреИрдЯ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдХрдорд╛рдВрдб рднреЗрдЬрддрд╛ рд╣реИ, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╕реАрдЖрдИ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдмрд┐рд▓реНрдб рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИред CI pytest рдЕрдВрдХреЛрдВ рдХреЗ рд╕рд╛рде рдСрдЯреЛрдЯреЗрд╕реНрдЯ рдЪрд▓рд╛рддрд╛ рд╣реИред рд░рди рдХреЗ рдмрд╛рдж, рдЯреЗрд╕реНрдЯ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рдЕрдВрджрд░ рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрд┐рд▓реНрдб рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рддреА рд╣реИ, рд▓реЙрдЧ рдПрдХрддреНрд░ рдХрд░рддреА рд╣реИ рдФрд░ рдЗрд╕реЗ рдЯреЗрд▓реАрдлрд╝реЛрди рдЪреИрдЯ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╡рд╛рдкрд╕ рднреЗрдЬрддреА рд╣реИред

рдЙрдкрдХрд░рдг:

рдЙрдкрдХрд░рдг
  • рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ - рдкрд╛рдпрдерди
  • рдЯреЗрд╕реНрдЯ рдлреНрд░реЗрдорд╡рд░реНрдХ - рдкрд╛рдЗрд╕реНрдЯреЗрд╕реНрдЯ
  • HTTP рдХреНрд▓рд╛рдЗрдВрдЯ - рдЕрдиреБрд░реЛрдз
  • DataBase - SQLite3
  • ORM - Peewee
  • CI рд╕рд┐рд╕реНрдЯрдо - рдЯреНрд░реИрд╡рд┐рд╕ CI



рд╕рд╛рдордЧреНрд░реА

  1. рдЯреНрд░реЗрдирд┐рдВрдЧ
  2. рдмреЙрдЯ рдкрдВрдЬреАрдХрд░рдг
  3. рдПрдХ рдкрд░реАрдХреНрд╖рдг рднрдВрдбрд╛рд░ рддреИрдпрд╛рд░ рдХрд░рдирд╛
  4. рдЯреЗрд╕реНрдЯ рдФрд░ рд▓реЙрдЧрд┐рдВрдЧ
  5. рд░рд┐рдкреЛрд░реНрдЯ рдЬрдирд░реЗрд╢рди
  6. рдЯреНрд░реИрд╡рд┐рд╕ рд╕реАрдЖрдИ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ
  7. рдмреЙрдЯ рд╕реЗрдЯрдЕрдк
  8. рдмреЙрдЯ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд
  9. рд╣рд░реЛрдХреВ рдкрд░ рддреИрдирд╛рддреА


рдмреЙрдЯ рдкрдВрдЬреАрдХрд░рдг


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдмреЙрдЯ рдХреЗ рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдФрд░ рдЗрд╕рдХреА рдЕрдиреВрдареА рдЖрдИрдбреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рдЯреЛрдХрди рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдВрджреЗрд╢ рд▓рд┐рдЦреЗрдВ / @BotFather bot рдкрд░ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВред
рд╣рдорд╛рд░реА рдореБрдЦреНрдп рдЯреАрдо / рдиреНрдпреВрдмреЙрдЯ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдХреЗ рд╣рдореЗрдВ рдмреЙрдЯ рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред
рд▓реЗрдХрд┐рди рдПрдХ рдирд┐рдпрдо рд╣реИ - рдирд╛рдо рдмреЙрдЯ рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдмреЛрдЯрдлрд╝рд╛рджрд░ рдмреЙрдЯ рдХрд╛ рдирд╛рдо рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХрд╛ рдЯреЛрдХрди рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдЪреИрдЯрд┐рдВрдЧ рд╢реБрд░реВ рдХрд░рдХреЗ рдмреЙрдЯ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░реЗрдВред рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдЧреЗрдЯрдЕрдк рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

https://api.telegram.org/bot{_}/getUpdates 

рдкреНрд░рд╛рдкреНрдд hat_id рдпрд╛рдж рд░рдЦреЗрдВред


рдПрдХ рдкрд░реАрдХреНрд╖рдг рднрдВрдбрд╛рд░ рддреИрдпрд╛рд░ рдХрд░рдирд╛


рдЕрдЧрд▓рд╛, рдЖрдкрдХреЛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рднрдВрдбрд╛рд░ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрд╛ рдкрд╣рд▓реЗ рд╕реЗ рддреИрдпрд╛рд░ рд▓реЗрдЦ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред


рдЯреЗрд╕реНрдЯ рдФрд░ рд▓реЙрдЧрд┐рдВрдЧ

рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдп рдмрдирд╛рдПрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкрд╛рдЗрд╕реНрдЯреЗрд╕реНрдЯ рдорд╛рд░реНрдХ рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реЗрдВ - рдкреВрд░реНрдг, рдзреВрдореНрд░рдкрд╛рди рдФрд░ рдкрдХреНрд╖реАред

Pytest.ini рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдХрд░ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд▓реЙрдЧрд┐рдВрдЧ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рд╡рд┐рдзрд┐ рдореЗрдВ рдХреЙрд▓ рдЬреЛрдбрд╝рдХрд░ рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рд▓реЙрдЧрд┐рдВрдЧ рдЬреЛрдбрд╝рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
Pytest.ini рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд╛рдЗрд╡ рд▓реЙрдЧ рдФрд░ рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкрд▓реЗрдЯ рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ
 import pytest import requests import logging @pytest.mark.full @pytest.mark.smoke def test_cat_facts(): query = {"animal_type": "cat", "amount": "2"} response = requests.get("https://cat-fact.herokuapp.com/facts/random", params=query) logging.info(f"Request url: {response.request.url}, body: {response.request.body}") logging.info(f"Request status: {response.status_code}, body: {response.text}") assert response.status_code == 200 @pytest.mark.full @pytest.mark.smoke def test_dog_facts(): query = {"animal_type": "dog", "amount": "2"} response = requests.get("https://cat-fact.herokuapp.com/facts/random", params=query) logging.info(f"Request url: {response.request.url}, body: {response.request.body}") logging.info(f"Request status: {response.status_code}, body: {response.text}") assert response.status_code == 200 @pytest.mark.full def test_horse_facts(): query = {"animal_type": "horse", "amount": "2"} response = requests.get("https://cat-fact.herokuapp.com/facts/random", params=query) logging.info(f"Request url: {response.request.url}, body: {response.request.body}") logging.info(f"Request status: {response.status_code}, body: {response.text}") assert response.status_code == 200 @pytest.mark.bird def test_bird_facts(): query = {"animal_type": "bird", "amount": "2"} response = requests.get("https://cat-fact.herokuapp.com/facts/random", params=query) logging.info(f"Request url: {response.request.url}, body: {response.request.body}") logging.info(f"Request status: {response.status_code}, body: {response.text}") assert response.status_code == 200 



pytest.ini
 [pytest] markers = smoke: for smoking testing full: for regression testing bird: facts only bird log_cli = 1 log_cli_level=INFO log_cli_format = %(asctime)s [%(levelname)8s] %(message)s log_cli_date_format='%Y-%m-%d %H:%M:%S' log_file = test_log.log log_file_level=INFO log_file_format= %(asctime)s [%(levelname)8s] %(message)s log_file_date_format='%Y-%m-%d %H:%M:%S' 




рд░рд┐рдкреЛрд░реНрдЯ рдЬрдирд░реЗрд╢рди

рд╣рдо рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдЕрд╕реЗрдВрдмрд▓реА рдкреВрд░реА рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, CI рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд▓реЙрдЧ рдХреЗ рд╕рд╛рде рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдЪреИрдЯ рдореЗрдВ рднреЗрдЬ рджреЗрддрд╛ рд╣реИред
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЕрдВрджрд░, рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЧрдП TELEGRAM_BOT рдФрд░ CHAT_ID рдорд╛рдиреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб
 import requests import os TRAVIS_TEST_RESULT = os.environ.get("TRAVIS_TEST_RESULT") TRAVIS_REPO_SLUG = os.environ.get("TRAVIS_REPO_SLUG") TRAVIS_BRANCH = os.environ.get("TRAVIS_BRANCH") TRAVIS_JOB_WEB_URL = os.environ.get("TRAVIS_JOB_WEB_URL") TRAVIS_COMMIT_MESSAGE = os.environ.get("TRAVIS_COMMIT_MESSAGE") TELEGRAM_TOKEN = "808619876:GHrtj9zs-KvKhhtWyu1YoxjtIikUYMGVjD8g" CHAT_ID = "272560060" if TRAVIS_TEST_RESULT != 0: build_status = "" else: build_status = "" TEXT = f" : {build_status} \n : {TRAVIS_REPO_SLUG} \n : {TRAVIS_BRANCH} \n Commit : {TRAVIS_COMMIT_MESSAGE} \n -: {TRAVIS_JOB_WEB_URL}" def send_message(): URL = f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendMessage" body = {'chat_id': CHAT_ID, 'text': TEXT} response = requests.post(url=URL, json=body) return response def send_file(): URL = f"https://api.telegram.org/bot{TELEGRAM_TOKEN}/sendDocument" body = {'chat_id': CHAT_ID} file = {"document": open("test_log.log")} response = requests.post(url=URL, data=body, files=file) return response send_message() send_file() 


рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рд┐рд╕реНрдЯрдо рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ рдФрд░ рдЯреНрд░реИрд╡рд┐рд╕ рд╕реАрдЖрдИ рд╕реЗ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рддреА рд╣реИред

рдпрджрд┐ TRAVIS_TEST_RESULT рдХрд╛ рдорд╛рди рд╢реВрдиреНрдп рдХреЗ рдмрд░рд╛рдмрд░ рдирд╣реАрдВ рд╣реИ, рддреЛ рдорд╛рди "рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ" рдкрд░ рд╕реЗрдЯ рд╣реИ, Send_message рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд╣рд▓реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЕрд╕реЗрдВрдмрд▓реА рдХреА рдЬрд╛рдирдХрд╛рд░реА рдЪреИрдЯ (рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдирд╛рдо, рдЪрдпрдирд┐рдд рд╢рд╛рдЦрд╛, рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдХрдорд┐рдЯ рдХрд╛ рдирд╛рдо, рд╡реЗрдм рд▓реЙрдЧ рдХрд╛ рд▓рд┐рдВрдХ) рдХреЛ рднреЗрдЬрддрд╛ рд╣реИ, рдлрд┐рд░ send_file рдлрд╝рдВрдХреНрд╢рди рднреЗрдЬрддрд╛ рд╣реИред рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ред

рдкрд░реАрдХреНрд╖рдг рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ - travis.yml рдЬреЛрдбрд╝реЗрдВред рдЕрдВрджрд░ рд╣рдо рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХрд╛рдо рдХрд░реЗрдЧреАред

travis.yml
 language: python python: - "3.7" install: - pip install -r requirements.txt script: pytest -m smoke after_script: - python tg_command.py 


рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдЯреНрд░реИрд╡рд┐рд╕ рд╕реАрдЖрдИ рдореЗрдВ рдЗрд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП GitHub рдкрд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


TRAVIS_CI рдХреА рд╕реНрдерд╛рдкрдирд╛


рд╣рдо рд╕рд╛рдЗрдЯ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ ред
рдЕрдкрдиреЗ GitHub рдЦрд╛рддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реЙрдЧ рдЗрди рдХрд░реЗрдВред рдбреИрд╢рдмреЛрд░реНрдб рдЯреИрдм рдкрд░ рдЬрд╛рдПрдВред рдкрд╣рд▓реЗ рд╕реЗ рдЦреЛрд▓реЗ рдЧрдП DevTools (Network), рдкрд░реАрдХреНрд╖рдг рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд╕рд╛рдордиреЗ рд╡рд╛рд▓реА рд╕рд╛рдЗрдЯ рдкрд░ Repositories рд╕рдм-рдЯреИрдм рдореЗрдВ, рд╕реНрд▓рд╛рдЗрдбрд░ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ - рдЗрд╕рдХреА рдЕрд╕реЗрдВрдмрд▓реА рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░реЗрдВред рдиреЗрдЯрд╡рд░реНрдХ рдЯреИрдм (DevTools) рдореЗрдВ, рдПрдХ рд╕рдХреНрд░рд┐рдп рдЕрдиреБрд░реЛрдз рдЖрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдореЗрдВ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреА рдЖрдИрдбреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИ, рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП (рдХреЙрдкреА / рд▓рд┐рдЦрдирд╛)ред рд╕реЗрдЯрд┐рдВрдЧ рдЯреИрдм рдореЗрдВ рд╕рд╛рдЗрдЯ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ред рд╣рдо рдЯреЛрдХрди рдХреЛ рдХреЙрдкреА рдпрд╛ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ - рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


рдмреЙрдЯ рд╕реЗрдЯрдЕрдк


рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдо рдХреЛрдб рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдЖрдк рдЗрд╕реЗ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдм рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╡рд┐рд╖рдп рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ рд╕рдордЭрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рддреЛ рдЪрд▓рд┐рдП рдЕрдкрдиреЗ рдмреЙрдЯ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ:

рднрдВрдбрд╛рд░ рдХреЗ рдЕрдВрджрд░ рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ:

  1. main.py - bot script;
  2. рдореЙрдбрд▓-рдПрдПрдордбреА - рдУрдЖрд░рдПрдо рдХреЗ рд▓рд┐рдП рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓;
  3. conf.ini - рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЪрд░ рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓;
  4. runtime.txt - рдЯреНрд░реИрд╡рд┐рд╕ рд╕реАрдЖрдИ рдХреЗ рд▓рд┐рдП рдирд┐рд╢реНрдЪрд┐рдд рдкрд╛рдпрдерди рд╕рдВрд╕реНрдХрд░рдг рдорд╛рди;
  5. procfile - gunicorn рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрд┐рдВрдЧ;
  6. wsgi.py - gunicorn рдХреЗ рд╕рд╛рде рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдлрд╝рд╛рдЗрд▓ред

рдЕрдкрдиреЗ рдмреЙрдЯ рдХреЛ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдбреЗрдЯрд╛ рдХреЛ conf.ini рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛, рдЕрд░реНрдерд╛рддреН:

  • travis_token - рдЯреНрд░реИрд╡рд┐рд╕ рд╕реАрдЖрдИ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдЯреЛрдХрди рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВ;
  • travis_base_url - рдЯреНрд░реИрд╡рд┐рд╕ CI рдПрдкреАрдЖрдИ рдХрд╛ рдкрддрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ;
  • travis_repository_id - рдЯреНрд░реИрд╡рд┐рд╕ CI рдХреЗ рдЕрдВрджрд░ рдСрдЯреЛрдЯреЗрд╕реНрдЯ рдХреЗ рд╕рд╛рде рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреА рдЖрдИрдбреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ;
  • telegram_chat_id - рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдХреА рдЪреИрдЯ рдЖрдИрдбреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рдмреЙрдЯ рд╕реЗ рд╕рдВрджреЗрд╢ рднреЗрдЬреЗ рдЬрд╛рдПрдВрдЧреЗ;
  • telegram_bot_url - bot рдХреЛ url рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред

Conf.ini рдЙрджрд╛рд╣рд░рдг
 [travis] travis_token = token HkjhkjgGKJhjgFGfdgd travis_base_url = https://api.travis-ci.org travis_repository_id = 10898384 [telegram] telegram_chat_id = 24234234 telegram_bot_url = https://api.telegram.org/bot87543366:AAHtj9zs-Kv4zGWyu1eTXegikUYMGVjD8g/ 



рдмреЙрдЯ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд

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

рдмреЙрдЯ рдореЗрдВ рдХрдорд╛рдВрдб рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ:

рд╕реАрдорд╛рдВрдХрдХ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдХреЛрдИ рднреА рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

  • add_m - рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдЯ (рдЕрдЬрдЧрд░ рдХреЗ рдирд┐рд╢рд╛рди) рдЬреЛрдбрд╝реЗрдВред
    рд╕рд╛рдБрдЪрд╛: * рдХрдорд╛рдВрдб * {рдХрд┐рдЯ рд╡рд┐рд╡рд░рдг} {рд╕реАрдорд╛рдВрдХрдХ} {рдирд╛рдо рдЪрд┐рд╣реНрди}ред
    рдЙрджрд╛рд╣рд░рдг: add_m рдкрд░реАрдХреНрд╖рдг рдкрдХреНрд╖реА / рдкрдХреНрд╖реАред
  • add_b - рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рд╛рдЦрд╛ рдЬреЛрдбрд╝реЗрдВред
    рд╕рд╛рдБрдЪрд╛: * рдХрдорд╛рдВрдб * {рд╢рд╛рдЦрд╛ рдХрд╛ рд╡рд┐рд╡рд░рдг} {рдкрд░рд┐рд╕реАрдорди} {рдЧрд┐рдЯ рд╕реЗ рд╢рд╛рдЦрд╛ рдХрд╛ рдирд╛рдо}ред
    рдЙрджрд╛рд╣рд░рдг: add_b рдорд╛рд╕реНрдЯрд░ред
  • рдЪрдпрди рдХрд░реЗрдВ - рдЖрдк рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рд╛рдЦрд╛ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
    рд╕рд╛рдБрдЪрд╛: * рдХрдорд╛рдВрдб *ред
    рдЙрджрд╛рд╣рд░рдг: рд╕реЗрд▓реЗрдХреНрдЯ рдХрдорд╛рдВрдб рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдмрдЯрди рдЙрди рд╢рд╛рдЦрд╛рдУрдВ рдХреЛ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВ рдЬреЛ add_b рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЧрдП рдереЗред
  • рд░рди - рдЕрд╕реЗрдВрдмрд▓реА рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рдЖрджреЗрд╢ред
    рд╕рд╛рдБрдЪрд╛: * рдХрдорд╛рдВрдб *ред
    рдЙрджрд╛рд╣рд░рдг: рд░рди рдХрдорд╛рдВрдб рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, add_m рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЧрдП рдСрдЯреЛрдЯреЗрд╕реНрдЯ рдХреЗ рд╕реЗрдЯ рдХреЛ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдмрдЯрди рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░, рдЪрдпрдирд┐рдд рдХрдорд╛рдВрдб рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╢рд╛рдЦрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЪреБрдиреА рдЬрд╛рддреА рд╣реИред
  • del_m - рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИред
    рд╕рд╛рдБрдЪрд╛: * рдХрдорд╛рдВрдб * {рдирд╛рдо рдирд┐рд╢рд╛рди}ред
    рдЙрджрд╛рд╣рд░рдг: del_m рдкрдХреНрд╖реАред
  • del_b - рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рджрд░реНрдЬ рд╢рд╛рдЦрд╛рдУрдВ рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реИред
    рд╕рд╛рдБрдЪрд╛: * рдХрдорд╛рдВрдб * {git рд╕реЗ рд╢рд╛рдЦрд╛}ред
    рдЙрджрд╛рд╣рд░рдг: del_b рдорд╛рд╕реНрдЯрд░ред

рдмреЙрдЯ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?

1. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдЬреЛрдбрд╝рддрд╛ рд╣реИ (add_m):
рдХрдорд╛рдВрдб рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рдХреЛ 2 рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ - рдЧрд┐рдЯ рдореЗрдВ рд╢рд╛рдЦрд╛ рдХрд╛ рд╡рд┐рд╡рд░рдг рдФрд░ рдирд╛рдоред рдирд╛рдо рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдЕрдВрджрд░ mark_name рдХреЙрд▓рдо рдореЗрдВ рдФрд░ mark_description рдХреЙрд▓рдо рдореЗрдВ рд╡рд┐рд╡рд░рдг рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред

2. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╢рд╛рдЦрд╛рдПрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИ (add_b):
рдХрдорд╛рдВрдб рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рдХреЛ 2 рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ - рдЧрд┐рдЯ рдореЗрдВ рд╢рд╛рдЦрд╛ рдХрд╛ рд╡рд┐рд╡рд░рдг рдФрд░ рдирд╛рдоред рдирд╛рдо рдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдЕрдВрджрд░ Branch_name рдХреЙрд▓рдо рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рд╡рд┐рд╡рд░рдг Branch_description рдХреЙрд▓рдо рдореЗрдВ рд╣реИред

3. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╢рд╛рдЦрд╛ рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИ (рдЪреБрдиреЗрдВ):
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЪреИрдЯ рдореЗрдВ рдмрдЯрди рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЯреЗрдмрд▓ рдмреНрд░рд╛рдВрдЪ_рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрд╢рди рдФрд░ рдмреНрд░рд╛рдВрдЪ_рдирд╛рдо рдХреЗ рдбреЗрдЯрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдмрдирддрд╛ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд╛рдВрдЫрд┐рдд рд╢рд╛рдЦрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдмрдЯрди рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкрд╕рдВрджреАрджрд╛_рдмреНрд░рдВрдЪ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред

4. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрд┐рд▓реНрдб рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди (рд░рди) рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ:
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЪреИрдЯ рдореЗрдВ рдмрдЯрди рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рддрд╛рд▓рд┐рдХрд╛рдУрдВ рд╕реЗ рдбреЗрдЯрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдмрдирддрд╛ рд╣реИ
mark_description рдФрд░ mark_nameред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдСрдЯреЛрдЯреЗрд╕реНрдЯ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдмрдЯрди рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИред

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдЪреБрдиреЗ рдЧрдП рдбреЗрдЯрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдмреЙрдЯ TravisCI рд╡рд░реНрдЧ рдореЗрдВ рдЯреНрд░рд┐рдЧрд░ рд╡рд┐рдзрд┐ рдореЗрдВ рдПрдХ рдЕрдиреБрд░реЛрдз рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдЯреНрд░реИрд╡рд┐рд╕ рдХреЛ рднреЗрдЬрддрд╛ рд╣реИред рдЯреНрд░реИрд╡рд┐рд╕ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдЕрдВрджрд░, рдПрдХ рдмрд┐рд▓реНрдб рд╡рд┐рдХрд▓реНрдк рд╕рдХреНрд░рд┐рдп рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рд╡рд┐рдХрд▓реНрдк travis.yml рдлрд╝рд╛рдЗрд▓ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддрд╛ рд╣реИ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗрдХреНрд╢рди рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдЪрдпрдирд┐рдд рдбреЗрдЯрд╛ рдореЗрдВ рдмрджрд▓рддрд╛ рд╣реИред


HEROKU рдкрд░ рддреИрдирд╛рддреА


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

рдмреЙрдЯ рдХреА рддреИрдирд╛рддреА рдХреИрд╕реЗ рдХрд░реЗрдВ?

рдкреВрд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХрд╛ рд▓рд┐рдВрдХ рдЫреЛрдбрд╝ рджреВрдВрдЧрд╛:

рдпрджрд┐ рдЖрдк GUI рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рд░реЛрдХреВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ Github рдкрд░ рдХреЛрдб рднрд░реЗрдВред рдЖрдкрдХреЛ рд╣рд░реЛрдХреВ рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрдВрдЬреАрдХрд░рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдкрдВрдЬреАрдХрд░рдг рдХреЗ рдмрд╛рдж, рдирдпрд╛ -> рдирдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВ -> рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдирд╛рдо рджрд░реНрдЬ рдХрд░реЗрдВ рдФрд░ рдПрдХ рдХреНрд╖реЗрддреНрд░ рдЪреБрдиреЗрдВред рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдЯреИрдм рдкрд░ рдЬрд╛рдПрдБ рдФрд░ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╡рд┐рдзрд┐ рдореЗрдВ Github рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред

рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╣рдо рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреА рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреНрд▓реЙрдХ рдкреНрд░рдХрдЯ рдХрд░реЗрдВред рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрд╛ рдирд╛рдо рджрд░реНрдЬ рдХрд░реЗрдВ рдФрд░ рдЦреЛрдЬ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдЦреЛрдЬ рдкрд░рд┐рдгрд╛рдореЛрдВ рдореЗрдВ, рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдирд╛рдо рдХреЗ рд╡рд┐рдкрд░реАрдд, рдХрдиреЗрдХреНрдЯ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдореИрдиреНрдпреБрдЕрд▓ рдирд┐рдпреЛрдЬрд┐рдд рдмреНрд▓реЙрдХ рдореЗрдВ, рд╢рд╛рдЦрд╛ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ "рддреИрдирд╛рдд рдХрд░реЗрдВ" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред

рдЕрдВрддрд┐рдо рдХреНрд╖рдг - рдЖрдкрдХреЛ рдПрдХ GET рдЕрдиреБрд░реЛрдз рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ webhooks рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
 https://api.telegram.org/bot{id_}/setWebhook?url=https://{_}.herokuapp.com/bot 


рдмреЙрдЯ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдо рдЬрд╛рдБрдЪрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ:

рдЫрд╡рд┐

Source: https://habr.com/ru/post/hi471364/


All Articles