안녕하세요 케이입니다.

앞에서는 텔레그램 봇에 원하는 검색어를 직접 입력해서 뉴스를 받아보는 기능까지 만들어봤습니다.

처음에는 검색어만 입력하면 관련 뉴스가 바로 텔레그램으로 오는 게 꽤 편했습니다.

그런데 실제로 며칠 사용해보니 또 불편한 점이 생겼습니다.

뉴스가 너무 많이 왔습니다.

처음에는 많이 오면 좋은 거 아닌가 싶었는데 막상 텔레그램에서 계속 메시지가 쌓이니까 오히려 보기 힘들었습니다.

특히 검색어에 따라 비슷한 뉴스가 여러 개 한꺼번에 들어오면 중요한 내용을 찾기가 더 어려웠습니다.

그래서 이번에는 뉴스 검색 결과를 무작정 다 보내는 대신

제가 원하는 개수만큼만 보내도록 바꿔봤습니다.

처음 목표는 아주 단순하게 잡았습니다.

검색 결과는 5개만 보내기

이것부터 해봤습니다.

왜 뉴스 개수를 제한해야 했을까

처음 뉴스봇을 만들 때는 검색 결과가 많이 나오는 게 더 좋아 보였습니다.

그런데 실제 사용은 조금 달랐습니다.

예를 들어

인공지능

이라고 검색했을 때 관련 뉴스가 20개, 30개씩 나오면 텔레그램 채팅창이 금방 길어졌습니다.

게다가 뉴스 하나를 보려면 제목도 보고 링크도 확인해야 하는데 너무 많이 오니까 결국 위에 몇 개만 보고 나머지는 안 보게 됐습니다.

그래서 생각해보니

뉴스 자동수집의 목적이

뉴스를 많이 받는 것

은 아니었습니다.

제가 보고 싶은 내용을 빠르게 확인하는 게 목적이었습니다.

그래서 저는 처음에는 5개 정도가 가장 보기 편했습니다.

기존 검색 코드를 먼저 확인했습니다

제가 기존에 사용하던 뉴스 검색 부분은 대략 이런 구조였습니다.

for (var i = 0; i < items.length; i++) {
  var item = items[i];

  sendMessage(
    chatId,
    item.title + "\n" + item.link
  );
}

처음에는 이 코드가 무슨 뜻인지 잘 몰랐습니다.

지금은 대략 이렇게 이해하고 있습니다.

items

안에 검색된 뉴스들이 들어 있고

i = 0

부터 시작해서

뉴스가 끝날 때까지 하나씩 꺼내서 보내는 방식입니다.

즉

뉴스가 20개 들어 있으면 20번 반복하고

뉴스가 50개 있으면 50번 반복할 수도 있다는 뜻이었습니다.

제가 원하는 건

아무리 뉴스가 많이 검색되더라도

처음 5개까지만 보내는 것이었습니다.

가장 간단하게 5개만 나오도록 바꿔봤습니다

제가 적용한 방법은 생각보다 단순했습니다.

기존 반복문을 이렇게 바꿨습니다.

for (var i = 0; i < items.length && i < 5; i++) {
  var item = items[i];

  sendMessage(
    chatId,
    item.title + "\n" + item.link
  );
}

처음에는

i < 5

이 부분이 왜 필요한지 잘 몰랐습니다.

그런데 하나씩 따져보니까 이해하기 쉬웠습니다.

i가 0부터 시작하니까

0

1

2

3

4

까지 총 5번 실행됩니다.

그리고 i가 5가 되는 순간 조건에 맞지 않아서 반복이 끝납니다.

결국

검색 결과가 아무리 많아도 최대 5개까지만 보내라

라는 뜻이었습니다.

검색 결과가 3개밖에 없으면 어떻게 될까

이 부분도 처음에는 궁금했습니다.

제가 코드에 5개라고 정해놓으면 무조건 5개를 보내려고 해서 오류가 나는 건 아닐까 싶었습니다.

그런데

i < items.length && i < 5

처럼 두 조건을 같이 넣으면 괜찮았습니다.

쉽게 말하면

뉴스가 실제로 남아 있고

동시에 5개를 넘지 않을 때까지만

반복한다는 뜻입니다.

그래서 검색 결과가 3개밖에 없으면 3개만 보내고 끝납니다.

10개가 검색되면 앞의 5개만 보내고 끝납니다.

이렇게 이해하니까 꽤 간단했습니다.

실제로 텔레그램에서 테스트해봤습니다

코드를 저장하고 텔레그램으로 돌아갔습니다.

