파이썬 텔레그램 챗봇 명령어 처리하기

명령어 처리하기

안녕하세요! 지난 포스팅에 이어서 오늘은 텔레그램 봇에서 명령어를 처리하는 방법을 Python 코드와 함께 알아보겠습니다.

텔레그램 봇은 ‘/’로 시작하는 단어를 명령어로 설정할 수 있으며, 이를 활용하여 봇의 동작을 제어하거나 원하는 기능을 수행할 수 있는데요.

예를 들어, 아래와 같이 특정 단어의 명령어에 기능을 구현할 수 있습니다.

 

[명령어 예시]

/start – 봇 시작하기

/help – 도움말 보기

/search – 검색 기능 사용하기

 

 

명령어 예시
명령어 예시

 

 

오늘은 이렇게 명령어를 챗봇에 등록하고, 사용자가 해당 명령어를 입력했을 때의 기능을 구현하는 방법에 대해 알아보겠습니다.

 

 

 

준비과정

먼저, 텔레그램 봇 생성을 진행하신 뒤 Token 값을 얻으셔야 하는데요. 지난 포스팅에서 봇 생성관련하여 포스팅을 하였으니, 준비가 되지 않으신 분들은 이 링크를 통해 이전 포스팅에서 봇 생성, 토큰을 얻으신 뒤 진행하시면 될 것 같습니다.

 

이번 코드 작성에서도 파이썬 python-telegram-bot 라이브러리를 사용하여 작성할 예정입니다. 아래와 같이 입력하시어 라이브러리를 설치하시면 되겠습니다.

 

pip install python-telegram-bot

 

 

코드 복사 방법

 

 

새창으로 열기
새창으로 열기

 

 

코드 복사
코드 복사

 

 

우클릭 방지가 적용되어 있어서 코드 복사가 어려우실 것 같습니다. 코드 블록 우측아이콘 중 세 번째 아이콘을 클릭하시면 새창에서 코드가 표시되는데요. 이 창에서 코드를 복사하셔서 활용하시면 되겠습니다.

 

 

[목차]

1. 명령어 기능 구현 – /start 명령어

2. 라이브러리와 변수 설정

3. 명령어 함수 작성

4. 메인함수 작성

5. 전체코드

6. 마무리

 

 

 

명령어 기능 구현 – /start 명령어

텔레그램 채팅방은 입장과 동시에 /start 명령어가 자동으로 입력되는데요. 오늘은 이 start 명령어를 등록하고, 기능을 구현해 보는 시간을 가져보도록 하겠습니다.

 

 

챗봇 채팅방 시작
챗봇 채팅방 시작

 

 

/start 명령어 자동입력
/start 명령어 자동입력

 

 

 

라이브러리와 변수 설정

먼저, 필요한 라이브러리를 임포트 하고 텔레그램 봇의 토큰을 설정해 주시면 되는데요. 이번에는 ‘CommandHandler’ 클래스를 사용할 예정입니다.

 

from telegram import Update
from telegram.ext import ApplicationBuilder, ContextTypes, CommandHandler

# 토큰을 bot_token 변수에 저장
bot_token = '토큰을 여기에 입력합니다'

 

토큰은 ‘bot_token’ 변수에 챗봇의 토큰을 입력해 주시면 됩니다.

 

 

 

명령어 함수 작성

다음은 start 명령어의 기능을 구현하는 함수 코드를 작성해 보겠습니다.

 

# start 명령어 처리 함수
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):

    send_msg = "[채팅방 시작]\n퀀트매니아 채팅방에 오신 것을 환영합니다.\n/help : 채팅방 사용법"

    await context.bot.send_message(chat_id=update.effective_chat.id, text=send_msg)

 

기존 메시지 처리 방식 함수와 큰 차이점은 없으며, 채팅방에 입장했을 때 보일 문구를 send_msg 변수에 작성하여, 채팅방에 /start 명령어를 입력한 사용자를 ‘effective_chat.id’를 이용하여, 해당 User ID에게 메시지를 보내는 기능을 구현한 코드입니다.

 

 

 

메인함수 작성

메인 함수는 아래와 같이 작성해 주시면 됩니다. 메시지 방식과 차이점이라면 CommandHandler를 사용한다는 차이점이 있으며, 명령어 키워드를 해당 클래스에 전달해 주시면 됩니다.

 

if __name__ == '__main__':

    # 챗봇 application 인스턴스 생성
    application = ApplicationBuilder().token(bot_token).build()

    # start 핸들러 생성
    start_handler = CommandHandler('start', start)

    # 핸들러 추가
    application.add_handler(start_handler)

    # 폴링 방식으로 실행
    application.run_polling()

 

start_handlerCommandHandler 클래스를 이용하여 만들었으며, ‘start’라는 키워드와 실행될 함수인 start 함수를 파라미터로 전달하였습니다. 그 후 폴링 방식으로 실행되도록(run_polling) 코드를 작성하였습니다.

 

 

 

전체코드

아래는 지금까지 작성한 코드의 전체 코드입니다.

 

from telegram import Update
from telegram.ext import ApplicationBuilder, ContextTypes, CommandHandler


# 토큰을 bot_token 변수에 저장
bot_token = '토큰을 여기에 입력합니다'


# start 명령어 처리 함수
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):

    send_msg = "[채팅방 시작]\n퀀트매니아 채팅방에 오신 것을 환영합니다.\n/help : 채팅방 사용법"

    await context.bot.send_message(chat_id=update.effective_chat.id, text=send_msg)


if __name__ == '__main__':

    # 챗봇 application 인스턴스 생성
    application = ApplicationBuilder().token(bot_token).build()

    # start 핸들러 생성
    start_handler = CommandHandler('start', start)

    # 핸들러 추가
    application.add_handler(start_handler)

    # 폴링 방식으로 실행
    application.run_polling()

 

이렇게 코드를 작성하신 뒤 실행해 보시면, 아래와 같이 사용자가 챗봇 채팅방에 입장했을 때 자동으로 ‘/start’ 명령어가 입력되고, 명령어 기능이 잘 실행되는 확인할 수 있었습니다.

 

 

채팅방 입장 및 /start 명령어
채팅방 입장 및 /start 명령어

 

 

 

마무리

오늘은 텔레그램 봇에서 명령어를 등록하고 처리하는 방법에 대해 알아보았습니다. Python을 사용하여 텔레그램 봇을 만들고 싶은 분들에게 도움이 되셨으면 좋겠습니다.

다음 포스팅에서도 유용한 프로그래밍 정보로 찾아뵙도록 하겠습니다.

감사합니다!

 

댓글 남기기