안녕하세요 케이입니다.

지난 글에서는 BotFather를 이용해서 뉴스 수집용 텔레그램 봇을 만드는 방법을 알아봤습니다.

봇을 만들고 나면 다음으로 필요한 것이 Bot Token과 Chat ID입니다.

처음 텔레그램 봇을 만들어보면 이 두 가지가 왜 필요한지 이해하기 어려울 수 있습니다.

하지만 역할을 나눠서 보면 어렵지 않습니다.

Bot Token은 내가 만든 봇을 프로그램에서 사용할 수 있도록 해주는 인증 정보이고, Chat ID는 메시지를 어느 채팅방으로 보낼지 알려주는 주소와 같은 역할을 합니다.

이번 글에서는 Bot Token과 Chat ID가 각각 어떤 역할을 하는지, 어디에서 확인할 수 있는지, 사용할 때 어떤 점을 주의해야 하는지 정리해보겠습니다.

Bot Token이란 무엇인가

Bot Token은 텔레그램 봇을 외부 프로그램에서 제어하기 위한 인증 정보입니다.

지난 글에서 BotFather를 통해 새로운 봇을 만들면 생성 완료 메시지와 함께 긴 문자열이 표시됩니다.

이 값이 Bot Token입니다.

Bot Token은 일반적으로 숫자와 문자, 특수문자가 조합된 형태로 되어 있습니다.

예를 들어 다음과 같은 형태입니다.

123456789:ABCDEFxxxxxxxxxxxx

실제 Bot Token은 봇마다 다르며 외부에 공개하지 않는 것이 좋습니다.

이 값을 Google Apps Script나 다른 자동화 프로그램에 입력하면 해당 프로그램이 내가 만든 텔레그램 봇을 이용해서 메시지를 전송할 수 있습니다.

쉽게 말하면 Bot Token은 프로그램과 텔레그램 봇을 연결하는 인증키라고 생각하면 됩니다.

Bot Token은 어디에서 확인할까

봇을 처음 만들었다면 BotFather가 Bot Token을 바로 보여줍니다.

만약 Token을 따로 저장하지 않았더라도 다시 확인할 수 있습니다.

텔레그램에서 BotFather 채팅방으로 들어갑니다.

그다음 /mybots 명령어를 입력합니다.

내가 생성한 봇 목록이 나타나면 Token을 확인하려는 봇을 선택합니다.

여기에서 API Token과 관련된 메뉴를 이용하면 해당 봇의 Token을 다시 확인할 수 있습니다.

메뉴 이름은 텔레그램 버전이나 BotFather 화면에 따라 조금 다르게 보일 수 있지만 기본적으로 BotFather 안에서 봇별 Token을 관리할 수 있습니다.

처음 발급받았을 때 별도로 기록해두는 것도 좋지만 공개된 문서나 블로그 글에 그대로 저장하는 것은 피하는 것이 좋습니다.

Bot Token을 외부에 공개하면 안 되는 이유

Bot Token은 단순한 봇 번호가 아닙니다.

이 정보를 이용하면 프로그램에서 해당 봇으로 여러 요청을 보낼 수 있습니다.

따라서 다른 사람이 Token을 알게 되면 내 봇을 임의로 사용할 가능성이 생깁니다.

특히 블로그에 자동화 과정을 작성할 때 화면을 캡처한다면 Token이 보이지 않는지 확인해야 합니다.

예를 들어 실제 Token이 다음과 같다고 가정해보겠습니다.

123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ

블로그에서는 다음처럼 일부를 가리는 것이 좋습니다.

123456789:ABC***************

코드를 공개할 때도 실제 Token 대신 다음과 같이 표시하는 편이 안전합니다.

YOUR_BOT_TOKEN

나중에 실제 코드를 사용할 때만 본인의 Token으로 변경하면 됩니다.

Chat ID란 무엇인가

Bot Token이 어떤 봇을 사용할지 알려주는 정보라면 Chat ID는 메시지를 어디로 보낼지 알려주는 정보입니다.

텔레그램에는 개인 채팅, 그룹 채팅, 채널 등 여러 형태의 대화 공간이 있습니다.

프로그램이 메시지를 보내려면 어느 채팅방으로 전송할 것인지 구분할 수 있어야 합니다.

이때 사용하는 값이 Chat ID입니다.

개인 채팅으로 뉴스를 받아보려면 본인의 개인 Chat ID가 필요합니다.

그룹으로 메시지를 보내려면 해당 그룹의 Chat ID가 필요합니다.

즉 뉴스 자동수집 시스템에서는 다음 두 가지가 함께 필요합니다.

Bot Token

Chat ID

Bot Token은 어떤 봇을 사용할지 결정하고, Chat ID는 어느 채팅으로 메시지를 전송할지 결정합니다.

Chat ID를 확인하기 전에 먼저 해야 할 일

