실시간 급상승 검색어를 보내주는 봇을 만들려고 합니다. 텔레그램 봇을 만들어서 크롤링(스크래핑)한 실시간 급상승 검색어를 일정 시간마다 쏴주는 프로그램이에요.
이 프로젝트는 아래 과업으로 이루어집니다:
텔레그램 봇 API 접근 권한 얻기(현재 글)
실시간 급상승 검색어 크롤링해 텍스트 파일로 저장
웹크롤링과 메시지 발송을 수행하는 텔레그램 봇 만들기
텔레그램 신규 봇 생성하기
텔레그램으로 메시지를 자동 발송하기 위해서는 봇을 생성해야 합니다.
▼ PC용 텔레그램 클라이언트를 설치해줍니다.
▼ 클라이언트를 실행해 인증과정을 완료하고, 검색창에 "botfather"를 입력합니다. 텔레그램 봇과 관련된 다양한 명령어를 안내해줄 텐데, 우리는 새로운 봇을 생성하려는 것이므로 /newbot을 선택합니다.
▼ 봇 이름과 프론트에 노출될 이용자 이름(username)을 정해주어야 하는데, "opportunity_sender_bot"으로 지었습니다.
▼ 위 과정까지 마치면 API를 사용할 수 있는 토큰(Token)이 주어집니다. 아래 이미지에서 모자이크한 부분이에요. 이건 어디 잘 메모해놓고 유실되지 않도록 조심하세요. 텔레그램의 API를 사용하기 위해 필요합니다.
▼ 그리고 봇을 통해 메세지를 보내기 위해서는 메시지를 수신할 이용자의 ID가 필요합니다. 나에게 보낼 것이기 때문에 내 ID를 알면 됩니다. 이 값은 아까 "botfather"를 입력했던 검색창에 "json dump"를 검색함으로써 알 수 있습니다.
채팅창의 이름대로 json으로 대화에 대한 정보를 정리해 보여주는데, 이 중 message > from 필드에 있는 id(모자이크 처리한 부분)가 본인의 이용자 ID입니다. 이것도 어디 메모해두시길.
텔레그램 봇으로 테스트 메시지 보내기
텔레그램 봇 생성이 끝났으니 이제 테스트 메시지를 발송해보겠습니다. 봇의 발화를 제어할 수 있다면, 그 발화 내용을 내가 원하는 것으로 세팅하고, 정해진 시점에 자동 발송되도록 하여 마치 개인비서처럼 활용할 수 있겠죠.
작업환경은 아래와 같습니다:
1) 파이썬3.7(32bit)
2) 파이썬IDE : Pycharm
▼ 먼저 파이썬 텔레그램 봇 패키지를 설치합니다.
pip install python-telegram-bot
▼ 설치한 패키지를 불러옵니다.
import telegram
▼ 특정 메시지를 봇이 발화하도록 코딩하고 실행해봅니다.
# Replace 'TOKEN' with your actual bot's API token
TOKEN = '여러분이 발급받은 API KEY'
bot = telegram.Bot(token=TOKEN)
# Replace 'CHAT_ID' with the chat ID of the recipient (user or group)
CHAT_ID = '메시지 수신할 이의 user id'
# 발화내용
MESSAGE = 'Telegram 봇 메시지 자동 발송 테스트'
# The message you want to send
# Send the message
bot.send_message(chat_id=CHAT_ID, text=MESSAGE)
결과는 실패입니다. bot.send_message를 실행하는 단계에서 에러가 발생하네요.
조금 알아보니, 예전 버전의 python-telegram-bot 패키지에서 send_message 함수는 동기 함수였는데, 최신 버전에서는 이게 비동기 함수로 바뀐 것 같습니다. 비동기 함수인 send_message를 실행하기 위해 코드를 아래와 같이 조금 수정했습니다.
▼ 새로운 비동기 함수 main()을 정의해, 토큰과 수신자 ID를 입력 받아 send_message가 실행되도록 했습니다. 비동기 함수를 실행하기 위해 asyncio 패키지를 설치하고 불러왔습니다(import). 그리고 코드 실행! 두근두근하네요...
async def main():
# Replace 'TOKEN' with your actual bot's API token
TOKEN = '발급 받은 텔레그램 API KEY'
bot = telegram.Bot(token=TOKEN)
# Replace 'CHAT_ID' with the chat ID of the recipient (user or group)
CHAT_IDs = '메시지 수신할 user의 ID'
# The message you want to send
MESSAGE = 'Telegram 봇 메시지 자동 발송 테스트'
# Send the message using 'await'
await bot.send_message(chat_id=CHAT_ID, text=MESSAGE)
# Run the coroutine
import asyncio
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
결과는? 성공입니다.
-
코드를 보시면 알겠지만, MESSAGE 변수의 내용을 바꿔주면 봇의 발화 내용이 바뀝니다. 그 내용을 실시간 급상승 검색어를 크롤링한 결과로 대체할 수도 있고, 주식시장의 일정, 뉴스 클리핑 등등으로 바꿔줄 수 있습니다. 봇을 훌륭한 업무 자동화툴로 이용하는 거죠.
다음 포스팅부터는 그 방법에 대해 알아보겠습니다.
'Programming > Code Archive' 카테고리의 다른 글
[파이썬] 실시간급상승검색어 자동 발송하는 봇 만들기 3: 웹크롤링과 메시지 발송을 수행하는 텔레그램 봇 (0) | 2023.08.13 |
---|---|
[파이썬] 실시간급상승검색어 자동 발송하는 봇 만들기 2: 실급검 크롤링 (0) | 2023.08.13 |
[파이썬] 인스타그램 해쉬태그(#) 검색결과 크롤링하기_최신ver. (19) | 2022.08.13 |
[파이썬-오픈API] 한국은행 경제통계지표 추출 (0) | 2022.07.02 |
[파이썬] 개편된 구글 플레이 스토어! 앱 리뷰 크롤링 (14) | 2022.06.21 |
댓글