어느날 검은사막 게임 패치노트를 전달해주는 디스코드 봇 제작 난이도에 대한 질문을 받았습니다.대형 게임사의 패치노트야 일관된 위치에 일관된 형태로 잘 가공되어 올라올 것이고, 스크래핑만 가능하다면 주기적으로 데이터를 비교하여 디스코드로 전달하기만 하면 어렵지 않을 것
JDA 라이브러리에서는 JDA 객체를 통해 봇을 통제합니다. 디스코드 개발자 페이지를 통해 봇을 생성하면 인증 토큰이 발급되는데, 이 토큰을 가지고 JDA builder를 build하여 JDA 객체를 만들 수 있습니다. 참고 링크 JDA 디스코드 개발자 페이지
단순히 패치노트가 게시되었을 때 디스코드 메시지를 전달하면 되므로, 5분마다 홈페이지의 데이터를 비교하는 방식으로 설계했습니다. 작고 단순한 앱이지만 객체지향적인 설계를 통해 유지보수가 용이하도록 만드려는 목표가 있었습니다.Controller 객체에 run이라는 메소드
Github 바로가기 crawler라고 코딩했지만, 일정한 페이지의 데이터만을 주기적으로 가져오기 때문에 scraper가 더 적합한 단어인 것 같습니다. 웹페이지의 요소를 가져오기 위해 Jsoup 을 사용했습니다. needToSendFailMessage은 멤버변수
컨트롤러 코드를 첨부하여 설명드리겠습니다.먼저 컨트롤러가 생성되며 패치노트들을 저장할 PatchNotesStorage 객체를 만듭니다. MyCrawler에서도 패치노트를 push하기 위해 PatchNotesStorage가 필요하기 때문에 이를 싱글톤으로 만들 것을 고려
간단하다고 단언한 프로젝트를 열심히 짜놨는데 처음엔 제대로 동작하지 않았습니다. 첫번째는 이 앱을 로컬 장비(오드로이드 n2plus)에 올려놨는데, 장비 인터넷 연결 문제가 있어서 아예 웹사이트 데이터를 못 가져오고 있었습니다. 두번째는 게임 업데이트와 홈페이지 업