Chat ID를 확인하기 전에 만든 봇에게 먼저 메시지를 보내는 것이 좋습니다.

텔레그램에서 앞서 만든 봇을 검색합니다.

봇 채팅창으로 이동한 다음 시작 버튼을 누르거나 다음 명령어를 입력합니다.

/start

그다음 아무 메시지나 하나 보내도 됩니다.

예를 들어 다음처럼 입력할 수 있습니다.

test

이 과정이 필요한 이유는 텔레그램이 해당 봇과 사용자의 대화 기록을 먼저 만들어야 하기 때문입니다.

봇과 한 번도 대화를 시작하지 않은 상태라면 이후 Chat ID를 확인하는 과정에서 원하는 정보가 나타나지 않을 수 있습니다.

getUpdates를 이용해서 Chat ID 확인하기

Chat ID를 확인하는 가장 기본적인 방법 중 하나는 텔레그램 Bot API의 getUpdates 기능을 이용하는 것입니다.

이 기능은 봇이 최근에 받은 메시지나 명령과 관련된 정보를 확인할 때 사용합니다.

먼저 앞에서 만든 봇의 Bot Token을 준비합니다.

그다음 텔레그램 Bot API에서 해당 봇의 최근 업데이트 정보를 조회합니다.

정상적으로 조회되면 봇에게 보낸 메시지와 함께 사용자 정보, 채팅 정보 등이 표시됩니다.

처음 보면 여러 데이터가 한꺼번에 표시되어 복잡하게 느껴질 수 있습니다.

하지만 Chat ID를 확인하는 것이 목적이라면 전체 내용을 모두 이해할 필요는 없습니다.

getUpdates 결과에서 Chat ID 찾기

업데이트 정보를 확인하면 여러 항목 가운데 chat이라는 부분을 찾을 수 있습니다.

그 안에는 id라는 값이 표시됩니다.

형태는 대략 다음과 같습니다.

"chat":{"id":123456789,"first_name":"Kei","type":"private"}

여기에서 숫자로 표시된 값이 Chat ID입니다.

예를 들어 다음 숫자가 표시되었다면

123456789

이 값이 해당 개인 채팅의 Chat ID입니다.

이 값을 따로 기록해두면 나중에 Google Apps Script 같은 자동화 프로그램에서 메시지를 전송할 때 사용할 수 있습니다.

getUpdates 결과가 비어 있다면

업데이트 정보를 확인했는데 결과가 비어 있는 경우도 있습니다.

이 경우 가장 먼저 확인해야 할 것은 봇에게 실제로 메시지를 보냈는지입니다.

텔레그램에서 만든 봇의 채팅창으로 들어갑니다.

먼저 /start를 입력합니다.

그다음 간단한 메시지를 하나 더 보내봅니다.

예를 들어 test라고 입력하면 됩니다.

이후 다시 업데이트 정보를 확인합니다.

봇이 새로운 메시지를 정상적으로 받았다면 이전과 달리 사용자와 채팅 관련 정보가 표시될 수 있습니다.

여기에서 chat 항목 안의 id 값을 확인하면 됩니다.

Bot Token과 Chat ID가 필요한 이유

Bot Token과 Chat ID는 나중에 Google Apps Script에서 텔레그램 메시지를 자동으로 전송할 때 사용합니다.

프로그램 안에서는 대략 다음과 같은 역할로 사용됩니다.

BOT_TOKEN = 내가 만든 봇의 Token

CHAT_ID = 메시지를 받을 채팅의 ID

프로그램은 먼저 Bot Token을 이용해서 어떤 봇으로 메시지를 보낼지 확인합니다.

그다음 Chat ID를 이용해서 메시지를 받을 대상을 결정합니다.

그래서 두 값 중 하나라도 잘못 입력하면 정상적으로 메시지가 전송되지 않을 수 있습니다.

Bot Token이 잘못되면 봇 인증 과정에서 문제가 생길 수 있습니다.

Chat ID가 잘못되면 메시지를 받을 채팅을 찾지 못할 수 있습니다.

실제 메시지 전송 전 확인할 것

Bot Token과 Chat ID를 모두 확인했다면 간단한 테스트 메시지를 보내보는 것이 좋습니다.

아직 뉴스 자동수집 기능을 연결하지 않은 상태라도 텔레그램 봇이 정상적으로 메시지를 보낼 수 있는지만 먼저 확인할 수 있습니다.

테스트 메시지의 내용은 간단하게 설정하면 됩니다.

예를 들어 다음과 같은 문장을 사용할 수 있습니다.

텔레그램 봇 테스트 메시지입니다.

이 메시지가 본인의 텔레그램 채팅으로 정상적으로 도착한다면 Bot Token과 Chat ID가 제대로 설정되었다고 볼 수 있습니다.

이후에는 이 구조에 뉴스 제목이나 기사 링크를 연결하면 됩니다.

개인 채팅과 그룹 Chat ID는 다르다

