๊ฐ€์žฅ ์ •ํ™•ํ•œ ์ผ๊ธฐ ์˜ˆ๋ณด: ํด๋ผ์šฐ๋“œ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ Telegram์šฉ ๋ด‡

๊ฐ€์žฅ ์ •ํ™•ํ•œ ์ผ๊ธฐ ์˜ˆ๋ณด: ํด๋ผ์šฐ๋“œ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ Telegram์šฉ ๋ด‡
๋‚ ์”จ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” ์„œ๋น„์Šค๋Š” ๋งŽ์ง€๋งŒ ์–ด๋–ค ์„œ๋น„์Šค๋ฅผ ๋ฏฟ์–ด์•ผ ํ• ๊นŒ์š”? ์‚ฌ์ดํด๋ง์„ ์ž์ฃผ ์‹œ์ž‘ํ•˜๋ฉด์„œ ๋ผ์ด๋”ฉ ์žฅ์†Œ์˜ ๊ธฐ์ƒ ์ƒํ™ฉ์— ๋Œ€ํ•ด ๊ฐ€์žฅ ์ •ํ™•ํ•œ ์ •๋ณด๋ฅผ ์–ป๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.

์ œ๊ฐ€ ์ฒ˜์Œ ์ƒ๊ฐํ•œ ๊ฒƒ์€ ์„ผ์„œ๊ฐ€ ์žˆ๋Š” ์ž‘์€ DIY ๊ธฐ์ƒ ๊ด€์ธก์†Œ๋ฅผ ๋งŒ๋“ค๊ณ  ๊ทธ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” โ€œ๋ฐ”ํ€ด๋ฅผ ์žฌ๋ฐœ๋ช…โ€ํ•˜์ง€ ์•Š๊ณ  ๋ฏผ๊ฐ„ ํ•ญ๊ณต์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ์ƒ ์ •๋ณด๋ฅผ ๊ฒ€์ฆ๋œ ๋ฐ์ดํ„ฐ์˜ ์†Œ์Šค๋กœ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”ํƒ€ (๊ธฐ์ƒ๋น„ํ–‰์žฅ ๋ณด๊ณ ์„œ) ๋ฐ TAF (TAF - ํ„ฐ๋ฏธ๋„ ๋น„ํ–‰์žฅ ์˜ˆ์ธก). ํ•ญ๊ณต ๋ถ„์•ผ์—์„œ๋Š” ์ˆ˜๋ฐฑ ๋ช…์˜ ์ƒ๋ช…์ด ๋‚ ์”จ์— ์ขŒ์šฐ๋˜๋ฏ€๋กœ ์˜ˆ์ธก์€ ์ตœ๋Œ€ํ•œ ์ •ํ™•ํ•ฉ๋‹ˆ๋‹ค.

์ด ์ •๋ณด๋Š” ๋ชจ๋“  ํ˜„๋Œ€ ๋น„ํ–‰์žฅ์—์„œ ์Œ์„ฑ์œผ๋กœ ์—ฐ์ค‘๋ฌดํœด XNUMX์‹œ๊ฐ„ ๋ฐฉ์†ก๋ฉ๋‹ˆ๋‹ค. ATIS (์ž๋™ ํ„ฐ๋ฏธ๋„ ์ •๋ณด ์„œ๋น„์Šค) ๋ฐ ๋ณผ๋ฉ”ํŠธ (ํ”„๋ž‘์Šค์–ด์—์„œ. ๊ถŒ - ๋น„ํ–‰ ๋ฐ ๋‚ ์”จ - ๋‚ ์”จ). ์ฒซ ๋ฒˆ์งธ๋Š” ๋น„ํ–‰์žฅ์˜ ์‹ค์ œ ๋‚ ์”จ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๊ณ , ๋‘ ๋ฒˆ์งธ๋Š” ๋ฐฉ์†ก ๋น„ํ–‰์žฅ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ๋น„ํ–‰์žฅ์—์„œ๋„ ํ–ฅํ›„ 24~30์‹œ๊ฐ„ ๋™์•ˆ์˜ ์ผ๊ธฐ์˜ˆ๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋ธŒ๋ˆ„์ฝ”๋ณด ๊ณตํ•ญ์˜ ATIS ์šด์˜ ์˜ˆ:

