안녕하세요 케이입니다.

지난 글들에서 텔레그램 봇을 만들고 뉴스 검색 결과까지 받아보는 과정을 계속 정리했는데요.

처음에는 그냥 텔레그램에서 메시지를 보내면 결과가 오는 것만으로도 신기했습니다.

그런데 계속 사용하다 보니 조금 욕심이 생기더라고요.

평소 사용하는 텔레그램 봇들을 보면

/news

/help

이런 식으로 명령어를 입력해서 기능을 실행할 수 있잖아요.

제가 만든 봇도 이런 식으로 만들 수 없을까 싶어서 이번에는 직접 명령어를 추가해봤습니다.

저처럼 코딩을 거의 모르는 입장에서는 처음에 ‘명령어를 추가한다’는 말 자체가 굉장히 거창하게 느껴졌는데, 막상 해보니 원리는 생각보다 단순했습니다.

텔레그램 봇 명령어는 생각보다 단순했습니다

제가 처음 잘못 생각했던 게 있습니다.

텔레그램 안에서 명령어를 하나하나 만들어주는 기능이 따로 있을 거라고 생각했는데요.

실제로는 사용자가 보낸 메시지가

/news인지

/help인지

그냥 일반 문장인지

코드에서 확인한 다음 각각 다른 동작을 하게 만드는 방식이었습니다.

쉽게 말하면 이런 겁니다.

사용자가

/news

라고 보내면

“아, 뉴스 기능을 실행하라는 뜻이구나.”

라고 판단해서 뉴스 검색 코드를 실행시키는 겁니다.

반대로

/help

라고 입력하면 사용 가능한 명령어를 알려주는 메시지를 보내도록 만들면 됩니다.

코딩을 모르는 제 입장에서는 이렇게 이해하니까 훨씬 쉬웠습니다.

가장 먼저 /help 명령어부터 만들어봤습니다

처음부터 복잡한 기능을 넣기보다는 제대로 작동하는지 확인하기 위해 /help부터 만들어봤습니다.

기존 Google Apps Script 코드에는 텔레그램에서 들어온 메시지를 확인하는 부분이 있었는데요.

대략 이런 식으로 메시지 내용을 가져옵니다.

var text = contents.message.text;

여기에서 text라는 곳에 제가 텔레그램으로 보낸 내용이 들어갑니다.

제가

/help

라고 보내면 text 안에도 /help라는 글자가 들어가는 방식입니다.

그래서 그 아래에 조건을 하나 추가해봤습니다.

if (text == "/help") {
  sendMessage(chatId,
    "사용 가능한 명령어입니다.\n\n" +
    "/news - 뉴스 검색\n" +
    "/help - 사용방법 보기"
  );
  return;
}

코드만 처음 보면 또 복잡해 보이는데 하나씩 보면 별 내용은 없습니다.

if는 우리말로 생각하면

“만약”

정도로 이해하면 편했습니다.

즉,

‘만약 사용자가 보낸 글자가 /help와 같다면’

그 아래 내용을 실행하라는 뜻입니다.

그리고 sendMessage는 텔레그램으로 메시지를 보내는 부분입니다.

결국 전체 뜻은

사용자가 /help라고 보내면 사용 가능한 명령어를 알려줘.

이 정도였습니다.

텔레그램에서 실제로 입력해봤습니다

코드를 수정하고 저장한 다음 텔레그램으로 돌아왔습니다.

그리고 제가 만든 봇에게

/help

라고 입력해봤습니다.

정상적으로 작동하면

사용 가능한 명령어입니다.

/news – 뉴스 검색
/help – 사용방법 보기

이런 식으로 답장이 옵니다.

별것 아닌 기능인데 처음 직접 만들어보니 은근히 재미있었습니다.

기존에는 제가 어떤 말을 보내든 비슷한 동작만 하던 봇이었는데 이제부터는 제가 입력하는 명령에 따라 서로 다른 일을 할 수 있게 된 겁니다.

이번에는 /news 명령어도 추가해봤습니다

/help가 제대로 작동하는 걸 확인한 뒤 뉴스 기능도 명령어로 만들어봤습니다.

방식은 똑같았습니다.

if (text == "/news") {
  sendMessage(chatId, "검색할 뉴스 키워드를 입력해주세요.");
  return;
}

이렇게 하면 제가

/news

라고 입력했을 때

“검색할 뉴스 키워드를 입력해주세요.”

라는 답장을 보내도록 만들 수 있습니다.

여기까지는 비교적 간단했습니다.

문제는 그다음이었습니다.

제가 /news를 입력한 뒤 다시

인공지능

이라고 입력했을 때 봇이

‘아까 /news 명령어를 입력했으니까 지금 들어온 인공지능이라는 글자는 검색어구나.’

라고 알아서 기억하지는 못했습니다.

저는 당연히 그렇게 되는 줄 알았습니다.

하지만 봇 입장에서는

/news라는 메시지 하나와

