굳헬로의 스팀 프로그램 일기!! 서른아홉번째 #39 파이썬과 텔레그램을 이용한 챗봇 프로그래밍의 시작!! 그 첫번째!! 챗봇과 대화를 해보고,특정 메시지에 반응을 해보자!!

in sct •  11 months ago 

steem.jpg

일요일 잘 보내고 계신가요??

어젠 지리산 계곡 다녀오고 술도 많이 마시고 무리를 했는지... 오늘은 운동하기 정말 좋은날씨였지만... 운동을 쉬고 집에서 뒹굴뒹굴 거리고 있네요.

그래도 힘을 내서 오늘의 프로그램 일기 남겨보겠습니다.


어제는 보팅 알람봇을 드디어 만들었는데요.

보팅 알람봇을 이용하려면 직접 파이썬 프로그램을 돌려야만 알람을 받아볼 수 있었지요.

그래서 프로그램을 실행하지 않고도 누구나 보팅 알람봇을 이용할 수 있게 하기 위하여 텔레그램 챗봇을 공부하고 있는데요.

일단 만들기로 마음을 먹었는데, 설계가 쉽지는 않네요.

그래도 매일 조금씩 차근 차근 진도를 나가보도록 하겠습니다.

오늘은 그 첫 시간으로 텔레그램 챗봇에 대해 알아보았습니다.

텔레그램 챗봇을 이용하기 위해 다음과 같은 패키지들을 import 해야 합니다.

from telegram.ext import Updater, MessageHandler, Filters

Updatr, MessageHandler, Filters를 이용하여 텔레그램 챗봇을 간단하게 이용할 수 있더라구요.

updater = Updater("텔레그램 토큰")

먼저 텔레그램 토큰으로 updater 을 생성해 주고

updater.dispatcher.add_handler(MessageHandler(Filters.text, get_message))

updaterdispatcher.add_handler를 이용하여 MessageHandler를 추가 시켜 줍니다.

이제 텔레그램 챗봇이 메시지를 받으면 get_message() 함수를 호출하게 됩니다.

updater.start_polling(timeout=3, clean=True)
updater.idle()

이제 updater를 가동시키고, 메시지를 기다리게 됩니다.

def get_message(bot, update) :
    print(update.message)
    update.message.reply_text(update.message.text)

챗봇이 메시지를 받으면 get_message() 함수가 실행됩니다.

챗봇에 안녕 챗봇이라고 메시지를 보내 보았습니다.

그러면 get_message() 함수가 실행되면서 update.message.reply_text() 를 이용해 메시지를 보낸이에게 똑같은 메시지로 응답을 합니다.

잠시 update.message를 살펴보도록 하겠습니다.

{
    'message_id': 158, 
    'date': 1566703007, 
    'chat': 
    {
        'id': 챗아이디, 
        'type': 'private', 
        'first_name': '이름', 
        'last_name': '성'
    }, 
    'text': '안녕 챗봇', 
    'entities': [], 
    'caption_entities': [], 
    'photo': [], 
    'new_chat_members': [], 
    'new_chat_photo': [], 
    'delete_chat_photo': False, 
    'group_chat_created': False, 
    'supergroup_chat_created': False, 
    'channel_chat_created': False, 
    'from': 
    {
        'id': 챗아이디, 
        'first_name': '이름', 
        'is_bot': False, 
        'last_name': '성', 
        'language_code': 'ko'
    }
}

update.message에는 누가 챗봇에 어떤 메시지를 보냈는지 위와 같은 정보들이 담겨 있습니다.

보팅 알람봇을 만들려면 여기에서 chat id를 뽑아내어 데이터베이스나 파일에 저장해두고, 알람을 보내면 될 것 같습니다.

그리고 get_message() 함수에 다양한 조건들을 걸어 특정 단어에 반응을 시킬수도 있겠네요.

    message = update.message.text    
    if message == "SCT" :
        SCT = api.find_one("tokens", "tokens", query = { "symbol" : "SCT" })
        update.message.reply_text(SCT)
    else :
        update.message.reply_text(update.message.text)

챗봇에게 SCT 라고 말을 걸면 SCT의 토큰 정보를 가져와서 응답을 해주는 코드입니다.

챗봇이 멋지게 답변을 해주었네요.

이렇게 get_message()함수에 다양한 조건을 넣어두면 챗봇을 이용해 다양한 정보를 받아올 수 있겠네요.

그럼 오늘은 이쯤에서 작업을 마치고, 다음 시간에는 챗봇을 더욱 활용하는 코드를 작성해 보도록 하겠습니다.

그럼 행복한 일요일 하루 보내시고, 맛있는 음식도 많이 드시길 바래요~


굳헬로의 스팀 프로그램 일기!! 시리즈

#1 굳헬로의 스팀 프로그램 일기!! 대망의 시작 #1 Python 프로그램 설치 && steemengine 파이썬 api 설치 && 간단한 steemengine 예제

