본문 바로가기
Programming/Backend

[Python] 텔레그램 채팅봇 만들기

by BitSense 2020. 5. 15.
반응형

요 근래 말이 많은 텔레그램입니다. 원격지 컴퓨터에 명령 실행할 방법을 찾다가, 메신저를 통해서 실행해 보자는 아이디어 차원에서 한번 챗봇을 보게 되었는데, 파이썬 + 텔레그램 봇 구성이 생각보다 쉬워 공유를 해봅니다.

telepot 모듈 설치

pip install telepot --upgrade

소스 샘플

import telepot

from telepot.loop import MessageLoop
import time

TOKEN_MAIN = 'BOT_TOKEN'
StartMsg = """
BOT 기본 명령어
1. /help : 도움말
2. 안녕
"""

# 특정 명령어가 입력할 때 반응
def execcommand(message, chat_id):
    args = message.split(' ')
    command = args[0]
    del args[0]

    if command == '/help':
        send(chat_id, StartMsg)

# 메시지를 그대로 전송
def echoserver(message, chat_id, target):
    args = message.split(' ')
    command = args[0]

    if command == '안녕':
        send(chat_id, '안녕하세요~ %s 님!' % target['username'])

# 메시지 텔레그램으로 전송
def send(chat_id, message):
    bot.sendMessage(chat_id, message)

def handler(msg):
    content_type, chat_type, chat_id, msg_date, msg_id = telepot.glance(msg, long=True)

    print(msg)
    if content_type == 'text':
        _message = msg['text']
        if _message[0:1] == '/': # 명령어
            execcommand(_message, chat_id)
        else:
            echoserver(_message, chat_id, msg['from'])

bot = telepot.Bot(TOKEN_MAIN)
bot.message_loop(handler, run_forever=True)

버그 리포트

#1. ssl 접속 오류

urllib3 버전 이슈로 보입니다. 1.25 이상 버전에서 자체 서명된 인증서(self signed cert) 인 경우, SSL 인증서를 무시하는 부분을 거절하네요. 그래서 urllib3 버전을 강제로 다운그레이드 합니다.

# urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='api.telegram.org', port=443): 
pip install urllib3==1.24.3

참조 URL

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

 

반응형