جاهز للإنتاج لرسائل البوت المباشرة والمجموعات عبر grammY. وضع الاستقصاء الطويل هو الوضع الافتراضي؛ ووضع Webhook اختياري.Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
Pairing
Channel troubleshooting
Gateway configuration
الإعداد السريع
Create the bot token in BotFather
@BotFather).شغّل /newbot، واتبع المطالبات، واحفظ الرمز المميز.Configure token and DM policy
TELEGRAM_BOT_TOKEN=... (الحساب الافتراضي فقط).
لا يستخدم Telegram الأمر openclaw channels login telegram؛ اضبط الرمز المميز في الإعدادات/البيئة، ثم ابدأ Gateway.Add the bot to a group
- معرّف مستخدم Telegram الخاص بك، ويُستخدم في
allowFrom/groupAllowFrom - معرّف دردشة مجموعة Telegram، ويُستخدم مفتاحًا ضمن
channels.telegram.groups
openclaw logs --follow، أو بوت يمرر المعرّفات، أو Bot API getUpdates. بعد السماح للمجموعة، يمكن لـ /whoami@<bot_username> تأكيد معرّفات المستخدم والمجموعة.معرّفات مجموعات Telegram الفائقة السالبة التي تبدأ بـ -100 هي معرّفات دردشة مجموعات. ضعها ضمن channels.telegram.groups، وليس ضمن groupAllowFrom.TELEGRAM_BOT_TOKEN إلا على الحساب الافتراضي.إعدادات جهة Telegram
Privacy mode and group visibility
Privacy mode and group visibility
- عطّل وضع الخصوصية عبر
/setprivacy، أو - اجعل البوت مشرفًا في المجموعة.
Group permissions
Group permissions
Helpful BotFather toggles
Helpful BotFather toggles
/setjoingroupsللسماح بإضافات المجموعات أو رفضها/setprivacyلسلوك رؤية المجموعة
التحكم في الوصول والتفعيل
- DM policy
- Group policy and allowlists
- Mention behavior
channels.telegram.dmPolicy في وصول الرسائل المباشرة:pairing(افتراضي)allowlist(يتطلب معرّف مرسل واحدًا على الأقل فيallowFrom)open(يتطلب أن يتضمنallowFromالقيمة"*")disabled
dmPolicy: "open" مع allowFrom: ["*"] لأي حساب Telegram يجد أو يخمّن اسم مستخدم البوت أن يأمر البوت. استخدمه فقط للبوتات العامة المقصودة ذات الأدوات المقيدة بإحكام؛ ويجب أن تستخدم بوتات المالك الواحد allowlist مع معرّفات مستخدم رقمية.يقبل channels.telegram.allowFrom معرّفات مستخدمي Telegram الرقمية. تُقبل البادئات telegram: / tg: وتُوحّد.
في إعدادات الحسابات المتعددة، يُعامل channels.telegram.allowFrom المقيّد على المستوى الأعلى كحد أمان: لا تجعل إدخالات allowFrom: ["*"] على مستوى الحساب ذلك الحساب عامًا إلا إذا كانت قائمة السماح الفعالة للحساب لا تزال تحتوي على بدل صريح بعد الدمج.
يحظر dmPolicy: "allowlist" مع allowFrom فارغ كل الرسائل المباشرة، ويرفضه تحقق الإعدادات.
يطلب الإعداد معرّفات المستخدم الرقمية فقط.
إذا أجريت ترقية وكانت إعداداتك تحتوي على إدخالات قائمة سماح بصيغة @username، فشغّل openclaw doctor --fix لحلها (بأفضل جهد؛ يتطلب رمز بوت Telegram).
إذا كنت تعتمد سابقًا على ملفات قائمة السماح في مخزن الاقتران، يمكن لـ openclaw doctor --fix استرداد الإدخالات إلى channels.telegram.allowFrom في تدفقات قائمة السماح (مثلًا عندما لا يحتوي dmPolicy: "allowlist" على معرّفات صريحة بعد).لبوتات المالك الواحد، فضّل dmPolicy: "allowlist" مع معرّفات allowFrom رقمية صريحة لإبقاء سياسة الوصول دائمة في الإعدادات (بدل الاعتماد على موافقات اقتران سابقة).التباس شائع: موافقة اقتران الرسائل المباشرة لا تعني “هذا المرسل مخوّل في كل مكان”.
يمنح الاقتران وصول الرسائل المباشرة. إذا لم يكن هناك مالك أوامر بعد، فإن أول اقتران معتمد يضبط أيضًا commands.ownerAllowFrom بحيث يكون للأوامر الخاصة بالمالك فقط وموافقات التنفيذ حساب مشغّل صريح.
لا يزال تفويض مرسل المجموعة يأتي من قوائم السماح الصريحة في الإعدادات.
إذا كنت تريد “أنا مخوّل مرة واحدة وتعمل كل من الرسائل المباشرة وأوامر المجموعة”، فضع معرّف مستخدم Telegram الرقمي الخاص بك في channels.telegram.allowFrom؛ وللأوامر الخاصة بالمالك فقط، تأكد من أن commands.ownerAllowFrom يحتوي على telegram:<your user id>.العثور على معرّف مستخدم Telegram الخاص بك
أكثر أمانًا (بدون بوت طرف ثالث):- أرسل رسالة مباشرة إلى البوت الخاص بك.
- شغّل
openclaw logs --follow. - اقرأ
from.id.
@userinfobot أو @getidsbot.سلوك وقت التشغيل
- Telegram مملوك لعملية Gateway.
- التوجيه حتمي: ترد الرسائل الواردة من Telegram إلى Telegram (لا يختار النموذج القنوات).
- تُوحّد الرسائل الواردة في مغلف القناة المشترك مع بيانات الرد الوصفية، وعناصر نائبة للوسائط، وسياق سلسلة ردود مستمر لردود Telegram التي رصدها Gateway.
- تُعزل جلسات المجموعات حسب معرّف المجموعة. تضيف موضوعات المنتدى
:topic:<threadId>لإبقاء الموضوعات معزولة. - يمكن لرسائل الرسائل المباشرة حمل
message_thread_id؛ يحافظ OpenClaw على معرّف الخيط للردود لكنه يُبقي الرسائل المباشرة على الجلسة المسطحة افتراضيًا. اضبطchannels.telegram.dm.threadReplies: "inbound"، أوchannels.telegram.direct.<chatId>.threadReplies: "inbound"، أوrequireTopic: true، أو إعداد موضوع مطابقًا عندما تريد عمدًا عزل جلسات موضوعات الرسائل المباشرة. - يستخدم الاستقصاء الطويل مشغّل grammY مع تسلسل لكل دردشة/كل خيط. يستخدم تزامن مصرف المشغّل العام
agents.defaults.maxConcurrent. - الاستقصاء الطويل محمي داخل كل عملية Gateway بحيث يمكن لمستطلع نشط واحد فقط استخدام رمز بوت في كل مرة. إذا كنت لا تزال ترى تعارضات
getUpdates409، فمن المرجح أن Gateway آخر من OpenClaw أو سكربتًا أو مستطلعًا خارجيًا يستخدم الرمز نفسه. - يتم تشغيل عمليات إعادة تشغيل مراقب الاستقصاء الطويل بعد 120 ثانية بدون اكتمال حيوية
getUpdatesافتراضيًا. زدchannels.telegram.pollingStallThresholdMsفقط إذا كان نشرُك لا يزال يرى عمليات إعادة تشغيل خاطئة لتوقف الاستقصاء أثناء العمل طويل المدى. القيمة بالميلي ثانية ومسموح بها من30000إلى600000؛ وتُدعم التجاوزات لكل حساب. - لا يدعم Telegram Bot API إيصالات القراءة (
sendReadReceiptsلا ينطبق).
مرجع الميزات
Live stream preview (message edits)
Live stream preview (message edits)
- الدردشات المباشرة: رسالة معاينة +
editMessageText - المجموعات/الموضوعات: رسالة معاينة +
editMessageText
channels.telegram.streamingهيoff | partial | block | progress(الافتراضي:partial)- يحافظ
progressعلى مسودة حالة واحدة قابلة للتحرير لتقدم الأدوات، ويمحوها عند الاكتمال، ويرسل الإجابة النهائية كرسالة عادية - يتحكم
streaming.preview.toolProgressفي ما إذا كانت تحديثات الأدوات/التقدم تعيد استخدام رسالة المعاينة نفسها بعد تحريرها (الافتراضي:trueعندما يكون بث المعاينة نشطًا) - يتحكم
streaming.preview.commandTextفي تفاصيل الأمر/التنفيذ داخل أسطر تقدم الأدوات تلك:raw(الافتراضي، يحافظ على السلوك الصادر) أوstatus(تسمية الأداة فقط) - يتم اكتشاف
channels.telegram.streamModeالقديم وقيمstreamingالمنطقية؛ شغّلopenclaw doctor --fixلترحيلها إلىchannels.telegram.streaming.mode
v2026.4.22 وما بعده. للإبقاء على المعاينة المحررة لنص الإجابة مع إخفاء أسطر تقدم الأدوات، عيّن:progress عندما تريد تقدم أدوات مرئيًا دون تحرير الإجابة النهائية في تلك الرسالة نفسها. ضع سياسة نص الأمر تحت streaming.progress:streaming.mode: "off" فقط عندما تريد تسليمًا نهائيًا فقط: تُعطّل تعديلات معاينة Telegram ويتم كتم رسائل الأدوات/التقدم العامة بدلًا من إرسالها كرسائل حالة مستقلة. تظل مطالبات الموافقة، وحمولات الوسائط، والأخطاء تمر عبر التسليم النهائي العادي. استخدم streaming.preview.toolProgress: false عندما تريد فقط الإبقاء على تعديلات معاينة الإجابة مع إخفاء أسطر حالة تقدم الأدوات.replyToMode هو "first" أو "all" أو "batched" وتتضمن الرسالة الواردة نص اقتباس محددًا، يرسل OpenClaw الإجابة النهائية عبر مسار رد الاقتباس الأصلي في Telegram بدلًا من تحرير معاينة الإجابة، لذلك لا يمكن لـ streaming.preview.toolProgress إظهار أسطر الحالة القصيرة لتلك الجولة. لا تزال ردود الرسالة الحالية من دون نص اقتباس محدد تحتفظ ببث المعاينة. عيّن replyToMode: "off" عندما تكون رؤية تقدم الأدوات أهم من ردود الاقتباس الأصلية، أو عيّن streaming.preview.toolProgress: false للإقرار بالمفاضلة.- معاينات الرسائل المباشرة/المجموعات/المواضيع القصيرة: يحتفظ OpenClaw برسالة المعاينة نفسها ويجري التحرير النهائي في مكانه
- الردود النصية النهائية الطويلة التي تنقسم إلى عدة رسائل Telegram تعيد استخدام المعاينة الحالية كأول جزء نهائي عندما يكون ذلك ممكنًا، ثم ترسل الأجزاء المتبقية فقط
- الردود النهائية في وضع التقدم تمحو مسودة الحالة وتستخدم التسليم النهائي العادي بدلًا من تحرير المسودة لتصبح الإجابة
- إذا فشل التحرير النهائي قبل تأكيد النص المكتمل، يستخدم OpenClaw التسليم النهائي العادي وينظف المعاينة القديمة
- يرسل
/reasoning streamالاستدلال إلى المعاينة المباشرة أثناء التوليد - تُحذف معاينة الاستدلال بعد التسليم النهائي؛ استخدم
/reasoning onعندما يجب أن يظل الاستدلال مرئيًا - تُرسل الإجابة النهائية من دون نص الاستدلال
التنسيق والرجوع إلى HTML
التنسيق والرجوع إلى HTML
parse_mode: "HTML" في Telegram.- يُعرض النص الشبيه بـ Markdown كـ HTML آمن لـ Telegram.
- تُحفظ وسوم HTML المدعومة في Telegram؛ ويُهرّب HTML غير المدعوم.
- إذا رفض Telegram HTML المحلل، يعيد OpenClaw المحاولة كنص عادي.
channels.telegram.linkPreview: false.الأوامر الأصلية والأوامر المخصصة
الأوامر الأصلية والأوامر المخصصة
setMyCommands.الإعدادات الافتراضية للأوامر الأصلية:- يفعّل
commands.native: "auto"الأوامر الأصلية لـ Telegram
- تُطبّع الأسماء (إزالة
/في البداية، وتحويلها إلى أحرف صغيرة) - النمط الصالح:
a-z،0-9،_، الطول1..32 - لا يمكن للأوامر المخصصة تجاوز الأوامر الأصلية
- تُتجاوز التعارضات/التكرارات وتُسجّل
- الأوامر المخصصة هي إدخالات قائمة فقط؛ ولا تنفذ السلوك تلقائيًا
- يمكن لأوامر plugin/skill أن تستمر في العمل عند كتابتها حتى لو لم تظهر في قائمة Telegram
- يعني
setMyCommands failedمعBOT_COMMANDS_TOO_MUCHأن قائمة Telegram ما زالت تتجاوز الحد بعد التقليص؛ قلّل أوامر plugin/skill/المخصصة أو عطّلchannels.telegram.commands.native. - قد يعني فشل
deleteWebhookأوdeleteMyCommandsأوsetMyCommandsمع404: Not Foundبينما تعمل أوامر curl المباشرة لـ Bot API أنchannels.telegram.apiRootضُبط على نقطة النهاية الكاملة/bot<TOKEN>. يجب أن يكونapiRootجذر Bot API فقط، ويزيلopenclaw doctor --fixلاحقة/bot<TOKEN>العرضية. - يعني
getMe returned 401أن Telegram رفض رمز الروبوت المهيأ. حدّثbotTokenأوtokenFileأوTELEGRAM_BOT_TOKENبرمز BotFather الحالي؛ يتوقف OpenClaw قبل الاستطلاع لذلك لا يُبلّغ عن هذا كفشل تنظيف Webhook. - يعني
setMyCommands failedمع أخطاء الشبكة/الجلب عادةً أن DNS/HTTPS الصادر إلىapi.telegram.orgمحظور.
أوامر إقران الجهاز (Plugin device-pair)
عند تثبيت Plugin device-pair:- يولّد
/pairرمز الإعداد - الصق الرمز في تطبيق iOS
- يعرض
/pair pendingالطلبات المعلقة (بما في ذلك الدور/النطاقات) - وافق على الطلب:
/pair approve <requestId>للموافقة الصريحة/pair approveعندما يكون هناك طلب معلق واحد فقط/pair approve latestللأحدث
scopes: []؛ وأي رمز مشغل مُسلّم يبقى مقيدًا بـ operator.approvals وoperator.read وoperator.talk.secrets وoperator.write. فحوصات نطاق التمهيد مسبوقة بالدور، لذلك لا تلبي قائمة السماح الخاصة بالمشغل إلا طلبات المشغل؛ ما زالت الأدوار غير المشغّلة تحتاج إلى نطاقات تحت بادئة الدور الخاصة بها.إذا أعاد جهاز المحاولة بتفاصيل مصادقة متغيرة (مثل الدور/النطاقات/المفتاح العام)، يُستبدل الطلب المعلق السابق ويستخدم الطلب الجديد requestId مختلفًا. أعد تشغيل /pair pending قبل الموافقة.مزيد من التفاصيل: الإقران.الأزرار المضمنة
الأزرار المضمنة
offdmgroupallallowlist(الافتراضي)
capabilities: ["inlineButtons"] القديم إلى inlineButtons: "all".مثال إجراء رسالة:callback_data: <value>إجراءات رسائل Telegram للوكلاء والأتمتة
إجراءات رسائل Telegram للوكلاء والأتمتة
sendMessage(to،content،mediaUrlاختياري،replyToMessageId،messageThreadId)react(chatId،messageId،emoji)deleteMessage(chatId،messageId)editMessage(chatId،messageId،content)createForumTopic(chatId،name،iconColorاختياري،iconCustomEmojiId)
send، react، delete، edit، sticker، sticker-search، topic-create).عناصر تحكم الحجب:channels.telegram.actions.sendMessagechannels.telegram.actions.deleteMessagechannels.telegram.actions.reactionschannels.telegram.actions.sticker(الافتراضي: معطل)
edit وtopic-create مفعلان حاليًا افتراضيًا وليست لهما مفاتيح تبديل channels.telegram.actions.* منفصلة.
تستخدم الإرسالات وقت التشغيل لقطة الإعداد/الأسرار النشطة (بدء التشغيل/إعادة التحميل)، لذلك لا تجري مسارات الإجراءات إعادة حل SecretRef مخصصة لكل إرسال.دلالات إزالة التفاعل: /tools/reactionsوسوم سلاسل الرد
وسوم سلاسل الرد
- يرد
[[reply_to_current]]على الرسالة التي شغّلت الطلب - يرد
[[reply_to:<id>]]على معرف رسالة Telegram محدد
channels.telegram.replyToMode في المعالجة:off(الافتراضي)firstall
off سلاسل الرد الضمنية. لا تزال وسوم [[reply_to_*]] الصريحة محترمة.مواضيع المنتدى وسلوك السلاسل
مواضيع المنتدى وسلوك السلاسل
- تضيف مفاتيح جلسة الموضوع
:topic:<threadId> - تستهدف الردود وإجراءات الكتابة سلسلة الموضوع
- مسار إعداد الموضوع:
channels.telegram.groups.<chatId>.topics.<threadId>
threadId=1):- تحذف إرسالات الرسائل
message_thread_id(يرفض TelegramsendMessage(...thread_id=1)) - ما زالت إجراءات الكتابة تتضمن
message_thread_id
requireMention، allowFrom، skills، systemPrompt، enabled، groupPolicy).
agentId خاص بالموضوع فقط ولا يرث من الإعدادات الافتراضية للمجموعة.توجيه الوكيل لكل موضوع: يمكن لكل موضوع التوجيه إلى وكيل مختلف بتعيين agentId في إعداد الموضوع. يمنح هذا كل موضوع مساحة عمل وذاكرة وجلسة معزولة خاصة به. مثال:agent:zu:telegram:group:-1001234567890:topic:3ربط موضوع ACP الدائم: يمكن لموضوعات المنتدى تثبيت جلسات حزمة ACP عبر روابط ACP typed ذات المستوى الأعلى (bindings[] مع type: "acp" وmatch.channel: "telegram" وpeer.kind: "group" ومعرّف مؤهل بالموضوع مثل -1001234567890:topic:42). النطاق الحالي يقتصر على موضوعات المنتدى في المجموعات/المجموعات الفائقة. راجع وكلاء ACP.إنشاء ACP مرتبط بالمحادثة من الدردشة: يربط /acp spawn <agent> --thread here|auto الموضوع الحالي بجلسة ACP جديدة؛ وتوجّه المتابعات إليها مباشرة. يثبت OpenClaw تأكيد الإنشاء داخل الموضوع. يتطلب بقاء channels.telegram.threadBindings.spawnSessions مفعلا (القيمة الافتراضية: true).يعرّض سياق القالب MessageThreadId وIsForum. تحتفظ محادثات الرسائل المباشرة التي تحتوي على message_thread_id بتوجيه الرسائل المباشرة وبيانات الرد الوصفية في جلسات مسطحة افتراضيا؛ ولا تستخدم مفاتيح جلسات مدركة للمحادثات إلا عند تكوينها باستخدام threadReplies: "inbound" أو threadReplies: "always" أو requireTopic: true أو تكوين موضوع مطابق. استخدم channels.telegram.dm.threadReplies ذي المستوى الأعلى للقيمة الافتراضية للحساب، أو direct.<chatId>.threadReplies لرسالة مباشرة واحدة.الصوت والفيديو والملصقات
الصوت والفيديو والملصقات
الرسائل الصوتية
يميز Telegram بين الملاحظات الصوتية والملفات الصوتية.- الافتراضي: سلوك الملف الصوتي
- الوسم
[[audio_as_voice]]في رد الوكيل لفرض الإرسال كملاحظة صوتية - تُؤطر نصوص الملاحظات الصوتية الواردة كنص مولد آليا وغير موثوق في سياق الوكيل؛ ويظل اكتشاف الإشارات يستخدم النص الخام بحيث تستمر الرسائل الصوتية المحكومة بالإشارات في العمل.
رسائل الفيديو
يميز Telegram بين ملفات الفيديو وملاحظات الفيديو.مثال إجراء الرسالة:الملصقات
معالجة الملصقات الواردة:- WEBP ثابت: يُنزل ويُعالج (العنصر النائب
<media:sticker>) - TGS متحرك: يُتخطى
- WEBM فيديو: يُتخطى
Sticker.emojiSticker.setNameSticker.fileIdSticker.fileUniqueIdSticker.cachedDescription
~/.openclaw/telegram/sticker-cache.json
إشعارات التفاعلات
إشعارات التفاعلات
message_reaction (منفصلة عن حمولات الرسائل).عند تفعيلها، يضع OpenClaw أحداث نظام مثل:Telegram reaction added: 👍 by Alice (@alice) on msg 42
channels.telegram.reactionNotifications:off | own | all(الافتراضي:own)channels.telegram.reactionLevel:off | ack | minimal | extensive(الافتراضي:minimal)
- تعني
ownتفاعلات المستخدم مع الرسائل المرسلة من البوت فقط (بأفضل جهد عبر ذاكرة تخزين مؤقت للرسائل المرسلة). - تظل أحداث التفاعل تحترم عناصر تحكم الوصول في Telegram (
dmPolicyوallowFromوgroupPolicyوgroupAllowFrom)؛ وتُسقط الجهات المرسلة غير المصرح لها. - لا يوفر Telegram معرفات المحادثات في تحديثات التفاعل.
- تُوجه المجموعات غير المنتدية إلى جلسة دردشة المجموعة
- تُوجه مجموعات المنتدى إلى جلسة الموضوع العام للمجموعة (
:topic:1)، وليس إلى الموضوع الأصلي الدقيق
allowed_updates للاستقصاء/Webhook قيمة message_reaction تلقائيا.تفاعلات الإقرار
تفاعلات الإقرار
ackReaction رمز إيموجي للإقرار أثناء معالجة OpenClaw لرسالة واردة.ترتيب الحل:channels.telegram.accounts.<accountId>.ackReactionchannels.telegram.ackReactionmessages.ackReaction- رجوع احتياطي إلى إيموجي هوية الوكيل (
agents.list[].identity.emoji، وإلا ”👀”)
- يتوقع Telegram إيموجي unicode (على سبيل المثال ”👀”).
- استخدم
""لتعطيل التفاعل لقناة أو حساب.
كتابات التكوين من أحداث وأوامر Telegram
كتابات التكوين من أحداث وأوامر Telegram
configWrites !== false).تشمل الكتابات المشغلة من Telegram:- أحداث ترحيل المجموعة (
migrate_to_chat_id) لتحديثchannels.telegram.groups /config setو/config unset(يتطلب تفعيل الأوامر)
الاستقصاء الطويل مقابل Webhook
الاستقصاء الطويل مقابل Webhook
channels.telegram.webhookUrl وchannels.telegram.webhookSecret؛ اختياريا webhookPath وwebhookHost وwebhookPort (القيم الافتراضية /telegram-webhook و127.0.0.1 و8787).في وضع الاستقصاء الطويل، يحفظ OpenClaw علامة إعادة التشغيل المائية فقط بعد إرسال التحديث بنجاح. إذا فشل معالج، يظل ذلك التحديث قابلا لإعادة المحاولة في العملية نفسها ولا يُكتب كمكتمل لإزالة تكرار إعادة التشغيل.يرتبط المستمع المحلي بـ 127.0.0.1:8787. للدخول العام، إما ضع وكيلا عكسيا أمام المنفذ المحلي أو عيّن webhookHost: "0.0.0.0" عن قصد.يتحقق وضع Webhook من حراس الطلب، ورمز Telegram السري، وجسم JSON قبل إرجاع 200 إلى Telegram.
يعالج OpenClaw بعد ذلك التحديث بشكل غير متزامن عبر المسارات نفسها لكل دردشة/لكل موضوع في البوت المستخدمة في الاستقصاء الطويل، لذلك لا تجعل دورات الوكيل البطيئة ACK التسليم الخاص بـ Telegram منتظرا.الحدود وإعادة المحاولة وأهداف CLI
الحدود وإعادة المحاولة وأهداف CLI
- القيمة الافتراضية لـ
channels.telegram.textChunkLimitهي 4000. - يفضل
channels.telegram.chunkMode="newline"حدود الفقرات (الأسطر الفارغة) قبل التقسيم حسب الطول. - يحد
channels.telegram.mediaMaxMb(الافتراضي 100) حجم وسائط Telegram الواردة والصادرة. - يتحكم
channels.telegram.mediaGroupFlushMs(الافتراضي 500) في مدة تخزين ألبومات/مجموعات وسائط Telegram مؤقتا قبل أن يرسلها OpenClaw كرسالة واردة واحدة. زِدها إذا كانت أجزاء الألبوم تصل متأخرة؛ وقللها لتقليل زمن تأخر الرد على الألبوم. - يتجاوز
channels.telegram.timeoutSecondsمهلة عميل API في Telegram (إذا لم يُعين، تطبق القيمة الافتراضية لـ grammY). تقيّد عملاء البوت القيم المكوّنة الأقل من حارس طلب النص/الكتابة الصادر البالغ 60 ثانية حتى لا يوقف grammY تسليم الرد المرئي قبل أن يتمكن حارس نقل OpenClaw والرجوع الاحتياطي من العمل. لا يزال الاستقصاء الطويل يستخدم حارس طلبgetUpdatesمدته 45 ثانية حتى لا تُترك عمليات الاستقصاء الخاملة إلى أجل غير محدد. - القيمة الافتراضية لـ
channels.telegram.pollingStallThresholdMsهي120000؛ اضبطها بين30000و600000فقط لحالات إعادة تشغيل تعثر الاستقصاء الإيجابية الكاذبة. - يستخدم سجل سياق المجموعة
channels.telegram.historyLimitأوmessages.groupChat.historyLimit(الافتراضي 50)؛ وتقوم0بالتعطيل. - يُطبع سياق الرد/الاقتباس/إعادة التوجيه التكميلي في نافذة سياق محادثة مختارة واحدة عندما يكون Gateway قد رصد الرسائل الأصلية؛ وتُحفظ ذاكرة التخزين المؤقت للرسائل المرصودة بجوار مخزن الجلسات. لا يتضمن Telegram إلا
reply_to_messageسطحيا واحدا في التحديثات، لذلك تقتصر السلاسل الأقدم من ذاكرة التخزين المؤقت على حمولة التحديث الحالية في Telegram. - تتحكم قوائم السماح في Telegram بشكل أساسي في من يمكنه تشغيل الوكيل، وليست حدا كاملا لتنقيح السياق التكميلي.
- عناصر تحكم سجل الرسائل المباشرة:
channels.telegram.dmHistoryLimitchannels.telegram.dms["<user_id>"].historyLimit
- ينطبق تكوين
channels.telegram.retryعلى مساعدات إرسال Telegram (CLI/الأدوات/الإجراءات) لأخطاء API الصادرة القابلة للاسترداد. يستخدم تسليم الرد النهائي الوارد أيضا إعادة محاولة إرسال آمنة ومحدودة لفشل Telegram قبل الاتصال، لكنه لا يعيد محاولة مغلفات الشبكة الغامضة بعد الإرسال التي قد تكرر الرسائل المرئية.
openclaw message poll وتدعم موضوعات المنتدى:--poll-duration-seconds(5-600)--poll-anonymous--poll-public--thread-idلموضوعات المنتدى (أو استخدم هدف:topic:)
--presentationمع كتلbuttonsللوحات المفاتيح المضمنة عندما يسمحchannels.telegram.capabilities.inlineButtonsبذلك--pinأو--delivery '{"pin":true}'لطلب التسليم المثبت عندما يستطيع البوت التثبيت في تلك الدردشة--force-documentلإرسال الصور وGIF ومقاطع الفيديو الصادرة كمستندات بدلا من تحميلات الصور المضغوطة أو الوسائط المتحركة أو الفيديو
- يعطل
channels.telegram.actions.sendMessage=falseرسائل Telegram الصادرة، بما في ذلك الاستطلاعات - يعطل
channels.telegram.actions.poll=falseإنشاء استطلاعات Telegram مع ترك الإرسال العادي مفعلا
موافقات التنفيذ في Telegram
موافقات التنفيذ في Telegram
channels.telegram.execApprovals.enabled(يفعّل تلقائيا عندما يكون هناك موافق واحد على الأقل قابل للحل)channels.telegram.execApprovals.approvers(يرجع احتياطيا إلى معرفات المالك الرقمية منcommands.ownerAllowFrom)channels.telegram.execApprovals.target:dm(الافتراضي) |channel|bothagentFilter,sessionFilter
channels.telegram.allowFrom وgroupAllowFrom وdefaultTo في من يمكنه التحدث إلى البوت وأين يرسل الردود العادية. وهي لا تجعل شخصا ما موافقا على التنفيذ. يقوم أول اقتران رسالة مباشرة معتمد بتمهيد commands.ownerAllowFrom عندما لا يكون هناك مالك أوامر بعد، بحيث يظل إعداد المالك الواحد يعمل دون تكرار المعرفات تحت execApprovals.approvers.يعرض تسليم القناة نص الأمر في الدردشة؛ فعّل channel أو both فقط في المجموعات/الموضوعات الموثوقة. عندما تصل المطالبة إلى موضوع منتدى، يحافظ OpenClaw على الموضوع لمطالبة الموافقة والمتابعة. تنتهي صلاحية موافقات التنفيذ بعد 30 دقيقة افتراضيا.تتطلب أزرار الموافقة المضمنة أيضا أن يسمح channels.telegram.capabilities.inlineButtons بالسطح المستهدف (dm أو group أو all). تُحل معرفات الموافقة التي تبدأ بـ plugin: عبر موافقات Plugin؛ وتُحل الأخرى عبر موافقات التنفيذ أولا.راجع موافقات التنفيذ.عناصر التحكم في ردود الخطأ
عندما يواجه الوكيل خطأ في التسليم أو المزوّد، يمكن أن يرد Telegram بنص الخطأ أو يكتمه. يتحكم مفتاحا إعداد في هذا السلوك:| المفتاح | القيم | الافتراضي | الوصف |
|---|---|---|---|
channels.telegram.errorPolicy | reply, silent | reply | يرسل reply رسالة خطأ ودية إلى المحادثة. يكتم silent ردود الخطأ بالكامل. |
channels.telegram.errorCooldownMs | عدد (ms) | 60000 | الحد الأدنى للوقت بين ردود الخطأ إلى المحادثة نفسها. يمنع رسائل الخطأ المزعجة أثناء الانقطاعات. |
استكشاف الأخطاء وإصلاحها
لا يستجيب البوت لرسائل المجموعة التي لا تتضمن إشارة إليه
لا يستجيب البوت لرسائل المجموعة التي لا تتضمن إشارة إليه
- إذا كان
requireMention=false، فيجب أن يسمح وضع الخصوصية في Telegram بالرؤية الكاملة.- BotFather:
/setprivacy-> Disable - ثم أزل البوت من المجموعة وأعد إضافته
- BotFather:
- يحذر
openclaw channels statusعندما يتوقع الإعداد رسائل مجموعة بلا إشارة. - يمكن لـ
openclaw channels status --probeفحص معرّفات المجموعات الرقمية الصريحة؛ لا يمكن فحص العضوية باستخدام حرف البدل"*". - اختبار جلسة سريع:
/activation always.
لا يرى البوت رسائل المجموعة إطلاقًا
لا يرى البوت رسائل المجموعة إطلاقًا
- عندما يكون
channels.telegram.groupsموجودًا، يجب إدراج المجموعة (أو تضمين"*") - تحقق من عضوية البوت في المجموعة
- راجع السجلات:
openclaw logs --followلمعرفة أسباب التخطي
الأوامر تعمل جزئيًا أو لا تعمل إطلاقًا
الأوامر تعمل جزئيًا أو لا تعمل إطلاقًا
- خوّل هوية المرسل لديك (الاقتران و/أو
allowFromالرقمي) - يظل تخويل الأوامر مطبقًا حتى عندما تكون سياسة المجموعة
open - يعني فشل
setMyCommands failedمعBOT_COMMANDS_TOO_MUCHأن القائمة الأصلية تحتوي على عدد كبير جدًا من الإدخالات؛ قلّل أوامر Plugin/Skill/الأوامر المخصصة أو عطّل القوائم الأصلية - تُقيّد استدعاءات بدء التشغيل
deleteMyCommands/setMyCommandsواستدعاءات الكتابةsendChatActionوتُعاد المحاولة مرة واحدة عبر آلية الرجوع في نقل Telegram عند انتهاء مهلة الطلب. تشير أخطاء الشبكة/الجلب المستمرة عادةً إلى مشكلات في إمكانية الوصول عبر DNS/HTTPS إلىapi.telegram.org
يبلّغ بدء التشغيل عن رمز غير مصرّح به
يبلّغ بدء التشغيل عن رمز غير مصرّح به
getMe returned 401هو فشل مصادقة من Telegram لرمز البوت المضبوط.- أعد نسخ رمز البوت أو أعد توليده في BotFather، ثم حدّث
channels.telegram.botTokenأوchannels.telegram.tokenFileأوchannels.telegram.accounts.<id>.botTokenأوTELEGRAM_BOT_TOKENللحساب الافتراضي. deleteWebhook 401 Unauthorizedأثناء بدء التشغيل هو أيضًا فشل مصادقة؛ معاملته على أنه “لا يوجد Webhook” لن يؤدي إلا إلى تأجيل فشل الرمز غير الصالح نفسه إلى استدعاءات API لاحقة.
عدم استقرار الاستقصاء أو الشبكة
عدم استقرار الاستقصاء أو الشبكة
- يمكن أن يؤدي Node 22+ مع fetch/proxy مخصص إلى سلوك إجهاض فوري إذا لم تتطابق أنواع AbortSignal.
- تحل بعض المضيفات
api.telegram.orgإلى IPv6 أولًا؛ وقد يؤدي خروج IPv6 المعطّل إلى إخفاقات متقطعة في Telegram API. - إذا تضمنت السجلات
TypeError: fetch failedأوNetwork request for 'getUpdates' failed!، يعيد OpenClaw الآن المحاولة مع هذه الأخطاء باعتبارها أخطاء شبكة قابلة للاسترداد. - أثناء بدء تشغيل الاستقصاء، يعيد OpenClaw استخدام فحص بدء التشغيل الناجح
getMeلـ grammY حتى لا يحتاج المشغّل إلىgetMeثانٍ قبل أولgetUpdates. - إذا فشل
deleteWebhookبخطأ شبكة عابر أثناء بدء تشغيل الاستقصاء، يواصل OpenClaw إلى الاستقصاء الطويل بدلًا من إجراء استدعاء آخر في مستوى التحكم قبل الاستقصاء. يظهر Webhook الذي لا يزال نشطًا كتعارضgetUpdates؛ ثم يعيد OpenClaw بناء نقل Telegram ويحاول تنظيف Webhook مجددًا. - إذا كانت مقابس Telegram تُعاد تدويرها بوتيرة ثابتة قصيرة، فتحقق من انخفاض
channels.telegram.timeoutSeconds؛ تثبّت عملاء البوت القيم المضبوطة تحت حراس طلبات الخروج وgetUpdates، لكن الإصدارات الأقدم قد تُجهض كل استقصاء أو رد عندما كانت هذه القيمة مضبوطة دون تلك الحراس. - إذا تضمنت السجلات
Polling stall detected، يعيد OpenClaw تشغيل الاستقصاء ويعيد بناء نقل Telegram بعد 120 ثانية دون اكتمال نبض حياة الاستقصاء الطويل افتراضيًا. - يحذر
openclaw channels status --probeوopenclaw doctorعندما لا يكون حساب استقصاء قيد التشغيل قد أكملgetUpdatesبعد مهلة بدء التشغيل، أو عندما لا يكون حساب Webhook قيد التشغيل قد أكملsetWebhookبعد مهلة بدء التشغيل، أو عندما يكون آخر نشاط ناجح لنقل الاستقصاء قديمًا. - لا تزد
channels.telegram.pollingStallThresholdMsإلا عندما تكون استدعاءاتgetUpdatesالطويلة سليمة لكن مضيفك لا يزال يبلّغ عن عمليات إعادة تشغيل كاذبة بسبب تعثر الاستقصاء. تشير التعثرات المستمرة عادةً إلى مشكلات في proxy أو DNS أو IPv6 أو خروج TLS بين المضيف وapi.telegram.org. - يراعي Telegram أيضًا متغيرات بيئة proxy الخاصة بالعملية لنقل Bot API، بما في ذلك
HTTP_PROXYوHTTPS_PROXYوALL_PROXYوصيغها بالأحرف الصغيرة. لا يزال بإمكانNO_PROXY/no_proxyتجاوزapi.telegram.org. - إذا ضُبط proxy المُدار من OpenClaw عبر
OPENCLAW_PROXY_URLلبيئة خدمة ولم تكن هناك متغيرات بيئة proxy قياسية، يستخدم Telegram ذلك URL لنقل Bot API أيضًا. - على مضيفات VPS ذات خروج مباشر/TLS غير مستقر، وجّه استدعاءات Telegram API عبر
channels.telegram.proxy:
- يضبط Node 22+ افتراضيًا
autoSelectFamily=true(باستثناء WSL2). يراعي ترتيب نتائج DNS في TelegramOPENCLAW_TELEGRAM_DNS_RESULT_ORDER، ثمchannels.telegram.network.dnsResultOrder، ثم افتراضي العملية مثلNODE_OPTIONS=--dns-result-order=ipv4first؛ إذا لم ينطبق أي منها، يعود Node 22+ إلىipv4first. - إذا كان مضيفك WSL2 أو يعمل بوضوح بشكل أفضل مع سلوك IPv4 فقط، فأجبر اختيار العائلة:
- إجابات نطاق معيار RFC 2544 (
198.18.0.0/15) مسموح بها بالفعل لتنزيلات وسائط Telegram افتراضيًا. إذا كان fake-IP موثوق أو proxy شفاف يعيد كتابةapi.telegram.orgإلى عنوان خاص/داخلي/ذي استخدام خاص آخر أثناء تنزيلات الوسائط، يمكنك الاشتراك في التجاوز الخاص بـ Telegram فقط:
- يتوفر الاشتراك نفسه لكل حساب في
channels.telegram.accounts.<accountId>.network.dangerouslyAllowPrivateNetwork. - إذا كان proxy لديك يحل مضيفات وسائط Telegram إلى
198.18.x.x، فاترك العلامة الخطرة معطلة أولًا. تسمح وسائط Telegram بالفعل بنطاق معيار RFC 2544 افتراضيًا.
- تجاوزات البيئة (مؤقتة):
OPENCLAW_TELEGRAM_DISABLE_AUTO_SELECT_FAMILY=1OPENCLAW_TELEGRAM_ENABLE_AUTO_SELECT_FAMILY=1OPENCLAW_TELEGRAM_DNS_RESULT_ORDER=ipv4first
- تحقق من إجابات DNS:
مرجع الإعداد
المرجع الأساسي: مرجع الإعداد - Telegram.حقول Telegram عالية الأهمية
حقول Telegram عالية الأهمية
- بدء التشغيل/المصادقة:
enabled,botToken,tokenFile,accounts.*(يجب أن يشيرtokenFileإلى ملف عادي؛ تُرفض الروابط الرمزية) - التحكم في الوصول:
dmPolicy,allowFrom,groupPolicy,groupAllowFrom,groups,groups.*.topics.*, المستوى الأعلىbindings[](type: "acp") - موافقات التنفيذ:
execApprovals,accounts.*.execApprovals - الأمر/القائمة:
commands.native,commands.nativeSkills,customCommands - الترابط/الردود:
replyToMode,dm.threadReplies,direct.*.threadReplies - البث:
streaming(معاينة),streaming.preview.toolProgress,blockStreaming - التنسيق/التسليم:
textChunkLimit,chunkMode,linkPreview,responsePrefix - الوسائط/الشبكة:
mediaMaxMb,mediaGroupFlushMs,timeoutSeconds,pollingStallThresholdMs,retry,network.autoSelectFamily,network.dangerouslyAllowPrivateNetwork,proxy - جذر API المخصص:
apiRoot(جذر Bot API فقط؛ لا تُضمّن/bot<TOKEN>) - Webhook:
webhookUrl,webhookSecret,webhookPath,webhookHost - الإجراءات/القدرات:
capabilities.inlineButtons,actions.sendMessage|editMessage|deleteMessage|reactions|sticker - التفاعلات:
reactionNotifications,reactionLevel - الأخطاء:
errorPolicy,errorCooldownMs - الكتابات/السجل:
configWrites,historyLimit,dmHistoryLimit,dms.*.historyLimit
channels.telegram.defaultAccount (أو ضمّن channels.telegram.accounts.default) لجعل التوجيه الافتراضي صريحًا. وإلا يعود OpenClaw إلى أول معرّف حساب مُطبّع ويحذر openclaw doctor. ترث الحسابات المسماة قيم channels.telegram.allowFrom / groupAllowFrom، لكنها لا ترث قيم accounts.default.*.