반응형
정기적으로 특정 알림을 받고 싶을 때 봇이 알려주면 좋겠다는 생각이 들어서 텔레그램 봇을 만들었습니다.
1. 텔레그램에서 'BotFather'을 찾습니다.
2. '/start'를 입력하고 할 수 있는 명령어를 확인합니다.
3. '/newbot' 을 입력하고 봇의 이름을 입력합니다.
두번째 사진은 중복되는 봇의 이름이 있다고 하니 다른 이름을 입력해야 합니다.
4. 정상적으로 이름을 등록하면 아래와 같은 내용이 나옵니다.
'1234:abcd' 형태의 토큰이 발행되며 이 토큰은 아무도 알려주면 안됩니다.
5. 봇에 대한 정보를 확인하려면 '/mybots'를 입력하면 됩니다.
6. python에서 telegram을 설치합니다.
pip install python-telegram-bot --upgrade
7. 채널 생성(+공개 후 비공개)
채널을 생성할 때 공개를 해야지 ID를 확인할 수 있습니다.
공개로 채널을 만들고 ID를 확인한 후 비공개로 전환하면 됩니다.
8. 채널 정보 얻기(+ 채널 ID)
채널에 대한 정보를 얻기 위해 Postman이나 web에 아래 형태로 요청합니다.
api.telegram.org/bot{토큰}/getUpdates
위 정보를 얻었으면 채널을 비공개 해줍니다.
9. python에서 telegram을 설치합니다.
class TelegramBot:
def __init__(self):
token = "" # 토큰 정보
name = "" # 봇 이름
self.core = telegram.Bot(token)
self.updater = Updater(token)
self.id = "" # 개인 아이디
self.name = name
self.sendMessage("엠게임 챗봇을 생성 및 시작합니다.")
def sendMessage(self, text):
self.core.sendMessage(chat_id=self.id, text=text)
def stop(self):
self.updater.start_polling()
self.updater.dispatcher.stop()
self.updater.job_queue.stop()
self.updater.stop()
def showText(self):
updates = self.core.getUpdates()
for m in updates:
print(m.message)
def addHandler(self, cmd, func):
self.updater.dispatcher.add_handler(CommandHandler(cmd, func,))
def start(self):
self.updater.start_polling()
self.updater.idle()
## 태그 받아서 실행하는 방법
def test(bot, update):
yongBot.sendMessage("test 함수 실행")
def stop(bot, update):
yongBot.sendMessage("엠게임 챗봇을 종료합니다.")
yongBot.stop()
def start(bot, update):
yongBot.sendMessage("엠게임 챗봇을 시작합니다.")
yongBot.start()
yongBot = TelegramBot()
yongBot.showText()
yongBot.addHandler("test", test)
yongBot.addHandler("stop", stop)
yongBot.addHandler("start", start)
yongBot.start()
반응형
'개발(합니다) > Python' 카테고리의 다른 글
[Python] SQLAlchemy CRUD 사용하는 방법 (0) | 2021.11.09 |
---|---|
[Python] cryptography로 대칭키 암호화 하는 방법 (0) | 2021.11.08 |
[Python] SQLAlchemy ORM(MySql) 사용하는 방법 (0) | 2021.11.07 |