ืชื—ื–ื™ืช ืžื–ื’ ื”ืื•ื•ื™ืจ ื”ืžื“ื•ื™ืงืช ื‘ื™ื•ืชืจ: ื‘ื•ื˜ ืœื˜ืœื’ืจื ืขืœ ืคื•ื ืงืฆื™ื•ืช ืขื ืŸ

ืชื—ื–ื™ืช ืžื–ื’ ื”ืื•ื•ื™ืจ ื”ืžื“ื•ื™ืงืช ื‘ื™ื•ืชืจ: ื‘ื•ื˜ ืœื˜ืœื’ืจื ืขืœ ืคื•ื ืงืฆื™ื•ืช ืขื ืŸ
ื™ืฉ ื”ืจื‘ื” ืฉื™ืจื•ืชื™ื ื”ืžืกืคืงื™ื ืžื™ื“ืข ืขืœ ืžื–ื’ ื”ืื•ื•ื™ืจ, ืื‘ืœ ืขืœ ืื™ื–ื” ืžื”ื ื›ื“ืื™ ืœืกืžื•ืš? ื›ืฉื”ืชื—ืœืชื™ ืœืจื›ื•ื‘ ืชื›ื•ืคื•ืช, ืจืฆื™ืชื™ ืœืงื‘ืœ ืืช ื”ืžื™ื“ืข ื”ืžื“ื•ื™ืง ื‘ื™ื•ืชืจ ืขืœ ืชื ืื™ ืžื–ื’ ื”ืื•ื•ื™ืจ ื‘ืžืงื•ื ื‘ื• ืื ื™ ืจื•ื›ื‘.

ื”ืžื—ืฉื‘ื” ื”ืจืืฉื•ื ื” ืฉืœื™ ื”ื™ื™ืชื” ืœื‘ื ื•ืช ืชื—ื ืช ืžื–ื’ ืื•ื•ื™ืจ ืงื˜ื ื” ืขืฉื” ื–ืืช ื‘ืขืฆืžืš ืขื ื—ื™ื™ืฉื ื™ื ื•ืœืงื‘ืœ ืžืžื ื” ื ืชื•ื ื™ื. ืื‘ืœ ืœื "ื”ืžืฆืืชื™ ืืช ื”ื’ืœื’ืœ ืžื—ื“ืฉ" ื•ื‘ื—ืจืชื™ ื‘ืžื™ื“ืข ืžื–ื’ ืื•ื•ื™ืจ ืฉืžืฉืžืฉ ื‘ืชืขื•ืคื” ืื–ืจื—ื™ืช ื›ืžืงื•ืจ ืœื ืชื•ื ื™ื ืžืื•ืžืชื™ื, ื›ืœื•ืžืจ ืžื˜ืจ (ื“ื•ื— ืชืขื•ืคื” ืžื˜ืื•ืจื•ืœื•ื’ื™) ื• TAF (TAF - ืชื—ื–ื™ืช ืชืขื•ืคื” ืžืกื•ืฃ). ื‘ืชืขื•ืคื”, ื—ื™ื™ื”ื ืฉืœ ืžืื•ืช ืื ืฉื™ื ืชืœื•ื™ื™ื ื‘ืžื–ื’ ื”ืื•ื•ื™ืจ, ื•ืœื›ืŸ ื”ืชื—ื–ื™ื•ืช ืžื“ื•ื™ืงื•ืช ื›ื›ืœ ื”ืืคืฉืจ.

ืžื™ื“ืข ื–ื” ืžืฉื•ื“ืจ XNUMX/XNUMX ื‘ืงื•ืœ ื‘ื›ืœ ืฉื“ื” ืชืขื•ืคื” ืžื•ื“ืจื ื™ ื‘ื˜ื•ืคืก ืื˜ื™ืก (ืฉื™ืจื•ืช ืžืกื•ืฃ ืื•ื˜ื•ืžื˜ื™) ื• VOLMET (ืžืฆืจืคืชื™ืช. ื›ืจืš - ื˜ื™ืกื” ื• ืžื˜ืื•ืจื•ืœื•ื’ื™ - ืžื–ื’ ืื•ื•ื™ืจ). ื”ืจืืฉื•ืŸ ืžืกืคืง ืžื™ื“ืข ืขืœ ืžื–ื’ ื”ืื•ื•ื™ืจ ื‘ืคื•ืขืœ ื‘ืฉื“ื” ื”ืชืขื•ืคื”, ื•ื”ืฉื ื™ ืžืกืคืง ืชื—ื–ื™ืช ืœ-24-30 ื”ืฉืขื•ืช ื”ื‘ืื•ืช, ืœื ืจืง ื‘ืฉื“ื” ื”ืฉื™ื“ื•ืจ, ืืœื ื’ื ื‘ืื—ืจื™ื.

