티스토리 뷰

TELEGRAM BOT API GUIDE

텔레그램 봇 그룹방 추가 & 그룹 Chat ID 확인 방법

💡 핵심 요약: 텔레그램 봇을 그룹에 추가하면 하나의 그룹 Chat ID로 다수의 관리자에게 동시에 알림을 전송할 수 있습니다. 개인 Chat ID는 양수이지만, 일반 그룹은 마이너스(-), 슈퍼그룹/채널은 -100으로 시작하므로 반드시 부호를 포함해 설정해야 합니다. 본 페이지에서 실시간으로 그룹 Chat ID를 추출하고 메시지 발송까지 즉시 테스트할 수 있습니다.

1. 텔레그램 그룹방을 사용하는 이유

서버 장애나 배치 작업 결과를 단일 관리자에게만 보내면 담당자 부재 시 신속한 대응이 어렵습니다. 관리자마다 개별 Chat ID로 발송할 경우 관리자가 늘어날 때마다 프로그램을 일일이 수정해야 합니다.

[단일 발송] 모니터링 시스템 ➔ 관리자 A, B, C 각각 Chat ID 등록 (비효율)
[그룹 발송] 모니터링 시스템 ➔ Telegram 관리 그룹 (단일 Group Chat ID로 전체 공유)
  • 유지보수 간소화: 프로그램에는 그룹 Chat ID 1개만 등록하면 됩니다.
  • 관리자 변경 용이: 인사이동 시 텔레그램 그룹 멤버만 변경하면 시스템 코드는 수정할 필요가 없습니다.
  • 이력 공유: 특정 관리자가 처리한 명령어나 응답을 모든 팀원이 실시간 공유받을 수 있습니다.

2. Telegram 그룹 만들기 및 Bot 초대

  1. 그룹 생성: 텔레그램 앱 좌측 상단 메뉴 ➔ 새 그룹(New Group) ➔ 알림을 받을 동료 추가 후 그룹명을 지정합니다 (예: 시스템 관제 알림방).
  2. Bot 초대: 그룹 상단 프로필 클릭 ➔ 멤버 추가(Add Members) ➔ 내 봇의 @Username을 검색하여 그룹 멤버로 초대합니다.
  3. 봇이 추가되지 않을 때: @BotFather 대화방에서 /mybots ➔ [해당 봇 선택] ➔ Bot Settings ➔ Allow Groups?가 Turn groups on(활성화) 상태인지 확인합니다.

3. Telegram Chat ID 종류와 형태

텔레그램 API에서 메시지를 특정 대상에게 보낼 때 사용하는 고유 키입니다. 대화방 종류에 따라 형식 규칙이 엄격히 나뉩니다.

구분 Chat ID 예시 특징 및 주의사항
개인 대화방 629061632 항상 양수(Positive) 정수입니다.
일반 그룹방 -5417818516 마이너스(-) 부호 필수
슈퍼그룹 / 채널 -1001987654321 -100 접두사 포함 전체 값을 등록해야 작동합니다.

4. 실시간 그룹 Chat ID 조회 및 메시지 테스트

브라우저에서 직접 봇 토큰을 입력해 봇 상태를 확인하고, 그룹방 Chat ID를 추출한 뒤 실제 그룹 메시지 발송까지 한 번에 테스트할 수 있습니다.

🤖 Step 1. 봇 토큰 입력 & 검증


🔍 Step 2. 그룹 Chat ID 추출 (getUpdates)

⚠️ 중요: 봇을 그룹에 추가한 후, 해당 그룹 채팅방에서 /test 또는 아무 명령어 메시지를 1건 전송한 후 아래 버튼을 클릭하세요.

✉️️ Step 3. 그룹 알림 테스트 발송

5. getUpdates에서 result: [] 빈 배열이 나올 때 해결법

브라우저나 API 호출 시 {"ok":true,"result":[]}만 응답된다면 다음 4가지를 점검해야 합니다.

  • 1. 백그라운드 프로그램 충돌: 현재 서버(Python 스크립트, 스프링 부트 등)에서 이미 getUpdates를 폴링하고 있다면 메시지가 해당 프로세스로 즉시 소비되어 웹에서는 빈 배열로 보입니다. 테스트 중에는 기존 봇 프로세스를 잠시 중지하세요.
  • 2. Webhook 등록 여부: 웹훅(Webhook)이 활성화되어 있으면 getUpdates 메서드는 작동하지 않습니다. 필요시 https://api.telegram.org/bot<TOKEN>/deleteWebhook으로 웹훅을 해제해야 합니다.
  • 3. Bot Privacy Mode (사생활 보호 모드): 기본적으로 봇은 그룹방의 일반 텍스트 대화를 읽지 못하도록 설정되어 있습니다. 따라서 단순한 "안녕" 같은 메시지는 감지되지 않으며, 반드시 슬래시(/)로 시작하는 명령어(/test, /start)를 입력해야 업데이트에 잡힙니다.

6. Python 연동 및 관리자 권한 분리 (`chat.id` vs `from.id`)

그룹방에서 봇을 운용할 때는 그룹 전체로 알림을 보내는 것 외에도, "누가 명령어를 입력했는가"를 검증하는 보안 로직이 필수입니다.

import requests

BOT_TOKEN = "YOUR_BOT_TOKEN"
# 그룹 Chat ID는 마이너스(-) 부호를 반드시 포함해야 합니다.
GROUP_CHAT_ID = "-1001987654321" 

# 1. 그룹으로 알림 메시지 발송 예시
def send_group_alert(message):
    url = f"https://api.telegram.org/bot{BOT_TOKEN}/sendMessage"
    payload = {
        "chat_id": GROUP_CHAT_ID,
        "text": message
    }
    return requests.post(url, json=payload).json()

# 2. 관리자 권한 검증 로직 (원격 재시작 등 중요 명령 시)
# chat.id : 메시지가 들어온 그룹방 ID
# from.id : 실제 명령어를 친 특정 사용자의 고유 ID
ADMIN_USERS = {629061632, 111222333}

def handle_incoming_command(chat_id, user_id, command):
    # 허가된 그룹인지 1차 검증
    if str(chat_id) != GROUP_CHAT_ID:
        return "허용되지 않은 그룹입니다."
    
    # 허가된 관리자인지 2차 검증
    if user_id not in ADMIN_USERS:
        return "⚠️ 실행 권한이 없는 사용자입니다."
    
    if command == "/restart":
        return "시스템을 재시작합니다."

7. 자주 묻는 질문 (FAQ)

Q. 그룹 Chat ID에 왜 마이너스(-)나 -100이 붙나요?

텔레그램 API에서 양수(Positive)는 1:1 개인 유저를, 음수(Negative)는 그룹 대화방을 식별하는 고유 규격입니다. 특히 대규모 슈퍼그룹(Supergroup)이나 공지 채널은 -100 접두사가 붙어 구분됩니다.

Q. 봇이 그룹의 모든 일반 대화를 읽게 하려면 어떻게 하나요?

@BotFather와 대화에서 /mybots ➔ [봇 선택] ➔ Bot Settings ➔ Group Privacy ➔ Turn off로 설정하면 슬래시 명령어 외의 일반 텍스트 대화도 봇이 수신할 수 있습니다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/10   »
일 월 화 수 목 금 토
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함