인공지능이라는 메시지 하나가

각각 따로 들어오는 것이었습니다.

이 부분에서 한 번 막혔습니다.

명령어 하나 추가했는데 또 새로운 문제가 생겼습니다

이게 직접 만들어보면서 재미있었던 부분입니다.

처음에는

/news를 누른다
→ 키워드를 입력한다
→ 뉴스가 나온다

이 정도만 생각했습니다.

그런데 실제로 만들어보니 봇이 이전 대화를 기억하게 만드는 과정이 또 필요했습니다.

예를 들어 봇이

“검색할 뉴스 키워드를 입력해주세요.”

라고 답한 뒤에는

‘현재 이 사용자는 뉴스 검색어를 입력하는 단계다’

라는 상태를 어딘가에 저장해야 합니다.

그리고 다음 메시지가 들어왔을 때 그 상태를 확인해서 뉴스 검색 기능으로 연결해야 합니다.

이 부분은 다음 단계에서 다시 만들어보기로 했습니다.

한 번에 모든 기능을 넣으려고 하면 저처럼 코딩을 모르는 사람에게는 오히려 더 헷갈리는 것 같습니다.

BotFather의 명령어 메뉴도 설정해봤습니다

여기서 하나 더 알게 된 게 있습니다.

봇 내부에서 /news와 /help가 작동하도록 만드는 것과 텔레그램 화면에 명령어 목록을 보여주는 것은 별개의 작업이었습니다.

BotFather에서

/setcommands

를 입력한 뒤 제가 만든 봇을 선택하면 명령어 목록을 등록할 수 있습니다.

저는 우선 이렇게 입력했습니다.

news - 뉴스 검색
help - 사용방법 보기

이렇게 설정하고 다시 제가 만든 봇으로 들어가 보니 /를 입력했을 때 사용할 수 있는 명령어가 표시됐습니다.

처음에는 코드만 추가하면 메뉴에도 자동으로 나타나는 줄 알았는데 그렇지는 않았습니다.

정리하면

실제로 명령어가 작동하게 하는 것은 코드

이고

텔레그램 화면에서 명령어 목록을 보여주는 것은 BotFather 설정

이라고 생각하면 이해하기 쉬웠습니다.

코딩을 모르더라도 여기까지는 할 만했습니다

이번에 해본 작업을 정리하면 상당히 단순합니다.

텔레그램에서 들어온 메시지를 확인하고

/help라면 도움말을 보내고

/news라면 뉴스 검색을 시작하도록 만드는 것입니다.

저처럼 코드를 처음 보는 사람에게는

if (text == "/help")

이 한 줄도 처음에는 무슨 뜻인지 모르겠지만

‘사용자가 /help라고 입력했는지 확인하는 부분’

이라고 바꿔서 생각하면 갑자기 쉬워집니다.

저도 이번 텔레그램 봇을 만들면서 코드 자체를 외우려고 하지는 않고 있습니다.

대신

‘이 코드가 무슨 일을 하는가’

정도만 이해하면서 하나씩 수정해보고 있습니다.

오히려 저 같은 초보자에게는 이 방식이 훨씬 편했습니다.

이번에 직접 해보고 알게 된 것

이번에는 기능 자체보다 텔레그램 봇이 작동하는 방식이 조금 더 이해됐습니다.

제가 보내는 메시지는 결국 하나의 글자 데이터이고, 봇은 그 내용이 무엇인지 확인한 뒤 조건에 맞는 일을 실행합니다.

그래서 앞으로

/weather

/search

/summary

처럼 명령어를 계속 추가한다면 하나의 봇 안에서도 여러 가지 기능을 사용할 수 있을 것 같습니다.

처음 텔레그램 봇을 만들었을 때는 단순히 메시지가 한 번 돌아오는 것만으로도 신기했는데 이제 조금씩 ‘내가 원하는 기능을 넣는다’는 느낌이 들기 시작했습니다.

다만 이번에 /news를 만들어보면서 새로운 숙제가 하나 생겼습니다.

봇에게 이전 대화를 기억시키는 방법입니다.

다음 글에서는 /news라고 입력한 다음 제가 원하는 검색어를 직접 입력해서 실제 뉴스를 검색할 수 있도록 한 단계 더 수정해보겠습니다.

저처럼 코딩을 전혀 모르는 상태에서 시작하신 분이라면 한 번에 완성하려고 하기보다는 이렇게 기능을 하나씩 붙여보시는 것을 추천드립니다.

저도 아직 코드 전체를 이해하지는 못하지만, 적어도 처음 시작했을 때보다는 텔레그램 봇이 어떻게 움직이는지는 조금씩 보이기 시작하는 것 같습니다.

답글 남기기

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

글쓴이

bluekei9@keinote.com

관련 게시물

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

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

모두 읽어보기

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

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

모두 읽어보기

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

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

모두 읽어보기

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

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

모두 읽어보기

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

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

모두 읽어보기

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

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

모두 읽어보기