파이썬 Python 텔레그램 봇 만들기

요즘 웹 크롤링 할 데이터가 생겨서 어떻게 이용하면 될까 고민하고 있었습니다. 지난 번에 웹 스크래핑을 하는 것에 대해 공부했었는데, 드디어 실제로 써먹게 되었습니다. 필요한 기능은 원하는 데이터를 긁어서 있을경우에 알림을 받고 싶었습니다. 그래서 카카오톡 봇 채팅을 만들어서 하려고했는데, 불편하다는 의견이 있었고, 결국 텔레그램 봇을 한 번 만들어 보기로 했습니다.

 

먼저 텔레그램 봇 만들기 시작은 아주 간단합니다. 우선 텔레그랩 앱 설치를 하셔야합니다. 모바일, 데스크톱 상관없습니다. 다만 바로바로 확인을 하려면 데스크톱으로 옆에 켜두시는게 좋을듯 합니다.

 

그 다음 채팅창에 botfather를 검색하면 텔레그램 정식 채팅봇이 있습니다. 말을 걸어 줍니다. 새로운 채팅봇을 만들려면 아빠봇에게 문의를 해야하거든요.

 

Start버튼을 눌러서 시작 대화를 시작합니다. 

 

그러면 봇에 관련된 커맨드를 보여줍니다. 봇에서 다양한 기능위해서 필요한지는 아직 모르겠습니다. 우선 봇생성만 해보겠습니다.

 

텔레그램의 새로운 봇을 생성/newbot을 입력해줍니다.

 

botfather이 이제 생성할 텔레그램 봇의 이름을 정해달라고 합니다. TetrisBot or tetris_bot처럼 끝에 bot이 들어가야 한다고 합니다. 원하는 이름으로 봇을 생성해보겠습니다. 생성이 완료되면 봇과 연결된 API 토큰을 받을 수 있습니다. 해당 토큰을 이용해서 Python으로 텔레그램 채팅봇과 대화를 할 수 있게 됩니다.

 

이제 봇을 코드로 제어해보기 전에 먼저 봇이 나에게 메시지를 보낼 수 있도록 나의 채널 ID를 알아야합니다. 이것도 텔레그램 봇을 이용하면 얻을 수 있습니다. 검색에서 userinfobot을 검색합니다.

 

start를 누르게 되면 바로 나의 채널 ID를 얻을 수 있습니다. 

 

이 방법외에도 텔레그램 봇 채팅에서 받은 메시지를 프린트 해보면 누가 보낸 메시지인지 채널아이디를 볼 수 있습니다. 해당 사진은 받은 메시지의 데이터입니다. id키값을 통해서 보낸 사람의 id를 알 수 있습니다. 다중으로 사용되는 봇의 경우 받은 메시지의 채널 ID를 통해서 답장을 보내게 됩니다. 

 

생성한 봇은 마찬가지로 만들어준 이름으로 검색하면 찾을 수 있습니다.

import telepot
from telepot.loop import MessageLoop

token = '봇 토큰'
mychid = '채널 아이디'
bot = telepot.Bot(token)


def handle(msg):
    print(msg)
    bot.sendMessage(mychid, '테스트')


MessageLoop(bot, handle).run_as_thread()

while True:
    pass

봇 토큰은 봇 생성시 받은 값을 넣고, 채널 아이디의 경우도 userinfobot에서 받은 값을 넣어줍니다. handle함수는 메시지루프가 돌면서 메시지를 처리하는 함수 입니다. 현재는 메시지가 들어오면 '테스트' 문구를 답장하게 해두었습니다. sendMessage를 통해서 봇에게 답장을 받을 수 있습니다. 

 

 

def handle(msg):
    bot.sendMessage(msg['chat']['id'], msg['text'])

 

봇이 받은 채팅에 ['chat']['id']가 있어서 받은 메시지를 처리할 때 이용하여도 됩니다. 혼자만 사용하려면 개인의 채널 아이디를 저장해두고 사용하시면됩니다. 받은 메시지를 그대로 답장하는 봇입니다. ['text']에 보낸사람의 메시지가 담겨져있습니다. 우선 보낸 채팅값을 코드로 파악해서 원하는 기능을 실행 시키면 될 거 같습니다. 텔레그램 봇 생성자체는 되게 심플하네요.

 

 

그리드형(광고전용)

이 글을 공유합시다

facebook twitter googleplus kakaoTalk kakaostory naver band

댓글

Designed by JB FACTORY