📱 [자동화 필수] Java 텔레그램 봇으로 알림 메시지 발송하기 (pengrad API)
시스템 모니터링, 알림, 또는 자동화된 정보를 사용자에게 즉시 전달할 때 **텔레그램 봇**은 매우 효과적입니다. Java 프로젝트에서 **`pengrad/java-telegram-bot-api`** 라이브러리를 사용하여 텔레그램 메시지를 발송하는 방법을 단계별로 안내합니다.
1. 🔑 준비 사항: Bot Token 및 Chat ID 획득
메시지 발송을 위해서는 두 가지 핵심 정보가 필요합니다.
- Bot Token (`botToken`): @BotFather를 통해 봇을 생성하고 발급받는 고유 식별 키입니다.
- 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 요청을 텔레그램 서버로 전송하고 응답을 받습니다.
댓글
댓글 쓰기