ื“ื•ื’ืžื” ืœืชืคืขื•ืœ ATIS ื‘ื ืžืœ ื”ืชืขื•ืคื” ื•ื ื•ืงื•ื‘ื•:

ื“ื•ื’ืžื” ืœืื•ืคืŸ ืฉื‘ื• ืคื•ืขืœืช VOLMET ื‘ื ืžืœ ื”ืชืขื•ืคื” ื•ื ื•ืงื•ื‘ื•

ื–ื” ืœื ื ื•ื— ืœืฉืืช ืื™ืชืš ืกื•ืจืง ืจื“ื™ื• ืื• ืžืงืœื˜ ืžืฉื“ืจ ื‘ื›ืœ ืคืขื ืœื˜ื•ื•ื— ื”ืžืชืื™ื, ื•ืจืฆื™ืชื™ ืœื™ืฆื•ืจ ื‘ื•ื˜ ื‘ื˜ืœื’ืจื ืฉื‘ืœื—ื™ืฆืช ื›ืคืชื•ืจ ืžืืคืฉืจ ืœืš ืœืงื‘ืœ ืืช ืื•ืชื” ืชื—ื–ื™ืช. ื–ื” ืœืคื—ื•ืช ืœื ืžืขืฉื™ ืœื”ืงืฆื•ืช ืฉืจืช ื ืคืจื“ ืœื›ืš, ื›ืžื• ื’ื ืฉืœื™ื—ืช ื‘ืงืฉื•ืช ืœื‘ื™ืชื›ื ืคื˜ืœ.

ืœื›ืŸ, ื”ื—ืœื˜ืชื™ ืœื”ืฉืชืžืฉ ื‘ืฉื™ืจื•ืช ื›-backend ื‘ื—ืจ ืชื›ื•ื ื•ืช ืขื ืŸ. ืžืกืคืจ ื”ื‘ืงืฉื•ืช ื™ื”ื™ื” ื–ื ื™ื—, ื›ืš ืฉืฉื™ืจื•ืช ื›ื–ื” ื™ื”ื™ื” ื›ืžืขื˜ ื‘ื—ื™ื ื (ืœืคื™ ื”ื—ื™ืฉื•ื‘ื™ื ืฉืœื™, ื–ื” ื™ื”ื™ื” 22 ืจื•ื‘ืœ ืขื‘ื•ืจ 100 ื‘ืงืฉื•ืช).

ื”ื›ื ื” ืขื•ืจืคื™ืช

ืฆื•ืจ ืคื•ื ืงืฆื™ื”

ื‘ืœื•ื— ื”ื‘ืงืจื” my.selectel.ru ืœืคืชื•ื— ืืช ื”ื ื•ืฃ ืคืœื˜ืคื•ืจืžืช ืขื ืŸ ื•ืœื™ืฆื•ืจ ืคืจื•ื™ืงื˜ ื—ื“ืฉ:

ืชื—ื–ื™ืช ืžื–ื’ ื”ืื•ื•ื™ืจ ื”ืžื“ื•ื™ืงืช ื‘ื™ื•ืชืจ: ื‘ื•ื˜ ืœื˜ืœื’ืจื ืขืœ ืคื•ื ืงืฆื™ื•ืช ืขื ืŸ
ืœืื—ืจ ื™ืฆื™ืจืช ื”ืคืจื•ื™ืงื˜, ืขื‘ื•ืจ ืืœ ื”ืงื˜ืข ืคื•ื ืงืฆื™ื•ืช:

