IT-Youtube-Publish
파이썬(Python) - 텔레그램 (Telegram) 봇 만들기
Dream Come True
2022. 4. 1. 23:04
이번 시간에는 파이썬으로 텔레그렘 봇을 한번 만들어 보겠습니다.
몇일전에 이웃분 블로그를 보고 해봤는데 생각보다 난이도가 그렇게 어렵지 않더라고요
간단해서 이것은 금방 따라하실 수 있을것 같습니다.
텔레그램이라는 모바일 앱이 있는데, 우선 앱은 다운 받아주시고요.
윈도우에서도 사용하려면
https://desktop.telegram.org/
모바일 앱에서 데스크탑 텔레그램과 연결을 해줍니다.
그럼 시작합니다.
먼저 botfather 채널을 검색합니다. 봇퐈더~~
/newbot 을 입력해줍니다. 새로운 텔레그램 봇을 생성합니다.
그리고 봇 이름을 말해줍니다.
그러면 봇파더가 무슨 말을 하던데 API 토큰값이 나오는데 잘 기록해둡니다.
이 토큰값은 잘 보관해두세요.
이제 파이썬 telepot 패키지를 설치합니다.
import os import sys from PyQt5. QtWidgets import QApplication from dotenv import load_dotenv import telepot load_dotenv ( verbose= True) if __name__ == "__main__" : app = QApplication ( sys. argv) bot = telepot. Bot ( [ 토큰값] ) def handle ( msg) : print ( msg) bot. message_loop ( handle) while True: pass
여기서 콘솔에 찍히는것을 보고 id 를 알아낼수 있습니다.
텔레그램 봇으로 메시지 보내기
import os import telegram from dotenv import load_dotenv load_dotenv ( verbose= True) if __name__ == "__main__" : bot = telepot. Bot ( os. getenv ( 'TELEGRAM_TOKEN' ) ) # 토큰 값 mc = os. getenv ( 'TELEGRAM_ID' ) # ID bot. sendMessage ( mc, "안녕하세요" )
토큰값을 넣어서 bot 이라는 객체를 만들고
sendMessage 에 id랑 메시지를 넣어서 전송합니다.
그러면 봇이 안녕하세요 라는 말을 해주는것을 확인해볼 수 있습니다.
텔레그램 봇과 대화하기
import os import sys from PyQt5. QtWidgets import QApplication from dotenv import load_dotenv import telepot load_dotenv ( verbose= True) if __name__ == "__main__" : app = QApplication ( sys. argv) bot = telepot. Bot ( os. getenv ( 'TELEGRAM_TOKEN' ) ) mc = os. getenv ( 'TELEGRAM_ID' ) bot. sendMessage ( mc, "안녕하세요" ) def handle ( msg) : print ( msg) text = msg[ 'text' ] if text == '안녕' : bot. sendMessage ( mc, '반가워요~' ) if text == '여긴 어디죠?' : bot. sendMessage ( mc, 'LED감성 블로그에요' ) if text == '어디 살아요?' : bot. sendMessage ( mc, '당신 마음속에요' ) bot. message_loop ( handle) app. exec_ ( )
중요한점은 message_loop 가 멈추지 않고 계속 돌게 해야 합니다.
app.exec_() 가 여기서는 그런 역할을 합니다.
네이버 동영상 플레이어
00: 16 재생시간, 이 동영상의 길이는 16초 입니다.
화질 선택 옵션
응용을 해서 봇한테 말을 걸면 키움증권 API를 호출해서 데이터를
if text == '티커출력' : dao = StockIdxDAO ( 'Telegram' ) result = json. dumps ( dict ( ( y, x) for x, y in dao. get_ticker_list ( ) ) , ensure_ascii= False, indent= 3 ) bot. sendMessage ( mc, '데이터베이스에서 조회한 티커 목록 결과입니다 \n' + format ( result) )
'티커출력' 이라는 메시지를 보내면 데이터베이스에서 조회를 해서 응답을 주도록 해봤습니다.
쿼리 조회결과를 튜플로 반환해주고 있어서 딕셔너리 자료형으로 변환한 후 json.dumps 로 읽어서
보기좋게 들여쓰기를 해주고 메시지로 전송해봤습니다.