# Combot Automation Compact v3: LLM talimatları ve biçim başvurusu

Bu dosyanın tamamını kural isteğinizle birlikte modele verin. Otomasyon düzenleyicisinin içe aktardığı biçimi açıklar. Kural dili Compact v3 JSON'dur; Python, YAML, JavaScript, eski Triggers v2 veya keyfi “eğer → öyleyse” sözde kodu değildir.
Arayüz adları çevrilir, JSON değerleri çevrilmez. Örneğin `Known Combot links`, düzenleyicide “Combot davet bağlantıları”; `Combot custom admins` ise “Combot yöneticileri” olarak görünür. Bu JSON değerlerini arayüz adlarıyla değiştirmeyin.

Belge güncellemesi: 9 Eylül 2026. Başvuru Otomasyon düzenleyicisi ve işleyicisiyle karşılaştırıldı. Tamamlanan içe aktarma ve Telegram kontrolleri sonda ayrı listelenir: kaynak kodu incelemek çalışan hizmetin sürümünü belirlemez.

## 1. Model için talimatlar

Kişinin isteğini anlamını değiştirmeden Otomasyon kuralına çevir.

1. Olayı, koşulları, istisnaları, işlemi, işlem alıcısını ve yanıt hedefini belirle. Program için saat dilimini, komut için tek başına mı yanıt olarak mı gönderileceğini öğren. İstenmedikçe moderasyon, ödül, rastgelelik veya silme ekleme.
2. Kullanıcı kimliklerini, konuları, sohbet adreslerini, davetleri, rütbeleri veya açık özellikleri tahmin etme. Konu adı kimliği değildir. Temel bilgi eksikse sor. Yanıt metnine ilişkin varsayım ayrıca önerilebilir ama eksik kuralı kesin çözüm diye sunma.
3. Yeni kuralları daima `en: false` ile üret. Bu güvenli hazırlık tercihidir, Otomasyon sınırı değil. `en` yoksa kural açıktır.
4. Yalnız belgelenmiş alanları kullan. “Dışa aktarım kullan” denilen iç içe filtrelerde benzer kurulumun gerçek dışa aktarımını iste; yapı uydurma. Desteklenmeyen senaryoyu koşulları kaldırarak gizlemek yerine sınırı açıkla.
5. Kısa açıklama → tek içe aktarılabilir JSON bloku → elle ayarlar ve kontroller ver. JSON'da yorum, üç nokta, yer tutucu kimlik, alan dışı açıklama satırı, sonda fazladan virgül veya `when`, `if`, `then`, `conditions`, `actions`, `event` gibi uydurma anahtar bulunmasın.
6. Sonucu vermeden eşleşen ve eşleşmeyen bir durumu düşünerek kontrol et. Yanıt komutunda gönderen ile özgün mesajın yazarını ayrı ele al. Gerçekten yapılmadıysa kuralı Combot'ta test ettiğini söyleme.

Ek JSON Schema yeni kapalı kuralları üretmeye yardımcı olur. Zorunlu alanları bilerek içe aktarmadan daha katıdır ve her eski dışa aktarımı kabul etmez. Karmaşık iç içe filtreler yalnız nesne olarak kontrol edilir. Şemadan geçmek koşul uyumu, kaynak erişimi, plan uygunluğu veya başarılı Telegram işlemi kanıtı değildir.

## 2. İçe aktarma alanına ne yapıştırılır

Kök, sayısal `v: 3` ve `t` kural dizisi içeren nesnedir. Genellikle tek kural döndür. Çıplak dizi veya `{"triggers": [...]}` döndürme: içe aktarma penceresinin biçimi bunlar değildir.

Tam minimal örnek:

```json
{
  "v": 3,
  "t": [
    {
      "n": "Kurs bilgisi komutu",
      "en": false,
      "k": "c",
      "ctm": "p",
      "cm": ["/course_info"],
      "a": {
        "m": "a",
        "r": [
          {
            "i": "course_reply",
            "t": "s",
            "v": {
              "tx": "Ders kayıtları sohbetin sabitlenmiş mesajında.",
              "rp": "r"
            }
          }
        ]
      }
    }
  ]
}
```

`dv: "t3.compact.3"` isteğe bağlı şema işaretidir. Yeni sonuçta `v` ve `t` yeterlidir. Mevcut içe aktarma `bundle` sarmalayıcısını tanır ama üretimde gerekmez.

Pakete sunucu `id`, `revision`, `chat_id`, hesaplanmış `ck` veya `$schema` ekleme. Yeni kural kimliğini sunucu atar. İşlemdeki `i` farklıdır: `course_reply` gibi yerel satır kimliğidir. O kuralın işlemleri arasında benzersiz, 1–80 Latin harfi, rakam, `_` veya `-` içermeli.

Aynı kısa anahtar farklı düzeylerde farklıdır: kök `t` kural listesi, `a.r[].t` işlem türü, `a.r[].v` işlem parametreleridir. Düzeyleri karıştırma.

## 3. Ana kural alanları

