Gemini AI 기반 텔레그램 챗봇입니다.
- 💬 AI 대화: Gemini 1.5 Flash 모델을 활용한 자연스러운 대화
- 🔄 대화 맥락 유지: 사용자별 대화 히스토리를 관리하여 이어서 대화 가능
- 🌐 다국어 지원: 한국어/영어 자동 감지 및 응답
- 📝 긴 응답 처리: 4096자 초과 응답을 자동으로 분할 전송
telegram/
├── bot/
│ ├── __init__.py
│ ├── main.py # 봇 진입점
│ ├── handlers.py # 텔레그램 메시지 핸들러
│ ├── gemini_client.py # Gemini API 클라이언트
│ ├── conversation.py # 대화 컨텍스트 관리
│ └── config.py # 설정 관리
├── tests/
│ ├── __init__.py
│ ├── test_handlers.py # 핸들러 테스트
│ ├── test_gemini_client.py # Gemini 클라이언트 테스트
│ └── test_conversation.py # 대화 관리 테스트
├── docs/
│ └── README.md
├── .env # 환경 변수 (Git 제외)
├── .env.example # 환경 변수 템플릿
├── .gitignore
├── pytest.ini
└── requirements.txt
- Telegram Bot Token: @BotFather에서 봇 생성 후 토큰 발급
- Gemini API Key: Google AI Studio에서 API 키 발급
# 의존성 설치
pip install -r requirements.txt
# 환경 변수 설정
cp .env.example .env
# .env 파일을 열어 실제 키 값을 입력python -m bot.mainpytest -v| 명령어 | 설명 |
|---|---|
/start |
시작 메시지 표시 |
/help |
도움말 표시 |
/reset |
대화 기록 초기화 |
| 변수 | 설명 | 기본값 |
|---|---|---|
TELEGRAM_BOT_TOKEN |
텔레그램 봇 API 토큰 | (필수) |
GEMINI_API_KEY |
Google Gemini API 키 | (필수) |
GEMINI_MODEL |
사용할 Gemini 모델 | gemini-1.5-flash |
MAX_HISTORY_LENGTH |
보관할 최대 대화 수 | 20 |
SYSTEM_INSTRUCTION |
봇 시스템 프롬프트 | 기본 한/영 응답 |
- Python 3.11+
- python-telegram-bot v21+ (비동기)
- google-generativeai (Gemini API SDK)
- python-dotenv (환경 변수 관리)
- pytest + pytest-asyncio (테스트)