Python과 Telegram을 조합해서 알람 서비스를 만드는 이유
1. 편리한 알림 기능
Python과 Telegram을 함께 사용하면 간단하고 빠르게 알람 서비스를 구축할 수 있다.
Telegram의 알림 기능을 활용하여 사용자에게 즉각적으로 알림을 보낼 수 있다.
2. 높은 접근성
Telegram은 모바일 기기, 데스크톱, 웹 등 다양한 플랫폼에서 사용할 수 있어서
사용자들이 서비스에 쉽게 접근이 가능하다.
3. 안정성과 보안성
Telegram은 안정적이며 보안성이 뛰어나기 때문에 사용자들이 안심하고 서비스를 이용할 수 있다.
4. 다양한 용도로 활용 가능
Telegram은 채팅뿐만 아니라 봇을 활용한 다양한 기능을 제공하기 때문에,
알람 서비스 외에도 다양한 용도로 활용이 가능하다.
5. 유연성
Python은 다양한 라이브러리와 모듈을 제공하기 때문에,
Telegram과 함께 사용하면 다양한 기능을 추가할 수 있다.
예를 들어, 크롤링, 데이터 분석, 자동화 등 다양한 기능을 추가할 수 있다.
즉, Python과 Telegram을 조합해서 알람 서비스를 만들면,
빠르게 구축하고 안정적으로 서비스를 제공할 수 있으며, 다양한 용도로 활용이 가능하다.
Telegram Bot 생성하기
python과 telegram을 연동하기 위해서는 일단,
telegram에서 메시지를 주고받는 역할을 수행하는 Bot 이 필요하다.
아래의 그림을 보고 Python 을 통해서 어떤 식으로 Telegram 메시지를
주고받을 수 있는지 이해해 보자.
telegram 접속한 다음 BotFather를 검색해서 대화를 걸어보자.
위와 같이 /start를 기입해 주면 여러 설명 및 커맨드가 나온다.
새로운 봇을 생성하는 과정이므로 /newbot을 기입해 주자.
봇의 이름은 bot 이 꼭 들어가야 한다.
Bot의 이름까지 만들었다면, 아래와 같이 Bot의 토큰이 생성될 것이다.
해당 토큰을 이용해서 Bot과 메시지를 주고받을 수 있으므로,
유출되지 않게 잘 보관하고 있어야 한다.
Bot의 토큰만 알아냈다고, 직접적으로 Bot과 메시지를 주고받을 수는 없다.
채팅방 ID 알아내는 과정이 필요하다.
아래의 그림을 보면 Chat Bot 이 하나의 채팅방에만 들어가 있다는 보장을 할 수 없기 때문에,
해당 Bot 이 어떤 채팅방에서 메신저를 주고 받을 것인지 지정해줘야 한다.
그럼 만들어진 봇과 대화를 시작해 보자.
메시지를 적어준 다음 해당 채팅방의 번호를 알아내기 위해
아래의 url을 통해 접속해 주면 된다.
{bot token}이라고 써진 곳에 Bot의 Token을 기입해 주면 된다.
https://api.telegram.org/{bot token}/getUpdates
url에 접속해 주면 사진과 같이 id 가 존재한다.
해당 id 가 채팅방의 id라고 생각하면 된다.
해당 id 도 보관을 해주자.
Python을 통해 Telegram 핸들링하기
Telegram에서 Bot을 만들고 토큰번호와 채팅방 번호까지 알아냈다면,
Python을 통해서 Telegram을 핸들링할 준비가 되었다.
이제 Python 을 통해서 코딩을 해주면 된다.
Telegram 을 핸들링해주기 위해서는 아래의 외부 라이브러리를 받아야 한다.
pip3 install python-telegram-bot
이제 해당 코드를 생성할 폴더를 만들고, telegram 정보를 내포하는 json 파일을 만들어준다.
현재 글쓴이는 아래와 같이 구성하였다.
[tele_info.json]
{
"token": "XXXX:YYYYYYYYY",
"id": "123123123123123..."
}
[telegram_message.py]
import telegram.ext
import asyncio
from datetime import datetime
import json
"""
Read telegram related information.
"""
def telegram_read_infos(telegram_info_path):
telegram_dict = {}
with open(telegram_info_path, "r") as f:
data = json.load(f)
telegram_dict["token"] = data["token"]
telegram_dict["id"] = data["id"]
return telegram_dict
"""
It sends a notification message through telegram.
"""
async def message_telegram(message,telegram_info_dict):
tele_token = telegram_info_dict['token']
tele_id = telegram_info_dict['id']
bot = telegram.Bot(token = tele_token)
await bot.send_message(tele_id,message)
"""
main function
"""
def main():
tele_info_path = './tele_info.json'
telegram_dict = telegram_read_infos(tele_info_path)
now = datetime.now().utcnow().strftime('%Y-%m-%d %H:%M:%S')
send_data = '[{}] {}'.format(now, 'Test sending messages')
try:
asyncio.run(message_telegram(send_data,telegram_dict)) #Code running the bot
except Exception as e:
print(e)
"""
main function - execute
"""
if __name__ == '__main__':
main()
이제 실행시켜 주면 아래와 같은 메시지를 받을 수 있다.
'개발 & 구현' 카테고리의 다른 글
[c++] Elasticsearch Cluster metric 알람 구현 - 최적화 (0) | 2023.09.19 |
---|---|
[c++] Elasticsearch Cluster metric 알람 구현 (2) | 2023.09.18 |
[Python] Telegram 응답 받기 (0) | 2023.05.03 |
JAVA 메시지 보내기 - SMTP (0) | 2022.12.03 |
QR코드 로그인 구현 (1) | 2022.05.13 |