/network

Primary LanguageJava

GasCalculator

이더리움 네트워크 사용료 알림 텔레그램 챗봇

결과화면👌👌

스크린샷 2023-10-15 224723

느낀점👌👌

최근 자바와 스프링을 열심히 공부하고 있어서, 자바로 한번 구현해보았습니다.

이더리움 api를 받아오는 것과 받아온 문자열에서 필요 데이터를 추출하는 것 까지는 쉬웠습니다.

그러나, 텔레그램에 메시지를 보내는 것과 사용자가 /stop 채팅을 보내면 프로그램이 중단되는 것을 구현하기가 매우 어려웠습니다. 특히 /stop 채팅을 읽어오는 것이 힘들었는데, updates 명령을 통해 서버에서 get 요청을 하면 텔레그램이 모든 채팅 로그를 다 전송했습니다. 그래서 이전에 /stop 명령이 한번이라도 채팅로그에 존재하면 바로 프로그램이 꺼졌습니다.

따라서, 이 문제를 해결하기 위해, 각 메시지 별로 메시지 번호가 있고, 뒤에 보낸 메시지가 이전 메시지보다 메시지 번호 값이 크다는 점으로 문제를 (임시로) 해결했습니다. 1분마다 보내는 메시지의 메시지 번호를 보내면서 저장해서 updates 명령으로 읽어오는 로그에서 해당 메시지 번호 보다 작은 로그는 무시했습니다. 이를 통해 저는 최신 메시지에서 /stop 명령을 읽게 했습니다.

그러나, 이런 방식은 서버가 계속 모든 채팅 로그를 updates 명령으로 읽어오기 때문에 매우 비효율적이라고 생각됩니다. 스프링부트 라이브러리에 텔레그램 챗봇 api 를 활용하면 더 효율적이고, 오류가 나지 않게 구현 할 수 있을 것 같습니다.