AI & 파이썬

파이썬(Python) / 공식문서 기준 / 텔레그램 봇(Telegram bot) & 챗 봇(Chat bot) 만들기 / 아과노트

아과노트 2023. 3. 7. 11:08
728x90
반응형

안녕하세요,

아과노트입니다.

 

오늘은 지난 시간에 이어 ChatGTP를 이용해서 챗봇 만들기 위한 작업에 앞서 

먼저 텔레그램으로 챗봇을 만드는 기본에 대해서 알아보겠습니다

 

BotFather 로고
BotFather 로고

 

이 문서는 이전 글에 연결됩니다!!

 

2023.03.02 - [파이썬] - 파이썬 / ChatGPT API (openai) 기본 사용법 (공식문서 기준) / 아과노트

 

파이썬 / ChatGPT API (openai) 기본 사용법 (공식문서 기준) / 아과노트

안녕하세요, 아과입니다. 드디어 오늘부터 ChatGPT(OpenAI)의 API 서비스가 정식오픈했습니다. 그 기념으로 ChatGPT API를 이용하여 파이썬에서 개발을 시작해 보도록 하겠습니다. 이 글의 내용은 ChatGPT

alphalok.tistory.com

 

챗봇을 만들기 위해서는 가장 대중적으로 쓰는 것이 텔레그램을 이용한 챗봇 만들기입니다.

 

이미 많은 포스팅들이 있지만 실제 텔레그램 공식 문서를 이용해서 챗봇을 만드는 과정을 알아보겠습니다.

 

참고한 문서는 아래 문서입니다.

 

https://core.telegram.org/bots/samples

 

Bot API Library Examples

A full tutorial covering everything from configuring your environment to deploying your finished bot is available here.…

core.telegram.org

 

파이썬 챗봇을 만드는 과정을 다음과 같습니다.

  1. 텔레그램에서 BotFater에게 챗봇 생성 요청
  2. 파이썬에서 텔레그램봇 라이브러리 설치
  3. 챗봇 토큰을 이용해서 메시지 보내기

그럼 하나하나 시작해 보겠습니다.

 

1. 텔레그램에서 BotFater에게 챗봇 생성 요청

먼저 텔레그램에서 BotFater를 검색합니다.

텔레그램의 봇의 아버지 봇 파터(BotFather)
텔레그램의 봇의 아버지 봇 파터(BotFather)

검색된 BotFater를 누르면 대화창으로 이동합니다

과거에는 명령어를 다 외워야 했는데...

이제는 대화창옆에 "Menu"라는 것이 추가되었습니다.

여기 누르면 편하게 명령어들을 볼 수가 있네요 ㅎㅎㅎ

봇 파더 멍령어
봇 파더 멍령어

 

혹시라도 궁금한 것이 있으면 /help를 입력하면 상세하게 설명해 줍니다.

다만 영어로... ㅎㅎㅎ

 

이제 우리는 절차에 따라 봇을 생성해 보겠습니다.

"/newbot"을 선택해 주세요.

 

그러면 우리의 봇파더(BotFather)께서 

"좋아, 새로운 봇이야. 어떻게 부를래?? 봇의 이름을 정해봐!"라고 물어봐 줍니다.

봇의 이름을 이쁘게 잘 지어주세요

저는 그냥 아과노트(agwanote)라고 지었습니다.

 

그러면 봇파더께서

"훌륭해. 이제 네가 만든 봇의 사용자 이름을 정해보자! 이름의 끝은 bot으로 끝나야 해!"

라고 알려줍니다.

이게 실질적인 ID처럼 구분자가 됩니다. 이름을 잘 정해 줍니다.

저는 작명센스가 뛰어나지 않아서... agwanote_bot으로 정했습니다.

 

그러면 드디어 우리에게 토큰(token)을 발급해 줍니다.

이 토큰을 이용해서 텔레그램으로 만들어야 하니 잘 알아 두세요