Vnukovo ๊ณตํ•ญ์—์„œ VOLMET๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์˜ ์˜ˆ

ํ•ด๋‹น ๋ฒ”์œ„์— ๋Œ€ํ•ด ๋งค๋ฒˆ ๋ฌด์„  ์Šค์บ๋„ˆ๋‚˜ ํŠธ๋žœ์‹œ๋ฒ„๋ฅผ ํœด๋Œ€ํ•˜๋Š” ๊ฒƒ์€ ๋ถˆํŽธํ•˜๋ฉฐ, ํ…”๋ ˆ๊ทธ๋žจ์—์„œ ๋ฒ„ํŠผ ํด๋ฆญ๋งŒ์œผ๋กœ ๋™์ผํ•œ ์˜ˆ์ธก์„ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๋ด‡์„ ๋งŒ๋“ค๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๋ณ„๋„์˜ ์„œ๋ฒ„๋ฅผ ํ• ๋‹นํ•˜๊ณ  ํ™ˆ ๋ผ์ฆˆ๋ฒ ๋ฆฌ์— ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ๊ฒƒ์€ ์ ์–ด๋„ ๋น„ํ˜„์‹ค์ ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ด ์„œ๋น„์Šค๋ฅผ ๋ฐฑ์—”๋“œ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. Selectel ํด๋ผ์šฐ๋“œ ๊ธฐ๋Šฅ. ์š”์ฒญ ์ˆ˜๋Š” ๋ฏธ๋ฏธํ•˜๋ฏ€๋กœ ์ด๋Ÿฌํ•œ ์„œ๋น„์Šค๋Š” ์‚ฌ์‹ค์ƒ ๋ฌด๋ฃŒ์ž…๋‹ˆ๋‹ค(๋‚ด ๊ณ„์‚ฐ์— ๋”ฐ๋ฅด๋ฉด 22๊ฐœ ์š”์ฒญ์— ๋Œ€ํ•ด 100๋ฃจ๋ธ”์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค).

๋ฐฑ์—”๋“œ ์ค€๋น„

ํ•จ์ˆ˜ ์ƒ์„ฑ

์ œ์–ดํŒ์—์„œ my.selectel.ru ๋ทฐ๋ฅผ ์—ด์–ด๋ผ ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ ์ƒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์ •ํ™•ํ•œ ์ผ๊ธฐ ์˜ˆ๋ณด: ํด๋ผ์šฐ๋“œ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ Telegram์šฉ ๋ด‡
ํ”„๋กœ์ ํŠธ๊ฐ€ ์ƒ์„ฑ๋œ ํ›„ ์„น์…˜์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋Šฅ:

๊ฐ€์žฅ ์ •ํ™•ํ•œ ์ผ๊ธฐ ์˜ˆ๋ณด: ํด๋ผ์šฐ๋“œ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ Telegram์šฉ ๋ด‡
๋ฒ„ํŠผ ๋ˆ„๋ฆ„ ํ•จ์ˆ˜ ๋งŒ๋“ค๊ธฐ ์›ํ•˜๋Š” ์ด๋ฆ„์„ ์ง€์ •ํ•˜์‹ญ์‹œ์˜ค.

