claude-code-notifier
طريقة العمل الأدلة الأسئلة الشائعة
◐العربية
English العربية Deutsch Español Français עברית Italiano 日本語 한국어 Nederlands Polski Português (Brasil) Русский Türkçe Tiếng Việt 简体中文 繁體中文
ابدأ الآن
كل الأدلة

أرسل إشعارات Claude Code إلى Telegram أو Slack أو Discord

آخر تحديث 31 أكتوبر 2026 · قراءة في 7 دقيقة
في هذه الصفحة 01قبل البدء: الرسالة والمفتاح السري 02Telegram: bot يراسلك 03Slack: incoming webhook 04Discord: webhook للقناة 05سكربت الـ hook (Mac وLinux) 06إضافة الـ hooks 07Windows (PowerShell) 08ما يجب معرفته عن استخدام تطبيقات الدردشة للإشعارات 09أين يأتي دور Claude Code Notifier 10الأسئلة الشائعة

لإرسال إشعارات Claude Code إلى Telegram أو Slack أو Discord، أنشئ bot أو incoming webhook في التطبيق، ثم أضف hook في Claude Code يرسل إليه رسالة قصيرة باستخدام curl. يغطي hook من نوع Notification حالتي "Claude يحتاج إذنك" و"Claude في انتظارك"، بينما يغطي hook من نوع Stop حالة "Claude انتهى". يحتاج Telegram إلى bot token ومعرّف المحادثة (chat ID)، أما Slack وDiscord فيكفيهما رابط webhook. يعمل السكربت نفسه على Mac وLinux، وتغطي نسخة قصيرة بلغة PowerShell نظام Windows.

01قبل البدء: الرسالة والمفتاح السري

يستقبل كل hook بيانات JSON عبر الإدخال القياسي. أهم الحقول هي hook_event_name وcwd (مجلد المشروع) وmessage في أحداث Notification وlast_assistant_message في أحداث Stop. تحوّل الأمثلة أدناه هذه الحقول إلى سطر واحد مثل Claude needs you in my-app: Claude needs your permission to use Bash.

رموز الـ bot وروابط webhook بمثابة كلمات مرور: أي شخص يملك أحدها يستطيع النشر باسم الـ bot الخاص بك. وتنص وثائق Slack صراحةً على عدم مشاركة روابط webhook أو إضافتها إلى نظام التحكم بالإصدارات. احفظها في ملف منفصل لا يقرؤه أحد سواك:

mkdir -p ~/.claude
touch ~/.claude/chat-notify.env
chmod 600 ~/.claude/chat-notify.env

02Telegram: bot يراسلك

  1. في Telegram، افتح محادثة مع @BotFather وأرسل /newbot واتبع التعليمات. سيرد عليك برمز مثل 123456789:AA....
  2. افتح محادثة مع الـ bot الجديد وأرسل له أي رسالة، حتى يُسمح له بمراسلتك.
  3. اعثر على معرّف المحادثة. افتح هذا الرابط مع الرمز الخاص بك، وابحث عن "chat":{"id": في الرد:
curl "https://api.telegram.org/bot<TOKEN>/getUpdates"
  1. ضع القيمتين في ~/.claude/chat-notify.env:
SERVICE=telegram
TELEGRAM_TOKEN=123456789:AA...
TELEGRAM_CHAT_ID=987654321

تأخذ الدالة sendMessage في Telegram المعاملين chat_id وtext (من 1 إلى 4096 حرفًا). كما تقبل disable_notification=true الذي يوصل الرسالة دون صوت. يستخدم السكربت ذلك لرسائل "انتهى" ويُبقي الصوت لطلبات الإذن.

03Slack: incoming webhook

  1. أنشئ تطبيق Slack من api.slack.com/apps (أو افتح تطبيقًا موجودًا).
  2. ضمن Incoming Webhooks، فعّل Activate Incoming Webhooks.
  3. انقر Add New Webhook to Workspace واختر قناة ثم Authorize.
  4. انسخ الرابط الذي يبدأ بـ https://hooks.slack.com/services/.
SERVICE=slack
SLACK_WEBHOOK_URL=https://hooks.slack.com/services/T000/B000/XXXX

ينشر كل webhook في قناة واحدة تُحدَّد عند إنشائه، ولا يمكنك تغيير الاسم أو الأيقونة لكل رسالة. الأفضل قناة خاصة صغيرة لك وحدك، حتى لا يضيع التنبيه وسط قناة مزدحمة.

04Discord: webhook للقناة

  1. في الخادم، افتح Server Settings ثم Integrations ثم Webhooks.
  2. أنشئ webhook واختر القناة وانسخ رابطه.
SERVICE=discord
DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/1234/abcd

تأخذ نقطة تنفيذ webhook في Discord جسم JSON يحتوي على content (حتى 2000 حرف) وusername اختياري لتجاوز اسم الـ webhook.

05سكربت الـ hook (Mac وLinux)

احفظه باسم ~/.claude/chat-notify.sh ثم شغّل chmod +x ~/.claude/chat-notify.sh. يحتاج إلى curl وjq (brew install jq أو apt install jq).

#!/bin/sh
. "$HOME/.claude/chat-notify.env"

input=$(cat)
event=$(printf '%s' "$input" | jq -r '.hook_event_name')
project=$(basename "$(printf '%s' "$input" | jq -r '.cwd')")

if [ "$event" = "Stop" ]; then
  detail=$(printf '%s' "$input" | jq -r '(.last_assistant_message // "") | .[0:300]')
  text="Claude finished in $project. $detail"
  quiet=true
else
  detail=$(printf '%s' "$input" | jq -r '.message // "Needs your attention"')
  text="Claude needs you in $project: $detail"
  quiet=false
fi

case "$SERVICE" in
  telegram)
    curl -s "https://api.telegram.org/bot$TELEGRAM_TOKEN/sendMessage" \
      --data-urlencode "chat_id=$TELEGRAM_CHAT_ID" \
      --data-urlencode "text=$text" \
      --data-urlencode "disable_notification=$quiet" > /dev/null ;;
  slack)
    jq -n --arg t "$text" '{text: $t}' | curl -s -X POST \
      -H 'Content-Type: application/json' --data @- "$SLACK_WEBHOOK_URL" > /dev/null ;;
  discord)
    jq -n --arg t "$text" '{content: $t, username: "Claude Code"}' | curl -s -X POST \
      -H 'Content-Type: application/json' --data @- "$DISCORD_WEBHOOK_URL" > /dev/null ;;
