Telegram (Bot API)
Durum: grammY üzerinden bot DM’leri + gruplar için production‑ready. Varsayılan olarak long‑polling; webhook isteğe bağlıdır.Hızlı kurulum (başlangıç)
- @BotFather ile bir bot oluşturun (doğrudan bağlantı). Kullanıcı adının tam olarak
@BotFatherolduğunu doğrulayın, ardından belirteci kopyalayın. - Belirteci ayarlayın:
- Env:
TELEGRAM_BOT_TOKEN=... - Ya da yapılandırma:
channels.telegram.botToken: "...". - Her ikisi de ayarlıysa, yapılandırma önceliklidir (ortam değişkeni geri dönüş olarak yalnızca varsayılan hesap içindir).
- Env:
- Gateway’i başlatın.
- DM erişimi varsayılan olarak eşleştirmedir; ilk temas sırasında eşleştirme kodunu onaylayın.
Nedir?
- Gateway’e ait bir Telegram Bot API kanalıdır.
- Deterministik yönlendirme: yanıtlar Telegram’a geri döner; model kanal seçmez.
- DM’ler ajanın ana oturumunu paylaşır; gruplar yalıtılmıştır (
agent:<agentId>:telegram:group:<chatId>).
Kurulum (hızlı yol)
1. Bot belirteci oluşturma (BotFather)
- Telegram’ı açın ve @BotFather ile sohbet edin (doğrudan bağlantı). Kullanıcı adının tam olarak
@BotFatherolduğunu doğrulayın. /newbotçalıştırın, ardından yönergeleri izleyin (ad +botile biten kullanıcı adı).- Belirteci kopyalayın ve güvenle saklayın.
/setjoingroups— botun gruplara eklenmesine izin ver/engelle./setprivacy— botun tüm grup mesajlarını görüp görmeyeceğini denetle.
2. Belirteci yapılandırma (ortam değişkeni veya config)
Örnek:TELEGRAM_BOT_TOKEN=... (varsayılan hesap için çalışır).
Hem ortam değişkeni hem de yapılandırma ayarlıysa, yapılandırma önceliklidir.
Çoklu hesap desteği: hesap başına belirteçler ve isteğe bağlı name ile channels.telegram.accounts kullanın. Ortak desen için gateway/configuration bölümüne bakın.
- Gateway’i başlatın. Bir belirteç çözümlendiğinde Telegram başlar (önce yapılandırma, ortam değişkeni geri dönüş).
- DM erişimi varsayılan olarak eşleştirmedir. Bot ilk kez iletişime geçtiğinde kodu onaylayın.
- Gruplar için: botu ekleyin, gizlilik/yönetici davranışını belirleyin (aşağıda), ardından mention kapısı + izin listelerini denetlemek için
channels.telegram.groupsayarlayın.
Belirteç + gizlilik + izinler (Telegram tarafı)
Belirteç oluşturma (BotFather)
/newbotbotu oluşturur ve belirteci döndürür (gizli tutun).- If a token leaks, revoke/regenerate it via @BotFather and update your config.
Grup mesajı görünürlüğü (Gizlilik Modu)
Telegram botları varsayılan olarak Gizlilik Modu ile gelir; bu mod gruplarda hangi mesajları alabileceklerini sınırlar. Botunuzun gruptaki tüm mesajları görmesi gerekiyorsa iki seçeneğiniz vardır:/setprivacyile gizlilik modunu kapatın veya- Botu grup yöneticisi olarak ekleyin (yönetici botlar tüm mesajları alır).
Grup izinleri (yönetici yetkileri)
Yönetici durumu grup içinde (Telegram arayüzü) ayarlanır. Yönetici botlar her zaman tüm grup mesajlarını alır; tam görünürlük gerekiyorsa yöneticiyi kullanın.Nasıl çalışır (davranış)
- Gelen mesajlar, yanıt bağlamı ve medya yer tutucuları ile paylaşılan kanal zarfına normalize edilir.
- Grup yanıtları varsayılan olarak bir mention gerektirir (yerel @mention veya
agents.list[].groupChat.mentionPatterns/messages.groupChat.mentionPatterns). - Çoklu ajan geçersiz kılma:
agents.list[].groupChat.mentionPatternsüzerinde ajan başına desenler ayarlayın. - Yanıtlar her zaman aynı Telegram sohbetine yönlendirilir.
- Long‑polling, sohbet başına sıralama ile grammY runner kullanır; genel eşzamanlılık
agents.defaults.maxConcurrentile sınırlandırılır. - Telegram Bot API okundu bilgilerini desteklemez;
sendReadReceiptsseçeneği yoktur.
Taslak akışı
OpenClaw, Telegram DM’lerindesendMessageDraft kullanarak kısmi yanıtları akış halinde gönderebilir.
Gereksinimler:
- @BotFather’da bot için Threaded Mode etkin olmalıdır (forum konu modu).
- Yalnızca özel sohbet iş parçacıkları (Telegram, gelen mesajlarda
message_thread_idiçerir). channels.telegram.streamMode,"off"olarak ayarlı olmamalıdır (varsayılan:"partial";"block"parça parça taslak güncellemelerini etkinleştirir).
Biçimlendirme (Telegram HTML)
- Giden Telegram metni
parse_mode: "HTML"kullanır (Telegram’ın desteklediği etiket alt kümesi). - Markdown benzeri giriş Telegram‑güvenli HTML’e dönüştürülür (kalın/italik/üstü çizili/kod/bağlantılar); blok öğeleri yeni satırlar/maddelerle metne düzleştirilir.
- Modellerden gelen ham HTML, Telegram ayrıştırma hatalarını önlemek için kaçışlanır.
- Telegram HTML yükünü reddederse, OpenClaw aynı mesajı düz metin olarak yeniden dener.
Komutlar (yerel + özel)
OpenClaw, başlangıçta Telegram’ın bot menüsüne yerel komutları (/status, /reset, /model gibi) kaydeder.
Yapılandırma ile menüye özel komutlar ekleyebilirsiniz:
Kurulum sorun giderme (komutlar)
- Günlüklerde
setMyCommands failedgenellikleapi.telegram.orgadresine giden HTTPS/DNS çıkışının engellendiği anlamına gelir. sendMessageveyasendChatActionhataları görürseniz, IPv6 yönlendirmesi ve DNS’i kontrol edin.
- Özel komutlar yalnızca menü girdileridir; OpenClaw bunları başka yerde ele almadıkça uygulamaz.
- Bazı komutlar Telegram’ın komut menüsüne kaydedilmeden eklentiler/yetenekler tarafından işlenebilir. Yazıldıklarında yine çalışırlar (sadece
/commands/ menüde görünmezler). - Komut adları normalize edilir (başta gelen
/kaldırılır, küçük harfe çevrilir) vea-z,0-9,_ile eşleşmelidir (1–32 karakter). - Özel komutlar yerel komutların üzerine yazamaz. Çakışmalar yok sayılır ve kayda alınır.
commands.nativedevre dışıysa, yalnızca özel komutlar kaydedilir (yoksa temizlenir).
Cihaz eşleştirme komutları (device-pair eklentisi)
device-pair eklentisi yüklüyse, yeni bir telefonu eşleştirmek için Telegram-öncelikli bir akış ekler:
/pairbir kurulum kodu üretir (kolay kopyala/yapıştır için ayrı bir mesaj olarak gönderilir).- Bağlanmak için kurulum kodunu iOS uygulamasına yapıştırın.
/pair approveen son bekleyen cihaz isteğini onaylar.
Sınırlar
- Giden metin
channels.telegram.textChunkLimit’a bölünür (varsayılan 4000). - İsteğe bağlı yeni satıra göre bölme: uzunluk bölmeden önce boş satırlarda (paragraf sınırları) bölmek için
channels.telegram.chunkMode="newline"ayarlayın. - Medya indirme/yükleme
channels.telegram.mediaMaxMbile sınırlandırılır (varsayılan 5). - Telegram Bot API istekleri
channels.telegram.timeoutSecondssonra zaman aşımına uğrar (grammY ile varsayılan 500). Uzun beklemeleri önlemek için daha düşüğe ayarlayın. - Grup geçmişi bağlamı
channels.telegram.historyLimit(veyachannels.telegram.accounts.*.historyLimit) kullanır; aksi haldemessages.groupChat.historyLimit’ya düşer. Devre dışı bırakmak için0ayarlayın (varsayılan 50). - DM geçmişi
channels.telegram.dmHistoryLimit(kullanıcı dönüşleri) ile sınırlandırılabilir. Kullanıcı başına geçersiz kılmalar:channels.telegram.dms["<user_id>"].historyLimit.
Grup etkinleştirme modları
Varsayılan olarak bot, gruplarda yalnızca mention’lara yanıt verir (@botname veya agents.list[].groupChat.mentionPatterns içindeki desenler). Bu davranışı değiştirmek için:
Yapılandırma ile (önerilen)
channels.telegram.groups ayarlamak bir izin listesi oluşturur — yalnızca listelenen gruplar (veya "*") kabul edilir.
Forum konuları, channels.telegram.groups.<groupId>.topics.<topicId> altında konu başına geçersiz kılmalar eklemediğiniz sürece üst grup yapılandırmasını (allowFrom, requireMention, skills, prompts) devralır.
Tüm gruplara her zaman yanıt vermek için:
Komut ile (oturum düzeyi)
Grupta gönderin:/activation always— tüm mesajlara yanıt ver/activation mention— mention gerektir (varsayılan)
Grup sohbet kimliğini alma
Gruptaki herhangi bir mesajı Telegram’da@userinfobot veya @getidsbot’e iletin; sohbet kimliğini görürsünüz (ör. -1001234567890 gibi negatif bir sayı).
İpucu: Kendi kullanıcı kimliğiniz için botla DM başlatın; bot kullanıcı kimliğinizle yanıt verir (eşleştirme mesajı) veya komutlar etkinleştirildikten sonra /whoami kullanın.
Gizlilik notu: @userinfobot üçüncü taraf bir bottur. İsterseniz botu gruba ekleyin, bir mesaj gönderin ve openclaw logs --follow ile chat.id’ü okuyun ya da Bot API getUpdates kullanın.
Yapılandırma yazımları
Varsayılan olarak Telegram, kanal olayları veya/config set|unset tarafından tetiklenen yapılandırma güncellemelerini yazmaya yetkilidir.
Bu şu durumlarda olur:
- Bir grup süper gruba yükseltilir ve Telegram
migrate_to_chat_idyayar (sohbet kimliği değişir). OpenClaw,channels.telegram.groups’yi otomatik olarak taşıyabilir. - Bir Telegram sohbetinde
/config setveya/config unsetçalıştırırsınız (commands.config: truegerektirir).
Konular (forum süper grupları)
Telegram forum konuları, mesaj başına birmessage_thread_id içerir. OpenClaw:
- Her konunun yalıtılması için Telegram grup oturum anahtarına
:topic:<threadId>ekler. - Yanıtların konu içinde kalması için yazıyor göstergeleri ve yanıtları
message_thread_idile gönderir. - Genel konu (iş parçacığı kimliği
1) özeldir: mesaj gönderimlerimessage_thread_idiçermez (Telegram reddeder), ancak yazıyor göstergeleri yine de içerir. - Yönlendirme/şablonlama için şablon bağlamında
MessageThreadId+IsForumsunar. - Konuya özgü yapılandırma
channels.telegram.groups.<chatId>.topics.<threadId>altında mevcuttur (skills, izin listeleri, otomatik yanıt, sistem istemleri, devre dışı). - Konu yapılandırmaları, konu başına geçersiz kılınmadıkça grup ayarlarını (requireMention, izin listeleri, skills, prompts, enabled) devralır.
message_thread_id içerebilir. OpenClaw DM oturum anahtarını değiştirmez; ancak mevcutsa yanıtlar/taslak akışı için iş parçacığı kimliğini kullanır.
Satır İçi Düğmeler
Telegram, geri çağırım düğmeleri olan satır içi klavyeleri destekler.off— satır içi düğmeler devre dışıdm— yalnızca DM’ler (grup hedefleri engellenir)group— yalnızca gruplar (DM hedefleri engellenir)all— DM’ler + gruplarallowlist— DM’ler + gruplar, ancak yalnızcaallowFrom/groupAllowFromtarafından izin verilen gönderenler (kontrol komutlarıyla aynı kurallar)
allowlist.
Eski: capabilities: ["inlineButtons"] = inlineButtons: "all".
Düğme gönderme
Mesaj aracınıbuttons parametresiyle kullanın:
callback_data: value
Yapılandırma seçenekleri
Telegram yetenekleri iki düzeyde yapılandırılabilir (yukarıda nesne biçimi gösterilmiştir; eski dize dizileri hâlâ desteklenir):channels.telegram.capabilities: Aksi belirtilmedikçe tüm Telegram hesaplarına uygulanan genel varsayılan yetenek yapılandırması.channels.telegram.accounts.<account>.capabilities: Belirli bir hesap için genel varsayılanları geçersiz kılan hesap başına yetenekler.
Erişim denetimi (DM’ler + gruplar)
DM erişimi
- Varsayılan:
channels.telegram.dmPolicy = "pairing". Bilinmeyen gönderenler bir eşleştirme kodu alır; onaylanana kadar mesajlar yok sayılır (kodlar 1 saat sonra dolar). - Onaylama yolları:
openclaw pairing list telegramopenclaw pairing approve telegram <CODE>
- Eşleştirme, Telegram DM’leri için varsayılan belirteç değişimidir. Ayrıntılar: Eşleştirme
channels.telegram.allowFromsayısal kullanıcı kimliklerini (önerilir) veya@usernamegirdilerini kabul eder. Bot kullanıcı adı değildir; insan gönderenin kimliğini kullanın. Sihirbaz@usernamekabul eder ve mümkünse sayısal kimliğe çözer.
Telegram kullanıcı kimliğinizi bulma
Daha güvenli (üçüncü taraf bot yok):- Gateway’i başlatın ve botunuza DM gönderin.
openclaw logs --followçalıştırın vefrom.id’i arayın.
- Botunuza DM gönderin.
-
Bot belirtecinizle güncellemeleri çekin ve
message.from.id’yi okuyun:
@userinfobotveya@getidsbot’e DM gönderin ve dönen kullanıcı kimliğini kullanın.
Grup erişimi
İki bağımsız denetim: 1. Hangi gruplara izin verildiği (channels.telegram.groups ile grup izin listesi):
groupsyapılandırması yok = tüm gruplara izin verilirgroupsyapılandırması varsa = yalnızca listelenen gruplar veya"*"izinlidir- Örnek:
"groups": { "-1001234567890": {}, "*": {} }tüm gruplara izin verir
channels.telegram.groupPolicy ile gönderen filtreleme):
"open"= izinli gruplardaki tüm gönderenler mesaj atabilir"allowlist"= yalnızcachannels.telegram.groupAllowFromiçindeki gönderenler mesaj atabilir"disabled"= grup mesajları hiç kabul edilmez VarsayılangroupPolicy: "allowlist"’tir (groupAllowFromeklemediğiniz sürece engelli).
groupPolicy: "allowlist" + groupAllowFrom + channels.telegram.groups içinde belirli gruplar
Belirli bir grupta herhangi bir grup üyesinin konuşmasına izin vermek için (kontrol komutlarını yetkili gönderenlerle sınırlı tutarken), grup başına geçersiz kılma ayarlayın:
Long‑polling vs webhook
- Varsayılan: long‑polling (herhangi bir herkese açık URL gerekmez).
- Webhook modu:
channels.telegram.webhookUrlvechannels.telegram.webhookSecretayarlayın (isteğe bağlıchannels.telegram.webhookPath).- Yerel dinleyici
0.0.0.0:8787’e bağlanır ve varsayılan olarakPOST /telegram-webhook’ü sunar. - Genel URL’niz farklıysa, bir ters vekil kullanın ve
channels.telegram.webhookUrl’i genel uç noktaya yönlendirin.
- Yerel dinleyici
Yanıt iş parçacığı (threading)
Telegram, etiketler aracılığıyla isteğe bağlı iş parçacıklı yanıtları destekler:[[reply_to_current]]— tetikleyici mesaja yanıt ver.[[reply_to:<id>]]— belirli bir mesaj kimliğine yanıt ver.
channels.telegram.replyToMode ile denetlenir:
first(varsayılan),all,off.
Sesli mesajlar (ses notu vs dosya)
Telegram ses notlarını (yuvarlak balon) ses dosyalarından (meta veri kartı) ayırır. OpenClaw, geriye dönük uyumluluk için varsayılan olarak ses dosyalarını kullanır. Ajan yanıtlarında ses notu balonu zorlamak için, yanıtta herhangi bir yere şu etiketi ekleyin:[[audio_as_voice]]— sesi dosya yerine ses notu olarak gönder.
media URL’si ile asVoice: true ayarlayın
(medya mevcutken message isteğe bağlıdır):
Video mesajları (video vs video notu)
Telegram video notlarını (yuvarlak balon) video dosyalarından (dikdörtgen) ayırt eder. OpenClaw varsayılan olarak video dosyalarını kullanır. Mesaj aracı gönderimleri için, bir videomedia URL’si ile asVideoNote: true ayarlayın:
Çıkartmalar
OpenClaw, akıllı önbellekleme ile Telegram çıkartmalarını alma ve gönderme destekler.Receiving stickers
Bir kullanıcı çıkartma gönderdiğinde, OpenClaw çıkartma türüne göre işlem yapar:- Statik çıkartmalar (WEBP): İndirilir ve görsel işleme üzerinden işlenir. Çıkartma, mesaj içeriğinde bir
<media:sticker>yer tutucusu olarak görünür. - Animasyonlu çıkartmalar (TGS): Atlanır (Lottie biçimi işleme için desteklenmez).
- Video çıkartmalar (WEBM): Atlanır (video biçimi işleme için desteklenmez).
Sticker— şu alanlara sahip nesne:emoji— çıkartmayla ilişkili emojisetName— çıkartma setinin adıfileId— Telegram dosya kimliği (aynı çıkartmayı geri göndermek için)fileUniqueId— önbellek araması için kararlı kimlikcachedDescription— mevcutsa önbelleğe alınmış görsel açıklaması
Sticker cache
Çıkartmalar, açıklamalar üretmek için yapay zekânın görsel yeteneklerinden geçirilir. Aynı çıkartmalar sık gönderildiğinden, OpenClaw yinelenen API çağrılarını önlemek için bu açıklamaları önbellekler. Nasıl çalışır:- İlk karşılaşma: Çıkartma görseli görsel analiz için yapay zekâya gönderilir. Yapay zekâ bir açıklama üretir (örn. “Heyecanla el sallayan bir çizgi film kedisi”).
- Önbelleğe alma: Açıklama; çıkartmanın dosya kimliği, emojisi ve set adıyla birlikte kaydedilir.
- Sonraki karşılaşmalar: Aynı çıkartma tekrar görüldüğünde, önbellekteki açıklama doğrudan kullanılır. Görsel yapay zekâya gönderilmez.
~/.openclaw/telegram/sticker-cache.json
Önbellek kayıt biçimi:
- Aynı çıkartma için tekrarlanan görsel çağrıları önleyerek API maliyetlerini düşürür
- Önbelleğe alınmış çıkartmalar için daha hızlı yanıt süreleri (görsel işleme gecikmesi yok)
- Önbelleğe alınmış açıklamalara dayalı çıkartma arama işlevini mümkün kılar
Sending stickers
Ajan,sticker ve sticker-search eylemlerini kullanarak çıkartma gönderebilir ve arayabilir. Bunlar varsayılan olarak devre dışıdır ve yapılandırmada etkinleştirilmelidir:
fileId(zorunlu) — çıkartmanın Telegram dosya kimliği. Bunu, bir çıkartma alırkenSticker.fileId’den veya birsticker-searchsonucundan edinin.replyTo(isteğe bağlı) — yanıtlanacak mesaj kimliği.threadId(isteğe bağlı) — forum konuları için mesaj iş parçacığı kimliği.
Akış (taslaklar)
Telegram, ajan yanıt üretirken taslak baloncukları akış halinde gösterebilir. OpenClaw, Bot APIsendMessageDraft’i (gerçek mesajlar değildir) kullanır ve ardından
nihai yanıtı normal bir mesaj olarak gönderir.
Gereksinimler (Telegram Bot API 9.3+):
- Konular etkin olan özel sohbetler (bot için forum konu modu).
- Gelen mesajlar
message_thread_idiçermelidir (özel konu iş parçacığı). - Gruplar/süper gruplar/kanallar için akış yok sayılır.
channels.telegram.streamMode: "off" | "partial" | "block"(varsayılan:partial)partial: taslak baloncuğunu en son akış metniyle güncelle.block: taslak baloncuğunu daha büyük bloklar halinde güncelle (parçalı).off: taslak akışını devre dışı bırak.
- İsteğe bağlı (yalnızca
streamMode: "block"için):channels.telegram.draftChunk: { minChars?, maxChars?, breakPreference? }- varsayılanlar:
minChars: 200,maxChars: 800,breakPreference: "paragraph"(channels.telegram.textChunkLimit’e sıkıştırılır).
- varsayılanlar:
channels.telegram.blockStreaming: true gerektirir.
Gerekçelendirme akışı (yalnızca Telegram):
/reasoning stream, yanıt üretilirken gerekçelendirmeyi taslak baloncuğuna akış halinde gönderir, ardından gerekçelendirme olmadan nihai yanıtı yollar.channels.telegram.streamModeoffise gerekçelendirme akışı devre dışıdır. Daha fazla bağlam: Akış + parçalama.
Yeniden deneme politikası
Giden Telegram API çağrıları, geçici ağ/429 hatalarında üstel geri çekilme ve jitter ile yeniden denenir.channels.telegram.retry üzerinden yapılandırın. Yeniden deneme ilkesi bölümüne bakın.
Ajan aracı (mesajlar + tepkiler)
- Araç:
telegramvesendMessageeylemi (to,content, isteğe bağlımediaUrl,replyToMessageId,messageThreadId). - Araç:
telegramvereacteylemi (chatId,messageId,emoji). - Araç:
telegramvedeleteMessageeylemi (chatId,messageId). - Tepki kaldırma semantiği: /tools/reactions.
- Araç kapılama:
channels.telegram.actions.reactions,channels.telegram.actions.sendMessage,channels.telegram.actions.deleteMessage(varsayılan: etkin) vechannels.telegram.actions.sticker(varsayılan: devre dışı).
Tepki bildirimleri
Tepkiler nasıl çalışır: Telegram tepkileri, mesaj yüklerinde özellik olarak değil, ayrımessage_reaction olayları olarak gelir. Bir kullanıcı tepki eklediğinde OpenClaw:
- Telegram API’den
message_reactiongüncellemesini alır - Bunu şu biçimde bir sistem olayına dönüştürür:
"Telegram reaction added: {emoji} by {user} on msg {id}" - Sistem olayını normal mesajlarla aynı oturum anahtarı ile kuyruğa alır
- Aynı konuşmada bir sonraki mesaj geldiğinde, sistem olayları boşaltılır ve ajanın bağlamının başına eklenir
-
channels.telegram.reactionNotifications: Hangi tepkilerin bildirim tetikleyeceğini denetler"off"— tüm tepkileri yok say"own"— kullanıcılar bot mesajlarına tepki verdiğinde bildir (en iyi çaba; bellek içi) (varsayılan)"all"— tüm tepkiler için bildir
-
channels.telegram.reactionLevel: Ajanın tepki yeteneğini denetler"off"— ajan mesajlara tepki veremez"ack"— bot onaylayıcı tepkiler gönderir (işlenirken 👀) (varsayılan)"minimal"— ajan ölçülü şekilde tepki verebilir (kılavuz: 5–10 etkileşimde 1)"extensive"— ajan uygun olduğunda serbestçe tepki verebilir
message_thread_id içerir ve agent:main:telegram:group:{chatId}:topic:{threadId} gibi oturum anahtarları kullanır. Bu, aynı konudaki tepkiler ve mesajların birlikte kalmasını sağlar.
Örnek yapılandırma:
- Telegram botları,
allowed_updatesiçinde açıkçamessage_reactiontalep etmelidir (OpenClaw tarafından otomatik yapılandırılır) - Webhook modunda tepkiler webhook
allowed_updatesiçinde yer alır - Polling modunda tepkiler
getUpdatesallowed_updatesiçinde yer alır
Teslim hedefleri (CLI/cron)
- Hedef olarak bir sohbet kimliği (
123456789) veya bir kullanıcı adı (@name) kullanın. - Örnek:
openclaw message send --channel telegram --target 123456789 --message "hi".
Sorun giderme
Bot grupta mention olmayan mesajlara yanıt vermiyor:channels.telegram.groups.*.requireMention=falseayarladıysanız, Telegram Bot API gizlilik modu devre dışı olmalıdır.- BotFather:
/setprivacy→ Disable (sonra botu gruptan kaldırıp yeniden ekleyin)
- BotFather:
openclaw channels status, yapılandırma mention’sız grup mesajlarını beklediğinde uyarı gösterir.openclaw channels status --probe, açık sayısal grup kimlikleri için üyeliği ayrıca denetleyebilir (joker"*"kurallarını denetleyemez).- Hızlı test:
/activation always(yalnızca oturum; kalıcılık için yapılandırmayı kullanın)
channels.telegram.groupsayarlıysa, grup listelenmiş olmalı veya"*"kullanılmalıdır- @BotFather’da Gizlilik Ayarlarını kontrol edin → “Group Privacy” OFF olmalı
- Botun gerçekten üye olduğunu doğrulayın (okuma erişimi olmayan yalnızca yönetici değil)
- Gateway günlüklerini kontrol edin:
openclaw logs --follow(“skipping group message” arayın)
/activation always’e vermiyor:
/activationkomutu oturum durumunu günceller ancak yapılandırmaya kalıcı yazmaz- Kalıcı davranış için grubu
channels.telegram.groups’yerequireMention: falseile ekleyin
/status gibi komutlar çalışmıyor:
- Telegram kullanıcı kimliğinizin yetkili olduğundan emin olun (eşleştirme veya
channels.telegram.allowFromile) - Komutlar,
groupPolicy: "open"olan gruplarda bile yetkilendirme gerektirir
- Node 22+,
AbortSignalörnekleri konusunda daha katıdır; yabancı sinyallerfetchçağrılarını anında iptal edebilir. - İptal sinyallerini normalize eden bir OpenClaw sürümüne yükseltin veya yükseltene kadar Gateway’i Node 20 üzerinde çalıştırın.
HttpError: Network request ... failed kaydı düşüyor):
- Bazı barındırmalar
api.telegram.org’yi önce IPv6’ya çözer. Sunucunuzda çalışan IPv6 çıkışı yoksa, grammY IPv6‑yalnız isteklerde takılabilir. - Çözüm: IPv6 çıkışını etkinleştirin veya
api.telegram.orgiçin IPv4 çözümlemesini zorlayın (ör. IPv4 A kaydını kullanarak bir/etc/hostsgirdisi ekleyin ya da işletim sisteminizin DNS yığınında IPv4’ü tercih edin), ardından Gateway’i yeniden başlatın. - Hızlı kontrol: DNS’in ne döndürdüğünü doğrulamak için
dig +short api.telegram.org Avedig +short api.telegram.org AAAA.
Yapılandırma başvurusu (Telegram)
Tam yapılandırma: Yapılandırma Sağlayıcı seçenekleri:channels.telegram.enabled: kanal başlangıcını etkinleştir/devre dışı bırak.channels.telegram.botToken: bot belirteci (BotFather).channels.telegram.tokenFile: belirteci dosya yolundan oku.channels.telegram.dmPolicy:pairing | allowlist | open | disabled(varsayılan: eşleştirme).channels.telegram.allowFrom: DM izin listesi (kimlikler/kullanıcı adları).open,"*"gerektirir.channels.telegram.groupPolicy:open | allowlist | disabled(varsayılan: izin listesi).channels.telegram.groupAllowFrom: grup gönderen izin listesi (kimlikler/kullanıcı adları).channels.telegram.groups: grup başına varsayılanlar + izin listesi (genel varsayılanlar için"*"kullanın).channels.telegram.groups.<id>.groupPolicy: groupPolicy için grup başına geçersiz kılma (open | allowlist | disabled).channels.telegram.groups.<id>.requireMention: mention kapısı varsayılanı.channels.telegram.groups.<id>.skills: skill filtresi (yok = tüm Skills, boş = hiçbiri).channels.telegram.groups.<id>.allowFrom: grup başına gönderen izin listesi geçersiz kılması.channels.telegram.groups.<id>.systemPrompt: grup için ek sistem istemi.channels.telegram.groups.<id>.enabled:falseolduğunda grubu devre dışı bırak.channels.telegram.groups.<id>.topics.<threadId>.*: konu başına geçersiz kılmalar (grup ile aynı alanlar).channels.telegram.groups.<id>.topics.<threadId>.groupPolicy: groupPolicy için konu başına geçersiz kılma (open | allowlist | disabled).channels.telegram.groups.<id>.topics.<threadId>.requireMention: konu başına mention kapısı geçersiz kılması.
channels.telegram.capabilities.inlineButtons:off | dm | group | all | allowlist(varsayılan: izin listesi).channels.telegram.accounts.<account>.capabilities.inlineButtons: hesap başına geçersiz kılma.channels.telegram.replyToMode:off | first | all(varsayılan:first).channels.telegram.textChunkLimit: giden parça boyutu (karakter).channels.telegram.chunkMode:length(varsayılan) veya uzunluk bölmeden önce boş satırlarda (paragraf sınırları) bölmek içinnewline.channels.telegram.linkPreview: giden mesajlar için bağlantı önizlemelerini aç/kapat (varsayılan: true).channels.telegram.streamMode:off | partial | block(taslak akışı).channels.telegram.mediaMaxMb: gelen/giden medya üst sınırı (MB).channels.telegram.retry: giden Telegram API çağrıları için yeniden deneme ilkesi (denemeler, minDelayMs, maxDelayMs, jitter).channels.telegram.network.autoSelectFamily: Node autoSelectFamily geçersiz kılması (true=etkin, false=devre dışı). Node 22’de Happy Eyeballs zaman aşımını önlemek için varsayılan olarak devre dışıdır.channels.telegram.proxy: Bot API çağrıları için proxy URL’si (SOCKS/HTTP).channels.telegram.webhookUrl: webhook modunu etkinleştirir (channels.telegram.webhookSecretgerektirir).channels.telegram.webhookSecret: webhook gizlisi (webhookUrl ayarlıysa zorunlu).channels.telegram.webhookPath: yerel webhook yolu (varsayılan/telegram-webhook).channels.telegram.actions.reactions: Telegram araç tepkilerini kapıla.channels.telegram.actions.sendMessage: Telegram araç mesaj gönderimlerini kapıla.channels.telegram.actions.deleteMessage: Telegram araç mesaj silmelerini kapıla.channels.telegram.actions.sticker: Telegram çıkartma eylemlerini kapıla — gönderme ve arama (varsayılan: false).channels.telegram.reactionNotifications:off | own | all— hangi tepkilerin sistem olaylarını tetikleyeceğini denetler (ayarlı değilse varsayılan:own).channels.telegram.reactionLevel:off | ack | minimal | extensive— ajanın tepki yeteneğini denetler (ayarlı değilse varsayılan:minimal).
agents.list[].groupChat.mentionPatterns(mention kapısı desenleri).messages.groupChat.mentionPatterns(genel geri dönüş).commands.native(varsayılan"auto"→ Telegram/Discord için açık, Slack için kapalı),commands.text,commands.useAccessGroups(komut davranışı).channels.telegram.commands.nativeile geçersiz kılın.messages.responsePrefix,messages.ackReaction,messages.ackReactionScope,messages.removeAckAfterReply.