무료 강의 · 시즌 6 · 3강 / 5
텔레그램으로 배달
무료 강의 시즌 6의 3강. 내 봇을 만들어 브리핑을 폰으로 보내요. 비밀 토큰을 코드 밖에 두는 법이 오늘의 진짜 수업입니다.
끝나면 손에 남는 것: 폰에 도착한 브리핑 + 비밀은 코드 밖이라는 습관
이 강의 완성 예시 열어보기폰에 도착한 브리핑과, 토큰을 코드 밖에 두는 구조예요.브리핑이 만들어지는데, 컴퓨터 안의 파일이에요. 아침에 컴퓨터를 켜고 파일을 여는 것도 일이죠. 배달이 필요해요.
배달부는 텔레그램 봇이 맡아요. 봇은 텔레그램 안에서 프로그램이 조종하는 계정인데, 만드는 데 1분이 걸리고 무료예요. 그런데 봇을 만들면 토큰이라는 걸 받게 되고, 오늘의 진짜 수업은 사실 그 토큰을 다루는 손이에요.
시즌 5에서 배운 문장을 기억하나요 — 공개 키(sb_publishable_)는 코드에 넣어도 되고, Secret 키는 절대 안 된다. 오늘 받는 봇 토큰은 절대 안 되는 쪽의 첫 실물입니다.
오늘 만들 것
내 브리핑을 폰으로 배달하는 텔레그램 봇. 그리고 비밀을 코드 밖에 두는 습관.
준비물
- 시즌 6의 2강을 마친 상태 (
briefing.md가 있어요) - 40분
- 폰에 텔레그램 앱 (없으면 설치 — 무료, 전화번호로 가입)
따라 하기
1. 봇을 만들어요 — 제일 낯선 5분
여기가 이 강의에서 제일 낯선 구간이에요. 화면만 따라오면 5분입니다.
- 폰의 텔레그램에서
@BotFather를 검색해 대화를 여세요. 파란 체크가 붙은 공식 계정이에요. 봇을 만들어주는 봇이죠. /newbot을 보내요.- 봇의 이름을 물어요 — 아무거나. 예:
내 뉴스 브리핑 - 봇의 아이디를 물어요 — 영문이고
bot으로 끝나야 해요. 예:mynews_briefing_bot - 끝나면 BotFather가 토큰을 줘요.
110201543:AAHdqTcv...같은 길쭉한 문자열이에요.
그 토큰 메시지를 잠깐 그대로 두세요. 다음 단계에서 옮깁니다.
2. 토큰의 정체
이 토큰은 내 봇을 조종하는 열쇠예요. 이게 있으면 누구든 내 봇으로 메시지를 보내고 읽을 수 있어요. 봇 주소(아이디)는 공개돼도 되지만, 토큰은 우편함 열쇠예요 — 주소는 알려줘도 열쇠는 복사해 주면 안 되죠.
그래서 시즌 5의 그 표에 오늘 한 줄이 추가됩니다:
- Supabase Publishable 키 → 공개 OK, 코드에 넣어도 됨
- Supabase Secret 키 → 절대 금지
- 텔레그램 봇 토큰 → 절대 금지 쪽
"코드에 안 넣으면 어디에 두나?"가 오늘의 기술이에요. 답: 코드 밖의 파일에 두고, 그 파일을 git이 못 보게 합니다.
3. 토큰을 코드 밖에
폰의 토큰을 컴퓨터로 옮기세요(나에게 보내기 기능이나 텔레그램 PC버전으로). 그리고 봇에게 아무 말이나 하나 보내 두세요 — "안녕" 이면 돼요. 봇은 스팸 방지를 위해 먼저 말을 걸 수 없게 설계돼 있어서, 내가 먼저 말을 걸어야 봇이 나를 알게 됩니다.
이제 에이전트에게:
브리핑을 텔레그램으로 보내는 단계야.
준비된 것:
- 텔레그램 봇 토큰: [토큰 붙여넣기]
- 방금 폰에서 봇에게 메시지를 하나 보내 놨어
해 줄 것:
1. 토큰을 token.txt 파일로 저장하고, token.txt가 git에 절대 올라가지
않게 .gitignore부터 처리해 줘
2. 내 chat_id를 알아내 줘 (봇이 받은 메시지에서 확인할 수 있대)
3. send 스크립트를 만들어 줘. 조건:
- token.txt에서 토큰을 읽는다 (스크립트 코드에 토큰을 적지 마)
- briefing.md 내용을 내 chat_id로 보낸다
- 텔레그램 메시지 길이 제한(4096자)이 있다면 나눠서 보내 줘
- 실패하면 원인을 알려 주는 문구를 출력해 줘
- 추가 설치 없이 돌아가게
4. 한 번 실행해서 실제로 보내 줘
chat_id는 "이 봇의 대화 상대 중 나"를 가리키는 번호예요. 아까 봇에게 말을 걸어둔 덕분에 에이전트가 찾아낼 수 있어요.
4. 오늘의 순간
에이전트가 전송을 실행하면 —
폰이 울려요. 내가 만든 봇이, 내 기준으로 요약된 브리핑을 배달했어요.
어제까지 "AI로 뭘 만든다"는 건 화면 속 이야기였는데, 지금 주머니 속 폰이 울렸어요. 이 감각이 다음 강의의 연료입니다 — 이걸 매일 아침, 저절로.
5. 저장점 — 의식이 하나 늘어요
git 저장점을 만들기 전에, token.txt가 git에 포함되지 않는지 확인해서
보여 줘. 확인되면 저장점을 만들어 줘. 이름은 "배달 완성".
앞으로 비밀이 든 프로젝트의 저장점 의식은 이렇게 두 박자예요. 비밀이 안 들어가는지 확인, 그다음 저장. 시즌 5의 배포 전 점검과 같은 근육이에요.
막혔을 때
BotFather가 아이디를 거부해요. 이미 누가 쓰는 아이디예요. 뒤에 숫자를 붙여보세요. bot으로 끝나는지도 확인하고요.
chat_id를 못 찾는대요. 십중팔구 봇에게 아직 말을 안 건 상태예요. 폰에서 봇 대화방을 열고 아무 메시지나 보낸 뒤 다시 시도하세요. (봇은 먼저 말을 못 걸어요 — 고장이 아니라 스팸 방지 설계예요.)
보냈다는데 폰에 안 와요. 토큰을 복사할 때 앞뒤가 잘렸을 수 있어요. BotFather 메시지에서 다시 복사해서 "token.txt를 이 값으로 바꿔 줘"라고 하세요. 그래도 안 되면 "전송 응답을 그대로 보여 줘" — 텔레그램이 거절 이유를 알려줍니다.
긴 브리핑이 중간에 잘려요. 텔레그램은 메시지 하나에 4096자 제한이 있어요. 프롬프트에 나눠 보내기를 넣었지만 빠졌다면: "4096자가 넘으면 여러 메시지로 나눠 보내게 고쳐 줘."
토큰을 실수로 채팅에 붙여넣었어요 / 어딘가 노출됐어요. BotFather에서 /revoke로 그 토큰을 폐기하고 새로 받을 수 있어요. 노출됐다 싶으면 고민 말고 폐기 — 열쇠는 다시 만들면 됩니다.
마무리 체크
나가기 전에 하나씩 확인해요:
- BotFather로 내 봇을 만들었어요
- 토큰은 token.txt에만 있고, .gitignore에 등록돼 있어요
- 봇 토큰이 왜 "절대 금지 쪽" 열쇠인지 설명할 수 있어요
- 폰이 울리고 브리핑이 도착했어요 ← 오늘의 순간
- 저장점 전에 token.txt 미포함을 확인했어요
모으고(1강), 요약하고(2강), 배달까지(3강) 돼요. 그런데 아직 세 번의 명령이 필요하죠. 내가 채팅창에 있어야 하고요.
다음 강의에서 셋을 한 줄로 묶고, 시간에게 넘깁니다. 내일 아침부터는 자고 있어도 도착해요.
직접 만들고 돌아가는 걸 확인했나요? 그럼 완료를 눌러요. 이 브라우저에만 저장돼요 — 주방 밖으로는 아무것도 나가지 않아요.
다음 — 4강 · 나 없이 돌게 →