자기개발

[K코딩] 텔레그렘 뉴스 크롤링 봇 채널에 추가하기(V2)

Tubeking 2025. 7. 21. 08:55
반응형

[K코딩] 텔레그렘 뉴스 크롤링 봇 채널에 추가하기(V2)
[K코딩] 텔레그렘 뉴스 크롤링 봇 채널에 추가하기(V2)

나의 텔레그램 뉴스 크롤링봇 만들기 프로젝트!

이번 2회차에서는 실제로 뉴스 데이터를 가져와서,
텔레그램 봇을 통해 내 채널에 자동으로 보내주는 기능까지 구현해봅니다.
복잡할 것 같다고요? 괜찮습니다.
40대 아재도 했습니다. 천천히 따라오세요.
당신도 분명 할 수 있습니다.


1. 개발 프로세스 

① 텔레그램 채널 개설  → ② 뉴스봇 채널에 추가   ③ 채널에 뉴스 크롤링하기  

2. 텔레그램 채널 개설

텔레그램상단바
텔레그램상단바
채널만들기
텔레그램 채널 만들기

1️⃣ 메뉴 열기

  • 텔레그램 좌측 상단의 세 줄 메뉴(☰) 를 클릭합니다.

2️⃣ ‘채널 만들기’ 클릭

  • 메뉴가 열리면 ‘채널 만들기’ 를 클릭합니다.
    (그룹 만들기와는 다르니 주의)

3️⃣ 채널 정보 입력

  • 채널 이름설명, 프로필 이미지를 설정합니다.
  • 작성 후, ‘다음’ 버튼을 클릭합니다.

4️⃣ 공개 여부 선택

  • 공개 채널: 누구나 검색 가능하며 참여할 수 있음
  • 비공개 채널: 초대 링크로만 참여 가능
  • 원하는 유형을 선택 후, 링크 주소(custom link) 도 설정합니다.

※ 봇 추가 후 크롤링을 위해선 채널 공개로 만들어 주셔야 합니다. 

📌 텔레그램 그룹 vs 채널 차이점 비교

항목 그룹 채널
목적 구성원 간의 양방향 소통 관리자 중심의 일방향 정보 전달
대화 가능 여부 구성원 모두 대화 가능 기본적으로 관리자만 발송 가능 (댓글 기능 설정 시 제한적 소통 가능)
참여자 수 최대 20만 명 무제한 구독자 수
익명성 관리자도 실명 또는 별명 표시 익명 관리자 설정 가능
사용 예시 커뮤니티, 프로젝트 팀방, 교회/학급 단체 뉴스 전송, 공지, 브로드캐스트, 블로그 알림
관리자 권한 설정 세부 권한 조정 가능 (삭제, 초대, 핀 등) 게시자와 비게시자로 구분됨
메시지 고정 모두 가능 관리자만 가능
댓글 기능 일반 대화 방식 게시물당 댓글 활성화 가능
공개/비공개 설정 가능 가능


5️⃣ 채널 개설 및 봇 초대와 관리자 권한 설정

텔레그램채널개설
텔레그램채널개설

 1) 채널 개설 완료

 2) 채널에 봇 초대하기

 ① 채널 설정 메뉴 진입

  • 채널 우측 상단 또는 PC 기준 우측 프로필 영역 클릭
  • 하단의 「구독자 목록」 또는 「관리자 목록」 클릭

 ② 사용자 추가 (봇 초대)➕

  • + 사람 모양 아이콘 클릭
  • 미리 생성된 봇 아이디(ex. @myBot)를 검색하여 선택
  • 선택 후 ‘관리자로 추가’를 클릭해야 봇이 채널에 메시지를 보낼 수 있음

 3) 봇에 글쓰기 권한 부여

🛠️ 관리자 권한 설정 (필수)

  • 봇을 단순 초대만 하면 글쓰기 불가
  • 반드시 관리자 권한을 부여해야 함

 


3. 채널에 기사 크롤링하기

1️⃣ Chat ID 확인하기

채널에있는 봇의 chat id 확인하기
채널에있는 봇의 chat id 확인하기

브라우저 창에 https://api.telegram.org/(본인의 봇api)/getChat?chat_id=@kfastnews (@채널명) 을 입력하면 -숫자로 시작되는 부분이 나옵니다. ( 채널에서 채팅을 전송한후 진행)  이것이 채널에 있는 봇의 chat ID 입니다. 이것을 잘 복사해두고 기존에 코딩했던 부분의 Chat ID 부분을 변경해주면 코드 변경이 완료 됩니다. 

2️⃣ 코드작성

import asyncio
import feedparser
from telegram import Bot

# 📌 [1] 설정
TELEGRAM_TOKEN = '  '  # BotFather에서 받은 토큰
CHAT_ID = '   '  # 본인의 chat_id (숫자)

# 📌 [2] RSS 뉴스 가져오기
def get_rss_news(feed_url, max_items=5):
    feed = feedparser.parse(feed_url)
    news_list = []

    for entry in feed.entries[:max_items]:
        title = entry.title
        link = entry.link
        news_list.append(f"📰 {title}\n🔗 {link}")
    
    return news_list

# 📌 [3] 텔레그램으로 전송 (비동기)
async def send_rss_news():
    bot = Bot(token=TELEGRAM_TOKEN)
    rss_url = 'https://www.korea.kr/rss/policy.xml'
    news_items = get_rss_news(rss_url)

    for news in news_items:
        try:
            await bot.send_message(chat_id=CHAT_ID, text=news)
        except Exception as e:
            print(f"❌ 전송 실패: {e}")

# 📌 [4] 실행
if __name__ == '__main__':
    asyncio.run(send_rss_news())

📌 [1] 설정 TELEGRAM_TOKEN = '  '  # BotFather에서 받은 토큰 CHAT_ID = '   '  # 본인의 chat_id (숫자) 이부분을 수정하고 실행하기!!

3️⃣ 실행화면

코드 실행화면
코드 실행화면

정부정책 관련 뉴스를 실시간으로 받아보기 위해 기획한 텔레그램 채널 ‘K-정부정책’에 자동 전송이 정상적으로 작동하는 것을 확인했습니다.

4. NEXT STEP.

1️⃣ 실시간 기사 업로드시 자동 크롤링 및 자동 실행기능
2️⃣ 중복뉴스 전송금지
3️⃣ 키워드 필터링 기능
4️⃣ 멀티 RSS피드 지원

 

 

반응형