텔레그램은 파이썬에서 쉽게 사용할 수 있는 API를 제공해 준다
주로 자바만 다루다가 파이썬을 시작하니 좀 두려웠는데, 생각보다 설치도 간단하고 쉬웠다.
새로운 툴을 적응하는 게 어려워서 비주얼 스튜디오 코드를 써야 할지 고민했지만
그냥 노트패드를 열고 수정해도 됐다,,,, 오....
하려고 하는 코드는!! 텔레그램의 대화방 스크래핑이다.
뭘 하다보니 대화방 스크래핑이 필요했고 만들어봤다
import time
import re
from telethon import TelegramClient, events
import asyncio
# 사용자 계정에 대한 API ID와 API HASH를 입력하세요
api_id = ''
api_hash = ''
# 텔레그램 클라이언트 설정
client = TelegramClient('session_name', api_id, api_hash)
channel_id = ''
channel_name=''
def extract_text_message(text):
start_time = time.time() # 시작 시간 기록
match = re.search(r'([a-zA-Z0-9])', text)
if match:
text_message = match.group(0)
return message, start_time
return None, None
async def send_to_channel(text_message, start_time):
try:
await client.send_message(channel_username, text_message)
end_time = time.time() # 끝 시간 기록
elapsed_time = end_time - start_time # 소요된 시간 계산
print(f"성공적으로 전송했습니다! 메시지: {text_message}")
print(f"메시지 전송에 걸린 시간: {elapsed_time:.2f}초") # 소수점 2자리까지 출력
except Exception as e:
print(f"오류 발생: {e}")
async def handle_new_message(event):
message = event.message
text_message, start_time = extract_text_message(message.text)
if text_message:
print(f"새로운 메시지: {text_message}")
await send_to_channel(text_message, start_time)
async def main():
# 텔레그램 서버에 로그인
await client.start()
channel = await client.get_entity(channel_id)
# 실시간으로 메시지를 감지
client.add_event_handler(handle_new_message, events.NewMessage(chats=channel_id))
print(f"{channel_id} 실시간으로 메시지를 감지합니다...")
# 계속 실행되도록 대기
await client.run_until_disconnected()
# 비동기 실행
try:
asyncio.run(main())
except KeyboardInterrupt:
print("프로그램이 종료되었습니다.")
# 추가로 필요한 종료 처리 로직이 있으면 여기에 작성
굉장히 많은 모듈이 있었고 라이브러리가 있는 것 같다.
이거 말고 텔레그램 봇도 만들고 싶은데
시간 나면 텔레그램 봇도 만들어서 돌려보고 싶다
+ 안정성을 높이기 위한 코드도 들어가면 좋을 것 같은데, 시간이 중요해서 느려질까봐 못 넣음
+ 속도 향상을 위한 최적화를 진행하고 싶지만 아직 거기까지는 모르겠음.