다음 그림의 빨간 박스 친 부분입니다.

보안을 위해 내용은 안 보이게 해 두었습니다.

 

봇파더 통한 봇 생성과정
봇파더 통한 봇 생성과정

 

 

텔레그램 봇은 봇파더(BotFather)를 통해 생성합니다
-아과노트-

 

그럼 여기까지 텔레그램(Telegram)의 챗봇 생성입니다.

 

2. 파이썬에서 텔레그램봇 라이브러리 설치

파이썬 텔레그램봇 라이브러리 설치는 간단합니다.

공식문서에 다음과 같이 입력하라고 합니다

 

 

터미널에서 다음과 같이 입력해 주세요

pip install python-telegram-bot --upgrade

pip install python-telegram-bot --upgrade

아래의 메시지를 보시면 설치 완료한 것입니다.

 

 

3. 챗봇 토큰을 이용해서 메세지 보내기

 

다음 공식 문서에서 안내하는 대로 첫 메시지를 보내보겠습니다.

 

https://github.com/python-telegram-bot/python-telegram-bot/wiki/Extensions-%E2%80%93-Your-first-Bot

 

Extensions – Your first Bot

We have made you a wrapper you can't refuse. Contribute to python-telegram-bot/python-telegram-bot development by creating an account on GitHub.

github.com

 

소스는 다음과 같습니다.

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

logging.basicConfig(
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    level=logging.INFO
)

async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
    await context.bot.send_message(chat_id=update.effective_chat.id, text="I'm a bot, please talk to me!")

if __name__ == '__main__':
    token = "여기에 발급받은 Token을 입력하세요"
    application = ApplicationBuilder().token(token).build()

    start_handler = CommandHandler('start', start)
    application.add_handler(start_handler)

    application.run_polling()

여러분이 token이란 변수에 1번에서 챗봇에서 생성하면서 발급받은 토큰(Token)을 넣어주세요

"숫자숫자숫자:문자문자숫자문자문자" 이런 형태로 토큰이 있을 것입니다.

통째로 넣으면 됩니다.

그리고 실행을 해서 확인해 봅니다.

챗봇 프로그램 실행
챗봇 프로그램 실행

프로그램은 이렇게만 뜰 것입니다.

그럼 실제 대화는 어떻게 할 것인가?!

텔레그램에서 여러분이 만든 봇을 검색해 주세요

저는 agwanote라고 적었기 때문에 agwanote라고 검색하겠습니다.

 

내가 만든 챗봇 검색
내가 만든 챗봇 검색

여러분의 봇을 꾹 누르면 다음처럼 하단에 "START" 가 보입니다. 명령어가 이미 있네요 ㅎㅎ 

꾸욱 눌러보세요

시작해봅시다
시작해봅시다

그러면 다음처럼 "나는 봇입니다. 나에게 얘기해 보세요"라고 봇이 영어로 말합니다.

 

챗봇 명령어실행
영어로 대답하네요...

처음 웰컴 메시지를 수정하고 싶으시다면 위의 소스에서 다음 부분을 수정하시면 됩니다.

async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
    await context.bot.send_message(chat_id=update.effective_chat.id, text="여기에 환영인사말을 넣어보세요")

파이썬 소스를 다시 실행하고, 텔레그램 챗봇에 /start를 입력해 줍니다. 위의 /start를 눌러도 됩니다.

수정한 챗봇
수정한 챗봇

잘 나옵니다 ㅎㅎㅎ

 

여기까지 챗봇 기본 메세지를 보내보았습니다.

 

오늘 여러분은 텔레그램 챗봇을 생성하고, 텔레그램으로 소스를 만들어 첫 대화를 할 수 있도록 만들었습니다

다음 이 시간에는 좀 더 다양한 명령어로 챗봇을 활용해 보겠습니다.

 

고생하셨습니다!

728x90
반응형