재입고 알림 봇 만들기-3 알림(텔레그램, 지메일)

코로나 바이러스로 인한 마스크 대란으로 재입고 알림 봇 포스트를 많은 분들이 봐주시고 질문도 해주시고 있습니다. 블로그 유입이 늘어나고 나름 유용하게 사용하시는 것 같아 기쁘지만 그냥 바이러스 빨리 사라지는게 훨씬 더 좋을 것 같네요..


이전 글에서는 스크래핑 방법에 대해 알아보았습니다. 이번 글에서는 입고가 되었을 때 알림을 만드는 방법과 지금까지 만든 프로그램들을 엮어줄 메인 프로그램을 진행해 보겠습니다.

알림 만들기

스크래핑을 통해 상품이 주문 가능한 상태가 되었음을 확인했으면 사용자에게 알려줘야 합니다. 이메일, 메신저, 앱 알림 등 다양한 방법이 있습니다. 이 중 가장 간단한 텔레그램 봇과 이메일을 알아보겠습니다.
카카오톡 같은 경우는 API를 통해 메시지를 보내는게 가능하지만 방식이 좀 복잡한 편이라 제외했습니다. 카카오톡을 이용하실 분은 이곳을 참고해보세요.

텔레그램 봇 준비

텔레그램은 봇bot을 통해 API를 사용할 수 있도록 되어 있습니다.

API는 자신이 만든 프로그램을 다른 프로그램에서 사용할 수 있도록 해주는 것을 말합니다.

텔레그램으로 메시지를 보내려면 우선 봇을 만들어줘야 합니다. 봇을 만들기 위해서는 봇파더(BotFather)에게 요청을 해야 합니다.

  1. 앱에서 봇파더를 검색합니다.
  2. 채팅창에 /start 를 입력하면 커맨드가 나옵니다.

  3. 봇을 만드는 명령어는 /newbot 입니다. 입력합니다.

  4. 봇의 이름을 입력합니다. 저는 newstockbot 으로 했습니다.

  5. 봇의 사용자이름을 입력하라고 하네요. newstock_bot으로 했는데 사용중이라 newstockalert_bot 으로 했습니다.

  6. /mybots 를 입력하면 내가 만든 봇들의 목록이 나옵니다. 새로 만든 봇을 선택하면 메뉴가 나오고 거기서 API Token 을 선택합니다.

  7. API Token은 텔레그램에 메시지 요청을 보낼 때 사용하는 키 역할을 합니다. 좀 있다 필요합니다.

이제 봇 준비가 완료되었습니다.

텔레그램 메시지 보내기

  1. 파이썬으로 텔레그램 봇을 사용하기 위해서 python-telegram-bot 모듈을 설치합니다.
    $ pip install python-telegram-bot --upgrade
  2. 간단하게 코드를 만들었습니다.

14라인에 텔레그램 봇 준비 과정에서 가져온 API Token을 넣어줍니다.
16라인에 나의 ID를 넣어줍니다. 내 ID를 찾는게 좀 어렵습니다. 텔레그램 앱에서 설정 등에 들어가봐도 나오는게 없더라구요. 저는 JsonDumpBot 이라는 봇을 이용해서 ID를 찾았습니다.

프로그램을 실행하면 내가 만든 봇으로부터 나에게 Hello 라는 메시지가 도착합니다.
python telegram_bot.py

여기까지 텔레그램으로 알림 만들기는 완료되었습니다.

이메일로 알림 보내기(gmail 기준)

텔레그램과 같은 메신저 앱을 사용하지 않는다면 이메일로 알림을 보내는게 적당한 방법이 될 것 같습니다. 이메일을 보내는 방법은 API를 사용하는 방법과 SMTP를 이용하는 방법이 있습니다. API를 사용하는게 보다 안전한 방법이지만 단계가 복잡한 편입니다. SMTP로 진행해 보겠습니다. 이 글을 참조했습니다.

SMTP는 이메일을 전송하기 위해 규정된 인터넷 프로토콜 중 하나입니다. 광범위하게 이용되고 있습니다.

샘플 구현

gmail id와 패스워드를 넣어주고 코드를 실행하면 처음에는 실패하게 됩니다. 지메일의 보안 정책 때문입니다. gmail에 들어가보면 보안 알림 메일이 도착해 있습니다.

‘보안 수준이 낮은 앱 허용’ 을 사용 안함에서 허용함으로 바꿔줍니다.

다시 프로그램을 실행하면 정상적으로 메시지가 도착합니다.

샘플 프로그램을 우리가 사용하려는 목적에 맞게 조금 형태를 고쳤습니다. 메인 프로그램에서는 이 버전을 통해 이메일을 보내도록 하면 됩니다.

정리

여기까지 사용자에게 메시지를 보내는 방법을 알아봤습니다. 텔레그램과 이메일의 코드가 조금 다른데 이 부분 때문에 메인 프로그램이 조금 복잡해질 수 있습니다. 알림을 보낸다 라고 하는 기능은 텔레그램이든 이메일이든 동일한 것으로 볼 수 있으므로 같은 인터페이스를 갖도록 바꿔주는게 좋아 보입니다. 하지만 지금 이 포스트는 간단한 가이드를 만드는게 목적이므로 생략하겠습니다.

[다음]으로는 전체 프로그램의 시작점이 되는 메인 프로그램과 실행 방법에 대해 다뤄보겠습니다.

재입고 알림 봇 만들기-3 알림(텔레그램, 지메일)”의 7개의 생각

    • samsee 글쓴이답글

      라즈베리파이에서 돌리시려면 도커 보다는 그냥 아나콘다 직접 설치하시는게 좋을 것 같아요.

  1. 시놀로지 답글

    안녕하세요 글 정말 흥미롭게 보았습니다 !
    혹시 api를 이용해서 텔레그램 말고 시놀로지챗으로도 가능할까요?
    가능하다면 포스팅 한번 부탁드려도 될까요 ?ㅎㅎ

    • samsee 글쓴이답글

      안녕하세요. 시놀로지 챗이라는 패키지가 있군요. 한번 해보게 되면 포스팅 하겠습니다. 감사합니다.

  2. 잘부탁드려요 답글

    좋은글 감사드립니다. 조금씩 따라하고 있긴한데
    텔레그램으로 메세지 보내기 해보고있는데
    RuntimeWarning: Enable tracemalloc to get the object allocation traceback
    발생하네요.
    코드가 좀 수정되야 할 것 같은데 어떻게 해결하면 좋을까요?

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다