| Alan | Anlam |
| --- | --- |
| `n` | Boş olmayan ad, düzenleyicide en fazla 80 karakter |
| `d` | İsteğe bağlı açıklama, düzenleyicide en fazla 280 karakter |
| `en` | Yeni kapalı kural için `false` |
| `e` | Komut değilse olay kodu dizisi |
| `k`, `cm`, `ctm` | Komut modu; aşağıya bak |
| `a` | İşlem planı: `{"m":"a","r":[...]}` veya `{"m":"r","r":[...]}` |
| `s`, `ti` | Olay nerede kontrol edilir: kaynak sohbet, Genel veya seçili konular |
| `at` | Eşleşmeye izinli zaman; zaman filtresi, zamanlayıcı değil |
| `wh`, `wx`, `wm` | Olayı yapan: dahil gruplar, istisnalar ve grupları birleştirme biçimi |
| `cgr` | Sayısal koşullar: sohbet süresi, mesajlar, uyarılar, XP, itibar |
| `ua`, `ux`, `uar`, `ul`, `ulx` | Üye özellikleri, alan değerleri ve dil |
| `twh`, `twx`, `tcg`, `tua`, `tux`, `tur`, `tlg`, `tlx` | Yanıtlanan yazar veya katılan üye gibi diğer olay kullanıcısının kontrolleri |
| `tv`, `tr`, `ty`, `cs`, `lmin`, `lmax` | Metin koşulları |
| `mti`, `mtx`, `me`, `mex` | Mesaj türleri ve metin öğeleri |
| `il`, `ilc`, `ilx` | Katılma isteklerinde davet bağlantıları |
| `rct`, `rnt`, `rnx`, `rcy`, `rcx`, `rcn`, `rcm` | Tepki koşulları |
| `chl` | Görev değişimlerinde belirli kontrol listesine doğrudan bağlantı |
| `cl` | Varsayılan önceki yanıt temizliği: `n` veya `ps` |
| `ov` | OR alternatif koşul kümeleri; karmaşık durumlarda dışa aktarım kullan |

Her alanı doldurma. Yalnız seçilen olayla ilgili, istenen koşulları ekle. Örneğin katılmaya mesaj sözcükleri gerekmez; toplam tepki sayacında otomatik ödüllendirilecek belirli kullanıcı yoktur.

## 4. Olaylar

| `e` | Ne zaman çalışır |
| --- | --- |
| `["m"]` | Yeni sohbet mesajı |
| `["em"]` | Mesaj düzenlemesi |
| `["m","em"]` | Yeni mesaj veya düzenleme |
| `["lc"]`, `["el"]`, `["lc","el"]` | Bağlı kanal yorumu, düzenlemesi veya ikisi |
| `["cp"]`, `["ec"]`, `["cp","ec"]` | Bağlı kanal bağlamında gönderi, düzenleme veya ikisi |
| `["jr"]` | Katılma isteği |
| `["nm"]` | Üye katıldı |
| `["ml"]` | Üye ayrıldı veya çıkarıldı |
| `["cb"]`, `["rb"]` | Takviye eklendi veya kaldırıldı |
| `["mr"]` | Belirli kullanıcının tepkileri değişti |
| `["rc"]` | Bağlı kanal bağlamında toplam anonim tepki sayaçları güncellendi |
| `["ck"]` | Yeni kontrol listesi |
| `["cd"]` | Liste görevleri tamamlandı işaretlendi |
| `["ca"]` | Listeye görevler eklendi |

`["m","nm"]` gibi ilgisiz olay türlerini birleştirme; ayrı kural kullan. Listelenen yeni+düzenleme çiftleri geçerlidir. Gizli konuk botu modu `gm` üretme.

Düzenleme ayrı tetiklenmedir. XP, itibar, uyarı veya kişinin bir kez beklediği işlemlere otomatik ekleme.

## 5. Basit komutlar ve yanıt komutları

Bilgi yanıtı gibi basit komut:

```json
{"k":"c","ctm":"p","cm":["/course_info"]}
```

Moderatörün üye mesajına yanıt gönderdiği komut:

```json
{"k":"c","cm":["/team_pause"]}
```

Bunlar kural alanı parçalarıdır, bağımsız içe aktarma paketleri değil.

Komuta `e` ekleme. `cm` içinde Latin harfleri, rakamlar ve `_` kullanan küçük harfli özel slash komutlarının boş olmayan listesini ver. Uydurma komutu Combot'ta yerleşik gibi sunma. Yanıt komutunda `ctm` atla; oraya `reply_target`, `r` veya kişi adı yazma.

Basit komutta kullanıcı işlemi alıcısı yoktur. Mesaj gönderimi ve yalnız açıkça istendiyse komut mesajını silme kullan. Susturma, uyarı, XP ve kişiye etki eden diğer işlemler yanıt komutu gerektirir.

Yanıt komutunda `wh` komut göndereni, `twh` ve diğer `t...` alanları yanıtlanan mesajın yazarını kontrol eder. Sonuncuya işlem için `v.tg: "t"` kullan. Ayşe Ali'ye `/team_pause` yanıtı verirse Ayşe'yi değil Ali'yi kısıtla.

Yalnız `twh` kontrolü komutu kimin çağıracağını sınırlamaz. Moderatör komutunda isteğe uygun `wh` bulunmalı. `d` işlemi Ali'nin mesajını değil komutun kendisini siler.

Komut modunu `tv` içinde `/team_pause` metin aramasıyla değiştirme. Doğrulanmış dışa aktarım olmadan program gibi düzenleyicinin gizlediği komut koşulları ekleme.

