안녕하세요. 오토남입니다.
오늘은 많은 분들이 궁금해하시는 텔레그램 챗봇 개발 방법에 대해 알려드릴게요.
Python을 활용해서 아주 기본적인 챗봇을 만드는 과정을 단계별로 정리했어요.
처음 하시는 분들도 쉽게 따라올 수 있도록 구성했으니 끝까지 한번 읽어보세요!
텔레그램 봇 생성하기
텔레그램 챗봇을 만들려면 가장 먼저 BotFather라는 공식 봇을 통해 시작해야 해요.
- 텔레그램에서 BotFather 검색 (BotFather 링크)
/newbot
입력해서 새 봇 만들기 시작- 봇 이름 입력 (유저들이 보게 될 이름)
- 사용자 이름 입력 (반드시
bot
으로 끝나야 함, 예:myfirst_bot
) - 완료되면 API 토큰을 알려주는데, 이건 꼭 저장해두세요! 챗봇 개발할 때 필수입니다.
Python 환경 설정하기
챗봇은 Python으로 만들 건데요, 필요한 환경부터 세팅해야겠죠?
- Python 설치: https://www.python.org
이미 설치되어 있다면 넘어가도 됩니다! - 필수 라이브러리 설치
아래 명령어를 터미널이나 명령 프롬프트에 입력하세요.
pip install python-telegram-bot
기본 챗봇 코드 작성하기
이제 본격적으로 챗봇 코드를 작성해볼게요.
가장 간단한 에코 봇을 먼저 만들어봅시다.
from telegram import Update
from telegram.ext import Application, CommandHandler, MessageHandler, filters, CallbackContext
TOKEN = "YOUR_TELEGRAM_BOT_TOKEN"
async def start(update: Update, context: CallbackContext) -> None:
await update.message.reply_text("안녕하세요! 저는 텔레그램 챗봇입니다!")
async def echo(update: Update, context: CallbackContext) -> None:
text = update.message.text
await update.message.reply_text(f"당신이 말한 내용: {text}")
def main():
application = Application.builder().token(TOKEN).build()
application.add_handler(CommandHandler("start", start))
application.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, echo))
application.run_polling()
if __name__ == "__main__":
main()
이 코드의 핵심 기능은 다음과 같아요:
/start
명령어 입력 시 인사 메시지 응답- 사용자가 보낸 메시지를 그대로 다시 돌려주는 에코 기능
챗봇 실행하기
코드를 bot.py
로 저장한 후 아래처럼 실행하면 됩니다.
python bot.py
그 다음 텔레그램에서 방금 만든 봇에게 메시지를 보내보세요.
바로 응답이 오면 성공입니다!
추가 기능도 넣어볼까요?
기본 에코 기능만으론 심심하니, 다양한 기능도 추가해볼 수 있어요.
버튼 메뉴 만들기
from telegram import InlineKeyboardButton, InlineKeyboardMarkup
def menu(update: Update, context: CallbackContext) -> None:
keyboard = [
[InlineKeyboardButton("버튼 1", callback_data="1")],
[InlineKeyboardButton("버튼 2", callback_data="2")]
]
reply_markup = InlineKeyboardMarkup(keyboard)
update.message.reply_text("메뉴를 선택하세요:", reply_markup=reply_markup)
이미지 전송
def send_image(update: Update, context: CallbackContext) -> None:
update.message.reply_photo(photo="https://example.com/image.jpg")
날씨 API 연동
import requests
def get_weather(update: Update, context: CallbackContext) -> None:
city = "Seoul"
api_key = "YOUR_OPENWEATHERMAP_API_KEY"
url = f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid={api_key}"
response = requests.get(url).json()
weather = response["weather"][0]["description"]
update.message.reply_text(f"서울의 현재 날씨는: {weather}")
챗봇을 배포해보자
로컬에서 실행만 하면 컴퓨터 꺼지면 봇도 꺼져요.
그래서 서버에 올려 항상 실행되도록 만들어야 해요.
대표적인 배포 방법은 아래와 같아요:
- Heroku (무료 플랜 있음, 가볍게 시작 가능)
- Google Cloud Run
- Amazon Lightsail
- AWS Lambda + API Gateway
- 웹훅(Webhook) 방식으로 배포하면 응답 속도도 빨라져요!
마무리
처음엔 Polling 방식으로 시작해서 쉽게 테스트하고,
진짜 서비스처럼 운영하고 싶다면 서버 배포 + Webhook 연동을 추천드려요.
기본적인 챗봇부터 시작해서 버튼, 이미지, 외부 API 연동까지 기능은 무궁무진하답니다.
나만의 텔레그램 챗봇, 지금부터 만들어보세요!