ืชื—ื–ื™ืช ืžื–ื’ ื”ืื•ื•ื™ืจ ื”ืžื“ื•ื™ืงืช ื‘ื™ื•ืชืจ: ื‘ื•ื˜ ืœื˜ืœื’ืจื ืขืœ ืคื•ื ืงืฆื™ื•ืช ืขื ืŸ
ืœื—ืฅ ืขืœ ื”ื›ืคืชื•ืจ ืฆื•ืจ ืคื•ื ืงืฆื™ื” ื•ืชืŸ ืœื• ืืช ื”ืฉื ื”ืจืฆื•ื™:

ืชื—ื–ื™ืช ืžื–ื’ ื”ืื•ื•ื™ืจ ื”ืžื“ื•ื™ืงืช ื‘ื™ื•ืชืจ: ื‘ื•ื˜ ืœื˜ืœื’ืจื ืขืœ ืคื•ื ืงืฆื™ื•ืช ืขื ืŸ
ืœืื—ืจ ืœื—ื™ืฆื” ืฆื•ืจ ืคื•ื ืงืฆื™ื” ื™ื”ื™ื” ืœื ื• ื™ื™ืฆื•ื’ ืฉืœ ื”ืคื•ื ืงืฆื™ื” ืฉื ื•ืฆืจื”:

ืชื—ื–ื™ืช ืžื–ื’ ื”ืื•ื•ื™ืจ ื”ืžื“ื•ื™ืงืช ื‘ื™ื•ืชืจ: ื‘ื•ื˜ ืœื˜ืœื’ืจื ืขืœ ืคื•ื ืงืฆื™ื•ืช ืขื ืŸ
ืœืคื ื™ ืฉืชืชื—ื™ืœ ืœื™ืฆื•ืจ ืงื•ื“ ื‘- Python, ืชืฆื˜ืจืš ืœื™ืฆื•ืจ ื‘ื•ื˜ ื‘ื˜ืœื’ืจื. ืื ื™ ืœื ืืชืืจ ืื™ืš ื–ื” ื ืขืฉื” - ื™ืฉ ื”ื•ืจืื•ืช ืžืคื•ืจื˜ื•ืช ื‘ืžืื’ืจ ื”ื™ื“ืข ืฉืœื ื•. ื”ืขื™ืงืจ ืขื‘ื•ืจื ื• ื”ื•ื ื”ืืกื™ืžื•ืŸ ืฉืœ ื”ื‘ื•ื˜ ืฉื ื•ืฆืจ.

ื”ื›ื ืช ื”ืงื•ื“

ื‘ื—ืจืชื™ ื‘-National Oceanic and Atmospheric Administration (NOAA) ื›ืžืงื•ืจ ืœื ืชื•ื ื™ื ืžื”ื™ืžื ื™ื. ืกื•ื›ื ื•ืช ืžื“ืขื™ืช ื–ื• ืžืขื“ื›ื ืช ื ืชื•ื ื™ื ื‘ื–ืžืŸ ืืžืช ื‘ืฉืจืช ืฉืœื” ื‘ืคื•ืจืžื˜ TXT.

ืงื™ืฉื•ืจ ืœืงื‘ืœืช ื ืชื•ื ื™ METAR (ืฉื™ื ืœื‘ ืœืžืงืจื”):

https://tgftp.nws.noaa.gov/data/observations/metar/stations/<ะบะพะด ะฐัั€ะพะฟะพั€ั‚ะฐ ะฟะพ ICAO>.TXT

ื‘ืžืงืจื” ืฉืœื™, ืฉื“ื” ื”ืชืขื•ืคื” ื”ืงืจื•ื‘ ื‘ื™ื•ืชืจ ื”ื•ื Vnukovo, ืงื•ื“ ื”-ICAO ืฉืœื• ื”ื•ื UUWW. ืžืขื‘ืจ ืœื›ืชื•ื‘ืช ื”-URL ืฉื ื•ืฆืจื” ื™ื™ืชืŸ ืืช ื”ื“ื‘ืจื™ื ื”ื‘ืื™ื:

2020/08/10 11:30
UUWW 101130Z 31004MPS 9999 SCT048 24/13 Q1014 R01/000070 NOSIG

