- JDK 17버전으로 빌드되어 해당 버전보다 같거나 높은 버전에서 수행되어야 합니다.
- Discord Bot Token
- '치지직-알림' 채팅 채널
shadowJar로 빌드된 jar파일을 -jar 명령어로 실행하되, 첫번째 arg값은 디스코드의 봇 토큰, 두번째 arg값은 치지직 api 파싱 주기(초단위)로 입력하면 되겠습니다 [ 선택사항 ]
/java -jar build.jar(빌드된 파일) token값 interval값-선택
interval값이 설정되어 있지 않으면 기본 60초로 지정됩니다.
공식 API를 제공하지 않아 크롬 개발자도구를 이용, api 주소를 확인하고 요청하는 방식으로 제작되었습니다.
"공식적인" API가 아니기 때문에, 위 프로그램을 사용하면서 발생하는 IP차단 등의 문제를 책임질 수 없습니다. 명심 부탁드립니다.
API는 2개로 구성되어 있습니다.
- 치지직 고유 id를 이용해 라이브 및 방송인 정보를 반환하는 api
- 스트리머 이름을 통해 검색할 수 있는 api
우선 라이브 여부를 확인하기 위해선 치지직 고유 id를 알아야 할 필요가 있는데, 검색 api(2번)를 이용, 스트리머 이름과 고유 id를 얻어와 저장합니다. 해당 url로 요청시에 keyword부분을 스트리머 이름으로 변경하고 GET요청을 하면 다음과 같이 반환됩니다. 뭔가 깔끔하지는 않습니다. URL에 쓸데없는 쿼리문이 많은데 키워드를 제거하고 요청하면 확실히 깔끔해집니다.
이제 이를 파싱하고, 해당 채널id를 이용해 라이브 여부를 확인할 수 있습니다. 해당 api의 openLive를 통해 현재 라이브 여부를 측정합니다.
따라서 추가된 스트리머의 정보를 주기적으로 확인하고, 라이브가 꺼져있었는데 켜져있거나, 그 반대의 경우에 디스코드로 notify를 수행합니다.
해당 치지직 api에 아무런 헤더 없이 raw하게 요청할경우 timeout이 발생합니다. 이때 user-agent를 지정한다면 문제없이 호출됩니다.
초반에 봇 부분 구현할때까지만 해도 테스트코드를 작성하면서 짜고 있었는데, 후반부로 가니 런타임 테스트가 편한 버릇이 나와버려서.. 테스트를 작성하지 못한 부분이 넘 아쉬웠습니다 추후에 개선한다면 테스트코드를 좀더 작성하는 방안으로 생각하고 있습니다..ㅜ
- 디스코드 봇 리로드 명령어
- 추가한 스트리머 목록 봇 종료시에도 저장해두어 다시 켜도 불러올 수 있게.
- 서버별로 추가된 스트리머 분리후 알림 발송 (현재는 전역적으로 관리됨 - multple server(guild) 미지원