RestoPromt

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.

Öneri göndermek için giriş yap