esac
exit 0

بناء JSON باستخدام jq -n --arg أمر مهم: ردود Claude تحتوي على علامات اقتباس وشرطات مائلة عكسية وأسطر جديدة، ولصقها يدويًا في سلسلة JSON يُفسد الطلب.

اختبره قبل ربطه:

echo '{"hook_event_name":"Notification","cwd":"/tmp/demo","message":"Test"}' | ~/.claude/chat-notify.sh

06إضافة الـ hooks

في ~/.claude/settings.json، داخل كائن hooks الموجود إن وُجد:

{
  "hooks": {
    "Notification": [
      {
        "matcher": "permission_prompt|idle_prompt",
        "hooks": [{ "type": "command", "command": "~/.claude/chat-notify.sh" }]
      }
    ],
    "Stop": [
      {
        "hooks": [{ "type": "command", "command": "~/.claude/chat-notify.sh", "async": true }]
      }
    ]
  }
}

ابدأ جلسة Claude Code جديدة لتحميل الـ hooks. يتداخل idle_prompt مع Stop: يُطلق Stop لحظة انتهاء Claude، وidle_prompt بعد نحو دقيقة إن لم تكتب شيئًا. أبقِ الاثنين أو احذف أحدهما؛ ويشرح دليل ntfy المفاضلة بينهما.

07Windows (PowerShell)

احفظه باسم %USERPROFILE%\.claude\chat-notify.ps1. تنشر هذه النسخة إلى Discord؛ ولاستخدام Slack غيّر الجسم إلى @{ text = $text } وغيّر الرابط.

$url = 'https://discord.com/api/webhooks/1234/abcd'
$in = [Console]::In.ReadToEnd() | ConvertFrom-Json
$project = Split-Path $in.cwd -Leaf

if ($in.hook_event_name -eq 'Stop') { $text = "Claude finished in $project." }
else { $text = "Claude needs you in ${project}: $($in.message)" }

