# 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 테이블) |
---
## 개발 연혁
### 1차: 요구사항 분석 및 설계
- 망보드 공식 스토어의 [텔레그램 알림봇 플러그인](https://www.mangboard.com/store/?vid=189) (33,000원)을 참고하여 자체 개발 결정 - MangBoard 플러그인 소스코드 분석 (난독화된 PHP) - 핵심 훅 발견: - `do_action('mbw_board_api_footer')` — `api/mb-board.php` 게시글 작성/답변 완료 직후 - `do_action('mbw_comment_api_footer')` — `api/mb-comment.php` 댓글 작성/답변 완료 직후
### 2차: mu-plugin으로 초기 개발
- `wp-content/mu-plugins/wellcoms-mangboard-telegram.php` 로 생성 - 기본 알림 기능 구현 완료 - 텔레그램 API 연동 테스트 성공
### 3차: 일반 플러그인으로 전환
- mu-plugin은 플러그인 목록에 표시되지 않고 관리가 불편함 - `wp-content/plugins/mangboard-telegram-notifications/` 로 이동 - 좌측 메뉴에 **"Telegram 알림"** 독립 최상위 메뉴 추가 (dashicons-megaphone 아이콘)
### 4차: URL 생성 버그 수정
**문제**: 초기에는 `vid=board_pid(숫자)` + `uid=게시글_pid` 형식의 URL을 수동 생성했으나, MangBoard의 실제 URL 규격과 달랐음.
**수정 과정**:
| 시도 | URL 형식 | 결과 | |------|----------|------| | 1차 | `?vid=board_name&mode=view&uid=pid` | ❌ "삭제되었거나 존재하지 않는 내용" | | 2차 | `?vid=mb_boards.pid&mode=view&uid=pid` | ❌ 동일 에러 | | 3차 | `?board_name=recommand_qna&board_pid=pid&mode=view` | ❌ 파라미터명 불일치 | | **최종** | **`mbw_get_url()` 네이티브 함수 호출** | ✅ 정상 동작 |
**최종 해결책**: MangBoard의 난독화된 `mbw_get_url()` 함수를 직접 호출. 호출 전 `$mstore->set_board_options()` + `mbw_set_param('board_name')` 으로 컨텍스트를 설정하여 정확한 URL 획득.
---
## 알림 대상 이벤트
| 이벤트 | 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'` | 게시판명, 원글 제목, 대상 댓글, 답변 내용, 작성자, 시간, 글 링크 |
---
## 설정 방법
### 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 토큰 | `8449066588:AAGRiT8cPpVd55CpdTJr3AVjeeVPFLk9EZ4` | | Chat ID | 알림 수신 채팅 ID | `1600924278` | | 새글 등록 | 새글 알림 ON/OFF | 활성화 | | 답변 등록 | 답변 알림 ON/OFF | 활성화 | | 댓글 등록 | 댓글 알림 ON/OFF | 활성화 | | 댓글 답변 | 댓글 답변 알림 ON/OFF | 활성화 |
### 5. 연결 테스트
설정 페이지에서 **"테스트 메시지 전송"** 버튼으로 즉시 확인 가능.
---
## 알림 메시지 포맷
### 새글 등록
``` 📢 새글이 등록되었습니다
📋 게시판: 추천 PC 조립 상담 게시판 📝 제목: RTX 4070 Super 조립 문의 👤 작성자: 김재석 🕐 시간: 2026-04-20 18:30:00 🔗 글 보기 ```
### 답변 등록
``` 💬 답변이 등록되었습니다
📋 게시판: 추천 PC 조립 상담 게시판 📌 원글: RTX 4070 Super 조립 문의 📝 답변 제목: RE: RTX 4070 Super 조립 문의 👤 작성자: 관리자 🕐 시간: 2026-04-20 18:35:00 🔗 글 보기 ```
### 댓글 등록
``` 💬 새 댓글이 등록되었습니다
📋 게시판: 추천 PC 조립 상담 게시판 📌 원글: RTX 4070 Super 조립 문의 💬 댓글: 좋은 정보 감사합니다! 👤 작성자: 홍길동 🕐 시간: 2026-04-20 18:40:00 🔗 글 보기 ```
### 댓글 답변
``` ↩️ 댓글에 답변이 등록되었습니다
📋 게시판: 추천 PC 조립 상담 게시판 📌 원글: RTX 4070 Super 조립 문의 💬 대상 댓글: 좋은 정보 감사합니다! ↩️ 답변: 네, 체크해드리겠습니다 👤 작성자: 관리자 🕐 시간: 2026-04-20 18:45:00 🔗 글 보기 ```
---
## 대상 게시판 및 URL 패턴
wellcoms.co.kr에 등록된 게시판과 생성되는 알림 URL:
| 게시판 | board_name | 스킨 | 알림 URL 예시 | |--------|-----------|------|---------------| | 추천 PC 조립 상담 | `recommand_qna` | bbs_qanda_m1 (커스텀) | `/recommand-qna/?board_name=recommand_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줄) ```
### 아키텍처
``` 사용자가 게시글/댓글 작성 │ ▼ MangBoard API 처리 ├── api/mb-board.php (게시글 작성/답변) └── api/mb-comment.php (댓글 작성/답변) │ ▼ DB写入 완료 후 do_action('mbw_board_api_footer') do_action('mbw_comment_api_footer') │ │ ▼ ▼ wmbt_notify_board() wmbt_notify_comment() ├── board_action 확인 (write/reply) ├── board_action 확인 (write/reply) ├── 알림 항목 ON/OFF 확인 ├── 알림 항목 ON/OFF 확인 ├── DB에서 게시글 정보 조회 ├── DB에서 댓글 정보 조회 ├── MangBoard 네이티브 URL 생성 ├── 원글 제목 조회 └── 텔레그램 메시지 전송 └── 텔레그램 메시지 전송 │ ▼ wmbt_send_telegram() │ ▼ wp_remote_post() → Telegram Bot API ```
### 핵심 함수
| 함수 | 역할 | |------|------| | `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": "8449066588:AAGRiT8cPpVd55CpdTJr3AVjeeVPFLk9EZ4", "chat_id": "1600924278", "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 통신 허용
---
## 트러블슈팅
### 알림이 오지 않을 때
1. **설정 확인**: Telegram 알림 메뉴에서 "테스트 메시지 전송" 시도 2. **로그 확인**: WordPress debug log에서 `[WMBT]` 키워드 검색 ```bash docker exec wellcoms_wp 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) — 텔레그램 봇 생성/관리 |