텔레그램 봇 만드는 법과 활용법
— 품앗이·진주 현장에서 굴리는 봇 여섯 가지 사례와 함께
조직에 알림·접수·질의응답 자동화가 필요할 때, 앱을 새로 만들 필요가 없습니다. 모두가 이미 쓰는 메신저에 봇 하나를 들이는 것으로 충분한 경우가 많습니다.
1. 왜 텔레그램 봇인가
업무 자동화를 시작하면 곧 “결과를 어디로 알려줄 것인가”라는 문제를 만납니다. 문자는 건당 돈이 들고, 카카오 알림톡은 사업자 심사와 템플릿 승인 절차가 있습니다. 전용 앱은 만들고 설치시키는 비용이 큽니다.
텔레그램 봇은 이 자리에 딱 맞습니다.
- 무료입니다. 메시지를 아무리 보내도 비용이 없습니다.
- 설치가 필요 없습니다. 직원들이 이미 쓰는 단체방에 봇을 초대하면 끝입니다.
- 공식 API가 열려 있습니다. 승인 절차 없이 5분 만에 봇을 만들 수 있고, 문서가 잘 되어 있어 AI에게 “이런 봇 만들어줘”라고 시키기도 좋습니다.
- 사진·파일을 다룰 수 있습니다. 바코드 사진, 영수증 사진, 문서 첨부가 그대로 업무 입력이 됩니다.
물론 만능은 아닙니다. 조합원 전체처럼 텔레그램을 안 쓰는 대중에게 보내는 안내는 문자·알림톡이 맞고, 봇은 일하는 사람들 사이의 자동화에 맞습니다.
2. 봇 만들기 — 5분이면 됩니다
- 텔레그램에서 @BotFather를 검색해 대화를 엽니다. 텔레그램이 공식 운영하는, 봇을 만들어주는 봇입니다.
/newbot을 보내고, 봇 이름과 아이디(반드시bot으로 끝나야 함)를 정합니다.- BotFather가 토큰(긴 문자열)을 줍니다. 이게 봇의 전부입니다.
여기서 원칙 하나. 토큰은 비밀번호입니다. 토큰만 있으면 누구든 그 봇 행세를 할 수 있습니다. 채팅방이나 문서에 붙여넣지 말고, 코드에 직접 쓰지도 말고, 별도 설정 파일(.env)에 두고 코드가 읽게 합니다.
3. 첫 메시지 보내기
봇이 메시지를 보내려면 **어느 방으로 보낼지(chat_id)**를 알아야 합니다. 순서가 중요합니다: 봇은 먼저 말을 걸 수 없고, 사람이 봇에게 먼저 말을 걸거나 봇을 방에 초대해야 합니다.
- 봇을 단체방에 초대하고 방에서 아무 말이나 합니다.
- 브라우저에서
https://api.telegram.org/bot<토큰>/getUpdates를 열면 방금 그 메시지가 보이고, 그 안의chat.id(단체방은 음수)가 방 주소입니다.
이제 한 줄이면 보냅니다.
curl "https://api.telegram.org/bot<토큰>/sendMessage" \
-d "chat_id=<방ID>" -d "text=재고 적재가 끝났습니다. 오늘 신규 132건."이 한 줄을 업무 스크립트 끝에 붙이는 것 — 그게 봇 활용의 절반입니다. 백업이 끝나면, 적재가 끝나면, 오류가 나면 방으로 알리는 것부터 시작하면 됩니다.
4. 받는 봇으로 키우기
보내기만 하던 봇이 사람 말을 알아듣게 되면 활용 폭이 훨씬 커집니다. 방식은 두 가지인데, 서버에서 주기적으로 새 메시지를 가져오는 **폴링(getUpdates)**이 간단해서 우리는 전부 이 방식을 씁니다. 항상 켜져 있는 컴퓨터 한 대(서버, 또는 매장 PC)에 파이썬 스크립트를 상시 실행해 두는 구조입니다.
단체방에서 받을 때 함정이 하나 있습니다. 봇은 기본적으로 단체방의 일반 대화를 못 봅니다(프라이버시 모드). 봇을 방의 관리자로 승격하거나, BotFather에서 /setprivacy를 꺼야 사진·일반 메시지가 봇에게 들어옵니다.
5. 우리가 실제로 굴리는 봇들
품앗이(대전)와 협력 조직들에서 실제 운영 중인 사례입니다. 전부 위의 기본기(만들기→보내기→받기)의 조합입니다.
① 학습방 질의응답 봇 — “지미야”로 부르는 AI
여섯 개 조직의 학습방에서 도는 봇입니다. 방에서 “지미야”로 시작하는 말을 하면 AI가 조직 위키를 검색해 근거를 달아 답합니다. 파일을 첨부하며 “올려줘” 하면 조직 드라이브의 방별 수신함에 자동 보관하고, 문서를 주며 “위키에 배포해줘” 하면 위키 임시수신함에 올립니다.
설계에서 중요했던 것은 방마다 열람 등급을 격리한 것입니다. 봇 하나가 여러 조직 방에서 돌기 때문에, 협력조직 방에는 파트너 등급 문서까지만 검색되고 품앗이 내부 문서는 발췌조차 나가지 않습니다.
② 위키 새 글 알림 봇
위키에 새 공개 문서가 배포되면 학습방 여섯 곳에 제목·링크·한 줄 요약을 자동 발송합니다. 지금 이 글을 그 봇의 알림으로 받으셨을 겁니다. 배포 스크립트 끝에 3절의 sendMessage를 붙인 것이 전부입니다.
③ 바코드 폐기 봇 — 사진이 곧 입력
매장에서 폐기할 상품의 바코드를 폰으로 찍어 방에 올리면, 봇이 바코드를 인식해 POS에서 품목을 조회하고(0.2초), [✅등록/❌취소] 버튼을 띄웁니다. 등록을 누르면 POS 폐기 처리와 데이터베이스 기록까지 한 번에 됩니다. 수량은 ➖/➕ 버튼으로 고칩니다. 매장 직원은 “찍고, 누르고” 두 동작이면 끝입니다.
④ 출퇴근 봇 — QR + 위치 이중확인
직원이 매장에 붙은 QR을 찍으면 봇이 출퇴근을 기록합니다. QR 위조와 원격 찍기를 막으려고 QR 토큰과 GPS 위치(매장 반경 150m)를 함께 검증하고, 근무시간은 자동 계산됩니다. 설계에서 정한 원칙 하나: 봇은 직원에게 예상 급여를 보여주지 않습니다. 급여는 회계 담당자의 화면에서만 다룹니다. 자동화 도구에도 조직의 합의가 담깁니다.
⑤ 영수증 사진 → 회계 입력 초안
거래명세서 사진을 봇에게 보내면 AI가 품목·수량·금액을 추출하고, 거래처·품목 코드를 대응표와 맞춰 회계 프로그램에 넣을 초안을 만듭니다. 코드가 확실히 매칭되지 않는 건은 전송하지 않고 사람에게 물어봅니다. 자동화는 단계적으로 — 확신 못 하는 건 멈추는 것이 원칙입니다.
⑥ 서버 감시(워처) 봇
서버의 서비스가 죽거나 이상 신호가 잡히면 봇이 관리방으로 보고합니다. 사람이 서버를 들여다보는 게 아니라 서버가 사람을 부르는 구조입니다.
6. 운영하며 배운 것 — 실수의 기록
만드는 것보다 굴리는 데서 배운 게 많습니다. 전부 실제로 겪은 일입니다.
- 봇·방 대장을 문서로 남기십시오. 봇이 늘면 반드시 헷갈립니다. 우리는 어순만 다른 봇 두 개를 혼동해 “발송 불가” 오판을 냈고, 이름이 한 글자 다른 두 방에 공지를 잘못 보낸 적도 있습니다. 지금은 봇↔토큰↔용도, 방↔chat_id 대장을 두고 발송 전에 반드시 대장부터 읽는 것이 규칙입니다.
- “방에 있나”는 getChatMember로 판정합니다. getChat은 봇이 방에서 쫓겨난 뒤에도 정상 응답을 줍니다. 이걸 “방에 있다”로 읽으면 틀립니다.
- 보낸 공지는 message_id를 기록합니다. 여러 사람(과 여러 AI)이 함께 일하면 같은 공지가 두 번 나가는 사고가 납니다. “이미 보냈나”를 기록으로 확인할 수 있어야 합니다.
- 봇은 살아있는 척하며 죽습니다. 출퇴근 봇이 프로세스는 멀쩡한데 메시지 처리만 멈춘 적이 있습니다. 지금은 봇이 2분마다 스스로 심장박동을 기록하고, 별도 감시자가 7분 이상 멈추면 자동 재시작합니다. 사람이 알아채기 전에 복구되는 구조가 목표입니다.
- 파일 크기 상한(20MB)이 있습니다. 봇 API로 받는 첨부는 20MB까지입니다. 큰 파일은 드라이브 링크로 받는 우회로를 함께 설계해야 합니다.
- 타 조직 방은 처음부터 격리합니다. 자료가 어느 조직의 저장소에 남는지, 어느 등급 문서까지 검색되는지를 방 단위로 정해두지 않으면 반드시 새는 날이 옵니다.
7. 무엇부터 시작할까
알림 봇부터. 받는 기능 없이 보내기만 하는 봇은 코드 몇 줄이라 실패할 게 없고, “끝나면 방으로 알려준다” 하나만으로도 확인하러 들어가던 시간이 사라집니다. 그 다음이 접수 봇(사진·파일을 받아 기록), 그 다음이 질의응답 봇입니다.
그리고 봇이 앉을 자리가 필요합니다 — 항상 켜져 있는 컴퓨터 한 대와, 봇이 읽고 쓸 데이터베이스. 순서로는 이 글보다 AX의 첫 세팅은 데이터베이스 구축이 먼저입니다.
함께 읽기
- AX의 첫 세팅은 데이터베이스 구축 — 봇이 읽고 쓸 바닥 만들기
- 클로드코드 데스크탑앱 안내 — 봇 코드를 AI에게 짜게 하는 도구
- LLM 위키 구축 안내 — 질의응답 봇이 읽는 위키 만들기
작성: 품앗이 (2026-08-21) · 대전 품앗이·진주·협력조직 학습방 실운영 기준