## 6. Üyeler ve istisnalar

`wh` ve `wx` çevrilmiş etiketleri değil şu tam dizeleri kullanır:

`New members`, `Regular members`, `Ex-members`, `Whitelisted users`, `Admins`, `Telegram admins`, `Combot custom admins`, `Owner`.

Boş dahil listesi grup sınırı koymaz. `Anyone` genellikle atlanabilir. `wm: "o"` bir eşleşen grubu, `wm: "a"` seçili tüm grupları gerektirir. `wx` istisnaları olumlu gruplardan bağımsız eşleşmeyi engeller.

Örnek: yöneticiler dışında herkes eşleşen mesaj gönderebilir:

```json
{"wx":["Telegram admins","Combot custom admins","Owner"]}
```

Örnek: yalnız Telegram yöneticisi veya sahip komutu çağırabilir:

```json
{"wh":["Telegram admins","Owner"],"wm":"o"}
```

Rolleri karıştırma. `Combot custom admins` Telegram yöneticiliğini değil Combot izinlerini anlatır. İşleyicide `Admins`, `Telegram admins` gibi sahip dahil Telegram yöneticilerini kontrol eder; Combot yöneticilerini eklemez. İki gruba izin için `Telegram admins` ve `Combot custom admins` değerlerini `wm: "o"` ile listele. `Regular members` uzun üyeliği veya çok mesajı olanlar değil mevcut üyeliği bilinenlerdir. `New members` sohbetin yeni üye ayarları ve istisnalarını kullanır; sabit “ilk yedi gün” değildir. Kesin süre için `cgr` kullan.

`Core members` veya `Non-members` üretme: yeni kurallar için güvenilir tanımları verilmemiştir. Üye bilgisinin eksikliği kişinin hiç sohbette bulunmadığını kanıtlamaz.

Hedef için `twh`, `twx`, `twm` kullan. `Target self`, `Target bots`, `Target Combot`, `Target linked channel post` gibi bağlam değerlerini uygun dışa aktarımdan al; gönderen filtrelerinde tahmin etme.

`nm` ve `ml` için `wh`/`wx` katılmayı veya çıkarmayı başlatanı, `twh`/`twx` durumu değişen üyeyi anlatır. Ayşe Ali'yi eklerse yeni üye koşulları `t...` üzerinden Ali'ye aittir, Ayşe'ye değil. İşlemde `v.tg` seçmek koşulları değiştirmez.

`am: "o"` Telegram yöneticisini kontrol eder; `am: "n"` hariç tutar. `wh`/`wx` rol birleştirmenin yerine geçmez. Yeni kurallarda açık grupları tercih et.

## 7. Sohbet süresi, etkinlik, XP ve itibar

Sayısal koşullar `cgr`, hedef için `tcg` içindedir. Bu parça üyenin en fazla bir saattir sohbette olduğunu ve en fazla beş kayıtlı mesajı bulunduğunu söyler:

```json
{
  "cgr": {
    "logic": "All",
    "statistics": {
      "rules": [
        {"metric":"joinedDays","unit":"h","op":"lte","value":"1"},
        {"metric":"messageCount","unit":"c","join":"and","op":"lte","value":"5"}
      ]
    }
  }
}
```

İşleçler: `eq` eşittir, `gte` en az, `lte` en fazla. Daima açık işleç ver. “Beşten az”ı `lte: 5` yapma: tam sayı sayacında `lte: 4` olur. Kişi “en az” derken kesin süreli `eq` kullanma: zaman ilerler.

İstatistik ölçüleri:

- `joinedDays`: bu sohbete katılmadan geçen süre; hesap veya kişi yaşı değil. Birimler: `s`, `m`, `h`, `d`, `w`, `mo`. Gün 24 saat, hafta 7 gün, burada ay 30 gündür. Yeni kurallarda birim daima bulunmalı.
- `messageCount`: bu sohbette kayıtlı mesajlar; birim `c`.
- `warns`: etkin uyarılar; birim `c`.

“Bir kayıtlı mesaj” `{"metric":"messageCount","unit":"c","op":"eq","value":"1"}` olur. Tam bir kez çalışmayı garanti etmez: sayaç güncellemesi ve olay işleme ayrı gerçekleşebilir.

Diğer bölümler:

```json
{
  "cgr": {
    "logic": "All",
    "xp": {
      "xp": {"rules":[{"op":"gte","value":"100"}]}
    },
    "reputation": {
      "reputation": {"rules":[{"op":"gte","value":"5"}]}
    }
  }
}
```

Rütbe eşikleri `cgr.xp.rank.rules` kullanır ama değerleri uydurulmuş adlardan değil gerçek sohbet rütbelerinden gelmeli. Satırlar `join: "and" | "or"` ve `mode: "include" | "exclude"` destekler. Basit koşulda açık AND, karmaşık AND/OR zincirinde gerçek dışa aktarım kullan. `cgr.logic: "All" | "Any"` bölümleri birleştirir. Hariç tutan sayısal satır yasaktır: aynı koşul varyantının başka bölümündeki olumlu eşleşme aşamaz.

