# MangBoard Telegram 알림 플러그인
MangBoard 게시판에 사용자가 새글, 답변, 댓글을 등록하면 텔레그램으로 관리자에게 실시간 알림을 전송하는 WordPress 플러그인입니다.
| 항목 | 내용 |
|------|------|
| 플러그인명 | MangBoard Telegram Notification |
| 버전 | 1.0.0 |
| 파일 위치 | `wp-content/plugins/mangboard-telegram-notifications/` |
| 메인 파일 | `mangboard-telegram-notifications.php` (488줄) |
| 의존 | MangBoard WP 플러그인 v2.4.x, WordPress 6.x, PHP 8.x |
| DB 옵션 키 | `wmbt_settings` (wp_options 테이블) |
---
# # 개발 연혁
```mermaid
timeline
title 개발 연혁
1차 : 요구사항 분석 및 설계 — MangBoard 훅 분석
: mbw_board_api_footer, mbw_comment_api_footer 발견
2차 : mu-plugin으로 초기 개발
: wp-content/mu-plugins/ 에 배치
3차 : 일반 플러그인으로 전환
: wp-content/plugins/ 로 이동
: Telegram 알림 최상위 메뉴 추가
4차 : URL 생성 버그 수정
: mbw_get_url() 네이티브 함수 호출로 해결
```
---
# # 개발 연혁
```mermaid
flowchart TD
A["1차: 요구사항 분석 및 설계"] --> B["MangBoard 훅 분석"]
B --> C["mbw_board_api_footer 발견"]
B --> D["mbw_comment_api_footer 발견"]
A --> E["2차: mu-plugin으로 초기 개발"]
E --> F["wp-content/mu-plugins/ 에 배치"]
F --> G["3차: 일반 플러그인으로 전환"]
G --> H["wp-content/plugins/ 로 이동"]
H --> I["Telegram 알림 최상위 메뉴 추가"]
I --> J["4차: URL 생성 버그 수정"]
J --> K["mbw_get_url() 네이티브 함수 호출로 해결"]
style A fill:#E3F2FD
style G fill:#C8E6C9
style K fill:#C8E6C9
```
---
# # 알림 대상 이벤트
```mermaid
flowchart LR
subgraph Board["게시글 Hook"]
H1["mbw_board_api_footer"]
W["write = 새글"]
R["reply = 답변"]
end
subgraph Comment["댓글 Hook"]
H2["mbw_comment_api_footer"]
CW["write = 댓글"]
CR["reply = 댓글 답변"]
end
W --> N1["wmbt_notify_board()"]
R --> N1
CW --> N2["wmbt_notify_comment()"]
CR --> N2
N1 --> TG["Telegram Bot API"]
N2 --> TG
```
| 이벤트 | MangBoard Hook | 조건 | 텔레그램 메시지 |
|--------|---------------|------|----------------|
| 새글 등록 | `mbw_board_api_footer` | `board_action === 'write'` | 게시판명, 제목, 작성자, 시간, 글 링크 |
| 답변 등록 | `mbw_board_api_footer` | `board_action === 'reply'` | 게시판명, 원글 제목, 답변 제목, 작성자, 시간, 글 링크 |
| 댓글 등록 | `mbw_comment_api_footer` | `board_action === 'write'` | 게시판명, 원글 제목, 댓글 내용(150자), 작성자, 시간, 글 링크 |
| 댓글 답변 | `mbw_comment_api_footer` | `board_action === 'reply'` | 게시판명, 원글 제목, 대상 댓글, 답변 내용, 작성자, 시간, 글 링크 |
---
# # 설정 방법
```mermaid
flowchart LR
A["1. 플러그인 활성화"] --> B["2. @BotFather 봇 생성"]
B --> C["3. Bot Token 발급"]
C --> D["4. 봇에게 메시지 전송"]
D --> E["5. Chat ID 조회"]
E --> F["6. 관리자 설정 입력"]
F --> G["7. 테스트 메시지 확인"]
```
## # 1. 플러그인 활성화
**WordPress 관리자 > 플러그인** 에서 **MangBoard Telegram Notification** 활성화
## # 2. 텔레그램 봇 생성 (최초 1회)
1. 텔레그램에서 [@BotFather](https://t.me/BotFather) 검색
2. `/newbot` 명령으로 봇 생성
3. 봇 이름과 username 설정
4. 발급받은 **Bot Token** 저장
## # 3. Chat ID 획득
1. 텔레그램에서 생성한 봇 검색 후 **시작하기**
2. 봇에게 아무 메시지 보내기 (예: "안녕")
3. 관리자 설정 페이지에서 **"Chat ID 조회"** 버튼 클릭
4. 표시된 Chat ID 숫자를 복사
## # 4. 관리자 설정
**WordPress 관리자 > Telegram 알림** 메뉴에서 설정:
| 항목 | 설명 | 현재값 |
|------|------|--------|
| 알림 사용 | 전체 ON/OFF | 활성화 |
| Bot Token | 텔레그램 봇 API 토큰 | `<YOUR_BOT_TOKEN>` |
| Chat ID | 알림 수신 채팅 ID | `<YOUR_CHAT_ID>` |
| 새글 등록 | 새글 알림 ON/OFF | 활성화 |
| 답변 등록 | 답변 알림 ON/OFF | 활성화 |
| 댓글 등록 | 댓글 알림 ON/OFF | 활성화 |
| 댓글 답변 | 댓글 답변 알림 ON/OFF | 활성화 |
## # 5. 연결 테스트
설정 페이지에서 **"테스트 메시지 전송"** 버튼으로 즉시 확인 가능.
---
# # 알림 메시지 포맷
## # 새글 등록
```
📢 새글이 등록되었습니다
📋 게시판: Q&A 게시판
📝 제목: RTX 4070 Super 조립 문의
👤 작성자: 홍길동
🕐 시간: 2026-04-20 18:30:00
🔗 글 보기
```
## # 답변 등록
```
💬 답변이 등록되었습니다
📋 게시판: Q&A 게시판
📌 원글: RTX 4070 Super 조립 문의
📝 답변 제목: RE: RTX 4070 Super 조립 문의
👤 작성자: 관리자
🕐 시간: 2026-04-20 18:35:00
🔗 글 보기
```
## # 댓글 등록
```
💬 새 댓글이 등록되었습니다
📋 게시판: Q&A 게시판
📌 원글: RTX 4070 Super 조립 문의
💬 댓글: 좋은 정보 감사합니다!
👤 작성자: 김철수
🕐 시간: 2026-04-20 18:40:00
🔗 글 보기
```
## # 댓글 답변
```
↩️ 댓글에 답변이 등록되었습니다
📋 게시판: Q&A 게시판
📌 원글: RTX 4070 Super 조립 문의
💬 대상 댓글: 좋은 정보 감사합니다!
↩️ 답변: 네, 체크해드리겠습니다
👤 작성자: 관리자
🕐 시간: 2026-04-20 18:45:00
🔗 글 보기
```
---
# # 대상 게시판 및 URL 패턴
MangBoard에 등록된 게시판과 생성되는 알림 URL 예시:
| 게시판 | board_name | 스킨 | 알림 URL 예시 |
|--------|-----------|------|---------------|
| Q&A 게시판 | `qna` | bbs_qanda_m1 (커스텀) | `/qna/?board_name=qna&board_pid=22&mode=view` |
| 견적 구매 상담 | `estimate_qna` | bbs_basic | `/estimate-qna/?board_name=estimate_qna&board_pid=1&mode=view` |
| 정보 문서 | `mangboard_tips` | bbs_basic | `/info/?board_name=mangboard_tips&board_pid=1&mode=view` |
| 상품 Q&A | `commerce_product_qa` | bbs_basic | `/m_product_qa/?board_name=commerce_product_qa&board_pid=5&mode=view` |
| 상품 리뷰 | `commerce_product_review` | bbs_basic | `/m_product_review/?board_name=commerce_product_review&board_pid=4&mode=view` |
| 공지사항 | `notics` | bbs_notice_m1 | `/notics/?board_name=notics&board_pid=1&mode=view` |
> URL은 MangBoard의 `mbw_get_url()` 네이티브 함수로 생성하므로, 새 게시판이 추가되어도 자동으로 정확한 URL이 생성됩니다.
---
# # 기술 구조
## # 파일 구조
```
wp-content/plugins/mangboard-telegram-notifications/
└── mangboard-telegram-notifications.php # 단일 파일 플러그인 (488줄)
```
## # 아키텍처
```mermaid
flowchart TD
A["사용자 게시글/댓글 작성"] --> B["MangBoard API"]
B --> B1["api/mb-board.php (게시글 작성/답변)"]
B --> B2["api/mb-comment.php (댓글 작성/답변)"]
B1 -->|"DB 저장 완료"| H1["do_action 'mbw_board_api_footer'"]
B2 -->|"DB 저장 완료"| H2["do_action 'mbw_comment_api_footer'"]
H1 --> N1["wmbt_notify_board()"]
H2 --> N2["wmbt_notify_comment()"]
subgraph Board["wmbt_notify_board() 내부"]
direction LR
BA["action 확인"] --> BB["ON/OFF 확인"] --> BC["게시글 조회"] --> BD["URL 생성"]
end
subgraph Cmt["wmbt_notify_comment() 내부"]
direction LR
CA["action 확인"] --> CB["ON/OFF 확인"] --> CC["댓글 조회"] --> CD["원글 제목"]
end
N1 --> Board
N2 --> Cmt
Board --> S["wmbt_send_telegram()"]
Cmt --> S
S --> R["wp_remote_post()"]
R --> TG["Telegram Bot API sendMessage"]
```
## # 핵심 함수
| 함수 | 역할 |
|------|------|
| `wmbt_notify_board()` | 게시글 작성/답변 시 텔레그램 알림 전송 |
| `wmbt_notify_comment()` | 댓글 작성/답변 시 텔레그램 알림 전송 |
| `wmbt_send_telegram()` | 설정값 검증 후 `wmbt_send_telegram_raw()` 호출 |
| `wmbt_send_telegram_raw()` | Telegram Bot API `sendMessage` 호출 |
| `wmbt_build_post_url()` | MangBoard `mbw_get_url()` 호출로 게시글 URL 생성 |
| `wmbt_get_board_display_name()` | `mb_boards.description` 에서 게시판 표시명 조회 |
| `wmbt_clean_text()` | HTML 태그 제거 + 텍스트 길이 제한 (프리뷰용) |
| `wmbt_settings_page()` | 관리자 설정 페이지 HTML 렌더링 |
| `wmbt_sanitize_settings()` | 설정값 검증 및 저장 |
## # DB 스키마
설정은 `wp_options` 테이블의 단일 row에 JSON으로 저장:
```sql
SELECT * FROM wp_options WHERE option_name = 'wmbt_settings';
```
```json
{
"bot_token": "<YOUR_BOT_TOKEN>",
"chat_id": "<YOUR_CHAT_ID>",
"enabled": "1",
"notify_write": "1",
"notify_reply": "1",
"notify_comment": "1",
"notify_creply": "1"
}
```
## # DB 쿼리 (참조용)
알림에서 참조하는 MangBoard 테이블:
```sql
-- 게시판 목록 (게시판명, 표시명, WP 페이지 ID)
SELECT pid, board_name, description, post_id, board_type, skin_name
FROM mb_boards WHERE board_type = 'board';
-- 게시글 데이터 (제목, 작성자, 등록일)
SELECT title, user_name, reg_date FROM mb_{board_name} WHERE pid = {게시글_pid};
-- 댓글 데이터 (내용, 작성자, 등록일)
SELECT content, user_name, reg_date FROM mb_{board_name}_comment WHERE pid = {댓글_pid};
```
---
# # 다른 사이트에 설치하는 방법
## # 1. 플러그인 복사
```bash
# 대상 WordPress의 wp-content/plugins/ 에 복사
cp -r mangboard-telegram-notifications/ /path/to/wordpress/wp-content/plugins/
```
## # 2. 플러그인 활성화
**WordPress 관리자 > 플러그인** 에서 활성화
## # 3. 설정 입력
**WordPress 관리자 > Telegram 알림** 메뉴에서:
1. Bot Token 입력 (새 봇 생성 필요시 @BotFather 참고)
2. Chat ID 입력 ("Chat ID 조회" 버튼으로 확인)
3. 알림 항목 선택
4. **설정 저장**
5. **"테스트 메시지 전송"** 으로 연결 확인
## # 전제 조건
- WordPress 6.x 이상
- PHP 8.x 이상
- MangBoard WP 플러그인 v2.4.x 이상 설치됨
- 서버에서 `api.telegram.org` 로의 아웃바운드 HTTPS 통신 허용
---
# # 트러블슈팅
## # 알림이 오지 않을 때
```mermaid
flowchart TD
Problem["알림이 오지 않음"] --> Test{"테스트 메시지 전송 성공?"}
Test -->|"YES"| Hook{"실제 이벤트 시 알림 오는지?"}
Test -->|"NO"| Token{"Bot Token 올바른가?"}
Token -->|"NO"| FixToken["Bot Token 재입력"]
Token -->|"YES"| ChatID{"Chat ID 올바른가?"}
ChatID -->|"NO"| FixChatID["Chat ID 재조회"]
ChatID -->|"YES"| Network{"서버에서 api.telegram.org 접근 가능?"}
Network -->|"NO"| FixNet["방화벽/아웃바운드 확인"]
Network -->|"YES"| Log["debug.log에서 WMBT 확인"]
Hook -->|"YES"| Done["정상 동작"]
Hook -->|"NO"| Log
Log --> FixLog["에러 메시지 확인 후 조치"]
style Problem fill:#FFCDD2
style Done fill:#C8E6C9
```
1. **설정 확인**: Telegram 알림 메뉴에서 "테스트 메시지 전송" 시도
2. **로그 확인**: WordPress debug log에서 `[WMBT]` 키워드 검색
```bash
docker exec <WP_CONTAINER> grep WMBT /var/www/html/wp-content/debug.log
```
3. **Bot Token/Chat ID 재확인**: 봇이 해당 채팅에 메시지를 보낼 권한이 있는지 확인
## # URL이 "삭제되었거나 존재하지 않는 내용"일 때
- `mbw_get_url()` 이 MangBoard 네이티브 함수이므로, 게시판 설정 자체에 문제가 없다면 정상 동작
- MangBoard 게시판의 `post_id` (WordPress 페이지 ID)가 올바르게 설정되어 있는지 확인
## # 관리자 메뉴에 "Telegram 알림"이 보이지 않을 때
- 플러그인이 **활성화** 상태인지 확인
- `manage_options` 권한을 가진 관리자 계정으로 로그인되어 있는지 확인
---
# # 참고
- [MangBoard 텔레그램 알림봇 플러그인 (공식 스토어)](https://www.mangboard.com/store/?vid=189) — 유료 플러그인 (33,000원)
- [Telegram Bot API 공식 문서](https://core.telegram.org/bots/api)
- [@BotFather](https://t.me/BotFather) — 텔레그램 봇 생성/관리
| 이전 | 망보드 마크다운 사용방법 | 김재석 | 2026-04-28 |
|---|---|---|---|
| 다음 | 네이버쇼핑 입점 가이드 | 김재석 | 2026-04-28 |