텔레그램 봇? 이거 개발자만 만들 수 있는 것 아니였어?

저를 비롯해 대부분의 사람들의 생각일 것입니다.

 

그런데, 김플님이 올려주신 강의를 보니 진짜 비개발자도 따라하면 가능하더라구요.

강의내용을 잊지 않기 위해 다시 강의 내용을 정리해봅니다.

 

마지막에는 전체 소스코드도 있으니, 참고해주세요.

 

 

1. 텔레그램 봇을 이용하기 위해 패키지 설치

영상에는 "pip install telegram"으로 나오는데, 잘못된 것이라고 바로잡았다.

왜 설치해도 안되지? 라고 되뇌이며 다시 영상을 보고 댓글을 보니깐 알게 되었다.

pip install python-telegram-bot

 

2. 텔레그램 봇 만들기

텔레그램 앱 > 검색 "BotFather" > 대화창에서 "/newbot" 입력 > 봇 이름 설정 : 끝에가 "_bot"으로 끝나야 됩니다. 

 

이렇게 하면 토큰 메시지가 발급되는데, 이 코드를 잘 복사해둡니다.

 

3. 텔레그램 봇에 말걸기

텔레그램 앱에서 아까 만든 봇에다 메시지 몇개를 보내봅니다.

봇이름을 검색하고, 메시지를 보내면 되요.

 

이 작업이 왜 필요하냐면 텔레그램 메시지 내용에서 필요한 정보를 추리기 위해 필요한 작업이에요.

만약 입력하지 않으면 아래 코드를 실행했을때 아무 데이터도 나오지 않는답니다.

 

4. 텔레그램 봇 메시지 분석

import telegram

bot = telegram.Bot(token='토큰 아이디 입력')

for i in bot.getUpdates():
    print(i)
    print()

텔레그램을 불러오고

봇이라는 변수를 지정하고, 이 변수에는 토큰아이디가 들어갑니다.

 

for반복문을 사용하여 대화내용을 출력해봅니다.

위에 3번을 하지 않으면 아무 메시지도 뜨지 않아요.

 

{'update_id': 142153681, 'message': {'message_id': 16, 'date': 1583935427, 'chat': {'id': 699825268, 'type': 'private', 'username': 'buffy7000', 'first_name': '제로'}, 'text': 'ㄹㄹ', 'entities': [], 'caption_entities': [], 'photo': [], 'new_chat_members': [], 'new_chat_photo': [], 'delete_chat_photo': False, 'group_chat_created': False, 'supergroup_chat_created': False, 'channel_chat_created': False, 'from': {'id': 699825268, 'first_name': '제로', 'is_bot': False, 'username': 'buffy7000', 'language_code': 'ko'}}}

{'update_id': 142153682, 'message': {'message_id': 17, 'date': 1583935431, 'chat': {'id': 699825268, 'type': 'private', 'username': 'buffy7000', 'first_name': '제로'}, 'text': 'ㅈㅈㅈ', 'entities': [], 'caption_entities': [], 'photo': [], 'new_chat_members': [], 'new_chat_photo': [], 'delete_chat_photo': False, 'group_chat_created': False, 'supergroup_chat_created': False, 'channel_chat_created': False, 'from': {'id': 699825268, 'first_name': '제로', 'is_bot': False, 'username': 'buffy7000', 'language_code': 'ko'}}}

두 개의 대화를 했더니 요런 대화내용이 불러와지네요.

 

아이디 값이 가장 중요합니다.

'id': 699825268

 

우선 메시지를 보내볼께요.

chat_id에, text의 내용을 보내는 것입니다.

bot.send_message(chat_id='699825268', text="안녕하세요 반가워요 챗봇이에요!")

 

다음은 채팅방에 대화한 아이디를 추출해볼꺼에요.

import telegram

bot = telegram.Bot(token='토큰 아이디')

for i in bot.getUpdates():
    print(i.message.chat.id)
    print()

 

두 번 대화했기에, 두 대화의 아이디가 출력되었어요.

빈 줄이 나온건 print()가 있어서 그런거네요.

699825268

699825268

 

이번엔 채팅방에서 말 건 모든 사람에게 메시지를 보내볼께요.

위에는 아이디를 출력한건데, 이번에는 출력하지 않고 메시지를 보내는거에요.

 

import telegram

bot = telegram.Bot(token='토큰 아이디')


for i in bot.getUpdates():
    bot.send_message(chat_id=i.message.chat.id, text="두번째 메시지")

 

이렇게 하면 메시지가 두 번 보내져요.

같은 아이디니 두 번 같은 메시지를 받게 되겠죠?

 

자 이제 마지막이에요.

 

chat_id_list 변수를 만들어요. 이 변수는 비어있어요. [] 보이시죠?

chat_id = 이 부분 보시면 id만 출력하는 거에요.

 

그 다음엔 만약 chat_id가 chat_id_list에 없다면

메시지를 보내고

chat_id_list에 아이디를 추가해요.

 

자 완성된 소스코드입니다.

import telegram

bot = telegram.Bot(token='토큰 아이디')


chat_id_list = []
for i in bot.getUpdates():
    chat_id = i.message.chat.id
    if chat_id not in chat_id_list:
        bot.send_message(chat_id=chat_id, text="3nd message")
        chat_id_list.append(chat_id)

 

오늘 배운것은 텔레그램으로 메시지를 보내고,

텔레그램 메시지 보낼 대화상대 리스트에 추가하는 것까지 해봤어요.

 

응용한다면 메시지 내용을 고정된 내용이 아니라 특정한 정보로 보낼 수 있을것 같아요.

 

예를들면

- 많이본뉴스 1~10위까지 보내기

- 네이트판 톡커들의 선택 보내기

- 멜론 차트 보내기 등

응용할 수 있는 범위가 많네요.

 

또, 이 코드를 서버와 연동해서 스케줄링을 더한다면,

매일 아침 9시에 많이본뉴스 1위~10위까지를 텔레그램 메신저로 받아볼 수 있을거에요.

 

무척 재미있고, 응용분야가 많네요.

 

가만히 있어도 떠먹여주는 이런 똑똑한 기능,

응용하면서 더 업데이트 해볼께요!

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기