İlk mesaj veya ilk başka etkinlikten geçen süre kontrolü oluşturma: `firstMessageAge`, `firstOtherActivityAge` kullanılamaz. Toplam `messageCount` ile “geçen haftanın etkinliği” sözü verme. Bilinmeyen veri otomatik sıfır olmamalı.

## 8. Kullanıcı özellikleri ve alanları

`ua` özellik gerektirir, `ux` hariç tutar. Tam değerler: `Any username`, `Telegram Premium`, `Bot account`, `Any last name`. Örneğin `{"ux":["Bot account"]}` botları dışlar.

`ul` ve `ulx` Telegram verdiyse kullanıcı dil kodlarını dahil ve hariç tutar. Bu mesajın dili veya milliyet değildir. Üyenin adından dil çıkarma.

Belirli değer koşulları `uar`, hedef için `tur` içindedir. Alanlar: `user_id`, `name`, `username`, `last_name`, `bio`. Biyografi katılma isteği bağlamındadır; her üyenin sürekli erişilebilir profil alanı değildir.

Kullanıcı adı koşulunun yapısı:

```json
{
  "uar": {
    "username": {
      "rules": [
        {"mode":"include","matchType":"Exact match","values":["example_member"]}
      ]
    }
  }
}
```

Bu gerçek üyeyi değil yapıyı gösterir. Gerçek istekte yalnız kişinin verdiği kullanıcı adını `@` olmadan kullan; yoksa sor. Kimlikleri `values` içinde dize olarak ver. Erişim kontrolünde açıkça verilen kimliği tercih et: adlar ve kullanıcı adları değişebilir.

Burada `matchType` mesaj metni kodları `f`, `p`, `r` yerine tam `Exact match`, `Partial match`, `Regular expression` kullanır. Tek satırdaki değerler alternatiftir; satırların `join` alanı vardır. Bu alanlarda `Starts with` veya `Ends with` uydurma.

`ual` ve `tul`: `a` tüm kurallar, `o` herhangi grup. Bu üretim profilinde `uag`, `tug` grup yapıları için dışa aktarım kullan.

## 9. Metin ve mesaj türü

İfade aramak için dizeler dizisi `tv` kullan. Tek dizenin eşleşmesi yeterlidir. Örneğin:

```json
{"tv":["kayıt nerede","ders kaydı"],"tr":"p","ty":"p","cs":false}
```

`tr`: `p` ifadeler, `w` sözcükler, `r` düzenli ifadeler. Sözcük modu listelenen her sözcüğü gerektirmez. Normal kısmi eşleşme sözcük sınırını da garanti etmez: “at”, “ata” içinde eşleşebilir.

`ty`: `f` tüm metin, `p` metnin parçası, `s` başı, `e` sonu, `r` düzenli ifade. `cs: true` büyük/küçük harfe duyarlı yapar; `false` veya yokluğu kapatır. Basit sık soru yalnız `tv` gerektirir: varsayılan harfe duyarsız ifade aramasıdır.

`lmin` ve `lmax` metin uzunluğunu sınırlar. Boş veya sıfır sınır o tarafta limit koymaz. Metin uzunluğunu sözcük sayısıyla karıştırma.

Düzenli ifadeyi yalnız basit eşleşme yetmiyorsa kullan. Ters eğik çizgileri kaçırarak deseni JSON dizesi ver; JavaScript `/.../i` ayırıcılarını otomatik ekleme. Tam sözcük veya karmaşık olumsuzlukta eşleşen ve eşleşmeyen örnekleri açıkla.

`mti` türleri dahil, `mtx` hariç tutar. Ana değerler: `photo`, `video`, `animation`, `audio`, `document`, `sticker`, `voice`, `video_note`, `contact`, `location`, `poll`, `dice`, `game`, `paid_media`. Örneğin `{"mti":["voice"]}` sesli mesaj; `{"mti":["photo","video"]}` aynı anda iki ek değil fotoğraf VEYA video demektir.

Düzenleyicide `text` ve `caption` da vardır. Metin içerik ayarlarına katılırlar; `caption` bağımsız Telegram ek türü değildir. “Yalnız fotoğraf açıklamaları” veya metin/açıklama kesin ayrımı için kurulumun dışa aktarımını al. Kodek tek `text` dahil varsayılanları atlayabilir; giriş JSON'unda bulunması kısıtın içe aktarmada korunduğunu kanıtlamaz.

`me` ve `mex` metin öğelerini gerektirir veya dışlar. Değerler: `bot_command`, `url`, `text_link`, `mention`, `hashtag`, `cashtag`, `email`, `phone_number`, `emoji`, `custom_emoji`, `bold`, `italic`, `underline`, `strikethrough`, `code`, `pre`, `spoiler`, `blockquote`, `expandable_blockquote`. `mel: "a"` tüm dahil öğeleri, `"o"` en az birini gerektirir. Görünür veya gizli herhangi bağlantı için: `{"me":["url","text_link"],"mel":"o"}`.

`mef` belirli bağlantı, komut ve diğer öğeleri daraltır; `mmo` medya özelliklerini, `mtg` ve `mog` koşul gruplarını, `csx`/`cse` karakter kümelerini anlatır. Bu karmaşık alanları gerçek dışa aktarımdan üret. `max_file_size`, `allowed_domains`, `mime`, `language`, `contains_all` gibi karşılıklar uydurma.

