코로나 실시간 뉴스 알림 챗봇 만들기 COVID19NEWS BOT

 

COVID19NEWS BOT

covid19news_kr bot 구독하기

어제부터 코로나에 대한 위협이 커지면서,
코로나에 대한 뉴스를 바로바로 확인할 수 있는 텔레그램 봇 을 제작하기로 했다.

사실 내가 빠르게 소식을 접하기 위해 제작하였지만,
친구들도 이용할 수 있도록 채널을 생성해 구독할 수 있도록 하였다.
2시간 남짓 개발한 covid19news bot 개발기를 적어보고자 한다.

1

카카오 아이오픈빌더를 승인받으면 카카오로 옮겨야지

개발하기

텔레그램 챗봇은 취미로도 자주 만들어서 제작하는데는 오랜 시간이 걸리지 않았다.

어디서 뉴스를 가져올까?

HTML DOM을 읽어서 가져오는 일은 꺼림칙해서
rss 를 제공하고 있는 뉴스 플랫폼을 검색했다.

그 중 제공하는 곳이 다음뉴스 였다.

텔레그램 봇과 채널을 만들자

BotFather한테서 newBot을 만든다.
어차피 봇은 채널에 알림 역할만 할 것이라 어떠한 응답기능도 넣지 않았다.

3

채널을 생성하고, 방금 만든 봇을 관리자로 승격시킨다.

4

채널로 알림을 보내자

node-telegram-bot-api 모듈을 이용했으며, 해당 npm에 자세한 설명이 있다.

관리자로 승격을 해주어서 채널에 지속적으로 알림을 보낼 수 있게되었다.

bot.sendMessage('@myChannel',msg,{parse_mode: "Markdown"})

알림 전송 구현은 어떻게 할까?

사실 제일 간단한 방법이자 무식한 방법을 이용했다.

  1. 5분마다 rss를 읽는다.
node_cron.schedule('*/5 * * * *', () => ...
const parser = new rssParser();
  1. 현재 시간으로부터 5분 전부터 작성된 기사만 추린다.
moment(Date.now()).add(-5,'minutes').format('YYYYMMDDHHmm');
  1. 제목이나 내용에 “코로나”가 포함되어있으면, 텔레그램으로 메시지를 만들어 전송한다.
if(item.title.indexOf("코로나")>-1 ||  item.content.indexOf("코로나")>-1)

역시나 수정

테스트를 하다보니 다음 뉴스 RSS의 업데이트가 느리다는 것을 알게되었고,
현재 시간을 기준으로 5분전부터의 기사를 가져오면 누락되는 기사가 많았다.

그래서 현재 시간을 기준으로 10분전~5분전 사이의 기사를 5분마다 읽어서 알림을 보내도록 코드를 수정하였다.

moment().add(-10, 'minutes').format('YYYYMMDDHHmm')

2

배포하기

내가 가장 애정하는 무료 티어로 사용할 수 있는 Heroku 에 업로드하였다.

5

사용하기

혼자 이용하려고 시작했다가 채널까지 만들었으니
뉴스를 지속적으로 텔레그램 알림받고 싶은 분들은 covid19newsbot!

또는, 개인적으로 다른 키워드로 텔레그램 챗봇을 만들어 보기 위해
작성한 코드가 필요하다면 공유 요청을 해주길 바란다.