ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 1. 파이썬으로 텔레그램(telegram) 봇(bot) 만들기
    Python/telegram-bot 2020. 11. 8. 14:38
    반응형

    https://core.telegram.org/bots

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

    스마트폰이나 PC에 텔레그램은 깔려 있겠죠?

    @botfather 을 검색합니다. 

    가장 위에 공식 마크가 있는 것이 진짜입니다. 

    클릭해봅시다.
    봇파더는 새로운 봇 계정을 만들고 기존 봇을 관리할 때 사용하는 봇입니다. 

    시작을 누릅시다.
    저는 예전에 만들었기 때문에 다시 시작이 뜹니다. 

    여기서 /newbot를 클릭합니다. 

    봇의 이름을 고르라고 합니다. 
    간단히 mybot이라는 이름을 정했습니다. 
    겹쳐도 되는 이름입니다. 

    username을 고르라고 합니다. 
    'bot'으로 끝나야 한다고 합니다. 
    겹치면 안 되는 이름입니다. 
    (모자이크 처리했습니다.)

    적당한 이름을 골라주면 API 키가 나옵니다. 
    (모자이크 처리했습니다.)

    다음 주소에 들어가면 봇이 잘 만들어졌는지 확인할 수 있습니다. 

    https://api.telegram.org/bot['토큰']/getMe
    https://api.telegram.org/bot123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11/getMe
    
    {"ok":true,"result":[]}

    처음에는 ok result만 나옵니다. 

    이제 chat id를 알아봅시다. 

    내 봇을 검색한 뒤 클릭해서 대화방에 들어간 뒤 아무 글자나 쳐봅니다. 

    {"ok":true,"result":[{"update_id":000000000,
    "message":{"message_id":000,"from":{"id":732123456,

    message 다음 from 다음 id 가 chat id (732123456)입니다. 

     

    저 페이지를 보시면 아시겠지만, 
    텔레그램은 HTTP API + JSON이라, 
    간단한 데이터 전송은 직접 코딩해도 어렵지 않습니다.

    하지만 이번엔 라이브러리를 사용하겠습니다. 

    검색해 보니 많이 사용하는 라이브러리는 
    telepot과 python-telegram-bot인 것 같습니다. 

    python-telegram-bot 을 이용하겠습니다.  

    (telepot은 2019년 이후로 유지보수를 포기한 프로젝트입니다.)

    cmd 창이나 venv 등의 가상 환경에서 라이브러리를 설치합니다. (가상 환경을 추천합니다.)

    pip install python-telegram-bot
    from telegram import Bot
    from telegram.ext import Updater, MessageHandler, Filters
    
    
    def echo(update, context):
        user_id = update.effective_chat.id
        msg = update.message.text
        print(msg)
        if '안녕' in msg or '하이' in msg:
            context.bot.send_message(chat_id=user_id, text='방가 방가')
        elif '날씨' in msg:
            context.bot.send_message(chat_id=user_id, text='날씨는 안 알랴줌')
        elif '주식' in msg:
            context.bot.send_message(chat_id=user_id, text='주식는 안 알랴줌')
        elif '사진' in msg:
            context.bot.send_message(chat_id=user_id, text='잠시만')
            context.bot.send_photo(chat_id=user_id, photo=open('img.png', 'rb'))
        else:
            context.bot.send_message(chat_id=user_id, text=f'미안 {msg}이(가) 뭔지 잘 몰라.')
    
    
    token = '<>:<>'
    chat_id = 0000000000
    
    bot = Bot(token=token)  # 봇 객체 생성
    
    bot.sendMessage(chat_id=chat_id, text="봇을 실행합니다.")  # 메세지 보내기
    
    updater = Updater(token=token, use_context=True)
    dispatcher = updater.dispatcher
    
    echo_handler = MessageHandler(Filters.text & (~Filters.command), echo)
    dispatcher.add_handler(echo_handler)
    
    updater.start_polling()

    텍스트, 문서, 사진 등을 보낼 수 있습니다.

    봇의 장점은 뭐가 있을까요?

    제가 만약 에어컨, 보일러 온도 조절이 가능한 IoT 서버를 만든다면... 
    이것을 제어하기 위해서는 앱이나, 웹이나, 봇이 필요한데요. 
    앱을 만들려면 안드로이드, 아이폰, PC --;;;; 아 갑갑합니다. 
    웹은 하나만 만들면 되지만 보안이 걱정됩니다. 
    가장 간단하면서 보안까지 어느 정도 해결할 수 있는 것이 봇입니다. 
    텔레그램의 계정만 잘 관리하면 텔레그램을 통한 해킹은 거의 불가능하니까요.. 

    반응형
Designed by Tistory.