## 10. Zaman ve sohbet konuları

`s`: `sc` kaynak sohbet, `gn` Genel, `st` seçili konular. Sonuncuda `ti` pozitif konu kimliklerini içerir.

İçe aktarma seçili kaynak konuları tüm kaynak sohbete, seçili gönderme konularını mevcut konuya sıfırlar. Doğru kimliklerde de olur, OR alternatiflerine de uygulanır. Senaryo konuya bağlıysa açıklamada ve zorunlu elle ayarlarda adını söyle. Konular yeniden seçilmeden açılmaya hazır deme.

`at` olayın izinli zamanını belirler; bağımsız gönderme planlamaz. “Akşam soruya yanıt” mümkündür. “Gelen olay olmadan her gün 19:00'da gönder” bu tetikleyici değil planlayıcı ister.

Bot özgün mesaj zamanını değil olay işlenirken mevcut zamanı kontrol eder. Özgün mesaj gece yazılsa da sabah düzenlemesi sabah saatlerini kontrol eder.

Haftalık aralık, pazartesi–cuma, 09:00–18:00 UTC:

```json
{"at":{"m":"w","wd":[0,1,2,3,4],"tw":[{"startMinute":540,"endMinute":1080}]}}
```

`wd`: 0 pazartesi, 6 pazar. Saatler UTC gece yarısından itibaren 0–1439 tam dakikadır. Haftalık aralığa son dakika dahildir. Geceyi geçen aralığın başlangıcı bitişten büyük olabilir; gün “vardiya” başlangıç günü değil mevcut UTC tarihidir. Gereken günleri tahmin etmek yerine gece yarısının iki tarafını kontrol et.

Moskova 09:00 ve 18:00, UTC 06:00 ve 15:00'a karşılık gelir: 360 ve 900 dakika. Tam 18:00'da durmak için son izinli dakika UTC 14:59, yani `endMinute: 899` olmalı. Başka dilimlerde farkı ve olası yaz saatini hesaba kat. Yerel saati çevirmeden UTC olarak girme.

Tarih aralığı:

```json
{"at":{"m":"d","s":"2026-10-01T00:00:00Z","e":"2026-10-07T23:59:59Z"}}
```

Bunlar kişinin kampanya tarihleri değil yapı örnekleridir. Başlangıç bitişten önce olmalı. Bu modda iki sınır dahildir. `Z` UTC demektir.

Kapanış saatleri mevcut sohbet ayarını kullanır: `{"at":{"m":"c"}}`; dışı: `{"at":{"m":"c","i":true}}`. Kapanış modu başlangıcı dahil, bitişi hariç tutar. Tetikleyici sohbetin kapanış programını kurmaz. Geçerli program yoksa doğrudan veya ters koşulun çalışacağını vaat etme.

## 11. Davet bağlantıları, tepkiler ve kontrol listeleri

### Davetler

`["jr"]` katılma isteklerinde `il`: `Known Combot links`, `External invite link`, `Any source` kabul eder. Kısıt gerekmiyorsa atla.

`Known Combot links` bu sohbetin Combot kataloğundaki bağlantılardır. `ilc` ve `ilx` katalog içinde dahil ve hariç bağlantı kodlarını listeler; kesin kodları dışa aktarım veya verilen bilgiden al. Boş listeler genel kategori kontrolünü korur.

`External invite link`, “seçtiğim iki bağlantı dışındaki her şey” değil tüm katalog dışında tanımlanmış bağlantıdır. Bilinmeyen kaynak veya kullanılamayan katalog harici bağlantı sayılamaz. Bilinen daveti olmayan her isteği yakalayacağını vaat etme.

### Kullanıcı tepkileri

Olay `["mr"]`. `rct`: `added` ve/veya `removed`. `rnt`, `rnx` kullanıcının yeni durumundaki tepkileri dahil ve hariç tutar. Biri doluysa `rct` içinde `added` olmalı.

İşleyici `mr` yalnız Telegram `user` verirse çalıştırır. Kanal veya anonim yönetici adına `actor_chat` içeren tepki bunu tetiklemez. Toplam tepki sayısı `rc` ile farklıdır.

```json
{"e":["mr"],"rct":["added"],"rnt":["👍"]}
```

Değerler normal emoji, dize özel emoji kimliği veya `paid` olur. `rnt` yalnız farkı değil tüm yeni durumu kontrol eder. 👍 zaten varsa kullanıcı başka tepki ekleyince yeniden eşleşebilir. Burada `u` alıcısı tepkiyi değiştiren kişidir; mesaj yazarını otomatik ödüllendirmez.

### Toplam tepki sayıları

Olay `["rc"]`. `rcy`/`rcx` sayılacak türleri seçer. `rcn`/`rcm` alt ve üst sınırları negatif olmayan tam sayı olarak belirler. Sıfır veya yokluğu o tarafta sınır yok demektir.

```json
{"e":["rc"],"rcy":["👍"],"rcn":10}
```

“İlk kez ona ulaştı” değil güncellemede mevcut değeri kontrol eder. Başka eşleşen güncelleme işlemi tekrarlatabilir. Toplam anonim sayaçta belirli tepki veren kişi yoktur.

### Kontrol listeleri