๊ฐ€์žฅ ์ •ํ™•ํ•œ ์ผ๊ธฐ ์˜ˆ๋ณด: ํด๋ผ์šฐ๋“œ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ Telegram์šฉ ๋ด‡
ํด๋ฆญ ํ›„ ํ•จ์ˆ˜ ๋งŒ๋“ค๊ธฐ ์ƒ์„ฑ๋œ ํ•จ์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œํ˜„๋ฉ๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์ •ํ™•ํ•œ ์ผ๊ธฐ ์˜ˆ๋ณด: ํด๋ผ์šฐ๋“œ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ Telegram์šฉ ๋ด‡
Python์—์„œ ์ฝ”๋“œ ์ƒ์„ฑ์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— Telegram์—์„œ ๋ด‡์„ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์ˆ˜ํ–‰๋˜๋Š”์ง€ ์„ค๋ช…ํ•˜์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ์ง€์นจ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ์ง€์‹ ๋ฒ ์ด์Šค์—์„œ. ์šฐ๋ฆฌ์—๊ฒŒ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์ƒ์„ฑ๋œ ๋ด‡์˜ ํ† ํฐ์ž…๋‹ˆ๋‹ค.

์ฝ”๋“œ ์ค€๋น„

์ €๋Š” ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ์†Œ์Šค๋กœ ๋ฏธ๊ตญ ๊ตญ๋ฆฝํ•ด์–‘๋Œ€๊ธฐ์ฒญ(NOAA)์„ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ณผํ•™ ๊ธฐ๊ด€์€ TXT ํ˜•์‹์œผ๋กœ ์„œ๋ฒ„์— ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

METAR ๋ฐ์ดํ„ฐ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๋งํฌ(์‚ฌ๋ก€ ์ฐธ๊ณ ):

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

๋‚ด ๊ฒฝ์šฐ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ณตํ•ญ์€ Vnukovo์ด๊ณ  ICAO ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ใ…‹ใ…‹ใ…‹. ์ƒ์„ฑ๋œ URL๋กœ ์ด๋™ํ•˜๋ฉด ๋‹ค์Œ์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

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

์ฒซ ๋ฒˆ์งธ ์ค„์€ ๊ทธ๋ฆฌ๋‹ˆ์น˜ ํ‘œ์ค€์‹œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•œ ์˜ˆ์ธก์˜ ํ˜„์žฌ ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ์ค„์€ ์‹ค์ œ ๋‚ ์”จ๋ฅผ ์š”์•ฝํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฏผ๊ฐ„ ํ•ญ๊ณต ์กฐ์ข…์‚ฌ๋Š” ์ด ์„ ์ด ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”์ง€ ์ดํ•ดํ•˜๋Š” ๋ฐ ์•„๋ฌด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ์—†์ง€๋งŒ ์„ค๋ช…์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  • [UUWW] โ€” ๋ชจ์Šคํฌ๋ฐ” ๋ธŒ๋ˆ„์ฝ”๋ณด(๋Ÿฌ์‹œ์•„ โ€” RU);
  • [101130Z] โ€” ๋งค์›” 10์ผ, ์˜ค์ „ 11์‹œ 30๋ถ„(GMT)
  • [31004MPS] - ํ’ํ–ฅ 310๋„, ์†๋„ 4m/s;
  • [9999] - ์ˆ˜ํ‰ ์‹œ์ •์ด 10km ์ด์ƒ;
  • [SCT048] โ€” 4800ํ”ผํŠธ(~1584m)์—์„œ ํฉ์–ด์ง„/ํฉ์–ด์ง„ ๊ตฌ๋ฆ„;
  • [24 / 13] - ์˜จ๋„ 24ยฐC, ์ด์Šฌ์  13ยฐC;
  • [Q1014] - ์••๋ ฅ(QNH) 1014ํ—ฅํ† ํŒŒ์Šค์นผ(750mmHg)
  • [R01/000070] - ๋ ˆ์ธ 01์˜ ์ ‘์ฐฉ ๊ณ„์ˆ˜ - 0,70
  • [๋…ธ์‹œ๊ทธ] - ํฐ ๋ณ€ํ™” ์—†์ด.

ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ ์ž‘์„ฑ์„ ์‹œ์ž‘ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋จผ์ € ํ•จ์ˆ˜๋ฅผ ๊ฐ€์ ธ์™€์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜๋ขฐ ะธ ํ”ผํƒ€ํ”„:

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

์ด์ „ ์˜ˆ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ Vnukovo ๊ณตํ•ญ์˜ ์˜ˆ์ธก์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

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

