← 글 목록

notes

Telegram + Ollama CS 봇 운영 가이드

Telegram과 Ollama를 연결한 CS 봇의 모델·웹훅·운영 구성 가이드.

0) 이 구성의 핵심 의도

이 가이드는 “텔레그램 AI 자동화”를 하나로 뭉뚱그리지 않고 2개 경로로 분리합니다.

  • Cursor MCP 경로 (알림/명령형 전송)
  • 목적: 개발 중 이벤트, 점검 결과, 수동 알림을 텔레그램으로 보내기
  • 주체: Cursor Agent
  • 특징: 도구 호출 중심, 짧고 확실한 액션
  • Telegram Bot + Ollama 경로 (대화형 응답)
  • 목적: 사용자가 텔레그램에서 질문하면 AI 답변 받기
  • 주체: bot.py + Ollama
  • 특징: 챗봇 경험 중심

이렇게 분리하면 장애가 났을 때

  • “MCP 전송 문제인지”
  • “대화형 봇/Ollama 문제인지” 빠르게 구분됩니다.

1) 사전 준비의 의미 (왜 이걸 먼저 해야 하나)

A. BotFather에서 봇/토큰 확인

  • 토큰은 텔레그램 API의 인증 키입니다.
  • 토큰이 맞아야 API 호출이 200으로 응답합니다.
  • 봇은 이미 있다면 재사용하는 게 맞고, 새로 만들 필요는 없습니다.

B. chat.id 확보 (getUpdates)

  • chat.id는 “어느 채팅방으로 보낼지”의 대상 식별자입니다.
  • chat not found (400)의 대부분은 여기서 발생합니다.
  • 첫 메시지를 봇에게 한 번 보내야 getUpdates에 그 채팅이 올라옵니다.

2) Cursor MCP 설정 파트 상세

파일 1: ~/.cursor/mcp.json

역할: Cursor가 어떤 MCP 서버를 어떤 명령으로 띄울지 정의

핵심 필드:

  • command: "npx": npm 패키지를 즉시 실행
  • args: ["-y", "@harnyk/telegram-notifier-mcp"]: 텔레그램 전송 서버 지정
  • envFile: 민감정보 파일 경로 참조

파일 2: ~/.cursor/telegram-mcp.env

역할: 비밀값 저장소

필수 값:

  • TELEGRAM_BOT_TOKEN
  • TELEGRAM_CHAT_ID

실무 포인트:

  • 이 파일은 코드 저장소가 아니라 홈 디렉토리(~/.cursor)에 둬야 안전
  • 수정 후에는 MCP 서버 재로딩 필요 (토글 Off/On 또는 Cursor 재시작)

3) Ollama + 대화형 봇 설정 파트 상세

3-1. Ollama 점검

  • which ollama: 설치 경로 확인
  • ollama --version: 실행 가능 여부 확인
  • ollama list: 다운로드된 모델 목록 확인

3-2. ollama serve

  • Ollama는 서버 프로세스가 떠 있어야 bot.py가 호출 가능
  • 설치만 되어 있고 서버가 안 떠 있으면 연결 실패

3-3. ollama pull gemma3:4b

  • 실제로 답변할 모델을 로컬에 내려받는 단계
  • pull이 끝나야 OLLAMA_MODEL=gemma3:4b 지정 시 정상 응답

3-4. 봇 실행

  • run.sh 실행 후 로그에서 아래 3개가 중요:
  • 폴링 시작
  • getMe 200
  • getUpdates 200

이 3개가 뜨면:

  • 봇 토큰 인증 OK
  • 텔레그램 연결 OK
  • 폴링 루프 OK

4) “친근한 CS형 톤” 설계 의도

문구를 바꾼 이유는 간단합니다:

  • 사용자에게 내부 구현(로컬 모델, 엔진 호출 방식)을 노출하지 않고
  • “문의 접수 → 처리중 → 결과 반환” 흐름을 자연스럽게 보이게 하기 위함

