텔레그램 챗봇 만들기 – 기초 가이드

안녕하세요. 오토남입니다.

오늘은 많은 분들이 궁금해하시는 텔레그램 챗봇 개발 방법에 대해 알려드릴게요.
Python을 활용해서 아주 기본적인 챗봇을 만드는 과정을 단계별로 정리했어요.
처음 하시는 분들도 쉽게 따라올 수 있도록 구성했으니 끝까지 한번 읽어보세요!

텔레그램 봇 생성하기

텔레그램 챗봇을 만들려면 가장 먼저 BotFather라는 공식 봇을 통해 시작해야 해요.

  1. 텔레그램에서 BotFather 검색 (BotFather 링크)
  2. /newbot 입력해서 새 봇 만들기 시작
  3. 봇 이름 입력 (유저들이 보게 될 이름)
  4. 사용자 이름 입력 (반드시 bot으로 끝나야 함, 예: myfirst_bot)
  5. 완료되면 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 연동까지 기능은 무궁무진하답니다.
나만의 텔레그램 챗봇, 지금부터 만들어보세요!

Leave a Comment