Eşleştirme
Kanal sorunlarını giderme
Gateway yapılandırması
Hızlı kurulum
BotFather'da bot belirtecini oluşturun
- Sohbet akışı: Telegram’ı açın, @BotFather ile sohbet edin (kullanıcı adının tam olarak
@BotFatherolduğunu doğrulayın),/newbotkomutunu çalıştırın, istemleri izleyin ve belirteci kaydedin. - Web akışı: BotFather’ın web uygulamasını açın — web.telegram.org dahil her Telegram istemcisinde çalışır — kullanıcı arayüzünde botu oluşturun ve belirtecini kopyalayın.
Belirteci ve DM ilkesini yapılandırın
TELEGRAM_BOT_TOKEN (yalnızca varsayılan hesap; adlandırılmış hesaplar botToken veya tokenFile kullanmalıdır).
Telegram, openclaw channels login telegram kullanmaz; belirteci yapılandırmada/ortam değişkeninde ayarlayın, ardından Gateway’i başlatın.Gateway'i başlatın ve ilk DM'yi onaylayın
Botu bir gruba ekleyin
allowFrom/groupAllowFromiçin Telegram kullanıcı kimliğinizchannels.telegram.groupsaltında anahtar olarak Telegram grup sohbeti kimliği
openclaw logs --follow, iletilen kimlikleri gösteren bir bot veya Bot API getUpdates üzerinden alın. Gruba izin verildikten sonra /whoami@<bot_username>, kullanıcı ve grup kimliklerini doğrular.-100 ile başlayan negatif süper grup kimlikleri, grup sohbeti kimlikleridir. Bunlar groupAllowFrom altına değil, channels.telegram.groups altına yazılır.tokenFile, botToken değerine; o da ortam değişkenine üstün gelir ve yapılandırma her zaman TELEGRAM_BOT_TOKEN değerine üstün gelir (bu değer yalnızca varsayılan hesap için çözümlenir). Başarılı bir başlangıcın ardından OpenClaw, yeniden başlatmalarda fazladan bir getMe çağrısını atlamak için bot kimliğini en fazla 24 saat önbelleğe alır; belirtecin değiştirilmesi veya kaldırılması bu önbelleği temizler.Telegram tarafındaki ayarlar
Gizlilik modu ve grup görünürlüğü
Gizlilik modu ve grup görünürlüğü
/setprivacyüzerinden gizlilik modunu devre dışı bırakın veya- botu grup yöneticisi yapın.
Grup izinleri
Grup izinleri
Yararlı BotFather seçenekleri
Yararlı BotFather seçenekleri
/setjoingroups— gruplara eklemeye izin ver/reddet/setprivacy— grup görünürlüğü davranışı
Kontrol Paneli Mini Uygulaması
OpenClaw kontrol panelini Telegram içinde açmak için botla yapılan bir DM’de/dashboard komutunu çalıştırın.
Gereksinimler:
- Yayımlanmış HTTPS Mini App URL’si için
gateway.tailscale.mode: "serve"veya"funnel". - Sayısal Telegram kullanıcı kimliğiniz, seçilen hesabın etkin
allowFromlistesinde veyacommands.ownerAllowFromiçinde bulunmalıdır. - DM kullanın. Gruplarda
/dashboard,open this in a DM with the botile yanıt verir ve düğme göndermez. - Docker kurulumları: Serve/Funnel modlarında Gateway’in
tailscaledyanında geri döngü adresine bağlanması gerekir; yayımlanmış bağlantı noktalarıyla köprü ağ iletişimi bunu sağlayamaz. Gateway konteynerininetwork_mode: hostile çalıştırın ve ana makinedekitailscaledsoketini (/var/run/tailscale) vetailscaleCLI’ını konteynere bağlayın.
Erişim denetimi ve etkinleştirme
Grup bot kimliği
Gruplarda ve forum konularında, yapılandırılmış bot kullanıcı adının açıkça belirtilmesi (örneğin@my_bot), temsilci kişilik adı Telegram kullanıcı adından farklı olsa bile seçilen OpenClaw temsilcisine hitap eder. Grup sessizliği ilkesi ilgisiz trafik için hâlâ geçerlidir ancak bot kullanıcı adı hiçbir zaman “başka biri” değildir.
- DM ilkesi
- Grup ilkesi ve izin listeleri
- Bahsetme davranışı
channels.telegram.dmPolicy, doğrudan mesaj erişimini denetler:pairing(varsayılan)allowlist(allowFromiçinde en az bir gönderen kimliği gerektirir)open(allowFromdeğerinin"*"içermesini gerektirir)disabled
allowFrom: ["*"] ile birlikte dmPolicy: "open", bot kullanıcı adını bulan veya tahmin eden herhangi bir Telegram hesabının bota komut vermesine olanak tanır. Bunu yalnızca araçları sıkı biçimde kısıtlanmış, bilinçli olarak herkese açık botlar için kullanın; tek sahipli botlar sayısal kullanıcı kimlikleriyle allowlist kullanmalıdır.channels.telegram.allowFrom, sayısal Telegram kullanıcı kimliklerini kabul eder. telegram: / tg: ön ekleri kabul edilir ve normalleştirilir.
Çok hesaplı yapılandırmalarda kısıtlayıcı bir üst düzey channels.telegram.allowFrom güvenlik sınırıdır: hesap düzeyindeki bir allowFrom: ["*"], birleştirilmiş etkin izin listesi hâlâ açık bir joker karakter içermedikçe o hesabı herkese açık hâle getirmez.
Boş allowFrom ile dmPolicy: "allowlist", tüm DM’leri engeller ve yapılandırma doğrulaması tarafından reddedilir.
Kurulum yalnızca sayısal kullanıcı kimliklerini ister. Yapılandırmanızda eski bir kurulumdan kalma @username izin listesi girdileri varsa bunları sayısal kimliklere çözümlemek için openclaw doctor --fix komutunu çalıştırın (azami çabayla; Telegram bot belirteci gerektirir).
Daha önce eşleştirme deposundaki izin listesi dosyalarına güveniyorsanız openclaw doctor --fix, izin listesi akışları için girdileri channels.telegram.allowFrom içine kurtarabilir (örneğin dmPolicy: "allowlist" henüz açık kimlik içermiyorsa).Tek sahipli botlarda, önceki eşleştirme onaylarına güvenmek yerine açık sayısal allowFrom kimlikleriyle dmPolicy: "allowlist" kullanmayı tercih edin.Yaygın karışıklık: DM eşleştirme onayı, “bu gönderen her yerde yetkilidir” anlamına gelmez. Eşleştirme yalnızca DM erişimi verir. Henüz bir komut sahibi yoksa ilk onaylanan eşleştirme ayrıca commands.ownerAllowFrom değerini ayarlayarak yalnızca sahibe özel komutlara ve yürütme onaylarına açık bir operatör hesabı atar. Grup göndereni yetkilendirmesi yine açık yapılandırma izin listelerinden gelir.
Tek bir kimlikle hem DM’ler hem de grup komutları için yetkilendirilmek üzere: sayısal Telegram kullanıcı kimliğinizi channels.telegram.allowFrom içine ekleyin ve yalnızca sahibe özel komutlar için commands.ownerAllowFrom değerinin telegram:<your user id> içerdiğinden emin olun.Telegram kullanıcı kimliğinizi bulma
Daha güvenli (üçüncü taraf bot yok): botunuza DM gönderin,openclaw logs --follow komutunu çalıştırın, from.id değerini okuyun.Resmî Bot API yöntemi:@userinfobot veya @getidsbot.Çalışma zamanı davranışı
- Telegram, gateway işlemi içinde çalışır.
- Yönlendirme belirlenimlidir: Telegram’dan gelen iletilerin yanıtları Telegram’a geri gönderilir (kanalları model seçmez).
- Gelen iletiler; yanıt meta verileri, medya yer tutucuları ve gateway’in gözlemlediği yanıtlar için kalıcı yanıt zinciri bağlamıyla birlikte paylaşılan kanal zarfına normalleştirilir.
- Grup oturumları, grup kimliğine göre yalıtılır. Forum konuları
:topic:<threadId>ekler. - DM iletileri
message_thread_idtaşıyabilir; OpenClaw bunu yanıtlar için korur. DM konu oturumları yalnızca TelegramgetMebot içinhas_topics_enabled: truebildirdiğinde ayrılır; aksi takdirde DM’ler düz oturumda kalır. - Uzun yoklama, sohbet ve ileti dizisi başına sıralamayla grammY çalıştırıcısını kullanır. Çalıştırıcı havuzu eşzamanlılığı
agents.defaults.maxConcurrentkullanır. - Çok hesaplı başlatma, eşzamanlı
getMeyoklamalarını sınırlar; böylece büyük bot filoları tüm hesap yoklamalarını aynı anda dağıtmaz. - Her gateway işlemi, bir bot belirtecini aynı anda yalnızca bir etkin yoklayıcının kullanabilmesi için uzun yoklamayı korur. Kalıcı
getUpdates409 çakışmaları, aynı belirteci kullanan başka bir OpenClaw gateway’ine, betiğe veya harici yoklayıcıya işaret eder. - Yoklama gözetmeni, tamamlanmış
getUpdatescanlılığı olmadan 120 saniye geçtikten sonra yeniden başlatılır. - Telegram Bot API, okundu bilgisi desteğine sahip değildir (
sendReadReceiptsgeçerli değildir).
channels.telegram.dm.threadReplies ve channels.telegram.direct.<chatId>.threadReplies kaldırıldı. Yapılandırmanızda hâlâ bu anahtarlar varsa yükseltmeden sonra openclaw doctor --fix çalıştırın. DM konu yönlendirmesi artık Telegram getMe.has_topics_enabled davranışını izler (BotFather ileti dizili modu tarafından denetlenir): konuları etkin botlar, Telegram message_thread_id gönderdiğinde ileti dizisi kapsamlı DM oturumlarını kullanır; diğer DM’ler düz oturumda kalır.Özellik başvurusu
Canlı akış önizlemesi (ileti düzenlemeleri)
Canlı akış önizlemesi (ileti düzenlemeleri)
editMessageText işlemini art arda gerçekleştirerek yerinde sonlandırır.channels.telegram.streaming,off | partial | block | progressdeğerindedir (varsayılan:partial)- kısa ilk yanıt önizlemelerine geri sekme uygulanır; ardından çalıştırma hâlâ etkinse sınırlı bir gecikmeden sonra somutlaştırılır
progress, araç ilerlemesi için düzenlenebilir tek bir durum taslağını korur; yanıt etkinliği araç ilerlemesinden önce geldiğinde kararlı durum etiketini gösterir, tamamlandığında taslağı temizler ve son yanıtı normal bir ileti olarak gönderirstreaming.preview.toolProgress, araç/ilerleme güncellemelerinin aynı düzenlenmiş önizleme iletisini yeniden kullanıp kullanmayacağını denetler (varsayılan: önizleme akışı etkinkentrue)streaming.preview.commandText, bu satırlardaki komut/yürütme ayrıntısını denetler:raw(varsayılan) veyastatus(yalnızca araç etiketi)streaming.progress.commentary(varsayılan:false), geçici ilerleme taslağında asistan açıklaması/giriş metnini etkinleştirir- eski
channels.telegram.streamMode, mantıksalstreamingdeğerleri ve kullanımdan kaldırılmış yerel taslak önizleme anahtarları algılanır; bunları taşımak içinopenclaw doctor --fixçalıştırın
v2026.4.22+ sürümünden itibaren yayımlanan davranışla eşleşir).Yanıt önizleme düzenlemelerini koruyup araç ilerleme satırlarını gizleyin:progress modu, son yanıtı bu iletinin içine düzenlemeden araç ilerlemesini gösterir. Komut metni ilkesini streaming.progress altına yerleştirin:streaming.mode: "off", önizleme düzenlemelerini devre dışı bırakır ve genel araç/ilerleme bildirimlerini bağımsız durum iletileri olarak göndermek yerine bastırır; onay istemleri, medya ve hatalar yine normal son teslim yoluyla yönlendirilir. streaming.preview.toolProgress: false yalnızca yanıt önizleme düzenlemelerini korur.replyToMode; first, all veya batched olduğunda ve gelen ileti seçili alıntı metni içerdiğinde OpenClaw, yanıt önizlemesini düzenlemek yerine son yanıtı Telegram’ın yerel alıntı yanıtlama yolu üzerinden gönderir; dolayısıyla streaming.preview.toolProgress o turda durum satırlarını gösteremez. Seçili alıntı metni bulunmayan geçerli ileti yanıtları akışa devam eder. Araç ilerlemesi görünürlüğü yerel alıntı yanıtlarından daha önemliyse replyToMode: "off", bu ödünleşimi kabul etmek içinse streaming.preview.toolProgress: false ayarlayın./reasoning stream, oluşturma sırasında akıl yürütmeyi canlı önizlemeye aktarır ve son teslimden sonra akıl yürütme önizlemesini siler (görünür tutmak için /reasoning on kullanın). Son yanıt, akıl yürütme metni olmadan gönderilir.Zengin ileti biçimlendirmesi
Zengin ileti biçimlendirmesi
$400-600K gibi para birimleri matematik olarak ayrıştırılmaz. Uzun zengin metin, Telegram’ın sınırlarına göre otomatik olarak bölünür. 20 sütun sınırını aşan tablolar kod bloğuna geri döner.Varsayılan: istemci uyumluluğu için kapalıdır — bazı güncel Masaüstü, Web, Android ve üçüncü taraf istemciler kabul edilen zengin iletileri desteklenmiyor olarak işler. Botla kullanılan her istemci bunları işleyemiyorsa bu özelliği kapalı tutun. /status, geçerli oturumda zengin iletilerin açık mı kapalı mı olduğunu gösterir.Bağlantı önizlemeleri varsayılan olarak açıktır. channels.telegram.linkPreview: false, zengin metin için otomatik varlık algılamayı devre dışı bırakır.Yerel komutlar ve özel komutlar
Yerel komutlar ve özel komutlar
setMyCommands ile kaydedilir. commands.native: "auto", Telegram için yerel komutları etkinleştirir.Özel komut menüsü girdileri ekleyin:/ kaldırılır, küçük harfe dönüştürülür); geçerli desen a-z, 0-9, _, uzunluk 1-32; özel komutlar yerel komutları geçersiz kılamaz; çakışmalar/yinelenenler atlanır ve günlüğe kaydedilir.Özel komutlar yalnızca menü girdileridir — davranışı otomatik olarak uygulamazlar. Plugin/skill komutları, Telegram menüsünde gösterilmese bile yazıldıklarında çalışmaya devam edebilir. Yerel komutlar devre dışıysa yerleşik komutlar kaldırılır; özel/Plugin komutları yapılandırılmışsa yine kaydedilebilir.Yaygın kurulum hataları:- Kırpma yeniden denemesinden sonra
BOT_COMMANDS_TOO_MUCHiçerensetMyCommands failed, menünün hâlâ sınırı aştığı anlamına gelir; Plugin/skill/özel komutları azaltın veyachannels.telegram.commands.nativeözelliğini devre dışı bırakın. - Doğrudan Bot API curl komutları çalışırken
deleteWebhook,deleteMyCommandsveyasetMyCommandsişleminin404: Not Foundile başarısız olması genelliklechannels.telegram.apiRootdeğerinin tam/bot<TOKEN>uç noktasına ayarlandığı anlamına gelir.apiRootyalnızca Bot API kökü olmalıdır;openclaw doctor --fix, yanlışlıkla eklenmiş sondaki/bot<TOKEN>bölümünü kaldırır. getMe returned 401, Telegram’ın yapılandırılan bot belirtecini reddettiği anlamına gelir.botToken,tokenFileveyaTELEGRAM_BOT_TOKEN(varsayılan hesap) değerini geçerli BotFather belirteciyle güncelleyin; OpenClaw yoklamadan önce durduğu için bu durum Webhook temizleme hatası olarak bildirilmez.- Ağ/getirme hataları içeren
setMyCommands failedgenellikleapi.telegram.orgadresine giden DNS/HTTPS trafiğinin engellendiği anlamına gelir.
Cihaz eşleştirme komutları (device-pair Plugin’i)
Kurulduğunda:/pairbir kurulum kodu oluşturur- kodu iOS uygulamasına yapıştırın
/pair pendingbekleyen istekleri listeler (rol/kapsamlar dâhil)- onaylama:
/pair approve <requestId>,/pair approve(yalnızca bekleyen istek) veya/pair approve latest
requestId alır; onaylamadan önce /pair pending komutunu yeniden çalıştırın.Daha fazla ayrıntı: Eşleştirme.Satır içi düğmeler
Satır içi düğmeler
off, dm, group, all, allowlist (varsayılan). Eski capabilities: ["inlineButtons"], "all" değerine eşlenir.İleti eylemi örneği:web_app düğmeleri yalnızca bir kullanıcı ile bot arasındaki özel sohbetlerde çalışır.Kayıtlı bir Plugin etkileşimli işleyicisi tarafından sahiplenilmeyen geri çağırma tıklamaları aracıya metin olarak iletilir: callback_data: <value>.Aracılar ve otomasyon için Telegram ileti eylemleri
Aracılar ve otomasyon için Telegram ileti eylemleri
sendMessage(to,content, isteğe bağlımediaUrl,replyToMessageId,messageThreadId)react(chatId,messageId,emoji)deleteMessage(chatId,messageId)editMessage(chatId,messageId,contentveyacaption, isteğe bağlıpresentationsatır içi düğmeleri; yalnızca düğme düzenlemeleri yanıt işaretlemesini günceller)createForumTopic(chatId,name, isteğe bağlıiconColor,iconCustomEmojiId)
send, react, delete, edit, sticker, sticker-search, topic-create.Etkinleştirme koşulları: channels.telegram.actions.sendMessage, deleteMessage, reactions, sticker (varsayılan: devre dışı). edit, createForumTopic ve editForumTopic, özel bir geçiş anahtarı olmadan varsayılan olarak etkindir.
Çalışma zamanı gönderimleri, başlangıçta/yeniden yüklemede alınan etkin yapılandırma/gizli bilgiler anlık görüntüsünü kullanır; bu nedenle eylem yolları her gönderimde SecretRef değerlerini yeniden çözümlemez.Tepki kaldırma semantiği: /tools/reactions.Yanıt iş parçacığı etiketleri
Yanıt iş parçacığı etiketleri
[[reply_to_current]]— tetikleyici iletiyi yanıtlar[[reply_to:<id>]]— belirli bir ileti kimliğini yanıtlar
channels.telegram.replyToMode: off (varsayılan), first, all.Yanıt iş parçacığı etkinleştirildiğinde ve özgün metin/açıklama mevcut olduğunda OpenClaw, otomatik olarak yerel bir alıntı kesiti ekler. Telegram, yerel alıntı metnini 1024 UTF-16 kod birimiyle sınırlar; daha uzun iletiler baştan itibaren alıntılanır ve Telegram alıntıyı reddederse düz yanıta geri dönülür.off yalnızca örtük yanıt iş parçacığını devre dışı bırakır; açık [[reply_to_*]] etiketleri yine de dikkate alınır.Forum konuları ve iş parçacığı davranışı
Forum konuları ve iş parçacığı davranışı
:topic:<threadId> eklenir; yanıtlar ve yazıyor göstergesi konu iş parçacığını hedefler; konu yapılandırma yolu channels.telegram.groups.<chatId>.topics.<threadId> şeklindedir.Genel konu (threadId=1) özel bir durumdur: ileti gönderimlerinde message_thread_id kullanılmaz (Telegram, sendMessage(...thread_id=1) değerini “iş parçacığı bulunamadı” hatasıyla reddeder), ancak yazıyor eylemleri yine de message_thread_id içerir (yazıyor göstergesinin görünmesi için deneysel olarak gerekli olduğu belirlenmiştir).Konu girdileri, geçersiz kılınmadığı sürece grup ayarlarını devralır (requireMention, allowFrom, skills, systemPrompt, enabled, groupPolicy). agentId yalnızca konuya özeldir ve grup varsayılanlarından devralınmaz. topics."*", o gruptaki her konu için varsayılanları belirler; tam konu kimlikleri yine de "*" değerine göre önceliklidir.Konu başına agent yönlendirmesi: Her konu, konu yapılandırmasındaki agentId aracılığıyla farklı bir agent’a yönlendirilebilir; böylece kendine ait bir çalışma alanına, belleğe ve oturuma sahip olur:agent:zu:telegram:group:-1001234567890:topic:3.Kalıcı ACP konu bağlama: Forum konuları, üst düzey türü belirlenmiş bağlamalar aracılığıyla ACP çalıştırma düzeneği oturumlarını sabitleyebilir (bindings[]; type: "acp", match.channel: "telegram", peer.kind: "group" ve -1001234567890:topic:42 gibi konu nitelemeli bir kimlikle). Şu anda gruplardaki/süper gruplardaki forum konularıyla sınırlıdır. Bkz. ACP Agent’ları.Sohbetten iş parçacığına bağlı ACP başlatma: /acp spawn <agent> --thread here|auto, geçerli konuyu yeni bir ACP oturumuna bağlar; devam iletileri doğrudan buraya yönlendirilir ve OpenClaw, başlatma onayını konu içinde sabitler. session.threadBindings.spawnSessions tarafından denetlenir (varsayılan: true).Şablon bağlamı, MessageThreadId ve IsForum değerlerini kullanıma sunar. message_thread_id içeren DM sohbetleri yanıt meta verilerini korur, ancak yalnızca Telegram getMe, has_topics_enabled: true bildirdiğinde iş parçacığına duyarlı oturum anahtarlarını kullanır.
Kullanımdan kaldırılan dm.threadReplies ve direct.*.threadReplies geçersiz kılmaları kaldırılmıştır; BotFather iş parçacığı modu tek doğruluk kaynağıdır. Eski yapılandırma anahtarlarını kaldırmak için openclaw doctor --fix çalıştırın.Ses, video ve çıkartmalar
Ses, video ve çıkartmalar
Sesli iletiler
Telegram, sesli notları ses dosyalarından ayırır. Varsayılan: ses dosyası davranışı; sesli not olarak göndermeyi zorlamak için agent yanıtında[[audio_as_voice]] etiketini kullanın. Gelen sesli not dökümleri, agent bağlamında makine tarafından oluşturulmuş ve güvenilmeyen metin olarak çerçevelenir; ancak bahsetme algılaması yine de ham dökümü kullanır, böylece bahsetme koşullu sesli iletiler çalışmaya devam eder.Görüntülü iletiler
Telegram, video dosyalarını görüntülü notlardan ayırır. Görüntülü notlar açıklamaları desteklemez; sağlanan ileti metni ayrı olarak gönderilir.Konumlar ve mekânlar
Tek bir bağımsızlocation nesnesiyle mevcut send eylemini kullanın. Koordinatlar yerel bir konum işareti gönderir; hem name hem de address eklendiğinde yerel bir mekân kartı gönderilir. Konum gönderimleri, ileti metni veya medyayla birleştirilemez.Çıkartmalar
Gelen: statik WEBP indirilir ve işlenir (yer tutucu<media:sticker>); animasyonlu TGS ve video WEBM atlanır.Çıkartma bağlamı alanları: Sticker.emoji, Sticker.setName, Sticker.fileId, Sticker.fileUniqueId, Sticker.cachedDescription. Tekrarlanan görüntü çağrılarını azaltmak için açıklamalar, OpenClaw SQLite Plugin durumunda önbelleğe alınır.Çıkartma eylemlerini etkinleştirin:Tepki bildirimleri
Tepki bildirimleri
message_reaction güncellemeleri biçiminde gelir. Etkinleştirildiğinde OpenClaw, Telegram reaction added: 👍 by Alice (@alice) on msg 42 gibi sistem olaylarını kuyruğa alır.channels.telegram.reactionNotifications:off | own | all(varsayılan:own)channels.telegram.reactionLevel:off | ack | minimal | extensive(varsayılan:minimal)
own, yalnızca bot tarafından gönderilen iletilere yönelik kullanıcı tepkileri anlamına gelir (gönderilen ileti önbelleği aracılığıyla azami gayret esasına göre). Tepki olayları, Telegram erişim denetimlerine (dmPolicy, allowFrom, groupPolicy, groupAllowFrom) yine de uyar; yetkisiz göndericiler yok sayılır.Telegram, tepki güncellemelerinde iş parçacığı kimliklerini sağlamaz: forum dışı gruplar grup sohbeti oturumuna; forum gruplarıysa tam kaynak konuya değil, genel konu oturumuna (:topic:1) yönlendirilir.Yoklama/webhook için allowed_updates, message_reaction değerini otomatik olarak içerir.Alındı tepkileri
Alındı tepkileri
ackReaction, OpenClaw gelen bir iletiyi işlerken bir alındı emojisi gönderir. messages.ackReactionScope, bunun ne zaman gönderileceğini belirler.Emoji çözümleme sırası:channels.telegram.accounts.<accountId>.ackReactionchannels.telegram.ackReactionmessages.ackReaction- agent kimliği emojisi geri dönüşü (
agents.entries.*.identity.emoji, aksi takdirde ”👀”)
"" kullanın.Kapsam (messages.ackReactionScope, varsayılan "group-mentions"; şu anda Telegram hesabı veya Telegram kanalı geçersiz kılması yoktur):all (DM’ler + gruplar, ortam odası olayları dâhil), direct (yalnızca DM’ler), group-all (ortam odası olayları hariç tüm grup iletileri, DM yok), group-mentions (bottan bahsedildiğinde gruplar; DM yok — varsayılan), off / none (devre dışı).group-mentions), DM’lerde veya ortam odası olaylarında alındı tepkilerini tetiklemez. DM’ler için direct veya all kullanın; ortam odası olaylarını yalnızca all onaylar. Bu değer Telegram sağlayıcısı başlatılırken okunur; dolayısıyla değişikliğin yürürlüğe girmesi için Gateway’in yeniden başlatılması gerekir.Telegram olaylarından ve komutlarından yapılandırma yazma
Telegram olaylarından ve komutlarından yapılandırma yazma
configWrites !== false). Telegram tarafından tetiklenen yazma işlemleri; grup taşıma olaylarını (migrate_to_chat_id, channels.telegram.groups değerini günceller) ve /config set / /config unset işlemlerini (komutun etkinleştirilmesini gerektirir) içerir.Devre dışı bırakın:Uzun yoklama ve webhook karşılaştırması
Uzun yoklama ve webhook karşılaştırması
channels.telegram.webhookUrl ve channels.telegram.webhookSecret ayarlayın; isteğe bağlı olarak webhookPath (varsayılan /telegram-webhook), webhookHost (varsayılan 127.0.0.1), webhookPort (varsayılan 8787), webhookCertPath (doğrudan IP veya alan adsız kurulumlar için kendinden imzalı sertifika PEM’i) ayarlanabilir.Uzun yoklama modunda OpenClaw, yeniden başlatma filigranını yalnızca bir güncelleme başarıyla gönderildikten sonra kalıcılaştırır; başarısız bir işleyici, söz konusu güncellemeyi tamamlandı olarak işaretlemek yerine aynı süreçte yeniden denenebilir durumda bırakır.Yerel dinleyici varsayılan olarak 127.0.0.1:8787 adresine bağlanır. Genel erişim için yerel bağlantı noktasının önüne bir ters proxy yerleştirin veya webhookHost: "0.0.0.0" değerini bilinçli olarak ayarlayın.Webhook modu istek korumalarını, Telegram gizli belirtecini ve JSON gövdesini doğrular; ardından boş bir 200 döndürmeden önce güncellemeyi dayanıklı giriş kuyruğuna kaydeder. Başarılı dayanıklı kabul işlemi x-openclaw-delivery-accepted: durable içerir; sağlık, yönlendirme, kimlik doğrulama, doğrulama ve depolama hatası yanıtlarında bu üstbilgi bulunmaz. Ters proxy’ler ve ana makine denetleyicileri, kabulü yanıt zamanlamasından çıkarsamadan OpenClaw kabulünü genel bir boş 200 yanıtından ayırt etmek için bu üstbilgiyi zorunlu tutabilir.Dayanıklı yazma işleminden sonra OpenClaw, güncellemeleri çekirdek kanal girişi boşaltma mekanizması üzerinden talep eder ve işler (sohbet/konu başına işlem hatları, tur kabulünde tamamlama, kabul öncesi duraklama zaman aşımı). Yavaş agent turları Telegram’ın teslimat ACK’sini bekletmez.Sınırlar ve CLI hedefleri
Sınırlar ve CLI hedefleri
channels.telegram.textChunkLimitvarsayılan olarak 4000’dir;streaming.chunkMode="newline", uzunluğa göre bölmeden önce paragraf sınırlarını (boş satırlar) tercih eder.channels.telegram.mediaMaxMb(varsayılan 100), gelen ve giden medya boyutunu sınırlar.- grup bağlamı geçmişi
channels.telegram.historyLimitveyamessages.groupChat.historyLimit(varsayılan 50) kullanır;0devre dışı bırakır. - yanıt/alıntı/iletme ek bağlamı, Gateway üst mesajları gözlemlediğinde seçili tek bir konuşma bağlamı penceresinde normalleştirilir; gözlemlenen mesaj önbelleği OpenClaw SQLite Plugin durumunda tutulur ve
openclaw doctor --fixeski yan dosyaları içe aktarır. Telegram, güncelleme başına yalnızca bir sığreply_to_messageiçerdiğinden, önbellekten daha eski zincirler bu yükle sınırlıdır. - Telegram izin listeleri esas olarak ek bağlam için tam bir sansürleme sınırı oluşturmayı değil, aracıyı kimlerin tetikleyebileceğini denetler.
- DM geçmişi:
channels.telegram.dmHistoryLimit,channels.telegram.dms["<user_id>"].historyLimit.
openclaw message poll kullanır ve forum konularını destekler:--poll-duration-seconds (5-600), --poll-anonymous, --poll-public, --thread-id (veya bir :topic: hedefi). --poll-option, 2-12 kez tekrarlar (Telegram’ın seçenek sınırı).Telegram gönderimi ayrıca satır içi klavyeler için buttons bloklarıyla --presentation seçeneğini (channels.telegram.capabilities.inlineButtons izin verdiğinde), bot ilgili sohbette sabitleme yapabiliyorsa sabitlenmiş teslimat istemek için --pin veya --delivery '{"pin":true}' seçeneğini ve giden görüntüleri, GIF’leri ve videoları sıkıştırılmış/animasyonlu/video yüklemeleri yerine belge olarak göndermek için --force-document seçeneğini destekler.Eylem denetimi: channels.telegram.actions.sendMessage=false, anketler dâhil tüm giden mesajları devre dışı bırakır; channels.telegram.actions.poll=false, normal gönderimleri etkin bırakırken anket oluşturmayı devre dışı bırakır.Telegram'da exec onayları
Telegram'da exec onayları
channels.telegram.execApprovals.enabled(en az bir onaylayıcı çözümlenebildiğinde"auto"etkinleştirir)channels.telegram.execApprovals.approvers(commands.ownerAllowFromiçindeki sayısal sahip kimliklerine geri döner)channels.telegram.execApprovals.target:dm(varsayılan) |channel|bothagentFilter,sessionFilter
channels.telegram.allowFrom, groupAllowFrom ve defaultTo, botla kimlerin konuşabileceğini ve normal yanıtları nereye gönderdiğini denetler; bir kişiyi exec onaylayıcısı yapmaz. Henüz komut sahibi yoksa onaylanan ilk DM eşleştirmesi commands.ownerAllowFrom için başlangıç yapılandırmasını oluşturur; böylece tek sahipli kurulumlar, execApprovals.approvers altında kimlikleri yinelemeden çalışır.Kanal teslimatı komut metnini sohbette gösterir; channel veya both yalnızca güvenilir gruplarda/konularda etkinleştirilmelidir. İstem bir forum konusuna ulaştığında OpenClaw, onay istemi ve devamındaki iletiler için konuyu korur. Exec onaylarının süresi varsayılan olarak 30 dakika sonra dolar.Satır içi onay düğmeleri ayrıca channels.telegram.capabilities.inlineButtons değerinin hedef yüzeye (dm, group veya all) izin vermesini gerektirir. plugin: ön ekli onay kimlikleri Plugin onayları üzerinden çözümlenir; diğerleri önce exec onayları üzerinden çözümlenir.Bkz. Exec onayları.Hata yanıtı denetimleri
Aracı bir teslimat veya sağlayıcı hatasıyla karşılaştığında hata ilkesi, hata mesajlarının Telegram sohbetine ulaşıp ulaşmayacağını denetler:Sorun giderme
Bot, etiketleme içermeyen grup mesajlarına yanıt vermiyor
Bot, etiketleme içermeyen grup mesajlarına yanıt vermiyor
requireMention=falseise Telegram gizlilik modu tam görünürlüğe izin vermelidir: BotFather/setprivacy-> Disable; ardından botu gruptan kaldırıp yeniden ekleyin.- Yapılandırma, etiketleme içermeyen grup mesajlarını beklediğinde
openclaw channels statusuyarı verir. openclaw channels status --probe, açıkça belirtilen sayısal grup kimliklerini denetler; joker karakter"*"için üyelik sorgulanamaz.- Hızlı oturum testi:
/activation always.
Bot grup mesajlarını hiç görmüyor
Bot grup mesajlarını hiç görmüyor
channels.telegram.groupsmevcutsa grup listelenmelidir (veya"*"içermelidir).- Botun gruba üye olduğunu doğrulayın.
- Atlama nedenleri için
openclaw logs --followdeğerini inceleyin.
Komutlar kısmen çalışıyor veya hiç çalışmıyor
Komutlar kısmen çalışıyor veya hiç çalışmıyor
- Gönderen kimliğinizi yetkilendirin (eşleştirme ve/veya sayısal
allowFrom); grup ilkesiopenolsa bile komut yetkilendirmesi geçerliliğini korur. BOT_COMMANDS_TOO_MUCHile birliktesetMyCommands failed, yerel menüde çok fazla girdi olduğu anlamına gelir; Plugin/Skill/özel komutların sayısını azaltın veya yerel menüleri devre dışı bırakın.deleteMyCommands/setMyCommandsbaşlangıç çağrıları vesendChatActionyazma çağrıları sınırlıdır ve istek zaman aşımında Telegram’ın aktarım geri dönüşü üzerinden bir kez yeniden denenir. Sürekli ağ/fetch hataları genellikleapi.telegram.orgadresine DNS/HTTPS üzerinden erişilemediği anlamına gelir.
Başlangıçta yetkisiz token bildiriliyor
Başlangıçta yetkisiz token bildiriliyor
getMe returned 401, yapılandırılan bot token’ı için bir Telegram kimlik doğrulama hatasıdır. BotFather’da token’ı yeniden kopyalayın veya oluşturun; ardındanchannels.telegram.botToken,tokenFile,accounts.<id>.botTokenya daTELEGRAM_BOT_TOKEN(varsayılan hesap) değerini güncelleyin.- Başlangıç sırasındaki
deleteWebhook 401 Unauthorizedde bir kimlik doğrulama hatasıdır; bunu “Webhook yok” olarak değerlendirmek, aynı geçersiz token hatasını yalnızca daha sonraki bir API çağrısına erteler.
Yoklama veya ağ kararsızlığı
Yoklama veya ağ kararsızlığı
- Özel bir fetch/proxy ile Node 22+,
AbortSignaltürleri eşleşmezse anında iptal davranışını tetikleyebilir. - Bazı ana makineler
api.telegram.orgadresini önce IPv6’ya çözümler; bozuk IPv6 çıkışı aralıklı API hatalarına neden olur. TypeError: fetch failedveyaNetwork request for 'getUpdates' failed!içeren günlükler, kurtarılabilir ağ hataları olarak yeniden denenir.- Yoklama başlangıcı sırasında OpenClaw, grammY için başarılı başlangıç
getMeyoklamasını yeniden kullanır; böylece çalıştırıcının ilkgetUpdatesöncesinde ikinci birgetMeçağrısına ihtiyacı olmaz. deleteWebhook, yoklama başlangıcı sırasında geçici bir ağ hatasıyla başarısız olursa OpenClaw, yoklama öncesi başka bir denetim düzlemi çağrısı yapmak yerine uzun yoklamaya devam eder. Hâlâ etkin olan bir Webhook daha sonragetUpdatesçakışması olarak ortaya çıkar; OpenClaw aktarımı yeniden oluşturur ve Webhook temizliğini yeniden dener.- Günlüklerdeki
Polling stall detected, varsayılan olarak tamamlanmış uzun yoklama canlılığı olmadan 120 saniye geçtikten sonra OpenClaw’ın yoklamayı yeniden başlatıp aktarımı yeniden oluşturduğu anlamına gelir. openclaw channels status --probeveopenclaw doctor; çalışan bir yoklama hesabı başlangıç ek süresinden sonragetUpdatesişlemini tamamlamadığında, çalışan bir Webhook hesabı başlangıç ek süresinden sonrasetWebhookişlemini tamamlamadığında veya son başarılı yoklama aktarımı etkinliği eski kaldığında uyarı verir.- Telegram, Bot API aktarımı için işlem proxy ortam değişkenlerini dikkate alır:
HTTP_PROXY,HTTPS_PROXY,ALL_PROXYve küçük harfli çeşitleri.NO_PROXY/no_proxyyine deapi.telegram.orgdeğerini atlayabilir. - Bir hizmet ortamı için
OPENCLAW_PROXY_URLayarlanmışsa ve standart proxy ortam değişkeni yoksa Telegram, Bot API aktarımı için de bu URL’yi kullanır. - Doğrudan çıkış/TLS bağlantısı kararsız VPS ana makinelerinde Telegram API çağrılarını bir proxy üzerinden yönlendirin:
- Node 22+, varsayılan olarak
autoSelectFamily=truekullanır (WSL2 hariç). Telegram DNS sonuç sırası önceOPENCLAW_TELEGRAM_DNS_RESULT_ORDER, ardındanchannels.telegram.network.dnsResultOrder, sonrasında işlem varsayılanını (örneğinNODE_OPTIONS=--dns-result-order=ipv4first) dikkate alır; hiçbiri geçerli değilse Node 22+ üzerindeipv4firstdeğerine geri döner. - WSL2’de veya yalnızca IPv4 davranışı daha iyi çalıştığında adres ailesi seçimini zorlayın:
- RFC 2544 kıyaslama aralığı yanıtlarına (
198.18.0.0/15) Telegram medya indirmeleri için varsayılan olarak zaten izin verilir. Güvenilir bir sahte IP veya şeffaf proxy, medya indirmeleri sırasındaapi.telegram.orgdeğerini başka bir özel/dâhilî/özel kullanım adresine dönüştürüyorsa yalnızca Telegram’a özgü atlamayı etkinleştirin:
- Aynı etkinleştirme seçeneği hesap başına
channels.telegram.accounts.<accountId>.network.dangerouslyAllowPrivateNetworkkonumunda kullanılabilir. - Proxy’niz Telegram medya ana makinelerini
198.18.x.xaralığına çözümlüyorsa önce tehlikeli bayrağı kapalı bırakın; bu aralığa varsayılan olarak zaten izin verilir.
- Geçici ortam geçersiz kılmaları:
OPENCLAW_TELEGRAM_DISABLE_AUTO_SELECT_FAMILY=1,OPENCLAW_TELEGRAM_ENABLE_AUTO_SELECT_FAMILY=1,OPENCLAW_TELEGRAM_DNS_RESULT_ORDER=ipv4first. - DNS yanıtlarını doğrulayın:
Yapılandırma başvurusu
Birincil başvuru: Yapılandırma başvurusu - Telegram.Yüksek öneme sahip Telegram alanları
Yüksek öneme sahip Telegram alanları
- başlatma/kimlik doğrulama:
enabled,botToken,tokenFile(normal bir dosya olmalıdır; sembolik bağlantılar reddedilir),accounts.* - erişim denetimi:
dmPolicy,allowFrom,groupPolicy,groupAllowFrom,groups,groups.*.topics.*, üst düzeybindings[](type: "acp") - konu varsayılanları:
groups.<chatId>.topics."*"eşleşmeyen forum konularına uygulanır; tam konu kimlikleri bunu geçersiz kılar - çalıştırma onayları:
execApprovals,accounts.*.execApprovals - komut/menü:
commands.native,commands.nativeSkills,customCommands - iş parçacıkları/yanıtlar:
replyToMode,threadBindings - akış:
streaming(modlaroff | partial | block | progress),streaming.preview.toolProgress - biçimlendirme/teslim:
textChunkLimit,streaming.chunkMode,richMessages,markdown.tables(off | bullets | code | block),linkPreview,responsePrefix - medya/ağ:
mediaMaxMb,network.autoSelectFamily,network.dangerouslyAllowPrivateNetwork,proxy - özel API kökü:
apiRoot(yalnızca Bot API kökü;/bot<TOKEN>eklemeyin),trustedLocalFileRoots(kendi barındırdığınız Bot API’nin mutlakfile_pathkökleri) - Webhook:
webhookUrl,webhookSecret,webhookPath,webhookHost,webhookPort,webhookCertPath - eylemler/yetenekler:
capabilities.inlineButtons,actions.sendMessage|editMessage|deleteMessage|reactions|sticker|createForumTopic|editForumTopic - tepkiler:
reactionNotifications,reactionLevel - hatalar:
errorPolicy,silentErrorReplies - yazma/geçmiş:
configWrites,historyLimit,dmHistoryLimit,dms.*.historyLimit
channels.telegram.defaultAccount ayarlayın (veya channels.telegram.accounts.default ekleyin). Aksi takdirde OpenClaw, normalleştirilmiş ilk hesap kimliğine geri döner ve openclaw doctor uyarı verir. Adlandırılmış hesaplar channels.telegram.allowFrom / groupAllowFrom değerlerini devralır, ancak accounts.default.* değerlerini devralmaz.