안녕하세요.
저는 최근 호기심이 생겨 최신글 알림 서비스를 개발하고 있습니다.
목적은 특정 태그, 특정 유저의 최신 글이 작성 되었을 때,
알림이 오도록 하는 것 입니다.
첫번째, 카카오톡으로 알림 서비스를 받으면 좋았으나 유료 서비스라 패스하였습니다.
두번째, 직접 어플을 만들자니 배보다 배꼽이 더 큰 상황이라..
해결책은 Telegram을 활용한 알림 서비스
Telegram은 공식적으로 python-telgegram-bot 관련 라이브러리를 제공하고 있으며,
이를 이용해서 쉽게 알림 서비스를 만들 수 있을 것입니다.
Telegram의 장점은 아래와 같습니다.
- 무료다.
- API가 제공된다.
- 카카오 플러스 친구 같은 것을 만들 수 있다.
- **스팀잇 뿐만 아니라 알림을 받고 싶은 서비스에 활용할 수 있다.**
- ex) 추후 제가 개발하고 싶은 홈서비스 로봇에도 사용할 수 있을것으로 기대합니다.
- 집에 불을 키고 나왔거나 집에 손님이 방문했을 때, 그것을 인식하고 Telegram을 통해서 알림을 받는다던가!
Telegram 설치 및 활용 과정
순서대로 진행하겠습니다.- Bot Father에게 Bot을 생성해달라고 요청해야합니다.
Bot은 아래 설명한 것과 같습니다.
- 사용자로부터 무언가 입력을 받거나 사용자에게 알림을 보내기 위해서는 봇이라는게 필요합니다.
- 쉽게 설명하자면, 우리가 만드는 것이 카카오 플러스 친구입니다.
- 봇 파더에게 생성 요청 - 이 글이 전반적으로 설명을 참 잘했습니다.
- python-telegram-bot 라이브러리 설치
sudo pip install python-telegram-bot만 하면 끝!
- 사용자에게 메시지 보내기
아래 코드를 보면 Bot father에게 받은 telegramKey를 이용해서 Bot 객체를 만듭니다.
self.telegramBot = telegram.Bot(token=telegramKey)
그 다음에 메시지를 보내고 싶을 때, sendMessage함수를 사용하면 됩니다.
예를 들어, 새로운 글이 감지 되었을 때, sendMessage를 보내면 되는겁니다!
- 사용자의 입력에 따른 피드백
이제 사용자로부터 입력을 받고 그에 따른 동작을 해야할 때 사용하는 함수인데요
간단히 설명드리면 Handler와 Callback method, 그리고 Handler를 관리하는 dispatcher가 있습니다.
- Handler는 특정 Command나 메시지가 왔을 때, 특정 함수를 실행하도록 설정합니다.
- Callback method는 이 때 실행되는 start 함수를 말합니다.
- dispatcher는 여러 개의 handler를 관리하는 애를 말합니다.
결론
결론은 위에 4단계를 쭉 따라오면 원하는 Telegram 서비스를 만들 수 있다고 생각합니다.
코드는 아래와 같이 공개를 하였고요! 참고하세요 ㅎㅎ
https://github.com/passionbull/steemit-alarm-posting
제가 만든 최신글 알림 서비스는 현재 위의 기능들을 활용해서 아래와 같이 동작합니다.
현재 DB랑 연결하는 부분을 안만들어서 개인용입니다..
이제 해야할 부분은 사용자들이 원하는 태그 및 특정 유저를 선택하면 그것을 DB에 저장하고
서비스에서 DB를 읽어와 최신글 검출 및 메시지 발송을 해야합니다.
생각되는 문제는 저 혼자 쓰는데는 문제가 없으나,
사람들이 많아질 경우 제 서버 (오드로이드-XU4)가 버틸 수 있을지 모르겠네요 ㅜㅜ
궁금한 것이 있으면 물어보세요!
제안, 조언 등 언제든 환영입니다.
글이 많이 긴데 읽어주셔서 감사합니다!
Reference
기존에 있는 스팀잇 Telegram 서비스를 찾아봤는데요.
@clayop, @ludorum, 외국 개발자님이 개발한 것도 있었는데 기억이 안납니다.clayop님의 noteefi가 제가 목표하던 알림 서비스더군요.
Telegram 서비스를 운영하고 있지는 않으신 것 같습니다.
ludorum님의 챗봇은 언급됐을 때, 알림이 오는 서비스입니다.
기존 서비스가 다시 가동된다면 제 서비스는 필요없을 수 있으나,
처음으로 스팀잇 라이브러리도 써보고, Telegram 봇도 개발해보고
많이 공부가 되었습니다.
스스로 홍보하는 프로젝트에서 나왔습니다.
오늘도 좋은글 잘 읽었습니다.
오늘도 화이팅입니다.!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
생각보다 간단하게 구현이 되는군요. 파이썬 해봐야겠습니다 ㅎㅎ
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
네 파이썬으로하면 쉽게 할 수 있어요 ㅎㅎ
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
우왕 멋지네요. 이런게 가능하다니. 리스펙입니다^^
/ 다니의 뉴비 지원 프로젝트(1월 2주)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
감사합니다!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
스팀봇 글에 댓글 남기신거 보고 왔어요~ 스팀잇에는 재밌는 개발 내용 올려주시는 분이 많아서 좋네요 :)) 잘 읽고 갑니다!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
재밌게 읽어주셔서 감사합니다!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
진짜 스팀잇 능력자 분들 대박이네요!!
컴알못이라 조립도 못하는 저에겐
신세계입니다 ㅋㅋ
어릴때 컴퓨터 학원 다니랄때 열심히 다닐걸...
역시 엄마말은 항상 잘 들어야 하나봐요
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
읽어주셔서 감사합니다!
생각해보니 컴퓨터 학원을 다니긴 했네여 ㅋㅋ
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit