반응형

안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.

코딩유치원에서는 파이썬 기초부터 사무자동화, 웹크롤링, 데이터 분석, 머신러닝 등의 다양한 패키지까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.

업무는 물론 투자에도 도움이 될만한 전자공시시스템(DART)나 텔레그램(Telegram) 관련 패키지도 배울 수 있으니 많은 관심 부탁드립니다.

 

 

저는 최근에 '파이썬으로 전자공시를 실시간으로 받을 수는 없을까'하는 생각이 들었습니다.

 

계속해서 공시정보를 모니터링을 새로운 내용이 있을 때, 저에게 메세지를 보내주는 것이죠.

 

직접 개발해 보려고 공부하던 중, 메시지를 보내는 방법으로 n번 방 사건으로 유명해졌던 텔레그램을 알게되었습니다.

결론적으론 공부하다가 이미 만들어진 것이 있어서 잘 사용하고 있지만, 공부했던 것이 아쉬워서 정리해놓는 겸 포스팅 해봅니다.


텔레그램 공시정보알림 서비스

 

코딩 내용에는 관심 없으실 분을 위해 먼저 서비스를 소개 드리겠습니다. '공시정보알림'이라는 텔래그램 봇인데 아주 유용해서 공유드립니다. 좋은 서비스를 무료로 제공해 주시는 chumy님께 감사의 인사 드립니다.

 

 

https://blog.naver.com/chumy/220548115079

 

텔레그램용 금감원 DART 푸쉬 서비스

2015.11.27 사용자 1000명을 넘었습니다.많은 관심에 감사드립니다. 최근에 파이썬 언어를 공부중이다. 2주...

blog.naver.com

https://m.blog.naver.com/chumy/220717965137

 

텔레그램용 공시정보 봇 업데이트

텔레그램용 공시정보 봇에 새로운 구독 기능이 생겼습니다. 텔레그램용 공시정보 봇에 대한 기본정보 안내...

blog.naver.com


 

지금부터는 파이썬으로 텔레그램 봇 이용하는 법을 정리해보겠습니다.

1. 텔레그램 봇(telegram bot) 만들기

 

시작하기 전에 아래의 두가지 개념이 다른 것을 알아야 합니다.

 

계정 : 하나의 주체 (사용자 or 봇)

채널: 오픈 채팅방

텔레그램에서 BotFather를 검색하면 아래와 같은 이미지와 아이디의 bot이 나옵니다. (비슷한거 많으니 주의할 것)

 

해당 BotFather를 클릭해서 들어간 후, 채팅창에 /start를 입력하고 /newbot을 입력하면, 봇의 이름아이디를 지어달라고 요구하는데, 원하는 것으로 하면 됩니다. 저는 봇의 이름은 DART, 아이디는 swdart_bot으로 하였습니다. (DART_bot이라고 했다가 한 번 거절당함)

 

여기까지 하면 새로운 나만의 봇을 만들 수 있습니다.

그러면 token 정보가 포함된 메시지를 회신해 주는데, 이는 나중에 파이썬에서 해당 봇에 접근할 수 있게 해주는 키입니다.

보안상 이미지는 모자이크 처리했고 대충 아래형식처럼 생겼습니다. 1234567890:h1jh12hj35v5jh43hjb436bkj6jk6

현재 봇은 생성된 상태이지만 봇은 저에 대한 정보가 없는 상태입니다. 만드신 봇을 검색해서 들어간 후에, 아무 메세지나 보내면 내 계정에 대한 정보가 봇에게 인식됩니다.

 

2. 파이썬으로 텔레그램 봇과 채팅해보기

#텔레그램 모듈 설치 (pip와 conda 두 가지중에 하나 선택해서 설치)
pip install python-telegram-bot --upgrade 
conda install -c conda-forge python-telegram-bot

import telegram #텔레그램 모듈 import

bot_token = '만든 봇으로부터 받은 토큰 정보' #토큰을 변수에 저장

bot = telegram.Bot(token = bot_token) # telegram 모듈의 Bot 함수를 사용하여 bot_token으로 접근 가능한 bot 생성

updates = bot.getUpdates() #bot과의 채팅 정보 및 메세지 업데이트

for i in updates :
    print(i) #update_id와 message로 크게 두 가지 정보가 딕셔너리 형태로 저장
    print(i.message) # 내역중 message 정보를 출력

chat_id = bot.getUpdates()[-1].message.chat.id

# 앞에서 사용한 bot.getUpdates 함수는 list 형식을 리턴
# list 문법에 의해 [-1]은 가장 마지막에 저장된, 즉, 가장 최근에 온 메세지의 정보를 가리킴
#message 정보 안에서 chat id만 가져옴

bot.sendMessage(chat_id = chat_id, text="야, 아무말이나 던져봐") #위에서 얻은 chat id로 메세지를 보냄.

<참고. import telegram이 잘 안될 때>

 

case1. 설치가 잘 되지 않았을 때

 

vscode에서 현재 프로젝트에 사용중인 환경이 anaconda인지 python인지 확인하고, 거기에 맞게 설치할 것

 

case2. 설치가 되어 있는데도 되지 않을 때

 

pip list나 conda list로 확인해보았을 때, python-telegram-bot이 잘 설치되어 있는데도 안되는 경우는 현재 실행중인 파이썬 파일(.py)의 이름이 telegram.py로 되어 있는 경우입니다.

AttributeError: partially initialized module 'telegram' has no attribute 'Bot' (most likely due to a circular import)

 

okky.kr/article/687902

 

OKKY | 파이썬 pip 및 텔레그램 모듈 설치관련 질문입니다.

import telegram bot telegram.Bot(token 1113056609:AAFjEaq2gQMQ5XH5g-ChaFYhdxxxxxx ) print(bot.getUpdate()) 위와같이 테스트 코드를 작성하였습니다. telegram 모듈을 사용하기위해  https://python-teleg

okky.kr


 

일단 여기까지 정리해보았고, 다음에는 원하는 주제의 기사를 네이버에서 검색하여, 지정한 주기마다 새로 올라온 기사들의 링크를 텔레그램으로 보내주는 것을 해볼 예정입니다.

유력 대선후보들의 이름으로 기사를 검색해서, 대선테마주에 적용해보면 어떨까하는 생각도 듭니다.

반응형

+ Recent posts