[kr-dev] 최신글 알림 서비스 #2 (Telegram Bot 소개)

in #kr-dev7 years ago (edited)

안녕하세요.

저는 최근 호기심이 생겨 최신글 알림 서비스를 개발하고 있습니다.

목적은 특정 태그, 특정 유저의 최신 글이 작성 되었을 때,
알림이 오도록 하는 것 입니다.

첫번째, 카카오톡으로 알림 서비스를 받으면 좋았으나 유료 서비스라 패스하였습니다.

두번째, 직접 어플을 만들자니 배보다 배꼽이 더 큰 상황이라..


해결책은 Telegram을 활용한 알림 서비스


telegram bot에 대한 이미지 검색결과

Telegram은 공식적으로 python-telgegram-bot 관련 라이브러리를 제공하고 있으며,

이를 이용해서 쉽게 알림 서비스를 만들 수 있을 것입니다.

Telegram의 장점은 아래와 같습니다.

  • 무료다.
  • API가 제공된다.
  • 카카오 플러스 친구 같은 것을 만들 수 있다.
  • **스팀잇 뿐만 아니라 알림을 받고 싶은 서비스에 활용할 수 있다.**
    • ex) 추후 제가 개발하고 싶은 홈서비스 로봇에도 사용할 수 있을것으로 기대합니다.
    • 집에 불을 키고 나왔거나 집에 손님이 방문했을 때, 그것을 인식하고 Telegram을 통해서 알림을 받는다던가!
서론이 길었지만.. Telegram Great!

Telegram 설치 및 활용 과정

순서대로 진행하겠습니다.
  1. Bot Father에게 Bot을 생성해달라고 요청해야합니다.

Bot은 아래 설명한 것과 같습니다.

  • 사용자로부터 무언가 입력을 받거나 사용자에게 알림을 보내기 위해서는 봇이라는게 필요합니다.
  • 쉽게 설명하자면, 우리가 만드는 것이 카카오 플러스 친구입니다.
  • 봇 파더에게 생성 요청 - 이 글이 전반적으로 설명을 참 잘했습니다.
Bot Father로부터 Bot을 생성했다면 반은 끝났습니다.
  1. python-telegram-bot 라이브러리 설치

sudo pip install python-telegram-bot만 하면 끝!

백종원 참 쉽죠에 대한 이미지 검색결과

  1. 사용자에게 메시지 보내기

아래 코드를 보면 Bot father에게 받은 telegramKey를 이용해서 Bot 객체를 만듭니다.

self.telegramBot = telegram.Bot(token=telegramKey)

그 다음에 메시지를 보내고 싶을 때, sendMessage함수를 사용하면 됩니다.

예를 들어, 새로운 글이 감지 되었을 때, sendMessage를 보내면 되는겁니다!

  1. 사용자의 입력에 따른 피드백

이제 사용자로부터 입력을 받고 그에 따른 동작을 해야할 때 사용하는 함수인데요

간단히 설명드리면 Handler와 Callback method, 그리고 Handler를 관리하는 dispatcher가 있습니다.

  • Handler는 특정 Command나 메시지가 왔을 때, 특정 함수를 실행하도록 설정합니다.
41번째 줄로 설명하면 'start'라는 신호가 오면 start함수를 실행하라는 의미입니다.
  • 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 봇도 개발해보고

많이 공부가 되었습니다.

Sort:  

스스로 홍보하는 프로젝트에서 나왔습니다.
오늘도 좋은글 잘 읽었습니다.
오늘도 화이팅입니다.!

생각보다 간단하게 구현이 되는군요. 파이썬 해봐야겠습니다 ㅎㅎ

네 파이썬으로하면 쉽게 할 수 있어요 ㅎㅎ

우왕 멋지네요. 이런게 가능하다니. 리스펙입니다^^
/ 다니의 뉴비 지원 프로젝트(1월 2주)

감사합니다!

스팀봇 글에 댓글 남기신거 보고 왔어요~ 스팀잇에는 재밌는 개발 내용 올려주시는 분이 많아서 좋네요 :)) 잘 읽고 갑니다!

재밌게 읽어주셔서 감사합니다!

진짜 스팀잇 능력자 분들 대박이네요!!
컴알못이라 조립도 못하는 저에겐
신세계입니다 ㅋㅋ
어릴때 컴퓨터 학원 다니랄때 열심히 다닐걸...
역시 엄마말은 항상 잘 들어야 하나봐요

읽어주셔서 감사합니다!
생각해보니 컴퓨터 학원을 다니긴 했네여 ㅋㅋ

Coin Marketplace

STEEM 0.25
TRX 0.20
JST 0.038
BTC 93413.26
ETH 3418.78
USDT 1.00
SBD 3.80