기본 콘텐츠로 건너뛰기

Java 텔레그램 봇으로 알림 메시지 발송하기 (pengrad API)

📱 [자동화 필수] Java 텔레그램 봇으로 알림 메시지 발송하기 (pengrad API)

📱 [자동화 필수] Java 텔레그램 봇으로 알림 메시지 발송하기 (pengrad API)

시스템 모니터링, 알림, 또는 자동화된 정보를 사용자에게 즉시 전달할 때 **텔레그램 봇**은 매우 효과적입니다. Java 프로젝트에서 **`pengrad/java-telegram-bot-api`** 라이브러리를 사용하여 텔레그램 메시지를 발송하는 방법을 단계별로 안내합니다.


1. 🔑 준비 사항: Bot Token 및 Chat ID 획득

메시지 발송을 위해서는 두 가지 핵심 정보가 필요합니다.

  1. Bot Token (`botToken`): @BotFather를 통해 봇을 생성하고 발급받는 고유 식별 키입니다.
  2. Chat ID (`telegramNo`): 메시지를 수신할 채팅방(개인, 그룹, 채널)의 고유 ID입니다. 보통 @userinfobot 등을 통해 얻을 수 있습니다.

2. 📦 Maven 의존성 설정

프로젝트의 pom.xml 파일에 `pengrad` 라이브러리를 추가합니다.

pom.xml 의존성


<dependency>
    <groupId>com.github.pengrad</groupId>
    <artifactId>java-telegram-bot-api</artifactId>
    <version>6.8.0</version> <!-- 최신 안정화 버전 사용을 권장합니다. (예: 6.8.0) -->
</dependency>
        

3. 🚀 텔레그램 메시지 발송 Java 코드

제공된 코드를 기반으로, 봇 객체를 생성하고 SendMessage 요청을 구성한 뒤 실행하는 표준 메서드입니다. (textMessage는 전송할 메시지 문자열로 외부에서 정의되어야 합니다.)

`TelegramBotSender.java` (메시지 발송 메서드)


import com.pengrad.telegrambot.TelegramBot;
import com.pengrad.telegrambot.model.request.ParseMode;
import com.pengrad.telegrambot.request.SendMessage;
import com.pengrad.telegrambot.response.SendResponse;

public class TelegramBotSender {

    // (참고: 실제 코드에서는 토큰과 Chat ID를 환경 변수 등으로 관리해야 합니다.)
    private static final String BOT_TOKEN = "###############"; 
    private static final String TELEGRAM_NO = "###############"; 

    public static void sendMessage(String textMessage) throws Exception {

        TelegramBot bot = new new TelegramBot(BOT_TOKEN);

        // SendMessage 요청 객체 생성
        SendMessage request = new SendMessage(TELEGRAM_NO, textMessage)
             // 메시지 내용에 HTML 태그를 적용하여 굵게, 링크 등을 사용할 수 있게 설정
            .parseMode(ParseMode.HTML) 
            // 메시지에 포함된 링크의 웹 페이지 미리보기를 비활성화
            .disableWebPagePreview(true)
            // 수신 시 알림음(Notification) 활성화 (기본값 false)
            .disableNotification(false); 

        // 봇 실행 및 응답 수신
        SendResponse sendResponse = bot.execute(request);

        // 응답 상태 확인
        boolean ok = sendResponse.isOk();

        if (ok) {
            System.out.println("메세지 보내기 성공");    
        } else {
            // 실패 시 에러 코드와 설명 출력
            System.err.println("메세지 보내기 실패. Error Code: " + sendResponse.errorCode() + 
                               ", Description: " + sendResponse.description());
        }
    }
}
        

4. 🔑 핵심 옵션 설명

  • **`new TelegramBot(botToken)`:** 봇 토큰을 사용하여 봇 인스턴스를 초기화합니다. 이 인스턴스를 통해 모든 API 호출이 이루어집니다.
  • **`new SendMessage(telegramNo, textMessage)`:** 메시지를 보낼 대상(Chat ID)과 보낼 메시지 내용을 지정합니다.
  • **`.parseMode(ParseMode.HTML)`:** 메시지 내용(`textMessage`)에 포함된 HTML 태그(예: <b>굵게</b>, <a href="...">링크</a>)를 텔레그램이 인식하여 스타일링하도록 설정합니다. (Markdown도 지원됨)
  • **`.disableWebPagePreview(true)`:** 메시지에 URL이 포함되어 있어도 미리보기 박스가 생성되지 않도록 설정합니다. 알림의 불필요한 영역 확장을 방지할 때 유용합니다.
  • **`bot.execute(request)`:** 실제 API 요청을 텔레그램 서버로 전송하고 응답을 받습니다.