적용 원칙:

  • 기술 디버그 문구 제거
  • 안내/공감 문장 먼저
  • 명령어 도움말은 짧고 행동 중심

즉, 엔지니어용 로그는 서버 로그로 보고, 사용자 채팅창은 CS 경험 중심으로 유지합니다.


5) 실제 운영 시나리오 (하루 운영 기준)

시나리오 A: 운영 알림 보내기

  • Cursor Agent에서 알림 요청
  • MCP 승인
  • 텔레그램 도착 확인
  • 실패 시 MCP Logs 확인

시나리오 B: 사용자 질의 응답

  • 사용자 텔레그램에서 일반 문장 또는 /ask
  • 봇이 처리중 안내 메시지 응답
  • Ollama 결과 반환
  • 지연/실패 시 run.sh 로그 확인

6) 장애 대응을 더 실무적으로 보면

chat not found (400)

가장 먼저 볼 것:

  • TELEGRAM_CHAT_ID 숫자 오타/붙여넣기 실수
  • 봇과 그 채팅의 관계 형성 여부(첫 메시지)

해결 루틴:

  • 봇 채팅에 메시지 1회
  • getUpdates 재조회
  • chat.id 재복사
  • env 반영 후 MCP 재시작

getUpdates가 result: []

의미:

  • 아직 봇이 받은 업데이트가 없거나, 다른 대상에 메시지 보낸 상태

해결:

  • 정확한 봇 username으로 들어가서 메시지
  • 다시 조회

Ollama 실패

빠른 체크:

  • ollama serve 떠 있는가
  • 모델이 목록에 있는가 (ollama list)
  • 모델명 환경변수 오타 없는가

7) 운영 안정성 체크리스트

  • 토큰은 절대 채팅/문서/스크린샷에 원문 노출 금지
  • 유출 의심 시 BotFather에서 즉시 재발급
  • 문구 수정 시 run.sh 재시작
  • env 수정 시 MCP 재로딩
  • “알림 기능”과 “대화 기능” 로그를 분리 관찰

8) 다음 고도화 추천 (원하면 바로 진행 가능)

  • /ask 답변 템플릿 고정
  • 인사 → 핵심 답변 → 추가 안내 → 마무리
  • 관리자 전용 명령 분리
  • 특정 chat/user만 /sysinfo 허용
  • 장애 자동 알림
  • Ollama 실패/타임아웃 시 별도 텔레그램 경보
  • 프롬프트 정책 파일화
  • CS 톤 가이드 문구를 코드 밖 설정으로 분리

원하시면 다음 메시지에서 이 문서를 기준으로 “초급 운영자용 1페이지 SOP” 버전(진짜 따라하기용)으로 다시 압축해드릴게요.

Cursor MCP 연동부터 로컬 Ollama 기반 텔레그램 응답 봇까지, 실제로 진행한 과정을 한 번에 정리한 문서입니다.

실무에서 바로 따라 할 수 있게 **순차 절차 + 운영 방법론 + 사용법 + 장애 대응*\* 중심으로 작성했습니다.

  • --

📌 구성 요약

| 구분 | 역할 |

|------|------|

| `Cursor MCP` | Cursor Agent가 텔레그램으로 알림/메시지 전송 |

| `Telegram Bot` | 사용자와 직접 대화하는 인터페이스 |

| `Ollama` | 로컬 LLM 추론 엔진 |

| `bot.py` | 텔레그램 메시지를 받아 Ollama 응답으로 반환 |


1) 아키텍처 이해 (방법론)

이번 구성은 목적이 다른 두 흐름을 분리해서 운영합니다.

  • **운영 알림 흐름 (Cursor MCP)*\*

Cursor가 MCP 서버(`telegram-notifier`)를 통해 특정 채팅으로 알림을 보냅니다.

  • **대화형 응답 흐름 (Telegram Bot + Ollama)*\*