$json = @{ content = $text; username = 'Claude Code' } | ConvertTo-Json
Invoke-RestMethod -Method Post -Uri $url -ContentType 'application/json; charset=utf-8' `
  -Body ([Text.Encoding]::UTF8.GetBytes($json)) | Out-Null

إدخال الـ hook:

{
  "type": "command",
  "shell": "powershell",
  "command": "powershell -NoProfile -ExecutionPolicy Bypass -File \"$HOME\\.claude\\chat-notify.ps1\""
}

داخل WSL، استخدم سكربت Mac وLinux.

08ما يجب معرفته عن استخدام تطبيقات الدردشة للإشعارات

  • ما ترسله يغادر جهازك. تتضمن رسالة "انتهى" بداية رد Claude، وفي قناة مشتركة على Slack أو Discord يستطيع كل أعضائها قراءته. احذف $detail إن كان الكود خاصًا.
  • تطبيقات الدردشة تجمّع الإشعارات وتكتمها. قد تُخفي مساحة عمل مزدحمة أو خادم مكتوم التنبيه. تطبيق push مخصص مثل ntfy (راجع دليل ntfy) أقل عرضة للضياع.
  • الـ hooks لا تعرف إن كنت أمام الجهاز. ينشر Stop في كل مرة، ويُعد idle_prompt وpermission_prompt أقرب مرشّح مدمج لحالة "غير موجود".

09أين يأتي دور Claude Code Notifier

الـ webhook طريقة جيدة للاحتفاظ بسجل لما فعله Claude، وقد يكون الأداة المناسبة لفريق. لكنه لا يكفي لشخص يريد التصرف بناءً على التنبيه: تقرأ أن Claude يحتاج إذنًا، ثم تعود إلى الـ terminal لتمنحه. يمكن نظريًا لـ bot على Telegram استقبال الردود، لكنك ستضطر لكتابة hook ينتظرها ويُعيد القرار.

يتولى Claude Code Notifier هذا الجزء. بعد ربط هاتفك، يمكنك من الهاتف السماح مرة واحدة أو السماح طوال الجلسة أو رفض طلب الإذن، والإجابة عن أسئلة Claude متعددة الخيارات، وإرسال تعليمات متابعة عند انتهائه. إن كتبت خلال آخر 30 ثانية، يسأل الـ terminal كالمعتاد ولا ينتظر شيء على الهاتف. الأداة مستقلة وليست من إنتاج Anthropic، ويعمل ccn على Mac وWindows وLinux. راجع المقارنة مع البدائل وصفحة ccn والأسعار.

10الأسئلة الشائعة

هل يمكن لـ Claude Code النشر على Slack دون سكربت؟

يوفر Claude Code hooks من نوع http ترسل JSON الخاص بالـ hook عبر POST إلى رابط، لكن webhooks في Slack وDiscord تتوقع صيغة جسم خاصة بها (text أو content)، لذا يفشل ربط hook من نوع http بها مباشرة. لا بد من سكربت صغير أو وسيط بينهما.

كيف أعثر على معرّف المحادثة في Telegram؟

أرسل رسالة إلى الـ bot، ثم افتح https://api.telegram.org/bot<TOKEN>/getUpdates. الرقم بعد "chat":{"id": هو معرّف المحادثة. بالنسبة للمجموعات، أضف الـ bot إلى المجموعة وأرسل فيها رسالة أولًا.

هل يمكنني الرد على Claude Code من Slack أو Discord؟

ليس عبر incoming webhook، فهو يرسل الرسائل فقط. الرد يتطلب hook ينتظر إجابتك ويعيد قرارًا، وهذا بالضبط ما صُممت له أدوات الموافقة عن بُعد.

هل سيُبطئ الـ hook عمل Claude Code؟

يستخدم إدخال Stop الخيار "async": true، لذا يُرسَل الإشعار في الخلفية. أما hooks من نوع Notification فتعمل أصلًا بالتوازي مع Claude دون أن تعطّله.

Claude Code Notifier احصل على إشعار push على هاتفك عندما ينتهي Claude Code أو يحتاج إليك، ثم وافق أو ارفض أو أجب من هناك. أداة سطر الأوامر ccn مجانية على Mac وWindows وLinux.
نزّل لنظام iOS نزّل لنظام Android ثبّت ccn

أدلة ذات صلة

  • إشعارات push لـ Claude Code باستخدام ntfy (افعلها بنفسك)أرسل تنبيهات Claude Code إلى هاتفك باستخدام ntfy: سكربت hook لـ Mac وWindows وLinux، وإدخالات settings.json، وكيفية إبقاء الـ topic خاصًا.
  • مقارنة بين جميع طرق تلقي إشعارات Claude Codeمقارنة بين التنبيهات المدمجة والـ hooks الخاصة بك وntfy وwebhooks تطبيقات المحادثة وميزة Remote Control من Anthropic وتطبيقات الإشعارات، من حيث ما يمكن لكل منها فعله وما لا يمكنه.
  • Notification hook في Claude Code: متى يُطلَق وكيف تستخدمهمتى يُطلَق Notification hook في Claude Code، وما معنى permission_prompt وidle_prompt، والمدخلات التي يتلقاها، ولماذا ينتظر قبل الإطلاق.
claude-code-notifier

Claude Code Notifier تطبيق مستقل تابع لجهة خارجية. وهو غير تابع لشركة Anthropic, PBC ولا معتمد أو مموّل منها. "Claude" و"Claude Code" علامتان تجاريتان لشركة Anthropic, PBC.

التطبيقات تطبيق iOS تطبيق Android ccn لأنظمة macOS وWindows وLinux كل الأدلة
قانوني سياسة الخصوصية شروط الخدمة لغات أخرى © 2026 touchtap. جميع الحقوق محفوظة. شركة TouchTap Ltd مسجلة في إنجلترا وويلز، رقم الشركة 13942589.