ํŠนํžˆ ์„ ์— ์ฃผ๋ชฉํ•˜์ž TIME ะธ BECMG. TEMPO๋Š” ํŠน์ • ๊ธฐ๊ฐ„ ๋™์•ˆ์˜ ์‹ค์ œ ๋‚ ์”จ๊ฐ€ ์ฃผ๊ธฐ์ ์œผ๋กœ ๋ณ€๊ฒฝ๋œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. BECMG - ๋‚ ์”จ๊ฐ€ ํŠน์ • ๊ธฐ๊ฐ„ ๋‚ด์— ์ ์ฐจ์ ์œผ๋กœ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค.

์ฆ‰, ๋‹ค์Œ ์ค„์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

TEMPO 1012/1020 -TSRA BKN020CB

์˜๋ฏธ:

  • [1012 / 1020] โ€” 12~20์‹œ๊ฐ„(๊ทธ๋ฆฌ๋‹ˆ์น˜ ํ‘œ์ค€์‹œ)
  • [-TSRA] - ๋‚ฎ์€ ๊ฐ•๋„์˜ ๋น„(RA = ๋น„)๋ฅผ ๋™๋ฐ˜ํ•œ ๋‡Œ์šฐ(TS = ๋‡Œ์šฐ)(๋งˆ์ด๋„ˆ์Šค ๊ธฐํ˜ธ)
  • [BKN020CB] - ํ•ด๋ฐœ 2000ํ”ผํŠธ(610๋ฏธํ„ฐ)์˜ ์ƒ๋‹นํ•œ(BKN = ๊นจ์ง), ์ ๋ž€์šด(CB = ์ ๋ž€์šด) ๊ตฌ๋ฆ„.

๊ธฐ์ƒํ˜„์ƒ์— ๊ด€ํ•œ ์šฉ์–ด๋Š” ๊ฝค ๋งŽ์•„์„œ ๊ธฐ์–ตํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. TAF ์š”์ฒญ ์ฝ”๋“œ๋„ ๋น„์Šทํ•œ ๋ฐฉ์‹์œผ๋กœ ์ž‘์„ฑ๋ฉ๋‹ˆ๋‹ค.

ํด๋ผ์šฐ๋“œ์— ์ฝ”๋“œ ์—…๋กœ๋“œ

์‹œ๊ฐ„์„ ๋‚ญ๋น„ํ•˜์ง€ ์•Š์œผ๋ ค๋ฉด ์ €์žฅ์†Œ์—์„œ ํ…”๋ ˆ๊ทธ๋žจ ๋ด‡ ํ…œํ”Œ๋ฆฟ์„ ๊ฐ€์ ธ์˜ค์„ธ์š”. ํด๋ผ์šฐ๋“œ-์ „๋ณด-๋ด‡. ๋ฏธ๋ฆฌ ์ค€๋น„๋œ ๊ฒƒ์ด ์žˆ์–ด์š” requirements.txt ะธ setup.py ์˜ฌ๋ฐ”๋ฅธ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

์ฝ”๋“œ์—์„œ ์šฐ๋ฆฌ๋Š” ๋ชจ๋“ˆ์— ์•ก์„ธ์Šคํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ํ”ผํƒ€ํ”„์ด๋ฉด ํ•ด๋‹น ๋ฒ„์ „์ด ์ฆ‰์‹œ ์ถ”๊ฐ€๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. requirements.txt

pytaf~=1.2.1

  • ํŽธ์ง‘์œผ๋กœ ๋„˜์–ด๊ฐ€์ž ๋ด‡/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 ์•„์นด์ด๋ธŒ๋กœ ์••์ถ•ํ•˜๊ณ  ์ƒ์„ฑ๋œ ๊ธฐ๋Šฅ์ด ์žˆ๋Š” ์ œ์–ดํŒ์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  • ๋”ธ๊น ํ•˜๋Š” ์†Œ๋ฆฌ ํŽธ์ง‘ ์ฝ”๋“œ๊ฐ€ ํฌํ•จ๋œ ์•„์นด์ด๋ธŒ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜์„ธ์š”.

