반응형

업무하다가 웹사이트를 빈번하게 들어가서 검색하기 어려운 것들이 조금 있어서,

메신저에서 검색하고 싶은 내용들이 많아서 봇을 만들어 보려고 한다.

 

텔레그램 봇 기능

https://core.telegram.org/bots 

에 명시된 기능 가능

 

텔레그램 bot api 문서

https://core.telegram.org/api

문서가 있지만 이거로 보고 개발하기 내용물이 많아 라이브러리를 사용하는게 낫겠다.

 

우선 이런 API 들을 사용하려면 키를 발급 받아야 한다.

 

bot 만들기 및 API 키 발급하기

텔레그램 검색창에 BotFather 검색 후 말을 건다.

BotFather 를 사칭하는 애가 ㅁ낳으니 위에서 처럼 ⌵ 로 체크된 공식 파더한테 말을 걸어라

방에 들어가면 위와 같이 help 메시지가 온다.

 

/newbot 이라고 채팅해서 봇을 만들자

        - [ /newbot ] 명령어를 입력하면, 봇의 이름을 입력하라고 함.

         - 봇의 이름이 'bot'으로 끝나지 않는 경우 생성되지 않음.

         - 정상적으로 등록되면 'HTTP API Access Token'을 발급해줌.

 

방이름과 bot 아이디는 변경 가능하다.

방이름 변경 - /mybots

봇이름 변경 - /setname

 

봇을 만들면 API 키값을 준다.

 

 

JAVA API 사용

Java

둘 중에 하나 골라서 사용하면 된다.

 

나는 https://github.com/rubenlagus/TelegramBots 이 API 를 골랐다. 이유는 딱히 없다.

 

자바 API 라이브러리

<dependency>
  <groupId>org.telegram</groupId>
  <artifactId>telegrambots</artifactId>
  <version>5.1.1</version>
</dependency>

예제코드

public static void main(String[] args) {
	SpringApplication.run(TelegramApplication.class, args);

	try {
		TelegramBotsApi api = new  TelegramBotsApi(DefaultBotSession.class);
		api.registerBot(new TestHandlers());
	} catch (TelegramApiException e) {
		e.printStackTrace();
	}

}

위 처럼 TelegramBotsApi 객체 생성 후 봇 정보를 기입한 클래스를 registerBot 에 등록만 해주면 된다.

세부로직은 등록한 클래스 TestHandlers 에서 작성한다.

 

public class TestHandlers extends TelegramLongPollingBot {

    @Override
    public String getBotUsername() {
        return "방제말고 bot 이름";
    }

    @Override
    public void onUpdateReceived(Update update) throws TelegramApiException {
        Message message = update.getMessage();
        log.info(message.toString());
        if (update.hasMessage() && update.getMessage().hasText()) {
            SendMessage sendMessage = new SendMessage();
            sendMessage.setChatId(update.getMessage().getChatId().toString());
            sendMessage.setText("자동 응답으로 보낼 메시지");
            execute(sendMessage);
        }
    }

    @Override
    public String getBotToken() {
        return "API_발급된키 넣어주세요.";
    }
}    

봇으로 등록 할 클래스 에는 TelegramLongPollingBot 을 상속 받아줘서 token 값 및 bot name 을 입력해서 

onUpdateReceived 에 로직 처리를 해주면 된다.

Update 클래스에는 유저 이름 및 id 등 여러 데이터가 넘어온다.

 

위와 같이 스프링 서버나 자바 를 run 시켜주면

telegram.me/봇이름

와 같이 웹 url 로 이동해 텔레그램 메신저로 이동해서 등록된 봇을 확인할 수 있다.

 

 

 

굳이 java api 로 하지않고 텔레그램 api 를 그대로 사용해도 된다.

반응형

+ Recent posts