먼저

/news

를 입력하고

인공지능

이라고 검색했습니다.

예전에는 검색 결과가 꽤 많이 들어왔는데 이번에는 딱 5개만 표시됐습니다.

확실히 훨씬 보기 편했습니다.

뉴스가 계속 아래로 길게 이어지지 않고

제목 5개 정도만 빠르게 확인한 뒤 관심 있는 기사만 눌러볼 수 있었습니다.

실제로 써보니까 자동화 기능은 많이 넣는 것보다

덜 보여주는 것도 중요하구나

라는 생각이 들었습니다.

5개 말고 10개로 바꾸는 것도 간단했습니다

이번에는 5개가 아니라 10개로도 바꿔봤습니다.

방법은 정말 단순했습니다.

for (var i = 0; i < items.length && i < 10; i++) {

여기에서 숫자만 바꾸면 됐습니다.

3개만 받고 싶으면

i < 3

10개를 받고 싶으면

i < 10

이런 식이었습니다.

코드를 전혀 모르는 제 입장에서는 이런 부분이 가장 좋았습니다.

전체 구조를 다 이해하지 않아도

어떤 숫자가 어떤 기능을 바꾸는지

만 알면 직접 수정해서 사용할 수 있었습니다.

매번 숫자를 코드에서 바꾸는 건 조금 불편했습니다

그런데 사용하다 보니까 또 욕심이 생겼습니다.

어떤 날은 뉴스 5개면 충분하고

어떤 검색어는 조금 더 보고 싶어서 10개 정도 받고 싶었습니다.

그런데 그때마다 Google Apps Script를 열고

5를 10으로 바꾸고

다시 저장하는 건 너무 불편했습니다.

그래서 이런 방식은 어떨까 생각했습니다.

텔레그램에서

/news 5 인공지능

이라고 입력하면 5개

/news 10 인공지능

이라고 입력하면 10개

이런 식으로 명령어에서 직접 뉴스 개수를 정할 수 있게 하는 겁니다.

처음에는 굉장히 어려울 것 같았는데 원리는 결국 메시지 안에 들어있는 숫자를 읽어서 사용하는 방식이었습니다.

다만 저는 아직 한 번에 너무 많은 기능을 넣으면 다시 헷갈릴 것 같아서 우선 5개 고정으로 사용하기로 했습니다.

저는 결국 5개를 기본값으로 정했습니다

며칠 사용해보니 저한테는 5개가 가장 적당했습니다.

뉴스를 많이 보고 싶은 날에는 직접 검색을 하면 되고

텔레그램 뉴스봇은

“지금 무슨 뉴스가 있나?”

정도만 빠르게 확인하는 용도로 사용하는 게 편했습니다.

특히 모바일에서 보면 뉴스 5개 정도가 한눈에 들어오기도 좋았습니다.

그래서 현재는 기본적으로 5개를 보여주도록 설정해두고 있습니다.

뉴스가 없을 때 메시지도 하나 추가했습니다

테스트하다 보니 검색 결과가 아예 없는 경우도 있었습니다.

그런데 아무 메시지도 오지 않으면

봇이 고장 난 건지

검색 결과가 없는 건지

구분하기 어려웠습니다.

그래서 뉴스가 하나도 없으면 안내 메시지가 나오도록 추가했습니다.

if (items.length == 0) {
  sendMessage(chatId, "검색된 뉴스가 없습니다.");
  return;
}

이것도 뜻은 단순했습니다.

검색된 뉴스 개수가 0이라면

“검색된 뉴스가 없습니다.”

라고 알려주라는 내용입니다.

이렇게 해두니까 훨씬 편했습니다.

적어도 봇이 정상적으로 검색했다는 걸 알 수 있기 때문입니다.

뉴스 개수도 같이 알려주도록 해봤습니다

조금 더 사용하기 편하게 만들기 위해 검색 결과를 보내기 전에 간단한 안내도 넣어봤습니다.

예를 들어

var count = Math.min(items.length, 5);

sendMessage(
  chatId,
  "검색된 뉴스 중 " + count + "개를 보여드립니다."
);

이렇게 하면

검색 결과가 20개 있어도

“검색된 뉴스 중 5개를 보여드립니다.”

라고 표시됩니다.

반대로 뉴스가 3개뿐이면

“검색된 뉴스 중 3개를 보여드립니다.”

라고 나옵니다.

Math.min이라는 것도 이번에 처음 봤는데

두 숫자 중 작은 숫자를 선택하는 기능이었습니다.

예를 들어

검색된 뉴스가 3개이고 최대 표시 개수가 5개라면

3과 5 중 작은 숫자인 3을 선택합니다.

검색된 뉴스가 20개라면

20과 5 중 작은 숫자인 5를 선택합니다.

이렇게 생각하니 별로 어렵지 않았습니다.

직접 만들어보니 중요한 건 기능보다 사용성이었습니다

처음에는 텔레그램 봇이 뉴스를 검색해서 보내주는 것 자체가 목표였습니다.

그런데 하나씩 사용하다 보니까 생각이 조금 바뀌었습니다.

기능이 된다고 끝나는 게 아니었습니다.

실제로 제가 매일 사용할 수 있어야 했습니다.

뉴스가 너무 많이 오면 오히려 안 보게 되고

메시지가 너무 길어도 불편하고

아무 반응이 없으면 오류인지 검색 결과가 없는지 알 수 없었습니다.

이번에 뉴스 개수를 제한하면서 이런 부분을 조금씩 고쳐봤습니다.

작은 수정이지만 실제 사용감은 꽤 많이 좋아졌습니다.

다음에는 비슷한 뉴스가 계속 나오는 문제를 해결해보려고 합니다

뉴스 개수를 5개로 줄이고 나니까 또 하나 눈에 들어오는 문제가 있었습니다.

서로 다른 뉴스처럼 보이지만 내용을 보면 사실 거의 같은 기사인 경우가 많았습니다.

특히 큰 이슈가 있으면 여러 언론사에서 비슷한 제목으로 같은 내용을 보도하기 때문에

5개만 받아도 비슷한 뉴스가 여러 개 섞여 있었습니다.

그래서 다음에는

이미 보낸 뉴스는 다시 보내지 않도록 하는 기능

을 직접 만들어보려고 합니다.

뉴스 개수를 줄이는 것보다 조금 더 복잡해 보이기는 하지만

지금까지처럼 하나씩 나눠서 해보면 저 같은 초보자도 어느 정도 따라갈 수 있을 것 같습니다.

답글 남기기

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

글쓴이

bluekei9@keinote.com

관련 게시물

코딩 하나도 모르던 제가 결국 개인 뉴스 자동화 시스템을 만든 전체 과정

안녕하세요 케이입니다. 처음 이걸 시작할 때만 해도 텔레그램 봇이 정확히 어떻게 움직이는지 잘 몰랐습니다. API라는 말은 많이 들어봤지만 정확히 어떤 역할을 하는지도...

모두 읽어보기

텔레그램 봇 코드를 수정했는데 반영이 안 돼서 직접 원인을 찾아봤습니다

안녕하세요 케이입니다. 텔레그램 봇을 만들면서 꽤 답답했던 문제가 하나 있었습니다. 분명 Google Apps Script에서 코드를 수정했습니다. 저장도 했습니다. 그런데 텔레그램에서 테스트해보면 예전...

모두 읽어보기

텔레그램 뉴스봇이 갑자기 멈췄을 때 초보자인 제가 확인한 순서

안녕하세요 케이입니다. 앞에서는 Google Apps Script의 트리거를 이용해서 정해진 시간에 뉴스가 자동으로 오도록 만들어봤습니다. 자동으로 뉴스가 도착하니까 상당히 편했습니다. 그런데 며칠 사용하다...

모두 읽어보기

매번 검색하기 귀찮아서 자주 보는 뉴스 키워드를 저장해봤습니다

안녕하세요 케이입니다. 앞에서는 텔레그램으로 오는 뉴스 메시지를 조금 더 보기 좋게 꾸며봤습니다. 제목은 굵게 만들고, 설명은 짧게 붙이고, 긴 링크도 기사 보기처럼...

모두 읽어보기

텔레그램 뉴스 메시지가 너무 지저분해서 보기 좋게 꾸며봤습니다

안녕하세요 케이입니다. 앞에서는 텔레그램 뉴스봇에 뉴스 제목뿐만 아니라 간단한 설명까지 같이 표시해봤습니다. 기능 자체는 만족스러웠습니다. 제목만 볼 때보다 내용을 훨씬 빨리 파악할...

모두 읽어보기

뉴스 제목만 오던 텔레그램 봇에 간단한 내용까지 표시해봤습니다

안녕하세요 케이입니다. 앞에서는 텔레그램 뉴스봇에서 관심 없는 단어가 들어간 뉴스는 자동으로 제외하도록 만들어봤습니다. 뉴스 개수도 줄이고, 같은 기사도 어느 정도 걸러내고, 원하는...

모두 읽어보기