중고든 미개봉 신품이든 물건을 사려고 할 때 클리앙 장터를 종종 이용하는 편인데 매순간 게시판을 지켜보고 있을 수는 없다. 게시물들이 많이 올라오기도 하지만 인기있는 품목이 적절하거나 저렴한 가격으로 올라오면 순식간에 거래가 끝나버리기 때문에 시간될 때 장터를 들러서 매물을 확인하고 거래를 하겠다는건 우연을 기다리는 것과 마찬가지이다. 급한 물건도 아니니 마음을 비우고 적당한 가격에 구매하겠다 한다면 그냥 시간될 때 장터를 둘러보는 것만으로도 충분할 수 있으나 특정 물품은 그럴 수가 없었다.
예전에 어떤 분이 텔레그램 클리앙 봇을 만들어 두신게 있었는데 어느 순간부터 제대로 동작하지 않는 것 같았다. 그 분께 연락해서 물어볼 수도 있었겠으나 어차피 과거에 텔레그램 봇을 몇 번 만들어본 적이 있으니 그냥 만들어보기로 했다. 기능은 단순하다. 사용자가 원하는 키워드를 등록하고 특정 게시물이 해당 키워드를 가지고 있으면 텔레그램으로 링크를 보내주는 그런 기능이 주가 되겠다. 사용을 시작하려면 먼저 텔레그램에서 clien_noti_bot을 찾아 추가해 주어야 한다.
현재 배포된 봇은 아래와 같은 명령어를 실행할 수 있다.
- /start : 시작. 봇 찾아서 추가하면 필수적으로 실행하게 되어있다. 간단한 명령어 보여줌.
- /register: 키워드 등록. 여러개의 키워드를 등록할 수 있고 키워드 구분은 공백으로 한다. 이 명령을 다시 실행하면 기존 등록된 키워드 리스트를 통째로 업데이트 한다.
- /list : 등록된 키워드 리스트 확인. 본인이 뭘 등록했는지 보여준다.
- /clear : 키워드 초기화. 이전에 키워드 등록한 걸 싹 지운다.
- /help : 명령어 도움말 표시.
키워드를 등록해두면 45 ~ 75초마다 한번씩 클리앙 장터를 확인해서 해당되는 링크를 보내주는데 대충 요렇게 보인다.
배포는 집에 생성해두고 사용하지 않던 VM에 container로 올려놨는데, 상태 보고 다른 쪽으로 옮길 필요가 있을지도 모르겠다. 클리앙으로부터 ban 당하지 않으려고 많이들 쓰는, 비주기적인 요청을 하도록 해두었는데 아직까진 괜찮으나 어떻게 될지는 모르겠다. 사실 엄청난 것들을 싹 crawling 하는게 아니라 장터에 한해(현재는) 페이지 리스트만 한 페이지 정도 긁어오기 때문에 클리앙 운영 측면에서의 부하는 거의 없을거라고 생각하고 있다.
개선이 필요한 내용
지금은 단순 명령어 실행과 그에 따른 응답만 메세지로 주고받을 수 있는 상태인데 인터랙티브하게 대화를 주고받는 형태로 바꾸는게 더 재미있을 것 같다. 그래야 사용자 입장에서 더 편해지는 부분도 있다.
처음엔 일단 기능구현 위주로 역할 별로 클래스로만 분리해서 한통에 때려넣었다가 지금은 그걸 좀 정리한 수준으로 코드를 수정해두었다. 그러다보니 객체끼리 참견을 많이 하는 구조가 된 것 같고 일단은 이 수준으로 놔둘 생각이다. 한동안 고민을 했던게 중간에 MQ를 두고 기능별로 별도의 서비스로 싹 분리하는 내용이었는데 지금은 그렇게 쪼개는게 더 번거로울 것 같다. 사용 빈도가 높아지면 독립시킬 생각이다.