[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 확인하기
브라우저 창에 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피드 지원