사용자가 텔레그램에서 봇에게 질문하면, `bot.py`가 받아 Ollama에 질의하고 답을 돌려줍니다.

핵심 방법론은 다음과 같습니다.

  • *채널 분리\*: “알림”과 “대화”를 분리하면 장애 원인 파악이 쉽습니다.
  • *비밀 분리\*: 토큰/채팅 ID는 코드가 아니라 `env` 파일에 보관합니다.
  • *재기동 단순화\*: 설정 변경 후에는 MCP 토글 재시작 또는 프로세스 재기동으로 반영합니다.
  • *관측 가능성\*: Cursor는 `MCP Logs`, 봇은 `run.sh` 로그로 점검합니다.
  • --

2) 사전 준비 체크리스트

A. 텔레그램 봇 준비

  • `@BotFather`에서 봇 생성(이미 생성한 경우 재사용 가능)
  • `/mybots`에서 해당 봇의 API 토큰 확인
  • 봇과 1:1 채팅을 열고 메시지 1회 전송
  • 아래 URL로 `chat.id` 확인

`https://api.telegram.org/bot<TOKEN>/getUpdates`

> `result[].message.chat.id` 값을 `TELEGRAM_CHAT_ID`로 사용합니다.

> 그룹/채널은 음수 ID인 경우가 많습니다.

B. Cursor MCP 준비

  • `~/.cursor/mcp.json`
  • `~/.cursor/telegram-mcp.env`
  • --

3) Cursor MCP 설정 (알림 전송용)

`~/.cursor/mcp.json`

```json

{

"mcpServers": {

"telegram-notifier": {

"command": "npx",

"args": ["-y", "@harnyk/telegram-notifier-mcp"],

"envFile": "${userHome}/.cursor/telegram-mcp.env"

}

}

}

```

`~/.cursor/telegram-mcp.env`

```env

TELEGRAM_BOT_TOKEN=여기에_봇_토큰

TELEGRAM_CHAT_ID=여기에_chat_id

```

반영 순서:

  • 파일 저장
  • Cursor Settings에서 MCP 토글 Off → On
  • 필요하면 Cursor 재실행
  • Agent에서 “텔레그램으로 연결 테스트 보내줘”로 검증
  • --

4) Ollama + 텔레그램 응답 봇 설정 (대화용)

아래는 실제 사용한 기준 절차입니다.

4-1. Ollama 상태 확인

```bash

which ollama

ollama --version

ollama list

```

4-2. 서버 실행 + 모델 다운로드

```bash

ollama serve

```

새 터미널에서:

```bash

ollama pull gemma3:4b

ollama list

```

4-3. 봇 실행

```bash

cd /Users/kms/workspace/ai-test/telegram-command-bot

export OLLAMA_MODEL=gemma3:4b

./run.sh

```

정상 로그 예시:

  • `폴링 시작... model=gemma3:4b`
  • Telegram `getMe` 200
  • Telegram `getUpdates` 200
  • --

5) 친근한 CS 톤 응답 정책 (현재 반영됨)

`bot.py`의 사용자 노출 문구는 다음 원칙으로 정리했습니다.

  • 내부 기술 표현 최소화 (예: “로컬 Ollama에 넘김” 제거)
  • 먼저 공감/안내 후 처리 진행 메시지 제공
  • 명령어 도움말을 고객센터 톤으로 단순화

예시 톤:

  • 시작: “안녕하세요 :) 문의 주셔서 감사합니다.”
  • 처리중: “문의 감사합니다. 잠시만 기다려 주세요 :)”
  • 상태확인: “네, 현재 정상적으로 연결되어 있습니다. ✅”

지원 명령어:

  • `/help`
  • `/ping`
  • `/echo <글>`
  • `/ask <질문>` (추가 alias)
  • `/ollama <질문>` (기존 호환)
  • `/sysinfo`
  • --

6) 실제 사용법

