-
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 --;;;; 아 갑갑합니다.
웹은 하나만 만들면 되지만 보안이 걱정됩니다.
가장 간단하면서 보안까지 어느 정도 해결할 수 있는 것이 봇입니다.
텔레그램의 계정만 잘 관리하면 텔레그램을 통한 해킹은 거의 불가능하니까요..반응형