ChatGPT로 텔레그램 챗봇 만들기 - 2. 채널 만들기

저번 시간에 이어서 이번에는 채널을 만들고 그곳에서 자동으로 시간마다 스케쥴로 발송하는 시스템을 만들어 보겠습니다.

2024.06.07 - [Programming] - ChatGPT로 텔레그램 챗봇 만들기 -1. 챗봇 코드 작성

 

ChatGPT로 텔레그램 챗봇 만들기 -1. 챗봇 코드 작성

오늘은 ChatGPT를 활용해서 텔레그램 챗봇을 만들어보는 과정을 알아보겠습니다. 정말 이제 구글 검색을 통하지 않고도, ChatGPT를 통해서 프로그램 만드는건 참 쉬운일이 되었는데요. 텔레그램

remake.tistory.com

 

텔레그램 채널 만들기

텔레그램 하단에 글쓰기를 누른 다음 텔레그램 채널을 생성해 줍니다.

메시지 중 3번째인 채널 만들기를 통해 텔레그램 채널을 만들어 줍니다.

텔레그램 채널을 만들 때 중요한 것은 이름인데요.

 

채널 명은 외부에서 보이는 채널이름이고 공개 링크가 이제 중요한데요. t.me 공개링크를 만들고 꼭 기억해야 합니다.

이 후 아래의 코드를 실행시켜 채널이름에서 채널 아이디를 불러옵니다.

 

import asyncio
from telegram import Bot, Update

async def main():
    bot_token = '토큰'
    bot = Bot(token=bot_token)
    public_chat_name = "@채널이름01"  # 공개 채팅 이름 앞에 @를 추가해야 할 수 있습니다.
    message = await bot.send_message(chat_id=public_chat_name, text="안녕하세요!")
    id_channel = message.chat_id
    print(f"채널 아이디: {id_channel}")

# 메인 코루틴 실행
if __name__ == "__main__":
    asyncio.run(main())

 이것을 실행하면 채널 아이디를 알려줍니다.

 

이 채널에다가 봇이 매번 글을 올리게 되는데요.

 

이제 챗GPT에게 텔레그램 챗봇 코드 작성을 요청합니다.

 

실제 작성된 코드는 아래와 같습니다.

 

정말 따로 멀 하지 않아도 코드를 정말 잘 짜줍니다. 이코드를 통해서 채에 원하는 내용을 보낼 수 있습니다.

이렇게 간단한 알림 봇이 탄생되었습니다.

 

scedule이라는 코드를 통해서 매 10분마다 동작하게 함을 알 수 있습니다.

import requests
from bs4 import BeautifulSoup
from telegram import Bot
from telegram.ext import Updater
import schedule
import time

# 텔레그램 봇 토큰 및 채널 ID 설정
TELEGRAM_TOKEN = 'YOUR_TELEGRAM_BOT_TOKEN'
CHANNEL_ID = '@remake01'

# 텔레그램 봇 초기화
bot = Bot(token=TELEGRAM_TOKEN)

def get_latest_news():
    url = "https://search.naver.com/search.naver?where=news&query=remake&sort=0"
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"
    }

    response = requests.get(url, headers=headers)
    soup = BeautifulSoup(response.text, 'html.parser')

    news_items = soup.select('.news .type01 li dl')
    latest_news = []

    for item in news_items[:3]:  # 최근 뉴스 3개 선택
        title = item.find('a').get_text()
        link = item.find('a')['href']
        source = item.find('span', class_='source').get_text()
        latest_news.append(f"{title} - {source}\n{link}")

    return latest_news

def send_news_to_telegram():
    news = get_latest_news()
    for item in news:
        bot.send_message(chat_id=CHANNEL_ID, text=item)

# 10분마다 실행 스케줄 설정
schedule.every(10).minutes.do(send_news_to_telegram)

def run_scheduler():
    while True:
        schedule.run_pending()
        time.sleep(1)

if __name__ == "__main__":
    run_scheduler()

 

이렇게 간단하게 알림봇을 만들었는데요. 이외에도 chatGPT를 통해서 다양한 알림봇을 만들 수 있습니다.