사용자 입장 (텔레그램)

  • 봇 채팅방 열기
  • 일반 질문 입력 (예: “오늘 할 일 정리해줘”)
  • 또는 `/ask 질문내용` 형태로 명시 입력

운영자 입장 (Cursor)

  • Agent 채팅에서 알림 요청
  • MCP 도구 승인 후 텔레그램 전송 확인
  • 실패 시 `Output > MCP Logs` 확인
  • --

7) 장애 대응 가이드

`chat not found (400)`

원인:

  • `TELEGRAM_CHAT_ID` 오입력
  • 봇과 해당 채팅의 관계 미형성(첫 메시지 미전송)

해결:

  • 봇 채팅에 메시지 1회 전송
  • `getUpdates`로 `chat.id` 재확인
  • `telegram-mcp.env` 수정
  • MCP 재시작 또는 Cursor 재실행

`result: []` (getUpdates 빈 배열)

원인:

  • 잘못된 봇에 메시지를 보냈거나, 아직 업데이트 없음

해결:

  • 정확한 봇 username 재확인
  • 해당 봇 채팅에서 메시지 전송
  • `getUpdates` 재조회

Ollama 연결 실패

원인:

  • `ollama serve` 미실행
  • 모델 미다운로드
  • 모델명 오타

해결:

```bash

ollama serve

ollama list

```

모델 없으면:

```bash

ollama pull gemma3:4b

```

  • --

8) 운영 팁

  • 봇 문구 수정 후에는 `./run.sh` 프로세스 재시작
  • MCP env 수정 후에는 MCP 토글 재시작 또는 Cursor 재실행
  • 토큰은 문서/채팅/스크린샷에 노출 금지
  • 토큰 유출 의심 시 BotFather에서 즉시 재발급
  • --

9) 빠른 점검 명령어 모음

```bash

# Ollama

which ollama

ollama --version

ollama list

# 모델 준비

ollama pull gemma3:4b

# 봇 실행

cd /Users/kms/workspace/ai-test/telegram-command-bot

export OLLAMA_MODEL=gemma3:4b

./run.sh

```


필요하다면 다음 단계로, /ask 답변 스타일도

  • *고객센터 템플릿(인사 → 핵심 답변 → 추가 안내 → 마무리)\* 형태로 맞춰 일관되게 출력되도록 프롬프트 규칙을 추가할 수 있습니다.

telegram-ollama-cs-bot-runbook.md 기준으로, 실무에서 바로 운영할 수 있도록 왜 이렇게 구성했는지 + 각 단계에서 무엇을 확인해야 하는지까지 풀어서 설명드릴게요.

0) 이 구성의 핵심 의도

이 가이드는 “텔레그램 AI 자동화”를 하나로 뭉뚱그리지 않고 2개 경로로 분리합니다.

  • Cursor MCP 경로 (알림/명령형 전송)
  • 목적: 개발 중 이벤트, 점검 결과, 수동 알림을 텔레그램으로 보내기
  • 주체: Cursor Agent
  • 특징: 도구 호출 중심, 짧고 확실한 액션
  • Telegram Bot + Ollama 경로 (대화형 응답)
  • 목적: 사용자가 텔레그램에서 질문하면 AI 답변 받기
  • 주체: bot.py + Ollama
  • 특징: 챗봇 경험 중심

이렇게 분리하면 장애가 났을 때

  • “MCP 전송 문제인지”
  • “대화형 봇/Ollama 문제인지” 빠르게 구분됩니다.

1) 사전 준비의 의미 (왜 이걸 먼저 해야 하나)

A. BotFather에서 봇/토큰 확인

  • 토큰은 텔레그램 API의 인증 키입니다.
  • 토큰이 맞아야 API 호출이 200으로 응답합니다.
  • 봇은 이미 있다면 재사용하는 편이 맞고, 새로 만들 필요는 없습니다.

