From a3f54fab474f662fdc3b856424ad56a1fc38042d Mon Sep 17 00:00:00 2001 From: jongjae Date: Fri, 15 May 2026 15:02:25 +0900 Subject: [PATCH] =?UTF-8?q?[2026-05-15]=20Discord=20=EC=95=8C=EB=A6=BC=20?= =?UTF-8?q?=EC=A4=91=EB=B3=B5=20=EB=B0=9C=EC=86=A1=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 커밋 없는 세션(스케줄러 태스크 등)은 알림 생략 - commit + push 완료 후 1회만 발송 - push 안된 경우 경고 메시지 포함 Co-Authored-By: Claude Sonnet 4.6 --- .claude/discord_notify.py | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/.claude/discord_notify.py b/.claude/discord_notify.py index 3955c2b..369fa81 100644 --- a/.claude/discord_notify.py +++ b/.claude/discord_notify.py @@ -3,27 +3,33 @@ import subprocess, json, urllib.request, datetime, sys, pathlib WEBHOOK = "https://discord.com/api/webhooks/1504705352166543370/H3dhs_4LaxnaFj_mhUUi02qpk3JegE_Ji9C6rNpEqRNv_iW6aqvso8VyPw17048Nt0oF" def run(cmd): - return subprocess.run(cmd, capture_output=True, text=True, encoding='utf-8', errors='replace').stdout.strip() + r = subprocess.run(cmd, capture_output=True, text=True, encoding='utf-8', errors='replace') + return r.stdout.strip(), r.returncode SESSION_SHA_FILE = pathlib.Path('.claude/session_start_sha.txt') start_sha = SESSION_SHA_FILE.read_text().strip() if SESSION_SHA_FILE.exists() else '' now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M') +# 이번 세션 커밋 메시지 if start_sha: - messages = run(['git', 'log', '--pretty=format:%s', f'{start_sha}..HEAD']) + messages, _ = run(['git', 'log', '--pretty=format:%s', f'{start_sha}..HEAD']) else: - messages = run(['git', 'log', '--pretty=format:%s', '-5']) + messages, _ = run(['git', 'log', '--pretty=format:%s', '-5']) -parts = [f"**[Claude Code] {now}**"] +# 커밋 없으면 조용히 종료 (스케줄러 태스크 등 노이즈 방지) +if not messages.strip(): + sys.exit(0) -if messages: - bullets = '\n'.join(f"• {m}" for m in messages.splitlines() if m.strip()) - parts.append(f"**변경 내용:**\n{bullets}") - parts.append("✅ 커밋 완료") +# push 상태 확인 +unpushed, _ = run(['git', 'log', '--oneline', 'origin/master..HEAD']) +if unpushed: + push_status = "⚠️ Push 안됨 — 수동으로 push 필요" else: - parts.append("_이번 세션 커밋 없음_") + push_status = "✅ Commit + Push 완료" + +bullets = '\n'.join(f"• {m}" for m in messages.splitlines() if m.strip()) +msg = f"**[Claude Code] {now}**\n\n**변경 내용:**\n{bullets}\n\n{push_status}" -msg = '\n\n'.join(parts) if len(msg) > 1990: msg = msg[:1987] + '...'