#2 굳헬로의 스팀 프로그램 일기!! 그 두번째 #2 비주얼 스튜디오 코드 프로그램 설치 && 비주얼 스튜디오 코드를 사용하여 파이썬 다루기 && 간단한 steemengine 예제

#3 굳헬로의 스팀 프로그램 일기!! 세번째 #3 스팀엔진 토큰의 정보를 가져오는 findOne() && 누군가의 토큰 사용 내역을 가져오는 get_history() && JSON 데이터 출력

#4 굳헬로의 스팀 프로그램 일기!! 네번째 #4 steemengine Token 클래스 && Token.get_holder() && Token.get_market_info() && Token.get_buy_book() && Token.get_sell_book()

#5 굳헬로의 스팀 프로그램 일기!! 다섯번째 #5 스팀엔진 블록을 뒤져서 원하는 정보를 찾아보자!! 스팀엔진 마켓 거래 내역을 뽑아내는 예제

#6 굳헬로의 스팀 프로그램 일기!! 여섯번째 #6 파이썬으로 스팀엔진 토큰들을 클레임 해보자.

#7 굳헬로의 스팀 프로그램 일기!! 일곱번째 #7 프로그램 일기도 어느덧 1주일!! 드디어 첫 실전!! 무한 반복 작업 수행하기!! 이제 직접 클레임 하는 손맛은 잊자. 무한 반복 자동 클레임!!

#8 굳헬로의 스팀 프로그램 일기!! 여덟번째 #8 텔레그램 봇을 이용해 알림을 받아보자!! && 무한 반복 자동 클레임의 정보를 텔레그램으로 받아보기!!

#9 굳헬로의 스팀 프로그램 일기!! 아홉번째 #9 무한 반복 자동 클레임 업그레이드!! && 토큰 잔고 확인 && 토큰 전송과 토큰 전송 내역을 텔레그램으로 받아보기!!

#10 굳헬로의 스팀 프로그램 일기!! 열번째 #10 토큰 전송내역을 검사하고, 토큰을 전송 받으면 텔레그램으로 알림을 받아보기!!

#11 굳헬로의 스팀 프로그램 일기!! 열한번째 #11 스팀엔진 토큰 임대내역 추적. 쉽지 않았던 머나먼 여정 (1/2)

#12 굳헬로의 스팀 프로그램 일기!! 열두번째 #12 스팀엔진 토큰 임대내역 추적. 쉽지 않았던 머나먼 여정 (2/2) 스팀엔진 토큰 임대내역 추적 완료!!

#13 굳헬로의 스팀 프로그램 일기!! 열세번째 #13 웹 프로그래밍의 시작!! 파이썬을 이용하여 정보를 MySQL 데이터 베이스에 저장해보기!!

#14 굳헬로의 스팀 프로그램 일기!! 열네번째 #14 파이썬을 이용하여 데이터베이스로부터 정보를 가져오기 && 스팀코인판 3대풀 임대내역 데이터베이스 작업 완료!!

#15 굳헬로의 스팀 프로그램 일기!! 열다섯번째 #15 웹 프로그래밍을 이용하여 스팀코인판 3대조합의 임대 내역을 웹으로 확인해보자 !!

#16 굳헬로의 스팀 프로그램 일기!! 열여섯번째 #16 스팀엔진 최신 블록을 검사하여 필요한 정보를 데이터베이스에 저장하기!! 3대 조합의 임대내역을 최신으로 저장하기!!

#17 굳헬로의 스팀 프로그램 일기!! 열일곱번째 #17 조합들이 필요한 기능 드디어 완성!! 자동 클레임과 자동 분배 기능!!

#18 굳헬로의 스팀 프로그램 일기!! 열여덟번째 #18 스팀코인판 3대 조합의 임대내역과 실시간 예상 분배 금액을 웹으로 확인해보자!!

#19 굳헬로의 스팀 프로그램 일기!! 열아홉번째 #19 어제 만든 프로그램 업그레이드!! 개별 상세내역보기 기능 추가!!

#20 굳헬로의 스팀 프로그램 일기!! 어느덧 스물번째 #20 시행착오... 그리고 시련... 하지만 원사마님 덕분으로 엄청난 레벨업!! 감사합니다. 더욱 발전하겠습니다.

#21 굳헬로의 스팀 프로그램 일기!! 스물한번째 #21 레벨업을 했지만 또 다시 찾아온 시련!! 프로그램 결과와 블록체인에 기록된 결과가 다르다!! 어떻게 해야 할까...

#22 굳헬로의 스팀 프로그램 일기!! 스물두번째 #22 오늘부터 새로운 도전!! 자동 보팅 만들기!! 그 첫번째 스팀코인판의 소각글에 자동보팅을 해보자!! 첫번째 시간 (1/N)

