Claude Code → Telegram Bildirim Kurulumu
İş & Verimlilik
RestoPromt10 Temmuz 2026
Uzun süren Claude Code görevleri bitince Telegram'a otomatik bildirim gönderen hook kurulumu: BotFather, iki script ve settings.json adım adım.
# Claude Code — Uzun Görev Bitince Telegram Bildirimi
Uzun süren Claude Code görevleri bittiğinde telefonuna Telegram bildirimi gönderir.
Yalnızca **belirlenen süreden uzun** (varsayılan 2 dk) görevlerde bildirim atar; kısa
sorularda sessiz kalır. Mekanizma: bir `UserPromptSubmit` hook başlangıç zamanını
kaydeder, bir `Stop` hook bitişte süreyi hesaplayıp eşiği aşarsa Telegram'a mesaj atar.
---
## 1. Telegram botu oluştur
1. Telegram'da **@BotFather** ile konuş → `/newbot` → bir **bot token** verir
(örn. `123456789:AA...`).
2. Botunu aç ve **Start**'a bas (bot, önce başlatmayan kullanıcıya mesaj gönderemez).
3. **@userinfobot** ile konuşup kendi **chat_id**'ni öğren (senin sayısal Telegram ID'n).
> Token bir **secret**'tır: repoya koyma, paylaşma. Yalnızca aşağıdaki script dosyasında tut.
## 2. Test et (opsiyonel ama önerilir)
```bash
curl -s "https://api.telegram.org/bot<BOT_TOKEN>/sendMessage" \
-d chat_id=<CHAT_ID> -d text="Test — bot çalışıyor"
```
Telefonuna mesaj düşerse token ve chat_id doğrudur.
## 3. İki hook script'i oluştur
`~/.claude/hooks/telegram-task-start.sh` (başlangıç zamanını kaydeder):
```bash
#!/usr/bin/env bash
input=$(cat)
session=$(printf '%s' "$input" | python3 -c "import sys,json;print(json.load(sys.stdin).get('session_id','default'))" 2>/dev/null || echo default)
mkdir -p /tmp/claude-task-timers
date +%s > "/tmp/claude-task-timers/${session}.start"
exit 0
```
`~/.claude/hooks/telegram-notify.sh` (bitişte süreyi ölçüp bildirir):
```bash
#!/usr/bin/env bash
TOKEN="<BOT_TOKEN>"
CHAT_ID="<CHAT_ID>"
THRESHOLD_SECONDS=120 # bu süreden kısa görevlerde bildirim yok
input=$(cat)
read -r session cwd < <(printf '%s' "$input" | python3 -c "import sys,json;d=json.load(sys.stdin);print(d.get('session_id','default'), d.get('cwd',''))" 2>/dev/null)
[ -z "$session" ] && session=default
project=$(basename "${cwd:-$PWD}")
startfile="/tmp/claude-task-timers/${session}.start"
[ -f "$startfile" ] || exit 0
start=$(cat "$startfile" 2>/dev/null); rm -f "$startfile"
[ -z "$start" ] && exit 0
now=$(date +%s); elapsed=$((now - start))
[ "$elapsed" -lt "$THRESHOLD_SECONDS" ] && exit 0
mins=$((elapsed / 60)); secs=$((elapsed % 60))
curl -s "https://api.telegram.org/bot${TOKEN}/sendMessage" \
-d chat_id="${CHAT_ID}" \
--data-urlencode "text=🔔 Claude Code — görev tamamlandı
Proje: ${project}
Süre: ${mins} dk ${secs} sn" >/dev/null 2>&1
exit 0
```
Çalıştırılabilir yap:
```bash
chmod +x ~/.claude/hooks/telegram-task-start.sh ~/.claude/hooks/telegram-notify.sh
```
## 4. Hook'ları settings.json'a ekle
`~/.claude/settings.json` (global — tüm projeler) içine, mevcut ayarları **koruyarak** ekle:
```json
{
"hooks": {
"UserPromptSubmit": [
{ "hooks": [ { "type": "command", "command": "~/.claude/hooks/telegram-task-start.sh" } ] }
],
"Stop": [
{ "hooks": [ { "type": "command", "command": "~/.claude/hooks/telegram-notify.sh", "async": true } ] }
]
}
}
```
> Sadece bu projede istersen aynı bloğu proje kökündeki `.claude/settings.json` içine koy.
## 5. Devreye al
Hook'lar oturum başında okunur. **Açık her oturumda bir kez `/hooks`** yaz (config'i
yeniler) veya oturumu yeniden başlat. Yeni oturumlar otomatik alır.
---
## İpuçları
- **Eşiği değiştir:** `telegram-notify.sh` içindeki `THRESHOLD_SECONDS`. Her görevde bildirim için `0`.
- **Kapat:** `settings.json`'daki `hooks` bloğunu sil ya da `/hooks` menüsünden yönet.
- **Mesajı özelleştir:** curl'deki `text=...` satırını düzenle (proje adı `${project}`, süre `${mins}/${secs}`).
- **Doğrulama:** başlangıç dosyasını geçmişe ayarlayıp elle test et:
`mkdir -p /tmp/claude-task-timers && echo $(( $(date +%s) - 200 )) > /tmp/claude-task-timers/test.start && echo '{"session_id":"test","cwd":"'$PWD'"}' | ~/.claude/hooks/telegram-notify.sh`Değişiklik öner
Bu promptu yalnızca sahibi düzenleyebilir; ama sen bir iyileştirme önerebilirsin. Sahibi kabul ederse içerik güncellenir.