B. chat.id 확보 (getUpdates)

  • chat.id는 “어느 채팅방으로 보낼지”에 대한 대상 식별자입니다.
  • chat not found (400)의 대부분은 여기서 발생합니다.
  • 첫 메시지를 봇에게 한 번 보내야 getUpdates에 해당 채팅이 올라옵니다.

2) Cursor MCP 설정 파트 상세

파일 1: ~/.cursor/mcp.json

역할: Cursor가 어떤 MCP 서버를 어떤 명령으로 띄울지 정의

핵심 필드:

  • command: "npx": npm 패키지를 즉시 실행
  • args: ["-y", "@harnyk/telegram-notifier-mcp"]: 텔레그램 전송 서버 지정
  • envFile: 민감정보 파일 경로 참조

파일 2: ~/.cursor/telegram-mcp.env

역할: 비밀값 저장소

필수 값:

  • TELEGRAM_BOT_TOKEN
  • TELEGRAM_CHAT_ID

실무 포인트:

  • 이 파일은 코드 저장소가 아니라 홈 디렉토리(~/.cursor)에 두는 편이 안전합니다.
  • 수정 후에는 MCP 서버 재로딩이 필요합니다. (토글 Off/On 또는 Cursor 재시작)

3) Ollama + 대화형 봇 설정 파트 상세

3-1. Ollama 점검

  • which ollama: 설치 경로 확인
  • ollama --version: 실행 가능 여부 확인
  • ollama list: 다운로드된 모델 목록 확인

3-2. ollama serve

  • Ollama는 서버 프로세스가 떠 있어야 bot.py가 호출할 수 있습니다.
  • 설치만 되어 있고 서버가 떠 있지 않으면 연결이 실패합니다.

3-3. ollama pull gemma3:4b

  • 실제로 답변할 모델을 로컬에 내려받는 단계입니다.
  • pull이 끝나야 OLLAMA_MODEL=gemma3:4b 지정 시 정상 응답합니다.

3-4. 봇 실행

  • run.sh 실행 후 로그에서 아래 3개가 중요합니다.
  • 폴링 시작
  • getMe 200
  • getUpdates 200

이 3개가 뜨면:

  • 봇 토큰 인증 OK
  • 텔레그램 연결 OK
  • 폴링 루프 OK

4) “친근한 CS형 톤” 설계 의도

문구를 바꾼 이유는 간단합니다.

  • 사용자에게 내부 구현(로컬 모델, 엔진 호출 방식)을 노출하지 않고
  • “문의 접수 → 처리중 → 결과 반환” 흐름을 자연스럽게 보이게 하기 위함

적용 원칙:

  • 기술 디버그 문구 제거
  • 안내/공감 문장 먼저
  • 명령어 도움말은 짧고 행동 중심

즉, 엔지니어용 로그는 서버 로그로 보고, 사용자 채팅창은 CS 경험 중심으로 유지합니다.


5) 실제 운영 시나리오 (하루 운영 기준)

시나리오 A: 운영 알림 보내기

  • Cursor Agent에서 알림 요청
  • MCP 승인
  • 텔레그램 도착 확인
  • 실패 시 MCP Logs 확인

시나리오 B: 사용자 질의 응답

  • 사용자 텔레그램에서 일반 문장 또는 /ask
  • 봇이 처리중 안내 메시지 응답
  • Ollama 결과 반환
  • 지연/실패 시 run.sh 로그 확인

6) 장애 대응을 더 실무적으로 보면

chat not found (400)

가장 먼저 볼 것:

  • TELEGRAM_CHAT_ID 숫자 오타, 붙여넣기 실수
  • 봇과 해당 채팅의 관계 형성 여부(첫 메시지)

해결 루틴:

  • 봇 채팅에 메시지 1회
  • getUpdates 재조회
  • chat.id 재복사
  • env 반영 후 MCP 재시작

getUpdates가 result: []

의미:

  • 아직 봇이 받은 업데이트가 없거나, 다른 대상에 메시지를 보낸 상태