`["cd"]` ve `["ca"]` için `chl` kuralı tek listeyle sınırlar. Kişi belirli liste istiyorsa doğrudan mesaj bağlantısını sor. Sohbet veya konudaki tüm eşleşen listeleri istiyorsa `chl` ekleme.

Konu numaralı bağlantılar dahil doğrudan Telegram bağlantıları desteklenir; `?comment=` olanlar desteklenmez. Adres uydurma. Açık bağlantıda işleyici sohbet kullanıcı adını bilmeli; görünüşte geçerli URL tek başına eşleşme değildir.

## 12. İşlemler

`a.m: "a"` her satırı sırayla çalıştırır. `a.m: "r"` tüm `fr: 1` işaretli satırları ve varsa işaretsizlerden tam bir rastgele satırı çalıştırır. Seçilenler özgün sırayı korur. Rastgelelik istenmediyse `a` kullan; rastgele mod dışında `fr` ekleme.

| Kod `a.r[].t` | İşlem | Parametreler `v` |
| --- | --- | --- |
| `s` | Mesaj gönder | `tx` ve biçimlendirme; aşağıya bak |
| `d` | Kuralı tetikleyen mesajı sil | Parametre yok |
| `w` | Uyarı ekle | `tg`, pozitif `c`, genellikle 1 |
| `rw` | Uyarı kaldır | `tg`, pozitif `c`, genellikle 1 |
| `m` | Yazmayı kısıtla | `tg`, saniye cinsinden `du` |
| `b` | Yasakla | `tg`, saniye cinsinden `du` |
| `k` | Geri katılmaya izin vererek çıkar | `tg` |
| `um` | Yazma kısıtını kaldır | `tg` |
| `ub` | Yasağı kaldır | `tg` |
| `du` | Botun erişebildiği kayıtlı kullanıcı mesajlarını sil | `tg` |
| `x` | XP değiştir | `tg`, −99999 ile 99999 arasında sıfır olmayan tam `v` |
| `r` | İtibar değiştir | `tg`, −999 ile 999 arasında sıfır olmayan tam `v` |
| `ja` | Katılma isteğini onayla | Yalnız `jr`, parametre yok |
| `jd` | Katılma isteğini reddet | Yalnız `jr`, parametre yok |

`du` işlem kodunu `v.du` süre alanıyla karıştırma. Süre dakika değil saniyedir: bir saat 3600. Susturma ve yasakta sıfır belirli bitiş yok demektir; bilinmeyen süre yerine koyma. İstenirse neden ayrı mesajda yazılabilir; belgelenmemiş alanla özel yaptırım nedeni vaat etme.

Kullanıcı işlemi alıcısı `v.tg`:

- `u`: olaya neden olan katılımcı.
- `t`: yanıtlanan mesaj yazarı gibi bağlamın belirlediği hedef. Gerçek kimlik değeri değil.
- `l`: katılma isteğinde Combot kataloğundaki davet bağlantısının oluşturucusu.
- `b`: ilgili bağlamdaki mevcut iki katılımcı. “Sohbetteki herkes” değil.

Alıcıyı daima belirt. Basit komutlar kullanıcı işlemi desteklemez. Yanıt komutları gönderen, hedef ve ikisini destekler. Katılma isteğinde hem başvuran (`u`) hem bilinen bağlantı oluşturucusu (`l`) isteniyorsa ayrı işlemler kullan: `b` bu ikisi demek değildir. Düzenleyici bağlantı oluşturucusunu katılma isteklerinde sunar; üye katıldı adım talimatlarında aynı seçeneği sunma. Diğer olaylarda yalnız olayın alıcılarını kullan.

Bilinmeyen hedef komut gönderenin cezasına dönüşmemeli. Başka kişiye otomatik yönelme sözü verme. `du` tüm üye geçmişini silmeyi garanti etmez: bot mevcut mesajlar ve Telegram yetenekleriyle sınırlıdır.

Senaryo bağlıysa uyarılar, seviyeler ve itibar açık olmalı; moderasyon uygun bot izinleri ister. Susturmayı kaldırma, yasağı kaldırma ve isteği onaylama ayrı işlemlerdir.

Katılma isteği olayları mesaj gönderme, mevcut kullanıcılara işlemler ve `ja`/`jd` destekler; mesaj silme `d` uygun değildir. Mesajsız olaylara silme veya olmayan mesaja yanıt ekleme.

## 13. Yanıt metni ve hedefi

`s` işlemi parametreleri:

| Alan | Anlam |
| --- | --- |
| `tx` | En fazla 4096 karakter boş olmayan metin; desteklenen Telegram HTML kullanılabilir |
| `d` | `sc`: kaynak sohbet; `lg`: yapılandırılmış günlük kanalı; varsayılan `sc` |
| `tp` | `ct`: mevcut konu; `gn`: Genel; `st`: seçili konular; varsayılan `ct` |
| `to` | Seçili konuların pozitif kimlikleri; içe aktarma sıfırlar |
| `rp` | `r`: tetikleyen mesaja yanıt; yokluğu: bağımsız mesaj |
| `cl` | `n`: önceki yanıtı tut; `ps`: bu satırın önceki yanıtını sil |
| `bt` | URL düğmesi satırları: `text` ve `url` nesneleri içeren dizilerin dizisi |
| `ph` | Bağlantı önizlemesi görsel URL dizisi |
| `pa` | `true`: önizlemeyi metnin üstüne koy |