๊ฐ€์žฅ ์ •ํ™•ํ•œ ์ผ๊ธฐ ์˜ˆ๋ณด: ํด๋ผ์šฐ๋“œ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ Telegram์šฉ ๋ด‡

  • ํŒŒ์ผ์˜ ์ƒ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”. tele_bot (ํ™•๋Œ€ .py ์ง€์ •๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Œ) ๋ฐ ๋์  ํ•จ์ˆ˜(์ฃผ์–ด์ง„ ์˜ˆ์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ณธ๊ด€).
  • ์„น์…˜์—์„œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๋ณ€์ˆ˜๋ฅผ ์“ฐ๋‹ค ํ† ํฐ ์›ํ•˜๋Š” ํ…”๋ ˆ๊ทธ๋žจ ๋ด‡์˜ ํ† ํฐ์„ ํ• ๋‹นํ•˜์„ธ์š”.
  • ๋”ธ๊น ํ•˜๋Š” ์†Œ๋ฆฌ ์ €์žฅ ๋ฐ ํ™•์žฅ, ๊ทธ ํ›„ ์„น์…˜์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ํŠธ๋ฆฌ๊ฑฐ.
  • ์šฐ๋ฆฌ๋Š” ์Šค์œ„์น˜๋ฅผ ๋†“์•˜๋‹ค. HTTP ์š”์ฒญ์š”์ฒญ์„ ๊ณต๊ฐœํ•ฉ๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์ •ํ™•ํ•œ ์ผ๊ธฐ ์˜ˆ๋ณด: ํด๋ผ์šฐ๋“œ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ Telegram์šฉ ๋ด‡
์ด์ œ ํ•จ์ˆ˜๋ฅผ ๊ณต๊ฐœ์ ์œผ๋กœ ํ˜ธ์ถœํ•˜๊ธฐ ์œ„ํ•œ URL์ด ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค. ๋‚จ์€ ๊ฑด ์›นํ›… ๊ตฌ์„ฑ. ์šฐ๋ฆฌ ๋ด‡ ์ฐพ๊ธฐ @SelectelServerless_bot Telegram์—์„œ ๋‹ค์Œ ๋ช…๋ น์œผ๋กœ ๋ด‡์„ ๋“ฑ๋กํ•˜์„ธ์š”.

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

๊ฒฐ๊ณผ

๋ชจ๋“  ๊ฒƒ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์™„๋ฃŒ๋˜๋ฉด ๋ด‡์ด ์ฆ‰์‹œ ์ž‘๋™ํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๊ณ  ์ตœ์‹  ํ•ญ๊ณต ์ผ๊ธฐ ์˜ˆ๋ณด๋ฅผ ๋ฉ”์‹ ์ €์— ์ง์ ‘ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์ •ํ™•ํ•œ ์ผ๊ธฐ ์˜ˆ๋ณด: ํด๋ผ์šฐ๋“œ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ Telegram์šฉ ๋ด‡
๋ฌผ๋ก  ์ฝ”๋“œ๋Š” ๊ฐœ์„ ๋  ์ˆ˜ ์žˆ์ง€๋งŒ, ํ˜„์žฌ ์ƒํƒœ์—์„œ๋„ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์†Œ์Šค๋กœ๋ถ€ํ„ฐ ๊ฐ€์žฅ ์ •ํ™•ํ•œ ๋‚ ์”จ์™€ ์˜ˆ๋ณด๋ฅผ ์•Œ์•„๋‚ด๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋„ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

์ฝ”๋“œ์˜ ์ „์ฒด ๋ฒ„์ „์€ ๋‹ค์Œ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. GitHub์˜ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ.

๊ฐ€์žฅ ์ •ํ™•ํ•œ ์ผ๊ธฐ ์˜ˆ๋ณด: ํด๋ผ์šฐ๋“œ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ Telegram์šฉ ๋ด‡

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€