THN 디스코드 봇
대학 시절부터 지금까지 저와 거의 모든 친구들은 디스코드를 주요 소셜 메시징 플랫폼 중 하나로 사용하고 있습니다. 그 당시에도, 지금도 저는 사이버보안 관련 뉴스를 최신 상태로 유지하고 싶었습니다. 그래서 재미있는 프로젝트로 친구와 함께 더 해커 뉴스의 사이버보안 뉴스를 디스코드 서버에 재게시하는 디스코드 봇을 만들자고 생각했습니다. 친구에게 아이디어를 제안했더니 친구도 마음에 들어 했고, 그래서 개발을 시작했습니다.
더 해커 뉴스 (THN)은 사이버보안 뉴스 사이트입니다. 참고로 THN은 NOT 해커 뉴스. 더 해커 뉴스라는 이름이 기술 창업에 초점을 맞춘 매우 인기 있고 전설적인 소셜 뉴스 웹사이트인 해커 뉴스와 매우 유사하다는 점에 대해 약간의 논란이 있었습니다. 하지만 더 해커 뉴스를 항상 사용해온 사람으로서 저는 더 해커 뉴스가 사이버보안 뉴스를 얻기에 좋은 출처라고 생각합니다.
이 프로젝트를 진행하면서 제가 겪은 한 가지 문제는 THN에서 뉴스를 추출하는 방법을 찾는 것이었습니다. 사용 가능한 유일한 옵션은 트위터 API를 사용하거나 THN을 웹 스크래핑하는 것이었습니다. 트위터 API를 작동시키기 위해 어느 정도 시간을 들여 시도했지만, 트위터가 API를 설정하고 사용하는 것을 매우 어렵게 만들어 포기했습니다. 그래서 대신 THN을 웹 스크래핑하는 방법을 택했습니다. 코드베이스가 파이썬으로 작성될 예정이었기 때문에 웹 스크래핑을 위해 requests와 beautifulsoup4를 사용했습니다.
스크래퍼가 작동한 후 다음으로 우리가 다룬 것은 디스코드 봇이었습니다. 디스코드 봇을 만들고 배포하는 것은 매우 간단합니다. 그래서 하루도 채 안 되어 봇을 빠르게 작동시켰습니다. 그 기간 동안 디스코드 서버도 설정했습니다.
추가한 기능 중 하나는 “필터” 기능이었습니다. 이 기능은 THN 기사를 “애플-뉴스”, “구글-뉴스”, “리눅스-뉴스” 및/또는 “마이크로소프트-뉴스"인지에 따라 분류했습니다. 해당 유형의 뉴스를 각기 다른 채널로 분류했습니다. 모든 기사를 포함하는 “전체” 채널도 여전히 있었지만, 이 기능은 기사 유형을 어느 정도 분류해 주고 구현이 그리 어렵지 않았기 때문에 유용하다고 생각했습니다.
이 모든 것을 알고 보면, 디스코드 봇이 작동한 일반적인 방식은 다음과 같습니다:
- 매 1시간마다 THN을 스크래핑하여 기사에 대한 핵심 정보를 추출했습니다. 이 정보에는 제목, 세부 내용, 날짜, 그리고 기사 URL이 포함되었습니다.
- 그 다음 봇은 서버의 메시지 기록을 확인하여 스크랩한 기사 중 새로 나온 것이 무엇인지 확인했습니다. 이렇게 하면 봇이 이미 게시한 기사를 다시 게시하지 않도록 합니다.
- 앞에서 설명한 특정 주제별로 새 기사를 필터링했습니다.
- 모든 기사가 수집되고 필터링된 후, 봇은 각 기사의 URL을 디스코드 서버에 게시하고 해당하는 채널에도 게시했습니다.
- 이 모든 작업이 끝나면 봇은 동일한 단계를 다시 수행하기 위해 한 시간 동안 대기합니다.
결론적으로 이 디스코드 봇은 전부 파이썬으로 작성되었고 다음과 같은 서드파티 패키지를 사용했습니다: beautifulsoup4, requests, discord.py, python-dotenv. 또한 이 디스코드 봇은 32비트 라즈베리 파이 OS 라이트를 실행 중인 제 라즈베리 파이 3 B+에 호스팅되었습니다. 봇은 다음과 같이 실행했습니다:
# run the bot in the background
python3 bot.py &
봇과 서버를 모두 설정한 후 우리는 프로젝트를 친구들과 학우들에게 공유했습니다. 일주일 만에 약 25명이 서버에 가입했습니다.
하지만 몇 달 후, 사람들은 서버를 실제로 잘 사용하지 않고 대부분 서버를 떠났거나 서버의 모든 채널을 음소거한 것을 발견했습니다. 그들이 그렇게 한 주된 이유는 대부분의 사용자들이 보다 개인적이고 맞춤형 필터 옵션을 원했고, 대부분은 사이버보안에 그다지 관심이 없었기 때문입니다.
이 때문에 우리는 디스코드 서버를 폐쇄하기로 결정했습니다. 이 프로젝트는 2022년 2월부터 2022년 5월까지 진행되었고, 공식적으로 2022년 5월 25일에 종료되었습니다. 이 날 우리는 봇을 중지하고, 디스코드 서버를 삭제했으며, 이 프로젝트를 위해 생성한 디스코드 봇 계정을 삭제했고, 코드를 이 깃허브 저장소에 완전히 오픈소스로 공개했습니다.
전반적으로 이 프로젝트는 재미있었고 많은 것을 배웠습니다. 또한 당시에는 몰랐지만, 이 프로젝트는 우리 최대 프로젝트인… 노티파이-사이버의 초기 시작/버전이었습니다!