`rp: "r"` kaynak sohbet ve mevcut konuda korunur. Günlükte veya başka konuda aynı yanıt bağını vaat etme. `d` içine keyfi dış sohbet, kanal veya özel mesaj koyma.

Satır `cl` yoksa kural ayarını alır. Kural `cl: "ps"` önceki yanıtı temizler; açık satır `cl: "n"` üstüne geçer. Temizlik belirli kural, işlem satırı ve hedefe aittir. Farklı rastgele satırlar ortak “son karşılama” olmaz.

Normal yanıtta `<b>Kurs bilgileri</b>\nKayıtlar sabitlenmiş mesajda.` kullanılabilir. Markdown'u HTML diye verme. Bağlantı ve metni doğru kaçır. Düğme ve görseli yalnız kişinin verdiği gerçek URL'lerle ekle; `ph` fotoğraf albümü göndermez.

Doğrulanmış mesaj bağlamı değişkenleri: `{name}`, `{uid}`, `{name_link}`, `{from.id}`, `{from.title}`, `{from.username}`, `{chat.id}`, `{chat.title}`, `{chat.username}`, `{message.id}`, `{message.timestamp}`, `{timestamp}`, `{group_name}`, `{reply_to_uid}`, `{reply_to_name}`, `{reply_to_name_link}`. Kullanılabilirlik olaya bağlıdır. `{target.name}`, `{user.first_name}`, `{reaction_count}` veya benzerini uydurma.

Yanıt komutunda `{from.title}` cezalanan veya ödüllendirilen üyeyi değil komut göndereni anlatır. `tg: "t"` değişken anlamlarını değiştirmez. Olayın gereken adı verdiğinden emin değilsen tarafsız ifade kullan.

Katılımda `{from.title}` yeni gelenin adını da garanti etmez: Ayşe Ali'yi eklerse eylemi yapan Ayşe'dir. Adsız “{chat.title} sohbetine hoş geldiniz!” gibi genel karşılama kullan.

İşlemler bir veritabanı işlemi gibi topluca geri alınmaz. Susturma sonrası mesaj, Telegram'ın susturmayı uyguladığını kanıtlamaz. Koşulsuz yaptırım onayını doğrulanmış sonuç gibi yazma: burada ayrı başarı kontrol koşulu belgelenmemiştir.

## 14. Alternatifler, sınırlar ve desteklenmeyen vaatler

`ov` aynı kuralın alternatif koşullarını içerir. Bağımsız senaryo tanımlamaz; ana kuralın olay ve işlemlerini paylaşır. Tek alternatifteki istisna genel değildir. Yasak daima geçerli olacaksa her alternatifte koru. `en: false` alternatif eşleşmeye katılmaz.

Yeni karmaşık `ov`, `mtg`, `mog`, `uag`, `tug`, `mef`, `mmo` için gerçek düzenleyici dışa aktarımı kullan. Özyinelemeli OR ağaçları kurma veya bağımsız çalışacağı beklentisiyle alternatiflere ayrı işlem zincirleri koyma.

Uyumluluk alanları `mt`, `mtl`, `t`, `rmi`, `rme` dışa aktarımda olabilir. Belgelenmiş ana ayarlar yerine sebepsiz ekleme. Basit yanıt sınırlaması için `rm`: `a` her mesaj, `r` yalnız yanıt, `rb` bota yanıt, `rc` Combot'a yanıt, `nr` yanıt olmayan. Yeni komut alanları yerine `rm: "cr"` kullanma.

Eski veya iç alanlar `lf`, `fc`, `lo` ya da arayüz alanları `actions`, `destination`, `topic`, `applyTarget`, `alwaysRun` üretme. Compact bunları farklı temsil eder, bazıları etkin özellik bile değildir.

Planlama sınırları:

- Free en fazla 2, Pro 50, Business 100 kayıtlı kural. Kapalılar da sayılır. Kalan yer hesabında mevcutları dikkate al.
- Kural başına ek OR alternatifi: Free 0, Pro 2, Business 5.
- Kural başına en fazla 100 işlem satırı; planın her çalıştırmasına ayrı hesaplanan 20 işlem bütçesi.
- Gönderme benzersiz hedef başına 1, önceki yanıt temizliğiyle 2 tutar. Kullanıcıya yönelik Telegram işlemleri alıcıya göre sayılır; `b` iki kat yer ayırabilir. XP ve itibar bu hesapta 0'dır. Rastgele mod gerekli satırları ve en pahalı rastgele seçimi sayar.
- Bu iç hesaplamadır; tüm yardımcı işlemler dahil tam yirmi ağ isteği vaadi değildir. Sonraki satır kalan bütçeyi aşarsa çalışma durur; tamamlanan işlemler geri alınmaz.

Olaysız yalnız zamanlayıcı çalışması, “saatte en fazla bir”, bir defalık tepki ödülü, tekrarlanan olayla ödül suistimaline koruma, yalnız ilk eşik geçişi, tam bir kez çalışma, keyfi harici sohbet işleme, hesap yaşı veya geçmişte keyfi dönemin etkinlik istatistiğini vaat etme. Biri temel gereksinimse anlatılan kuralın tek başına yetmediğini açıkla.

