본문 바로가기
코드리뷰/chatGPT(Python)코드

Telegram API 이용해 네이버 기사를 보여주는 게 가능해?

by 디마드 2024. 3. 30.

Telegram은 코인 정보 수집할 때 자주 들락거렸는데, 한동안 뜸했다. 최근 불장 바람에 다시 들어가 봤더니 수많은 채팅방들이 정보를 쏟아내고 있었다.

나만의 정보 제공방도 만들어 보면 재밌겠다. Telegram에서 제공하는 API를 이용해 메시지를 던지면 된다. 간단한 인사부터 뉴스 기사 정보 등 다양하게 제공할 수 있다. 

1. Telegram API 등록하기

(1) Telegram에서 BotFather 검색한다. 짝퉁이 많으니 공식인지 확인한다. (파란색 둥근 체크박스)

(2) 나만의 bot을 만든다.

/newbot 입력하면 나의 bot을 만들 수 있다. 

(3) bot 이름과 username을 입력한다. username은 'bot'으로 끝나야 하고 중복을 체크한다. 

(4) Telegram API 확인 : HTTP API 확인하고 카피한다. 

(5) 나의 Bot 채팅방도 만들어졌다. 

(6) 채팅방에 접속하자

빈방이라 아무것도 없다. 메시지 입력하면 채팅창에 나온다. 여기에 네이버 뉴스 기사를 크롤링해 보여주는 코드를 작성할 거다. 

2. Telegram API 이용

(1) Telegram API 사이트에 접속하자.

https://core.telegram.org/bots/api

 

Telegram Bot API

The Bot API is an HTTP-based interface created for developers keen on building bots for Telegram. To learn how to create…

core.telegram.org

여러 기능중 Making requests 부분을 이용해 보자. API를 어떻게 호출하는지 이해하는데 도움이 된다. 

https호출할 때 <token>에 자신의 API를 넣어주고, 마지막에 적절한 메소드를 붙여주면 끝이다. 엄청 간단하지 않은가.

(2) 코드 작성하기 - 채팅방 정보 가져오기

api는 노출되지 않도록 관리한다. getUPdates는 채팅방 최신 정보를 가져온다. 

bot_token = "7079857110:AA~~~~~~~~~~~8wFRcDFsdb7MhenmPyM"

def get_updates():
    url = f"https://api.telegram.org/bot{bot_token}/getUPdates"
    res = requests.get(url)
    if res.status_code == 200 :
        # return res.text
        return json.loads(res.text)

result = get_updates()
print(result["result"][-1])

채팅창에 간단한 메시지를 입력하고 코드를 실행한다. 

채팅 정보를 가져온 것을 알수있다. 여기서 중요한 건 id값이다. 이게 있어서 telegram 나의 bot에게 메시지를 보낼 수 있다. 카피하자. 

(myvenv) PS D:\dmad> py .\telegram_1.py
{'update_id': 51000005, 'message': {'message_id': 7, 'from': {'id': 1500000366, 'is_bot': False, ......, 'type': 'private'}, 'date': 1711774546, 'text': '하루이'}}

(2) 코드 작성하기 - 메시지 보내기

chat id를 넣고 API를 이용해 sendMessage를 호출하자. 

    chat_id = ' 1500000366 '
    data = {"chat_id": chat_id, "text": message}

    url = f"https://api.telegram.org/bot{bot_token}/sendMessage"
    res = requests.get(url, data=data)
    if res.status_code == 200:
        return json.loads(res.text)

telegram 알림 창이 뜨면서, 내가 올린 글이 등록되었음을 확인할 수 있다. 

3. Telegram 채팅방에 네이버 기사를 크롤링해 올려보자. 

네이버 기사 키워드 검색해 결과를 수집하고 telegram API를 이용해 채팅방에 보낸다. 


keyword = input("KEYWORD : ")

res = requests.get(url)

if res.status_code == 200:
    html = res.text    
    soup = BeautifulSoup(html, 'html.parser')
   
    title_list = []
    titles = soup.select(".title_link")
    for title in titles[:5]:
        title_list.append(f"{title.text}\n{title['href']}")
    print(title_list)
   
    message = "\n".join(title_list)
    print(message)
    result = send_message(message)
    print(result)    

 

네이버 키워드 검색한 제목과 기사링크가 출력된다. 멋지지 않은가~ 나만의 정보를 제공할 수 있는 채팅방이 만들어진 것이다. 웹 크롤링 정보 수집을 자동화하고 봇을 호출하면 완전 자동 채팅방이 만들어지는 셈이다. 유용한 정보만 제공한다면 많은 가입자가 몰려들지 않겠는가,,,

[파이썬 실행 결과 - 출력창]

OpenAI의 텍스트 to 비디오 모델 소라(Sora)
https://blog.naver.com/hj6149/223360596092
Microsoft과 OpenAI의 혁신적 파트너십: 디지털 혁신과 클라우드의 미래를 선도하다
https://blog.naver.com/archer1123/223378114081
ChatGPT openAI가 만든 SORA가 바꿀 미디어의 미래
[인공지능 활용 강의] OpenAI 소라(Sora)와 피카랩스(PikaLabs) 인물 동영상 비교(2)
https://blog.naver.com/hijunggon/223360426957
OpenAI 샘 알트먼 CEO 해고?? 이유가 뭘까요??
https://post.naver.com/viewer/postView.naver?volumeNo=36903893&memberNo=18265860&vType=VERTICAL

[Telegram 채팅방]

반응형

댓글