ื”ืฉื•ืจื” ื”ืจืืฉื•ื ื” ื”ื™ื ื”ืฉืขื” ื”ื ื•ื›ื—ื™ืช ืฉืœ ื”ืชื—ื–ื™ืช ื‘ื–ืžืŸ ื’ืจื™ื ื™ืฅ'. ื”ืฉื•ืจื” ื”ืฉื ื™ื™ื” ื”ื™ื ืกื™ื›ื•ื ืฉืœ ืžื–ื’ ื”ืื•ื•ื™ืจ ื‘ืคื•ืขืœ. ืœื˜ื™ื™ืกื™ ืชืขื•ืคื” ืื–ืจื—ื™ืช ืœื ืชื”ื™ื” ื‘ืขื™ื” ืœื”ื‘ื™ืŸ ืžื” ืžืฉืžืขื•ืช ื”ืฉื•ืจื” ื”ื–ื•, ืื‘ืœ ืื ื—ื ื• ืฆืจื™ื›ื™ื ื”ืกื‘ืจ:

  • [UUWW] - Vnukovo, ืžื•ืกืงื‘ื” (ืจื•ืกื™ื” - RU);
  • [101130Z] - ื”ื™ื•ื ื”ืขืฉื™ืจื™ ื‘ื—ื•ื“ืฉ, 10:11 GMT;
  • [31004MPS] - ื›ื™ื•ื•ืŸ ื”ืจื•ื— 310 ืžืขืœื•ืช, ืžื”ื™ืจื•ืช 4 ืž' ืœืฉื ื™ื™ื”;
  • [9999] - ืจืื•ืช ืื•ืคืงื™ืช 10 ืง"ืž ืื• ื™ื•ืชืจ;
  • [SCT048] - ืขื ื ื™ื ืžืคื•ื–ืจื™ื/ืคื–ื•ืจื™ื ื‘ื’ื•ื‘ื” 4800 ืจื’ืœ (~1584 ืž');
  • [24 / 13] - ื˜ืžืคืจื˜ื•ืจื” 24 ืžืขืœื•ืช ืฆืœื–ื™ื•ืก, ื ืงื•ื“ืช ื˜ืœ 13 ืžืขืœื•ืช ืฆืœื–ื™ื•ืก;
  • [Q1014] - ืœื—ืฅ (QNH) 1014 ื”ืงื˜ื•ืคืกืงืœื™ื (750 ืž"ืž ื›ืกืคื™ืช);
  • [R01/000070] - ืžืงื“ื ื”ื™ื“ื‘ืงื•ืช ื‘ื ืชื™ื‘ 01 - 0,70;
  • [NOSIG] - ืœืœื ืฉื™ื ื•ื™ื™ื ืžื”ื•ืชื™ื™ื.

ื‘ื•ืื• ื ืชื—ื™ืœ ืœื›ืชื•ื‘ ืงื•ื“ ืชื•ื›ื ื™ืช. ืจืืฉื™ืช ืขืœื™ืš ืœื™ื™ื‘ื ืคื•ื ืงืฆื™ื•ืช ืœื‘ืงืฉ ะธ ืคื™ืชืฃ:

from urllib import request
import pytaf

ืฆื™ื™ืŸ ืืช ื”ืžืฉืชื ื™ื ื•ื”ื›ืŸ ืืช ืคื•ื ืงืฆื™ื™ืช ื”ืคืขื ื•ื—:

URL_METAR = "https://tgftp.nws.noaa.gov/data/observations/metar/stations/UUWW.TXT"
URL_TAF = "https://tgftp.nws.noaa.gov/data/forecasts/taf/stations/UUWW.TXT"

def parse_data(code):
    code = code.split('n')[1]
    return pytaf.Decoder(pytaf.TAF(code)).decode_taf()

ื ืขื‘ื•ืจ ืœ-TAF (ื’ื ื”ืžืงืจื” ื—ืฉื•ื‘).

https://tgftp.nws.noaa.gov/data/forecasts/taf/stations/<ะบะพะด ะฐัั€ะพะฟะพั€ั‚ะฐ ะฟะพ ICAO>.TXT

ื›ืžื• ื‘ื“ื•ื’ืžื” ื”ืงื•ื“ืžืช, ื‘ื•ืื• ื ืกืชื›ืœ ืขืœ ื”ืชื—ื–ื™ืช ื‘ื ืžืœ ื”ืชืขื•ืคื” ืฉืœ ื•ื ื•ืงื•ื‘ื•:

2020/08/10 12:21
TAF UUWW 101050Z 1012/1112 28003G10MPS 9999 SCT030 TX25/1012Z TN15/1103Z 
      TEMPO 1012/1020 -TSRA BKN020CB 
      BECMG 1020/1021 FEW007 BKN016 
      TEMPO 1021/1106 -SHRA BKN020CB PROB40 
      TEMPO 1021/1106 -TSRA BKN020CB 
      BECMG 1101/1103 34006G13MPS

ื‘ื•ืื• ื ืฉื™ื ืœื‘ ื‘ืžื™ื•ื—ื“ ืœืงื•ื•ื™ื ื–ืžืŸ ะธ BECMG. TEMPO ืื•ืžืจ ืฉืžื–ื’ ื”ืื•ื•ื™ืจ ื‘ืคื•ืขืœ ื‘ืžื”ืœืš ื”ืชืงื•ืคื” ืฉืฆื•ื™ื ื” ื™ืฉืชื ื” ืžืขืช ืœืขืช. BECMG - ืžื–ื’ ื”ืื•ื•ื™ืจ ื™ืฉืชื ื” ื‘ื”ื“ืจื’ื” ืชื•ืš ืคืจืง ื–ืžืŸ ืžื•ื’ื“ืจ.

ื›ืœื•ืžืจ, ื”ืฉื•ืจื”:

TEMPO 1012/1020 -TSRA BKN020CB

ื™ืชื›ื•ื•ืŸ:

  • [1012 / 1020] - ื‘ื™ืŸ 12 ืœ-20 ืฉืขื•ืช (ืฉืขื•ืŸ ื’ืจื™ื ื™ืฅ');
  • [-TSRA] โ€” ืกื•ืคืช ืจืขืžื™ื (TS = ืกื•ืคืช ืจืขืžื™ื) ืขื ื’ืฉื (RA = ื’ืฉื) ื‘ืขื•ืฆืžื” ื ืžื•ื›ื” (ืกื™ืžืŸ ืžื™ื ื•ืก);
  • [BKN020CB] - ืขื ื ื™ื ืžืฉืžืขื•ืชื™ื™ื (BKN = ืฉื‘ื•ืจ), cumulonimbus (CB = cumulonimbus) ื‘ื’ื•ื‘ื” 2000 ืจื’ืœ (610 ืžื˜ืจ) ืžืขืœ ืคื ื™ ื”ื™ื.

ื™ืฉ ื“ื™ ื”ืจื‘ื” ืžื•ื ื—ื™ื ืœืชื•ืคืขื•ืช ืžื–ื’ ืื•ื•ื™ืจ, ื•ืงืฉื” ืœื–ื›ื•ืจ ืื•ืชื. ื”ืงื•ื“ ืœื‘ืงืฉืช TAF ื›ืชื•ื‘ ื‘ืฆื•ืจื” ื“ื•ืžื”.

ื”ืขืœืืช ืงื•ื“ ืœืขื ืŸ

ื›ื“ื™ ืœื ืœื‘ื–ื‘ื– ื–ืžืŸ, ื‘ื•ืื• ื ื™ืงื— ืชื‘ื ื™ืช ื‘ื•ื˜ ืฉืœ ื˜ืœื’ืจื ืžื”ืžืื’ืจ ืฉืœื ื• ืขื ืŸ-ื˜ืœื’ืจื-ื‘ื•ื˜. ื™ืฉ ืžื•ื›ืŸ ืžืจืืฉ ื“ืจื™ืฉื•ืช. ื˜ืงืกื˜ ะธ setup.py ืขื ืžื‘ื ื” ื”ืกืคืจื™ื•ืช ื”ื ื›ื•ืŸ.

ืžื›ื™ื•ื•ืŸ ืฉื‘ืงื•ื“ ืื ื—ื ื• ื ื™ื’ืฉื™ื ืœืžื•ื“ื•ืœ ืคื™ืชืฃ, ืื– ื™ืฉ ืœื”ื•ืกื™ืฃ ืžื™ื“ ืืช ื”ื’ืจืกื” ืฉืœื• ื“ืจื™ืฉื•ืช. ื˜ืงืกื˜

pytaf~=1.2.1

  • ื‘ื•ืื• ื ืขื‘ื•ืจ ืœืขืจื™ื›ื” bot/tele_bot.py. ืื ื—ื ื• ืžืกื™ืจื™ื ืืช ื›ืœ ื”ื“ื‘ืจื™ื ื”ืžื™ื•ืชืจื™ื ื•ืžื•ืกื™ืคื™ื ืืช ื”ืงื•ื“ ืฉืœื ื•.

import os
from urllib import request
import telebot
import pytaf
 
TOKEN = os.environ.get('TOKEN')
URL_METAR = "https://tgftp.nws.noaa.gov/data/observations/metar/stations/UUWW.TXT"
URL_TAF = "https://tgftp.nws.noaa.gov/data/forecasts/taf/stations/UUWW.TXT"
 
bot = telebot.TeleBot(token=TOKEN, threaded=False)
keyboard = telebot.types.ReplyKeyboardMarkup(resize_keyboard=True)
keyboard.row('/start', '/get_metar', '/get_taf')
 
def start(message):
    msg = "ะŸั€ะธะฒะตั‚. ะญั‚ะพ ะฑะพั‚ ะดะปั ะฟะพะปัƒั‡ะตะฝะธั ะฐะฒะธะฐั†ะธะพะฝะฝะพะณะพ ะฟั€ะพะณะฝะพะทะฐ ะฟะพะณะพะดั‹ " 
          "ั ัะตั€ะฒะตั€ะพะฒ NOAA. ะ‘ะพั‚ ะฝะฐัั‚ั€ะพะตะฝ ะฝะฐ ะฐัั€ะพะฟะพั€ั‚ ะ’ะฝัƒะบะพะฒะพ (UUWW)."
    bot.send_message(message.chat.id, msg, reply_markup=keyboard)
 
def parse_data(code):
    code = code.split('n')[1]
    return pytaf.Decoder(pytaf.TAF(code)).decode_taf()
 
def get_metar(message):
    # Fetch info from server.
    code = request.urlopen(URL_METAR).read().decode('utf-8')
    # Send formatted answer.
    bot.send_message(message.chat.id, parse_data(code), reply_markup=keyboard)
 
def get_taf(message):
    # Fetch info from server.
    code = request.urlopen(URL_TAF).read().decode('utf-8')
    # Send formatted answer.
    bot.send_message(message.chat.id, parse_data(code), reply_markup=keyboard)
 
def route_command(command, message):
    """
    Commands router.
    """
    if command == '/start':
        return start(message)
    elif command == '/get_metar':
        return get_metar(message)
    elif command == '/get_taf':
        return get_taf(message)
 
def main(**kwargs):
    """
    Serverless environment entry point.
    """
    print(f'Received: "{kwargs}"')
    message = telebot.types.Update.de_json(kwargs)
    message = message.message or message.edited_message
    if message and message.text and message.text[0] == '/':
        print(f'Echo on "{message.text}"')
        route_command(message.text.lower(), message)

  • ืื ื• ืื•ืจื–ื™ื ืืช ื›ืœ ื”ืกืคืจื™ื™ื” ืœืืจื›ื™ื•ืŸ ZIP ื•ื ืขื‘ื•ืจ ืœืœื•ื— ื”ื‘ืงืจื” ืœืคื•ื ืงืฆื™ื” ืฉื ื•ืฆืจื”.
  • ืœื—ืฅ ื›ืืŸ ืขืจื™ื›ื” ื•ืœื”ื•ืจื™ื“ ืืช ื”ืืจื›ื™ื•ืŸ ืขื ื”ืงื•ื“.

ืชื—ื–ื™ืช ืžื–ื’ ื”ืื•ื•ื™ืจ ื”ืžื“ื•ื™ืงืช ื‘ื™ื•ืชืจ: ื‘ื•ื˜ ืœื˜ืœื’ืจื ืขืœ ืคื•ื ืงืฆื™ื•ืช ืขื ืŸ

  • ืžืœื ืืช ื”ื ืชื™ื‘ ื”ื™ื—ืกื™ ื‘ืงื•ื‘ืฅ tele_bot (ืกื™ื•ืžืช .py ื™ื™ืชื›ืŸ ืฉืœื ื™ืฆื•ื™ืŸ) ื•ืคื•ื ืงืฆื™ื™ืช ื ืงื•ื“ืช ืงืฆื” (ื‘ื“ื•ื’ืžื” ืฉื ื™ืชื ื” ื–ื”ื• ืจืืฉื™).
  • ื‘ืกืขื™ืฃ ืžืฉืชื ื™ ืกื‘ื™ื‘ื” ืœื›ืชื•ื‘ ืžืฉืชื ื” ืึฒืกึดื™ืžื•ึนืŸ ื•ืœื”ืงืฆื•ืช ืœื• ืืช ื”ืืกื™ืžื•ืŸ ืฉืœ ื‘ื•ื˜ ื”ื˜ืœื’ืจื ื”ืจืฆื•ื™.
  • ืœื—ืฅ ื›ืืŸ ืฉืžื•ืจ ื•ื”ืจื—ื™ื‘, ื•ืœืื—ืจ ืžื›ืŸ ื ืขื‘ื•ืจ ืœืžื“ื•ืจ ืžืคืขื™ืœื™ื.
  • ืฉืžื ื• ืืช ื”ืžืชื’ ื‘ืงืฉืช HTTPืœืคืจืกื ืืช ื”ื‘ืงืฉื” ืœืฆื™ื‘ื•ืจ.

ืชื—ื–ื™ืช ืžื–ื’ ื”ืื•ื•ื™ืจ ื”ืžื“ื•ื™ืงืช ื‘ื™ื•ืชืจ: ื‘ื•ื˜ ืœื˜ืœื’ืจื ืขืœ ืคื•ื ืงืฆื™ื•ืช ืขื ืŸ
ื›ืขืช ื™ืฉ ืœื ื• ื›ืชื•ื‘ืช URL ืœืงืจื™ืื” ืคื•ืžื‘ื™ืช ืœืคื•ื ืงืฆื™ื”. ื›ืœ ืžื” ืฉื ืฉืืจ ื–ื” ืœื”ื’ื“ื™ืจ webhook. ืžืฆื ืืช ื”ื‘ื•ื˜ ืฉืœื ื• @SelectelServerless_bot ื‘ื˜ืœื’ืจื ื•ืจืฉื•ื ืืช ื”ื‘ื•ื˜ ืฉืœืš ืขื ื”ืคืงื•ื“ื”:

/setwebhook <you bot token> <public URL of your function>

ืชื•ืฆืื”

ืื ื”ื›ืœ ื ืขืฉื” ื›ื”ืœื›ื”, ื”ื‘ื•ื˜ ืฉืœืš ื™ืชื—ื™ืœ ืžื™ื“ ืœืขื‘ื•ื“ ื•ื™ืฆื™ื’ ืืช ื“ื•ื— ืžื–ื’ ื”ืื•ื•ื™ืจ ื”ืขื“ื›ื ื™ ื‘ื™ื•ืชืจ ืฉืœ ืชืขื•ืคื” ื™ืฉื™ืจื•ืช ื‘ืžืกื ื’'ืจ.

ืชื—ื–ื™ืช ืžื–ื’ ื”ืื•ื•ื™ืจ ื”ืžื“ื•ื™ืงืช ื‘ื™ื•ืชืจ: ื‘ื•ื˜ ืœื˜ืœื’ืจื ืขืœ ืคื•ื ืงืฆื™ื•ืช ืขื ืŸ
ื›ืžื•ื‘ืŸ ืฉื ื™ืชืŸ ืœืฉืคืจ ืืช ื”ืงื•ื“, ืื‘ืœ ื’ื ื‘ืžืฆื‘ื• ื”ื ื•ื›ื—ื™ ืžืกืคื™ืง ืœื‘ืจืจ ืืช ืžื–ื’ ื”ืื•ื•ื™ืจ ื•ื”ืชื—ื–ื™ืช ื”ืžื“ื•ื™ืงื™ื ื‘ื™ื•ืชืจ ืžืžืงื•ืจ ืžื”ื™ืžืŸ.

ืืชื” ืชืžืฆื ืืช ื”ื’ืจืกื” ื”ืžืœืื” ืฉืœ ื”ืงื•ื“ ืืฆืœื ื• ืžืื’ืจื™ื ื‘- GitHub.

ืชื—ื–ื™ืช ืžื–ื’ ื”ืื•ื•ื™ืจ ื”ืžื“ื•ื™ืงืช ื‘ื™ื•ืชืจ: ื‘ื•ื˜ ืœื˜ืœื’ืจื ืขืœ ืคื•ื ืงืฆื™ื•ืช ืขื ืŸ

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”