İçe aktarma yeni kural kopyaları ekler; eski Triggers v2'yi taşımaz. Eski anlam Compact v3 ile yeniden yazılabilir, eski JSON hazır içe aktarım diye sunulamaz.

## 15. Örnekler için kabul senaryoları

Ek `examples` dizininde her biri tek kapalı kurallı altı bağımsız paket bulunur:

| Dosya | Eşleşen durum | Ek kontroller |
| --- | --- | --- |
| `01-course-command.json` | Üye `/course_info` girer | Komutsuz düz metin yanıt tetiklememeli |
| `02-recording-faq.json` | Metin “kayıt nerede” içerir | İlgisiz soru yanıt tetiklememeli; kısmi arama uzun ifadede eşleşebilir |
| `03-random-welcome.json` | Yeni üye katılır | Üçü değil tek karşılama seçilmeli |
| `04-moderator-reply-mute.json` | Telegram yöneticisi veya sahip üyeye `/team_pause` yanıtı verir | Normal üyeler çağıramaz; yönetici hedefler hariçtir; yanıtsız komut göndereni kısıtlamamalı |
| `05-known-link-join-request.json` | İstek Combot kataloğu bağlantısını kullanır | Harici veya bilinmeyen kaynak eşleşmemeli; belirli seçim yoksa tüm bilinenler eşleşir |
| `06-thumbs-up-reaction.json` | Kullanıcı tepki ekler, yeni durumda 👍 vardır | 👍 kaldırmak eşleşmez; yinelenen eşleşen değişimler yeniden mesaj gönderebilir |

Bunlar sohbetinizin kabul senaryolarıdır, hepsinin çalıştırıldığı iddiası değil. Tamamlanan kontroller aşağıdadır. Her örnek açılmadan kendi sohbetinizde ayar ve yetenek kontrolü gerektirir.

## 16. Biçim kaynakları ve tamamlanan doğrulama

Biçim Rails `0d80ce4788ef5adc5c7c1b79e85c6b8be27cc00e` ve bot `ddc1a8a6b6ab99bd2517d783870495990c7058e5` ile karşılaştırıldı. Bu main revizyonlarında eşgüdümlü düzenleyici ve Otomasyon düzeltmeleri vardır. Rails PR #78 ve bot PR #56 birleşmeleri Codeberg'de doğrulandı; dağıtılan süreçlerin kesin revizyonları bağımsız belirlenmedi.

Ana kaynaklar: `trigger_compact_codec_helpers.js`, `trigger_import_export_helpers.js`, `trigger_validation_helpers.js`, olay ve işlem kayıtları, `user_attribute_model_helpers.js`, `AutomationController`, `docs/MONGODB.md` ayrıntılı Otomasyon sözleşmesi, `automation.py` koşul ve işlem yürütmesi.

Altı özgün örnek düzenleyicinin kaynak kodekiyle bellekte kontrol edildi: çözümleme, yeniden oluşturma, yeniden çözümleme ve normalize edilmiş sonuç kararlılığı. İşlemler ve kapalı durum korundu. Kodek bazı varsayılanları atladığından girdi JSON'uyla bayt eşitliği değil normalize sonuç karşılaştırıldı.

8 Eylül'de altı özgün örneğin kapalı durumu combot.org üretim düzenleyicisinden içe aktarma, sunucuya kaydetme ve sayfa yenileme sonrası kontrol edildi. Bu, Telegram'da her koşul ve işlemi doğrulamanın yerine geçmez.

Komut ve sık soru durumları Telegram'da kontrol edildi: eşleşen istekler amaçlanan yanıtları aldı, kontrol örnekleri almadı. Yalnız `/course_info`, test aracının güvenlik kurallarının izin verdiği benzersiz ada çevrildi; diğer ayarlar korundu. Bu sonuçlar diğer olay ve işlemleri otomatik doğrulamaz.

`06-thumbs-up-reaction.json` için kişisel profilden 👍 eklemek beklenen tek yanıtı üretti; kaldırmak üretmedi. Kimlik ve eski/yeni tepki kümeleri ayrı Bot API gözlemcisiyle doğrulandı. O çalışmada katılımda rastgele karşılama, susturma uygulaması ve gerçek katılma isteği onayı denenmedi; içe aktarma işlem yürütmesini kanıtlamaz.

Oluşturulan test kuralları kaldırıldı ve özgün listenin geri geldiği kontrol edildi; sonuç mesajları test grubunda kalır. JSON Schema ek belgedir, ürüne bağlı değildir ve mevcut yerleşik doğrulayıcı olarak sunulmaz.

9 Eylül'de editoryal başvuru Rails `0d80ce4788ef5adc5c7c1b79e85c6b8be27cc00e` ve bot `0a491a6ee50c57e98c1d9de04819253d15214506` ile karşılaştırıldı. Açıklamalar ad sınırı, yönetici grupları, olay katılımcıları, işlem alıcıları ve isteğe bağlı liste bağlantılarını kapsar. Bu kaynak temelli belge incelemesidir, yeni Telegram denemesi değil. Yerelleştirilmiş örnek metinleri canlı ortamda bağımsız denenmedi.