#23 굳헬로의 스팀 프로그램 일기!! 스물세번째 #23 스팀코인판의 소각글의 정보를 가지고 와서 자동보팅을 해보자!! 그 두번째 시간 (2/N)

#24 굳헬로의 스팀 프로그램 일기!! 스물네번째 #24 스팀코인판 3대조합의 임대내역을 웹으로 확인해보자!! 업그레이드!!

#25 굳헬로의 스팀 프로그램 일기!! 스물다섯번째 #25 스팀코인판 3대조합의 임대내역을 웹으로 확인해보자!! 업그레이드 2!! 그리고 개발 예정 사항 공개!!

#26 굳헬로의 스팀 프로그램 일기!! 스물여섯번째 #26 드디어 첫 실전 가동 준비중... 스팀코인판 유니온 조합의 수익 자동분배 작업 완료중...

#27 굳헬로의 스팀 프로그램 일기!! 스물일곱번째 #27 스팀코인판 유니온 조합 첫 자동 분배 결과!! 그리고 보완!!

#28 굳헬로의 스팀 프로그램 일기!! 스물여덟번째 #28 스팀코인판 유니온 조합 자동 분배 프로그램의 결과를 웹으로 확인해 보자!!

#29 굳헬로의 스팀 프로그램 일기!! 스물아홉번째 #29 스팀코인판 유니온 조합 자동 분배 상황을 텔레그램으로 확인!! 임내 확인 페이지 정렬 기능 추가!!

#30 굳헬로의 스팀 프로그램 일기!! 서른번째 #30 스팀코인판 조합의 임대량 페이지 정렬 기능 업그레이드!! 그리고 임대량 파이 차트 완성!!

#31 굳헬로의 스팀 프로그램 일기!! 서른한번째 #31 스팀코인판 조합의 하루하루 임대량 변화를 차트로 확인해보자!!

#32 굳헬로의 스팀 프로그램 일기!! 서른두번째 #32 트리플A를 이용하면서 그동안 번거로웠던 클레임 스테이킹 전송 작업 이젠 안녕!! 자동으로 AAA를 전송하고 클레임하고 스테이킹을 해보자!!

#33 굳헬로의 스팀 프로그램 일기!! 서른세번째 #33 굳헬로가 만든 스팀코인판 조합 자동 클레임과 자동 분배 프로그램 원피스 조합에도 사용 개시!!

#34 굳헬로의 스팀 프로그램 일기!! 서른네번째 #34 스팀코인판 조합 원피스 자동 클레임과 자동 분배 프로그램 업그레이드!! 텔레그램 봇으로 그룹 메시지를 받아보자!!

#35 굳헬로의 스팀 프로그램 일기!! 서른다섯번째 #35 스팀에서 새글 정보를 텔레그램으로 받아보자!! 함께 정보를 받아보는 텔레그램 그룹방 개설!!

#36 굳헬로의 스팀 프로그램 일기!! 서른여섯번째 #36 스팀엔진 블록 검사 놓치는 블록이 없도록 해보자!! 파일 입출력 기능 활용!!

#37 굳헬로의 스팀 프로그램 일기!! 서른일곱번째 #37 스팀엔진 블록을 검사하여 본인글의 댓글을 텔레그램 알람으로 받아보자!!

#38 굳헬로의 스팀 프로그램 일기!! 서른여덟번째 #38 드디어 완성!! 보팅 알람봇!! 스팀엔진 블록을 검사하여 본인글에 보팅이 찍히면 텔레그램 알람으로 받아보자!!

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

wonsama님이 goodhello님을 멘션하셨습니당. 아래 링크를 누르시면 연결되용~ ^^
wonsama님의 이벤트) 제6회 제목학원 with 타짜 - 원아이드 잭

...npigon,asd5710,bluengel,chosk,cyberrn,fenrir78,floridasnail,goodhellogoodhello.aaa,happyberrysboy,honeybeerbear,ioioioioi,jjy,kib...

Congratulations @goodhello! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

You got more than 7750 replies. Your next target is to reach 8000 replies.

You can view your badges on your Steem Board and compare to others on the Steem Ranking
If you no longer want to receive notifications, reply to this comment with the word STOP

Vote for @Steemitboard as a witness to get one more award and increased upvotes!

Thank you for your continued support towards JJM. For each 1000 JJM you are holding, you can get an additional 1% of upvote. 10,000JJM would give you a 11% daily voting from the 700K SP virus707 account.

Hi @goodhello!

Your post was upvoted by @steem-ua, new Steem dApp, using UserAuthority for algorithmic post curation!
Your UA account score is currently 3.983 which ranks you at #4068 across all Steem accounts.
Your rank has not changed in the last three days.

In our last Algorithmic Curation Round, consisting of 121 contributions, your post is ranked at #71.

Evaluation of your UA score:
  • You're on the right track, try to gather more followers.
  • The readers like your work!
  • You have already shown user engagement, try to improve it further.

Feel free to join our @steem-ua Discord server