ㅁ 개요
O 프로그램 소개
- 이번 글은 이전글(2022.12.11 - [분류 전체보기] - (프로젝트) 출근전 날씨 정보를 메신저로 수신하기 - 2. 텔레그렘으로 데이터 전송하기 - 1) 텔레그램 봇 생성)에 이은 6번째 글로 이전 글에서 얻은 날씨 관련 API 응답결과를 가공하여 텔레그램 봇에게 전송하는 방법에 대하여 설명합니다.
O 완성된 프로그램 실행 화면
아래와 같이 텔레그램 봇(봇이름: 파기차차)에게 날씨 관련 정보(온도, 습도, 기상정보 등)를 정상적으로 보낸것을 볼 수 있습니다.
O 시작전 준비 사항
**실습을 위해 아래 2가지 (API키 및 access token)가 미리 준비되어 있어야 합니다.
- 이번글을 실습하기 위해서는 이전글(2022.12.11 - [분류 전체보기] - (프로젝트) 출근전 날씨 정보를 메신저로 수신하기 - 1. 날씨 정보 실시간 받아오기 - 1) API사용을 위한 회원가입)의 API 키와
이전글(2022.12.11 - [분류 전체보기] - (프로젝트) 출근전 날씨 정보를 메신저로 수신하기 - 2. 텔레그렘으로 데이터 전송하기 - 1) 텔레그램 봇 생성)의 access token이 있어야 합니다.
ㅁ 세부 내용
O 완성된 소스
소스파일 : 2.py
import requests
import telegram
import datetime
now = datetime.datetime.now()
current = datetime.datetime(now.year, now.month, now.day, now.hour, now.minute, now.second)
access_token = '' # 본인의 텔레그램 봇의 엑세스 토큰을 넣어 주세요.
apikey = "" # 본인의 날씨사이트(오픈웨더맵)에서 획득한 api key를 넣어 주세요.
city = "Seoul"
lang = "kr"
full_Url = f"http://api.openweathermap.org/data/2.5/forecast?id=524901&q={city}&appid={apikey}&lang={lang}&units=metric" # 분당 60번만 가능, 하루 간격 16일치 날씨 정보 조회
response_org = requests.get(full_Url).json()
print(response_org['list'])
print("###############################################################\n\n")
print(response_org['list'][0])
print("###############################################################\n\n")
temp = response_org['list'][0]['main']['temp']
temp_min = response_org['list'][0]['main']['temp_min']
temp_max = response_org['list'][0]['main']['temp_max']
humidity = response_org['list'][0]['main']['humidity']
description = response_org['list'][0]['weather'][0]['description']
dt_txt = response_org['list'][0]['dt_txt']
print("온도: ", temp)
print("최저 온도: ", temp_min)
print("최고 온도: ", temp_max)
print("습도", humidity)
print("날씨: ", description)
print("시간: ", dt_txt)
print("###############################################################\n\n")
########### 텔레그램 세팅 시작 #######################
bot = telegram.Bot(token='5800785049:AAGlRXp65xk9IYNjWUX6DRymsNOVrwhuCbM')
# bot = telegram.Bot(token=access_token)
chat_id = bot.get_updates()[-1].message.chat_id
bot.sendMessage(chat_id=chat_id, text="현재("+str(current)+") 날씨는 \n \
온도는"+str(temp)+ \
"\n습도는 "+str(humidity)+ \
"\n하늘은 "+str(description)+ \
"\n최저 온도는 "+str(temp_min)+ \
"\n최고 온도는 "+str(temp_max)+ \
"\n입니다.")
########### 텔레그램 세팅 끝 #######################
O 소스 실행 방법
O 주요 내용
1. 먼저 관련 모듈을 임포트 해주고,
import telegram <-- 모듈 설치가 안된 경우 >pip install python-telegram-bot 명령으로 설치
import datetime
텔레그렘 봇에게 현재 날짜를 전송하기 위해 아래 2줄 코딩으로 날짜 정보를 수집합니다.
now = datetime.datetime.now()
current = datetime.datetime(now.year, now.month, now.day, now.hour, now.minute, now.second)
print(current)
# 2022-12-11 17:27:26 <-- 결과
나머지는 이전글에서 설명한 내용과 동일합니다.
2. 변수로 할당한 날씨 관련 정보를 print()문으로 잘 나오는지 찍어 봅니다.
그리고 라인 39~40이 가장 중요한 부분인데,
봇 객체를 생성하고
bot = telegram.Bot(token='xxxxx~~~')
봇 객체의 sendMessage()함수(메소드)로 메시지를 보냅니다. 메시지를 보낼때 주의할 점은 string으로 보내야 합니다. 따라서 text변수에는 "," 가 아닌 "+"를 사용하여 문자열을 붙여 주어야 합니다. 또한 필요시 str()함수를 사용하여 숫자 등을 문자로 변경해 주어야 에러가 발생하지 않습니다.
아래 text변수에 넣은 문자열을 유심히 관찰해 보시기 바랍니다.
3. 위의 코드 실행 결과 정상적으로 나의 봇(파기차차)에게 날씨 관련 메시지 정보를 전송하였습니다.
O 소스 분석
- 위의 '주요 내용'을 참고하여 주시기 바랍니다.
ㅁ 정리
O 우리가 배운 내용
오늘은 여기까지이며, 위의 내용이 유익하셨다면, 좋아요와 구독 부탁드립니다.
감사합니다.
※ 추가적인 정보는 아래 유튜브 영상에서 해당 내용을 더욱 자세히 보실 수 있습니다.
'파이썬 프로젝트 및 응용 > 매일 아침 출근전 나만의 날씨 정보를 받아보자!!' 카테고리의 다른 글
(프로젝트) 출근전 날씨 정보를 메신저로 수신하기 - 4. 인공지능(?) 챗봇 만들기 (0) | 2022.12.20 |
---|---|
(프로젝트) 출근전 날씨 정보를 메신저로 수신하기 - 3. 프로그램을 스케줄러에 등록하기 (0) | 2022.12.20 |
(프로젝트) 출근전 날씨 정보를 메신저로 수신하기 - 2. 텔레그렘으로 데이터 전송하기 - 1) 텔레그램 봇 생성 (0) | 2022.12.20 |
(프로젝트) 출근전 날씨 정보를 메신저로 수신하기 - 1. 날씨 정보 실시간 받아오기 - 3) 16일 예상치 날씨 데이터 받아오기 (2) | 2022.12.18 |
(프로젝트) 출근전 날씨 정보를 메신저로 수신하기 - 1. 날씨 정보 실시간 받아오기 - 2) 현재 날씨 데이터 실시간 받아오기 (0) | 2022.12.18 |