본문 바로가기

노력을 이기는 재능은 없고
노력을 외면하는 결과도 없다.
- 이창호 9단

D E V E L O P M E N T/TELEGRAM

나만의 텔레그램 봇(TELEGRAM BOT)만들기 - 3. JAVA로 메시지 보내기

  Junesker   2020. 3. 24.
반응형

텔레그램 BotFather 봇을 통해 만든 @StudyJ001Bot을 통해 Java 언어로 메시지를 보내고 동일한 메시지를 주고받는 봇을 만들어보고자 한다. 웹 상에서 메시지를 보낸 방식은 @StudyJ001Bot이 나에게 “text“라는 파라미터에 담긴 메시지를 전송해주는 역할을 했다. 이번 Java 언어로 메시지를 보내고 동일한 메시지를 주고받는 건 사용자가 @StudyJ001Bot에게 ”Hello World!“라고 메시지를 보내면 @StudyJ001Bot이 사용자에게 ”Hello World!“라고 동일한 메시지를 전송해주는 봇을 만들어보려고 한다. 만들기 위해서는 제일 먼저 Java프로젝트가 필요하다. 작성자는 eGovFramework를 이용해 작성하였다.

 

텔레그램 @StudyJ001Bot을 만들기 위해 준비한 스펙이다.

개발Tool eGovFrameDev-3.7.0
Maven maven-3.6.3
jdk jdk1.8

본 작성자는 Maven프로젝트를 이용해 @StudyJ001Bot으로 동일한 메시지를 주고받는 봇을 만들어보려고 한다. 순서대로 차근차근 과정을 밟아가보겠다.

 

 

 

 

 

1.  메이븐 프로젝트를 만든다.

 

메이븐 프로젝트 개설
메이븐 프로젝트 개설

이클립스 상단 메뉴바에 File > New > Maven project를 선택하거나 이클립스 Project Explorer위치에서 Ctrl+N을 눌러 maven을 검색해 Maven project를 선택해 개설할 수 있다. 프로젝트 이름과 위치를 선택하는 화면에서는 "Create a simple project(skip archetype selection)"을 체크하고 Next로 넘어간다. 그룹아이디와 아티펙트 아이디를 입력하는 화면에서 Group id와 Artifact id를 입력해준다. 작성자는 Group id로 "com.project"를 Artifact id로 "studyj001bot"으로 입력하고 packaging을 "war"로 선택 후 Finish해주었다.

프로젝트를 만드는 방법은 꼭 Maven project를 선택하지 않아도 상관은 없다. 자신이 사용하기 쉽고 목적에 맞는 프로젝트가 있다면 그 부분으로 개설하도록 한다.

 

 

 

 

 

2.  텔레그램 BOT API를 사용하기 위한 라이브러리를 등록한다.

 

Maven project의 pom.xml에서는 프로젝트에서 사용될 라이브러리들을 dependency로 관리할 수 있다. telegrambots 라이브러리를 등록한다.

<!-- https://mvnrepository.com/artifact/org.telegram/telegrambots -->
<dependency>
	<groupId>org.telegram</groupId>
	<artifactId>telegrambots</artifactId>
	<version>4.5</version>
</dependency>

pom.xml의 텔레그램 라이브러리를 등록했다면, 프로젝트를 maven update를 실행해 다운로드 받아 올 수 있도록 적용한다. 여기까지 했다면 텔레그램 봇을 만들기 위한 준비는 다 끝났다. 그 외에 필요한 다른 설정도 해주기로 한다.(스프링, 로깅, 데이터베이스 등등)

 

 

 

 

 

3.  StudyJ001Bot을 실행 할 클래스를 만든다.

 

StudyJ001Bot 실행 클래스

MainController에서 main을 실행해 StudyJ001Bot을 작동할 준비를 한다. ApiContextInitializer.init()메서드를 통해서 Api를 사용하기 전 초기화를 먼저 진행한다. 그런 후, TelegramBotsApi 인스턴스를 생성 후 내가 등록할 봇 클래스를 등록해 사용 준비한다. 사용 준비가 완료되었으면 출력문 "TELEGRAM StudyJ001BOT STARTED...!"가 콘솔에 출력된다.

 

 

 

 

 

4.  StudyJ001Bot 클래스를 만든다.

 

StudyJ001Bot 클래스

TelegramLongPollingBot 추상 클래스를 상속받는다. 상속받을때 함께 구현해야하는 오버라이드 메서드도 함께 작성된다. getBotUsername() 메서드에는 "StudyJ001Bot"과 같이 봇의 이름을 명명한다. getBotToken() 메서드에는 Bot API Token 키를 작성한다. onUpdateReceived() 메서드는 우리가 사용할 메서드이다. onUpdateReceived() 메서드는 StudyJ001Bot에 메세지를 보내면 onUpdateReceived() 메서드가 발동하는데, 여기서 메세지를 컨트롤 할 것이다.

 

onUpdateReceived()메서드의 Update객체안에는 많은 정보들이 담겨있는데, 그 중에서 메시지를 이용해 보낸 텍스트와 채팅 아이디로 메세지를 보낸다.

 

StudyJ001Bot onUpdateReceived 메서드

보낼 메세지 객체인 SendMessage 인스턴트를 생성하고 enableHtml(true)로 메시지 타입을 html로 보낼 수 있도록 설정한다. 이렇게하면 "<b>굵은 텍스트</b>", "<a href=''></a>" 와 같은 html태그를 함께 보내 적용할 수 있다. 하지만, 굵은, 이태릭체, 마크다운만 가능하다. 인스턴트 생성된 메시지를 Update객체안에 받은 메시지 그대로를 setText()로 넣어준 후, 채팅 아이디도 setChatId()에 넣어준다. 그리고 최종 execute()메서드로 메시지를 전송한다.

 

 

 

 

 

5.  StudyJ001Bot 실행 후, 메시지 전송 확인

 

MainController 클래스를 실행하고 텔레그램 메신저의 StudyJ001Bot으로 메시지를 보내보자. 내가 입력한 메시지 그대로를 StudyJ001Bot이 동일하게 보내주는것을 확인할 수 있다.

 

StudyJ001Bot 메시지 전송 확인

작성자가 보낸 텍스트 3개가 동일한 메시지로 전송됨을 확인할 수 있다. Java로 간단하게 내가 보낸 메시지를 동일한 메시지로 보내주는 봇을 만들어보았다. 다음에는 특정 명령어를 통해서 이벤트를 처리하는 기능을 만들어보고자 한다.

 

 

반응형

댓글