반원 블로그

파이썬 텔레그램 쓰기 - 1. Bot 계정 생성 및 echo 예제 본문

2018~/Python Skill Up

파이썬 텔레그램 쓰기 - 1. Bot 계정 생성 및 echo 예제

반원_SemiCircle 2019. 9. 22. 20:48

참고

https://telepot.readthedocs.io/en/latest/

준비 절차

  1. 모바일 환경(폰)에서 계정 생성 - 연락처가 필요하기 때문

  2. Bot Father검색

  3. 다음 과정 입력

    봇 생성 명령어 : /newbot
    봇을 관리할 이름 : python_test1_bot
    봇이 가질 유저 이름(끝이 bot으로 끝나야됨) :python_test1_bot
    
  4. 이후 나오는 http api access token을 저장해둠

  5. pip install telepot

  6. 기본 테스트 코드 작성

    import telepot
    TOKEN = '토큰값'

기본 예제 - ECHO 기능

import telepot
from telepot.loop import MessageLoop

TOKEN = '토큰값'

def handle(msg):
    content_type, chat_type, chat_id, msg_date, msg_id = telepot.glance(msg, long=True)
    print(content_type, chat_type, chat_id, msg_date, msg_id)
    print(msg)
    print('-'*36)

    if content_type == 'text':
        bot.sendMessage(chat_id, '(Echo)'+msg['text'])

bot = telepot.Bot(TOKEN)
# MessageLoop(bot, handle).run_as_thread()
bot.message_loop(handle,run_forever=True)
print ('Listening ...')

(추가) telepot에서 추천하는 방식으로 수정

import telepot
from telepot.loop import MessageLoop


TOKEN ="토큰값"

def handle(msg):
    content_type, chat_type, chat_id, msg_date, msg_id = telepot.glance(msg, long=True) #long으로 받으면 상세하게 데이터가 옴 https://telepot.readthedocs.io/en/latest/reference.html#telepot.glance
    print(content_type, chat_type, chat_id, msg_date, msg_id)
    print(msg)
    print('-'*36)

    if content_type == 'text':
        bot.sendMessage(chat_id, '(Echo)\n'+msg['text'])

bot = telepot.Bot(TOKEN)
MessageLoop(bot,handle).run_forever() #메인스레드에서 수행
# MessageLoop(bot,handle).run_as_thread() #서브스레드를 생성하여 수행
print ('Listening ...')

import time
while True:
    time.sleep(10)

간단 문서 보내는 예제

  • 다음 포스팅에 없는 send함수의 경우는 sendDocument로 처리(대부분 다 보내진다.)_
import telepot
from telepot.loop import MessageLoop


TOKEN ="토큰값"


def handle(msg):
    content_type, chat_type, chat_id, msg_date, msg_id = telepot.glance(msg, long=True) #long으로 받으면 상세하게 데이터가 옴 https://telepot.readthedocs.io/en/latest/reference.html#telepot.glance
    print(content_type, chat_type, chat_id, msg_date, msg_id)
    print(msg)
    print('-'*36)

    if content_type == 'text':
        if msg['text'] == "/보내":
            filepath = './보내.txt'
            bot.sendMessage(chat_id, '알겠다 기다려 오래걸릴예정')
            bot.sendDocument(chat_id,open(filepath,'rb'))
        elif msg['text'] == "/사진보내":
            filepath = './사진보내.png'
            bot.sendMessage(chat_id, '알겠다 기다려 오래걸릴예정')
            bot.sendDocument(chat_id, open(filepath, 'rb')) #모든 파일형식 가능
            bot.sendPhoto(chat_id, open(filepath, 'rb')) #사진만 가능
        else:
            bot.sendMessage(chat_id, '(Echo)\n'+msg['text'])


bot = telepot.Bot(TOKEN)
MessageLoop(bot,handle).run_forever() #메인스레드에서 수행
# MessageLoop(bot,handle).run_as_thread() #서브스레드를 생성하여 수행
print ('Listening ...')

while True:
    pass
Comments