해결:

  • 정확한 봇 username으로 들어가서 메시지 전송
  • 다시 조회

Ollama 실패

빠른 체크:

  • ollama serve가 떠 있는가
  • 모델이 목록에 있는가 (ollama list)
  • 모델명 환경변수 오타가 없는가

7) 운영 안정성 체크리스트

  • 토큰은 절대 채팅, 문서, 스크린샷에 원문 노출 금지
  • 유출 의심 시 BotFather에서 즉시 재발급
  • 문구 수정 시 run.sh 재시작
  • env 수정 시 MCP 재로딩
  • “알림 기능”과 “대화 기능” 로그를 분리해 관찰

8) 다음 고도화 추천 (원하면 바로 진행 가능)

  • /ask 답변 템플릿 고정
  • 인사 → 핵심 답변 → 추가 안내 → 마무리
  • 관리자 전용 명령 분리
  • 특정 chat/user만 /sysinfo 허용
  • 장애 자동 알림
  • Ollama 실패, 타임아웃 시 별도 텔레그램 경보
  • 프롬프트 정책 파일화
  • CS 톤 가이드 문구를 코드 밖 설정으로 분리

원하시면 다음 메시지에서 이 문서를 기준으로 “초급 운영자용 1페이지 SOP” 버전(진짜 따라하기용)으로 다시 압축해드릴게요.

telegram-ollama-cs-bot-runbook.md 기준으로, 실무에서 바로 운영할 수 있게 왜 이렇게 구성했는지 + 각 단계에서 뭘 확인해야 하는지까지 풀어서 설명드릴게요.

0) 이 구성의 핵심 의도

이 가이드는 “텔레그램 AI 자동화”를 하나로 뭉뚱그리지 않고 2개 경로로 분리합니다.

  • Cursor MCP 경로 (알림/명령형 전송)
  • 목적: 개발 중 이벤트, 점검 결과, 수동 알림을 텔레그램으로 보내기
  • 주체: Cursor Agent
  • 특징: 도구 호출 중심, 짧고 확실한 액션
  • Telegram Bot + Ollama 경로 (대화형 응답)
  • 목적: 사용자가 텔레그램에서 질문하면 AI 답변 받기
  • 주체: bot.py + Ollama
  • 특징: 챗봇 경험 중심

이렇게 분리하면 장애가 났을 때

  • “MCP 전송 문제인지”
  • “대화형 봇/Ollama 문제인지” 빠르게 구분됩니다.

1) 사전 준비의 의미 (왜 이걸 먼저 해야 하나)

A. BotFather에서 봇/토큰 확인

  • 토큰은 텔레그램 API의 인증 키입니다.
  • 토큰이 맞아야 API 호출이 200으로 응답합니다.
  • 봇은 이미 있다면 재사용하는 게 맞고, 새로 만들 필요는 없습니다.

B. chat.id 확보 (getUpdates)

  • chat.id는 “어느 채팅방으로 보낼지”의 대상 식별자입니다.
  • chat not found (400)의 대부분은 여기서 발생합니다.
  • 첫 메시지를 봇에게 한 번 보내야 getUpdates에 그 채팅이 올라옵니다.

2) Cursor MCP 설정 파트 상세

파일 1: ~/.cursor/mcp.json

역할: Cursor가 어떤 MCP 서버를 어떤 명령으로 띄울지 정의

핵심 필드:

  • command: "npx": npm 패키지를 즉시 실행
  • args: ["-y", "@harnyk/telegram-notifier-mcp"]: 텔레그램 전송 서버 지정
  • envFile: 민감정보 파일 경로 참조

파일 2: ~/.cursor/telegram-mcp.env

역할: 비밀값 저장소

필수 값:

  • TELEGRAM_BOT_TOKEN
  • TELEGRAM_CHAT_ID

실무 포인트:

  • 이 파일은 코드 저장소가 아니라 홈 디렉토리(~/.cursor)에 둬야 안전
  • 수정 후에는 MCP 서버 재로딩 필요 (토글 Off/On 또는 Cursor 재시작)

