ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Telegram] 텔레그램 API 시작하기
    서비스평가 및 사용/API사용 2021. 4. 26. 18:23

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

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

     

    텔레그램 봇 기능

    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 를 그대로 사용해도 된다.

    반응형

    '서비스평가 및 사용 > API사용' 카테고리의 다른 글

    [DART API] 전자공시 API 사용하기  (0) 2021.04.28

    댓글

Designed by Tistory.