뉴스를 혼자 받아볼 계획이라면 개인 Chat ID를 사용하면 됩니다.

하지만 여러 사람이 함께 사용하는 그룹으로 뉴스를 보내고 싶다면 그룹 Chat ID를 확인해야 합니다.

그룹의 경우 개인 채팅과 다른 ID가 사용됩니다.

그룹 Chat ID는 음수 형태로 표시되거나 비교적 긴 숫자로 나타날 수도 있습니다.

확인 방법의 기본 원리는 비슷합니다.

봇을 그룹에 추가하고 그룹 안에서 봇과 관련된 메시지를 발생시킨 다음 업데이트 정보에서 해당 그룹의 chat id를 확인하면 됩니다.

처음 뉴스 자동수집 시스템을 만드는 단계에서는 개인 채팅으로 먼저 테스트하는 것이 더 간단합니다.

개인 채팅에서 정상적으로 작동하는 것을 확인한 뒤 필요하다면 그룹으로 확장하는 방식이 좋습니다.

Token을 다시 발급받아야 하는 경우

Bot Token이 외부에 노출되었다면 기존 Token을 그대로 사용하지 않는 것이 좋습니다.

이 경우 BotFather에서 해당 봇의 Token을 다시 발급받을 수 있습니다.

새로운 Token이 발급되면 기존 프로그램에 입력되어 있던 Token도 함께 변경해야 합니다.

예를 들어 Google Apps Script에 기존 Token을 저장해두었다면 새로 발급받은 Token으로 수정해야 합니다.

블로그나 커뮤니티에 실수로 실제 Token을 올렸다면 게시물에서 삭제하는 것만으로 끝내기보다 Token 자체를 새로 발급받는 편이 안전합니다.

처음 사용할 때 자주 혼동하는 부분

Bot Token과 Chat ID는 역할이 완전히 다릅니다.

처음에는 둘 다 숫자나 문자 형태로 보이기 때문에 혼동하기 쉽습니다.

다시 정리하면 다음과 같습니다.

Bot Token은 봇을 인증하는 정보입니다.

Chat ID는 메시지를 받을 채팅방을 지정하는 정보입니다.

Bot Token은 BotFather에서 확인합니다.

Chat ID는 봇과 메시지를 주고받은 뒤 업데이트 정보를 확인해서 찾을 수 있습니다.

뉴스 자동수집 봇을 만들 때는 두 값이 모두 필요합니다.

뉴스 자동수집에서는 어떻게 사용될까

앞으로 만들 뉴스 자동수집 시스템에서는 Bot Token과 Chat ID가 기본 설정값으로 사용됩니다.

프로그램이 뉴스 검색 결과를 가져오면 해당 내용을 텔레그램 봇을 통해 전달합니다.

이때 Bot Token으로 봇을 인증하고 Chat ID로 전송 대상을 지정합니다.

예를 들어 프로그램이 새로운 뉴스 제목과 기사 정보를 가져왔다면 최종적으로 다음과 같은 형태로 텔레그램에 전달할 수 있습니다.

오늘의 AI 뉴스

새로운 AI 서비스 출시

기사 제목과 주요 정보

이 과정이 자동으로 반복되면 매번 직접 뉴스를 검색하지 않아도 텔레그램에서 필요한 정보를 받아볼 수 있습니다.

현재 단계에서는 아직 뉴스 검색 기능을 연결하지 않았지만 텔레그램으로 메시지를 보내기 위한 기본 정보는 준비한 셈입니다.

정리

텔레그램 뉴스 자동수집 봇을 만들기 위해서는 Bot Token과 Chat ID를 정확하게 이해하는 것이 중요합니다.

Bot Token은 내가 만든 텔레그램 봇을 프로그램에서 사용하기 위한 인증 정보입니다.

Chat ID는 해당 봇이 메시지를 어느 채팅으로 보낼지 결정하는 정보입니다.

Bot Token은 BotFather에서 확인할 수 있고 Chat ID는 봇에게 먼저 메시지를 보낸 뒤 업데이트 정보를 확인해서 찾을 수 있습니다.

두 정보를 모두 확인했다면 테스트 메시지를 보내서 정상적으로 연결되는지도 확인하는 것이 좋습니다.

또한 Bot Token은 외부에 공개하지 않고 안전하게 관리해야 합니다.

이제 텔레그램 쪽에서 필요한 기본 준비는 어느 정도 완료되었습니다.

다음 글에서는 뉴스 자동수집 과정에서 자주 등장하는 API가 무엇인지 알아보고, 뉴스 데이터를 가져올 때 API가 왜 필요한지 쉽게 정리해보겠습니다.

답글 남기기

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

글쓴이

bluekei9@keinote.com

관련 게시물

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

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

모두 읽어보기

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

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

모두 읽어보기

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

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

모두 읽어보기

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

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

모두 읽어보기

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

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

모두 읽어보기

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

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

모두 읽어보기