이 코드를 활용하여 시스템 장애 알림, 특정 이벤트 발생 통보 등 다양한 자동화 알림 시스템을 구축해 보세요. 텔레그램 봇은 Java 개발에서 빠질 수 없는 강력한 알림 도구입니다. 💯

© 2025 칼퇴하는 개발자. 모든 권리 보유.

댓글

이 블로그의 인기 게시물

Java Servlet Request Parameter 완전 정복 — GET/POST 모든 파라미터 확인 & 디버깅 예제 (Request Parameter 전체보기)

Java Servlet Request Parameter 완전 정복 — GET/POST 모든 파라미터 확인 & 디버깅 예제 Java Servlet Request Parameter 완전 정복 웹 애플리케이션에서 클라이언트로부터 전달되는 Request Parameter 를 확인하는 것은 필수입니다. 이 글에서는 Java Servlet 과 JSP 에서 GET/POST 요청 파라미터를 전체 출력하고 디버깅하는 방법을 다양한 예제와 함께 소개합니다. 1. 기본 예제: getParameterNames() 사용 Enumeration<String> params = request.getParameterNames(); System.out.println("----------------------------"); while (params.hasMoreElements()){ String name = params.nextElement(); System.out.println(name + " : " + request.getParameter(name)); } System.out.println("----------------------------"); 위 코드는 요청에 포함된 모든 파라미터 이름과 값을 출력하는 기본 방법입니다. 2. HTML Form과 연동 예제 <form action="CheckParamsServlet" method="post"> 이름: <input type="text" name="username"><br> 이메일: <input type="email" name="email"><b...

PostgreSQL 달력(일별,월별)

SQL 팁: GENERATE_SERIES로 일별, 월별 날짜 목록 만들기 SQL 팁: GENERATE_SERIES 로 일별, 월별 날짜 목록 만들기 데이터베이스에서 통계 리포트를 작성하거나 비어있는 날짜 데이터를 채워야 할 때, 특정 기간의 날짜 목록이 필요할 수 있습니다. PostgreSQL과 같은 데이터베이스에서는 GENERATE_SERIES 함수를 사용하여 이 작업을 매우 간단하게 처리할 수 있습니다. 1. 🗓️ 일별 날짜 목록 생성하기 2020년 1월 1일부터 12월 31일까지의 모든 날짜를 '1 day' 간격으로 생성하는 쿼리입니다. WITH date_series AS ( SELECT DATE(GENERATE_SERIES( TO_DATE('2020-01-01', 'YYYY-MM-DD'), TO_DATE('2020-12-31', 'YYYY-MM-DD'), '1 day' )) AS DATE ) SELECT DATE FROM date_series 이 쿼리는 WITH 절(CTE)을 사용하여 date_series 라는 임시 테이블을 만들고, GENERATE_SERIES 함수로 날짜를 채웁니다. 결과 (일별 출력) 2. 📅 월별 날짜 목록 생성하기 동일한 원리로, 간격을 '1 MONTH' 로 변경하면 월별 목록을 생성할 수 있습니다. TO...

CSS로 레이어 팝업 화면 가운데 정렬하는 방법 (top·left·transform 완전 정리)

레이어 팝업 센터 정렬, 이 코드만 알면 끝 (CSS 예제 포함) 이벤트 배너나 공지사항을 띄울 때 레이어 팝업(center 정렬) 을 깔끔하게 잡는 게 생각보다 어렵습니다. 화면 크기가 변해도 가운데에 고정되고, 모바일에서도 자연스럽게 보이게 하려면 position , top , left , transform 을 정확하게 이해해야 합니다. 이 글에서는 아래 내용을 예제로 정리합니다. 레이어 팝업(center 정렬)의 기본 개념 자주 사용하는 position: absolute / fixed 정렬 방식 질문에서 주신 스타일 top: 3.25%; left: 50%; transform: translateX(-50%) 의 의미 실무에서 바로 쓰는 반응형 레이어 팝업 HTML/CSS 예제 1. 레이어 팝업(center 정렬)이란? 레이어 팝업(레이어 팝업창) 은 새 창을 띄우는 것이 아니라, 현재 페이지 위에 div 레이어를 띄워서 공지사항, 광고, 이벤트 등을 보여주는 방식을 말합니다. 검색엔진(SEO) 입장에서도 같은 페이지 안에 HTML이 존재 하기 때문에 팝업 안의 텍스트도 정상적으로 인덱싱될 수 있습니다. 즉, “레이어 팝업 센터 정렬”, “레이어 팝업 만드는 방법”과 같이 관련 키워드를 적절히 넣어주면 검색 노출에 도움이 됩니다. 2. 질문에서 주신 레이어 팝업 스타일 분석 질문에서 주신 스타일은 다음과 같습니다. <div class="layer-popup" style="width:1210px; z-index:9001; position:absolute; top:3.25%; left:50%; transform:translateX(-50%);"> 레이어 팝업 내용 <...