3) Ollama + 대화형 봇 설정 파트 상세

3-1. Ollama 점검

  • which ollama: 설치 경로 확인
  • ollama --version: 실행 가능 여부 확인
  • ollama list: 다운로드된 모델 목록 확인

3-2. ollama serve

  • Ollama는 서버 프로세스가 떠 있어야 bot.py가 호출 가능
  • 설치만 되어 있고 서버가 안 떠 있으면 연결 실패

3-3. ollama pull gemma3:4b

  • 실제로 답변할 모델을 로컬에 내려받는 단계
  • pull이 끝나야 OLLAMA_MODEL=gemma3:4b 지정 시 정상 응답

3-4. 봇 실행

  • run.sh 실행 후 로그에서 아래 3개가 중요:
  • 폴링 시작
  • getMe 200
  • getUpdates 200

이 3개가 뜨면:

  • 봇 토큰 인증 OK
  • 텔레그램 연결 OK
  • 폴링 루프 OK

4) “친근한 CS형 톤” 설계 의도

문구를 바꾼 이유는 간단합니다:

  • 사용자에게 내부 구현(로컬 모델, 엔진 호출 방식)을 노출하지 않고
  • “문의 접수 → 처리중 → 결과 반환” 흐름을 자연스럽게 보이게 하기 위함

적용 원칙:

  • 기술 디버그 문구 제거
  • 안내/공감 문장 먼저
  • 명령어 도움말은 짧고 행동 중심

즉, 엔지니어용 로그는 서버 로그로 보고, 사용자 채팅창은 CS 경험 중심으로 유지합니다.


5) 실제 운영 시나리오 (하루 운영 기준)

시나리오 A: 운영 알림 보내기

  • Cursor Agent에서 알림 요청
  • MCP 승인
  • 텔레그램 도착 확인
  • 실패 시 MCP Logs 확인

시나리오 B: 사용자 질의 응답

  • 사용자 텔레그램에서 일반 문장 또는 /ask
  • 봇이 처리중 안내 메시지 응답
  • Ollama 결과 반환
  • 지연/실패 시 run.sh 로그 확인

6) 장애 대응을 더 실무적으로 보면

chat not found (400)

가장 먼저 볼 것:

  • TELEGRAM_CHAT_ID 숫자 오타/붙여넣기 실수
  • 봇과 그 채팅의 관계 형성 여부(첫 메시지)

해결 루틴:

  • 봇 채팅에 메시지 1회
  • getUpdates 재조회
  • chat.id 재복사
  • env 반영 후 MCP 재시작

getUpdates가 result: []

의미:

  • 아직 봇이 받은 업데이트가 없거나, 다른 대상에 메시지 보낸 상태

해결:

  • 정확한 봇 username으로 들어가서 메시지
  • 다시 조회

Ollama 실패

빠른 체크:

  • ollama serve 떠 있는가
  • 모델이 목록에 있는가 (ollama list)
  • 모델명 환경변수 오타 없는가

7) 운영 안정성 체크리스트

  • 토큰은 절대 채팅/문서/스크린샷에 원문 노출 금지
  • 유출 의심 시 BotFather에서 즉시 재발급
  • 문구 수정 시 run.sh 재시작
  • env 수정 시 MCP 재로딩
  • “알림 기능”과 “대화 기능” 로그를 분리 관찰

8) 다음 고도화 추천 (원하면 바로 진행 가능)

  • /ask 답변 템플릿 고정
  • 인사 → 핵심 답변 → 추가 안내 → 마무리
  • 관리자 전용 명령 분리
  • 특정 chat/user만 /sysinfo 허용
  • 장애 자동 알림
  • Ollama 실패/타임아웃 시 별도 텔레그램 경보
  • 프롬프트 정책 파일화
  • CS 톤 가이드 문구를 코드 밖 설정으로 분리