# Combot Automation Compact v3: LLM təlimatı və format arayışı

Bu faylı bütövlükdə qayda istəyinizlə birlikdə modelə verin. Avtomatlaşdırma redaktorunun idxal etdiyi formatı təsvir edir. Qayda dili Compact v3 JSON-dur; Python, YAML, JavaScript, köhnə Triggers v2 və ya sərbəst «əgər → onda» psevdokodu deyil.
İnterfeys adları tərcümə olunur, JSON dəyərləri isə dəyişmir. Məsələn, `Known Combot links` redaktordakı “Combot dəvət linkləri”, `Combot custom admins` isə “Combot adminləri” seçiminə uyğundur. JSON dəyərlərini interfeys adları ilə əvəz etməyin.

Sənədin yenilənməsi: 9 sentyabr 2026. Arayış Avtomatlaşdırma redaktoru və emalçısı ilə tutuşdurulub. Yerinə yetirilmiş idxal və Telegram yoxlamaları sonda ayrıca göstərilir: mənbə koduna baxmaq işləyən xidmətin versiyasını müəyyən etmir.

## 1. Model üçün təlimat

İnsanın istəyini mənasını dəyişmədən Avtomatlaşdırma qaydasına çevir.

1. Hadisəni, şərtləri, istisnaları, əməliyyatı, alıcısını və cavab ünvanını müəyyən et. Cədvəl üçün saat qurşağını, əmr üçün ayrıca yoxsa cavab kimi göndərilməsini öyrən. İstənməyibsə moderasiya, mükafat, təsadüfi seçim və ya silmə əlavə etmə.
2. İstifadəçi ID-lərini, mövzuları, çat ünvanlarını, dəvətləri, rütbələri və aktiv funksiyaları təxmin etmə. Mövzu adı onun ID-si deyil. Vacib məlumat yoxdursa sual ver. Cavab mətninə dair fərziyyələri ayrıca təklif edə bilərsən, amma natamam qaydanı dəqiq həll kimi göstərmə.
3. Yeni qaydaları həmişə `en: false` ilə yarat. Bu, təhlükəsiz hazırlıq qaydasıdır, Avtomatlaşdırma məhdudiyyəti deyil. `en` yazılmaması aktiv qayda deməkdir.
4. Yalnız sənədləşdirilmiş sahələri istifadə et. «İxracdan istifadə et» qeydli iç-içə filtrlər üçün oxşar quruluşun real ixracını istə; quruluş uydurma. Ssenari dəstəklənmirsə, şərtləri silməklə gizlətmək əvəzinə məhdudiyyəti izah et.
5. Cavab: qısa izah → bir idxal edilən JSON bloku → əl ilə parametrlər və yoxlamalar. JSON-da şərh, üç nöqtə, şablon ID, sahələrdən kənar izah sətirləri, artıq vergül və `when`, `if`, `then`, `conditions`, `actions`, `event` kimi uydurma açarlar olmamalıdır.
6. Nəticəni verməzdən əvvəl uyğun və uyğun olmayan bir halı düşünərək yoxla. Cavab əmrində əmri göndərəni ilkin mesajın müəllifindən ayrıca yoxla. Həqiqətən baş verməyibsə qaydanı Combot-da sınadığını iddia etmə.

Əlavə JSON Schema yeni söndürülmüş qaydaları yaratmağa kömək edir. Məcburi sahələri qəsdən idxaldan daha sərtdir və hər köhnə ixracı qəbul etmir. Mürəkkəb iç-içə filtrlər yalnız obyekt kimi yoxlanır. Sxemdən keçmək şərtlərin uyğunluğunu, resursların əlçatanlığını, plan limitlərinə uyğunluğu və ya Telegram əməliyyatının uğurunu sübut etmir.

## 2. İdxala nə yapışdırmalı

Kök rəqəmsal `v: 3` və `t` qayda massivi olan obyektdir. Adətən bir qayda qaytar. Tək massiv və ya `{"triggers": [...]}` qaytarma: bunlar idxal pəncərəsinin formatı deyil.

Tam minimal nümunə:

```json
{
  "v": 3,
  "t": [
    {
      "n": "Kurs məlumatı əmri",
      "en": false,
      "k": "c",
      "ctm": "p",
      "cm": ["/course_info"],
      "a": {
        "m": "a",
        "r": [
          {
            "i": "course_reply",
            "t": "s",
            "v": {
              "tx": "Dərs yazıları çatın bərkidilmiş mesajındadır.",
              "rp": "r"
            }
          }
        ]
      }
    }
  ]
}
```

`dv: "t3.compact.3"` məcburi olmayan sxem işarəsidir. Yeni nəticəyə `v` və `t` kifayətdir. Mövcud idxal `bundle` örtüyünü tanıyır, amma yaratmaq üçün lazım deyil.

İdxal dəstinə server `id`, `revision`, `chat_id`, hesablanan `ck` və ya `$schema` əlavə etmə. Server yeni qayda ID-si təyin edir. Əməliyyatdakı `i` ayrıdır: `course_reply` kimi yerli sətir identifikatorudur. Qaydanın əməliyyatları daxilində unikal, 1–80 latın hərfi, rəqəm, `_` və ya `-` olmalıdır.

Eyni qısa açar ayrı səviyyələrdə ayrı mənadadır: kök `t` qayda siyahısı, `a.r[].t` əməliyyat növü, `a.r[].v` əməliyyat parametrləridir. Səviyyələri qarışdırma.

## 3. Əsas qayda sahələri

| Sahə | Məna |
| --- | --- |
| `n` | Boş olmayan ad, redaktorda 80 simvoladək |
| `d` | Məcburi olmayan təsvir, redaktorda 280 simvoladək |
| `en` | Yeni söndürülmüş qayda üçün `false` |
| `e` | Əmr deyilsə hadisə kodları massivi |
| `k`, `cm`, `ctm` | Əmr rejimi; aşağıya bax |
| `a` | Əməliyyat planı: `{"m":"a","r":[...]}` və ya `{"m":"r","r":[...]}` |
| `s`, `ti` | Hadisənin yoxlanacağı yer: mənbə çat, Ümumi və ya seçilmiş mövzular |
| `at` | Uyğunluğa icazəli vaxt; vaxt filtri, taymer deyil |
| `wh`, `wx`, `wm` | Hadisənin icraçısı: daxil edilən qruplar, istisnalar və qrupların birləşdirilməsi |
| `cgr` | Rəqəmsal şərtlər: çatda vaxt, mesajlar, xəbərdarlıqlar, XP, reputasiya |
| `ua`, `ux`, `uar`, `ul`, `ulx` | Üzv əlamətləri, sahə dəyərləri və dil |
| `twh`, `twx`, `tcg`, `tua`, `tux`, `tur`, `tlg`, `tlx` | Hadisənin başqa istifadəçisi: cavab verilən müəllif və ya qoşulan üzv üçün yoxlamalar |
| `tv`, `tr`, `ty`, `cs`, `lmin`, `lmax` | Mətn şərtləri |
| `mti`, `mtx`, `me`, `mex` | Mesaj növləri və mətn elementləri |
| `il`, `ilc`, `ilx` | Qoşulma sorğuları üçün dəvət keçidləri |
| `rct`, `rnt`, `rnx`, `rcy`, `rcx`, `rcn`, `rcm` | Reaksiya şərtləri |
| `chl` | Tapşırıq dəyişməsi hadisələri üçün konkret siyahıya birbaşa keçid |
| `cl` | Standart əvvəlki cavab təmizləməsi: `n` və ya `ps` |
| `ov` | OR alternativ şərt topluları; mürəkkəb hallar üçün ixrac istifadə et |

Hər sahəni doldurma. Yalnız istənən və seçilmiş hadisəyə uyğun şərtləri əlavə et. Məsələn, qoşulmaya mesaj sözləri lazım deyil, ümumi reaksiya sayğacında isə avtomatik mükafat veriləcək konkret istifadəçi yoxdur.

## 4. Hadisələr

| `e` | Nə vaxt işləyir |
| --- | --- |
| `["m"]` | Yeni çat mesajı |
| `["em"]` | Mesaj düzəlişi |
| `["m","em"]` | Yeni mesaj və ya düzəliş |
| `["lc"]`, `["el"]`, `["lc","el"]` | Əlaqələndirilmiş kanal şərhi, düzəlişi və ya hər ikisi |
| `["cp"]`, `["ec"]`, `["cp","ec"]` | Əlaqələndirilmiş kanal kontekstində paylaşım, düzəliş və ya hər ikisi |
| `["jr"]` | Qoşulma sorğusu |
| `["nm"]` | Üzv qoşuldu |
| `["ml"]` | Üzv ayrıldı və ya çıxarıldı |
| `["cb"]`, `["rb"]` | Gücləndirmə əlavə edildi və ya silindi |
| `["mr"]` | Konkret istifadəçinin reaksiyaları dəyişdi |
| `["rc"]` | Əlaqələndirilmiş kanal kontekstində ümumi anonim reaksiya sayğacları yeniləndi |
| `["ck"]` | Yeni tapşırıq siyahısı |
| `["cd"]` | Siyahı tapşırıqları tamamlanmış kimi işarələndi |
| `["ca"]` | Siyahıya tapşırıqlar əlavə edildi |

`["m","nm"]` kimi əlaqəsiz hadisələri birləşdirmə; ayrı qaydalar istifadə et. Sadalanmış yeni və düzəldilmiş cütlərə icazə var. Gizli qonaq botu `gm` rejimini yaratma.

Düzəliş ayrıca tətiklənmədir. XP, reputasiya, xəbərdarlıq və ya insanın birdəfəlik gözlədiyi əməliyyata avtomatik əlavə etmə.

## 5. Sadə və cavab əmrləri

Məlumat cavabı kimi sadə əmr:

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

Moderatorun üzv mesajına cavab kimi göndərdiyi əmr:

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

Bunlar qayda sahələrinin hissələridir, ayrıca idxal dəstləri deyil.

Əmrə `e` əlavə etmə. `cm`-də kiçik latın hərfləri, rəqəmlər və `_` ilə yazılmış öz slash əmrlərinin boş olmayan siyahısını ver. Uydurulmuş əmri Combot-un daxili əmri kimi göstərmə. Cavab əmrlərində `ctm` yazma; ora `reply_target`, `r` və ya insan adı qoyma.

Sadə əmrdə istifadəçi əməliyyatının alıcısı yoxdur. Mesaj göndərmə və yalnız açıq istənibsə əmr mesajının silinməsini istifadə et. Susdurma, xəbərdarlıq, XP və insana təsir edən başqa əməliyyatlar cavab əmri tələb edir.

Cavab əmrində `wh` əmri göndərəni, `twh` və başqa `t...` sahələri cavab verilən mesajın müəllifini yoxlayır. Sonuncuya təsir etmək üçün `v.tg: "t"` istifadə et. Aysel İlqara `/team_pause` cavabı verirsə, Ayseli yox, İlqarı məhdudlaşdır.

Yalnız `twh` yoxlamaq əmri kimin çağıra bildiyini məhdudlaşdırmır. Moderator əmri istəyə uyğun `wh` saxlamalıdır. `d` əməliyyatı İlqarın mesajını yox, əmrin özünü silir.

Əmr rejimini `tv`-də `/team_pause` mətn axtarışı ilə əvəz etmə. Təsdiqlənmiş ixrac olmadan cədvəl kimi redaktorun gizlətdiyi əmr şərtlərini əlavə etmə.

## 6. Üzvlər və istisnalar

`wh` və `wx` tərcümə olunmuş adları yox, məhz bu sətirləri istifadə edir:

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

Boş daxil etmə siyahısı qrup məhdudiyyəti qoymur. Adətən `Anyone` yazılmaya bilər. `wm: "o"` bir uyğun qrup, `wm: "a"` bütün seçilmiş qrupları tələb edir. `wx` istisnaları müsbət qruplardan asılı olmayaraq uyğunluğu qadağan edir.

Nümunə: uyğun mesajı inzibatçılardan başqa hər kəs göndərə bilər:

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

Nümunə: əmri yalnız Telegram inzibatçısı və ya sahib çağıra bilər:

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

Rolları qarışdırma. `Combot custom admins` Telegram inzibatçılarını yox, Combot icazələrini təsvir edir. Emalçıda `Admins`, `Telegram admins` kimi, sahib daxil Telegram inzibatçılarını yoxlayır; Combot inzibatçılarını əlavə etmir. Hər iki qrupa icazə üçün `Telegram admins` və `Combot custom admins` dəyərlərini `wm: "o"` ilə yaz. `Regular members` uzun üzvlüyü və ya çox mesajı olanları yox, hazırda üzvlüyü məlum olanları bildirir. `New members` çatın mövcud yeni üzv parametrləri və istisnalarından istifadə edir; sabit «ilk yeddi gün» deyil. Dəqiq müddət üçün `cgr` istifadə et.

`Core members` və `Non-members` yaratma: yeni qaydalara etibarlı tərifləri verilməyib. Üzv məlumatının olmaması insanın heç vaxt çatda olmadığını sübut etmir.

Hədəf üçün `twh`, `twx`, `twm` istifadə et. `Target self`, `Target bots`, `Target Combot`, `Target linked channel post` kimi kontekst dəyərlərini uyğun ixracdan götür; göndərən filtrlərində təxmin etmə.

`nm` və `ml` üçün `wh`/`wx` qoşulma və ya çıxarmanı başladanı, `twh`/`twx` statusu dəyişən üzvü təsvir edir. Aysel İlqarı əlavə edirsə, yeni üzv şərtləri `t...` vasitəsilə İlqara aiddir, Ayselə yox. Əməliyyatda `v.tg` seçmək şərtləri yer dəyişmir.

`am: "o"` Telegram inzibatçısını yoxlayır; `am: "n"` onu istisna edir. Bu, `wh`/`wx`-də rol birləşməsinin əvəzi deyil. Yeni qaydalarda açıq qruplara üstünlük ver.

## 7. Çatda vaxt, aktivlik, XP və reputasiya

Rəqəmsal şərtlər `cgr`, hədəf üçün `tcg` daxilindədir. Bu hissə üzvün ən çox bir saat çatda olduğunu və ən çox beş qeydə alınmış mesajı olduğunu bildirir:

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

Operatorlar: `eq` bərabərdir, `gte` ən azı, `lte` ən çoxudur. Operatoru həmişə açıq yaz. «Beşdən az»ı `lte: 5` kimi çevirmə: tam ədəd sayğacı üçün `lte: 4`-dür. İnsan «ən azı» nəzərdə tutanda dəqiq müddətli `eq` qoyma: vaxt keçməyə davam edir.

Statistika göstəriciləri:

- `joinedDays`: bu çata qoşulmadan keçən vaxt; hesabın və ya insanın yaşı deyil. Vahidlər: `s`, `m`, `h`, `d`, `w`, `mo`. Gün 24 saat, həftə 7 gün, burada ay 30 gündür. Yeni qaydalar həmişə vahid saxlamalıdır.
- `messageCount`: bu çatda qeydə alınmış mesajlar; vahid `c`.
- `warns`: aktiv xəbərdarlıqlar; vahid `c`.

«Bir qeydə alınmış mesaj» `{"metric":"messageCount","unit":"c","op":"eq","value":"1"}` deməkdir. Yalnız bir dəfə icraya zəmanət vermir: sayğac yenilənməsi və hadisə emalı ayrı ola bilər.

Digər bölmələr:

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

Rütbə hədləri `cgr.xp.rank.rules` istifadə edir, dəyərlər isə uydurma ad yox, çatın real rütbələrindən gəlməlidir. Sətirlər `join: "and" | "or"` və `mode: "include" | "exclude"` dəstəkləyir. Sadə şərtlərdə açıq AND, mürəkkəb AND/OR zəncirlərində real ixrac istifadə et. `cgr.logic: "All" | "Any"` bölmələri birləşdirir. İstisna edən rəqəmsal sətir qadağadır: eyni şərt variantının başqa bölməsində müsbət uyğunluq onu aşa bilməz.

İlk mesajdan və ya başqa ilk aktivlikdən keçən vaxt şərti yaratma: `firstMessageAge` və `firstOtherActivityAge` əlçatmazdır. Ümumi `messageCount` ilə «keçən həftənin aktivliyi» vəd etmə. Əlçatmaz məlumat avtomatik sıfıra çevrilməməlidir.

## 8. İstifadəçi əlamətləri və sahələri

`ua` əlamətləri tələb, `ux` istisna edir. Dəqiq dəyərlər: `Any username`, `Telegram Premium`, `Bot account`, `Any last name`. Məsələn, `{"ux":["Bot account"]}` botları istisna edir.

`ul` və `ulx` Telegram veribsə istifadəçi dil kodlarını daxil və istisna edir. Bu mesaj dili və ya milliyyət deyil. Üzvün adından dil nəticəsi çıxarma.

Konkret dəyər şərtləri `uar`, hədəf üçün `tur` daxilindədir. Sahələr: `user_id`, `name`, `username`, `last_name`, `bio`. Bio qoşulma sorğusu kontekstinə aiddir; hər üzv üçün daim əlçatan profil sahəsi deyil.

İstifadəçi adı şərtinin quruluşu:

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

Bu real üzvü yox, quruluşu göstərir. Həqiqi istəkdə yalnız insanın verdiyi istifadəçi adını `@` olmadan istifadə et; verilməyibsə soruş. ID-ləri `values` daxilində sətir kimi ver. Giriş nəzarətində açıq verilmiş ID-yə üstünlük ver: adlar və istifadəçi adları dəyişə bilər.

Burada `matchType` mesaj mətninin `f`, `p`, `r` kodlarını yox, tam `Exact match`, `Partial match`, `Regular expression` sətirlərini istifadə edir. Bir sətirdəki dəyərlər alternativdir; sətirlərdə `join` var. Bu sahələr üçün `Starts with` və `Ends with` uydurma.

`ual` və `tul`: `a` bütün qaydalar, `o` hər hansı qrup deməkdir. Bu yaratma profilində `uag` və `tug` qrup quruluşları üçün ixrac istifadə et.

## 9. Mətn və mesaj növü

İfadə axtarışı üçün sətirlər massivi `tv` istifadə et. Bir sətir uyğunluğu kifayətdir. Məsələn:

```json
{"tv":["yazı haradadır","dərsin yazısı"],"tr":"p","ty":"p","cs":false}
```

`tr`: `p` ifadələr, `w` sözlər, `r` müntəzəm ifadələrdir. Söz rejimi bütün yazılmış sözləri tələb etmir. Adi qismən axtarış söz sərhədinə də zəmanət vermir: «at» «ata» daxilində tapıla bilər.

`ty`: `f` bütün mətn, `p` mətn hissəsi, `s` başlanğıc, `e` son, `r` müntəzəm ifadədir. `cs: true` böyük-kiçik hərfə həssas edir; `false` və ya buraxılması söndürür. Sadə tez-tez verilən sual üçün `tv` kifayətdir: standart axtarış hərf ölçüsünə həssas olmayan ifadə axtarışıdır.

`lmin` və `lmax` mətn uzunluğunu məhdudlaşdırır. Boş və ya sıfır hədd həmin tərəfdə limit qoymur. Mətn uzunluğunu söz sayı ilə qarışdırma.

Müntəzəm ifadələri yalnız sadə uyğunluq çatmayanda istifadə et. Əks çəp xətləri qaçıraraq nümunəni JSON sətri kimi ver; JavaScript `/.../i` ayırıcılarını avtomatik əlavə etmə. Dəqiq söz və mürəkkəb inkar üçün uyğun və uyğun olmayan nümunələri izah et.

`mti` mesaj növlərini daxil, `mtx` istisna edir. Əsas dəyərlər: `photo`, `video`, `animation`, `audio`, `document`, `sticker`, `voice`, `video_note`, `contact`, `location`, `poll`, `dice`, `game`, `paid_media`. Məsələn, `{"mti":["voice"]}` səsli mesaj, `{"mti":["photo","video"]}` eyni anda hər iki qoşma yox, foto VƏ YA video deməkdir.

Redaktorda `text` və `caption` da var. Onlar mətn məzmunu parametrlərində iştirak edir; `caption`-ı ayrıca Telegram qoşması sayma. «Yalnız foto başlıqları» və ya mətn-başlıq sərt ayrımı üçün həmin quruluşun ixracını al. Kodek tək `text` daxil standartları buraxa bilər; giriş JSON-da dəyərin olması məhdudiyyətin idxalda qalmasını sübut etmir.

`me` və `mex` mətn elementlərini tələb və istisna edir. Dəyərlər: `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"` bütün daxil edilən elementləri, `"o"` ən azı birini tələb edir. İstənilən görünən və ya gizli keçid üçün: `{"me":["url","text_link"],"mel":"o"}`.

`mef` konkret keçid, əmr və başqa elementləri daraldır; `mmo` media xüsusiyyətləridir; `mtg`, `mog` şərt qrupları; `csx`/`cse` simvol dəstləridir. Bu mürəkkəb sahələri real ixracdan yarat. `max_file_size`, `allowed_domains`, `mime`, `language`, `contains_all` kimi əvəzləyicilər uydurma.

## 10. Vaxt və çat mövzuları

`s`: `sc` mənbə çat, `gn` Ümumi, `st` seçilmiş mövzulardır. Sonuncuda `ti` müsbət mövzu ID-lərini saxlayır.

İdxal seçilmiş mənbə mövzularını bütün mənbə çata, seçilmiş göndərmə mövzularını cari mövzuya sıfırlayır. Düzgün ID-lərlə də baş verir, OR variantlarına da aiddir. Ssenari mövzudan asılıdırsa, izahda və məcburi əl parametrlərində adını yaz. Mövzular yenidən seçilmədən nəticəni aktivləşdirməyə hazır adlandırma.

`at` hadisəyə icazəli vaxtı seçir; müstəqil göndərməni planlamır. «Axşam suala cavab ver» mümkündür. «Gələn hadisə olmadan hər gün 19:00-da paylaş» bu tətikləyicini yox, planlaşdırıcı tələb edir.

Bot ilkin mesajın vaxtını yox, hadisəni emal edərkən cari vaxtı yoxlayır. İlkin mesaj gecə yazılsa da, səhər düzəlişi səhər saatlarını yoxlayır.

Həftəlik aralıq, bazar ertəsi–cümə, 09:00–18:00 UTC:

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

`wd`: 0 bazar ertəsi, 6 bazardır. Vaxt UTC gecəyarısından keçən 0–1439 tam dəqiqədir. Həftəlik aralığa son dəqiqə daxildir. Gecədən keçən aralıqda başlanğıc sondan böyük ola bilər; həftə günü «növbə»nin başladığı günü yox, cari UTC tarixini götürür. Günləri təxmin etməkdənsə gecəyarısının hər iki tərəfini yoxla.

Moskva 09:00 və 18:00 UTC ilə 06:00 və 15:00-dır: 360 və 900 dəqiqə. Düz 18:00-da uyğunluğu dayandırmaq üçün son dəqiqə 14:59 UTC, yəni `endMinute: 899`-dur. Başqa qurşaqlarda fərqi və mümkün yay vaxtını nəzərə al. Çevirmədən yerli vaxtı UTC kimi yazma.

Tarix intervalı:

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

Bunlar istifadəçinin kampaniya tarixlərini yox, quruluşu göstərir. Başlanğıc sondan əvvəl olmalıdır. Bu rejimdə hər iki sərhəd daxildir. `Z` UTC deməkdir.

Bağlı saatlar çatın mövcud parametrlərini götürür: `{"at":{"m":"c"}}`; həmin saatlardan kənar: `{"at":{"m":"c","i":true}}`. Rejim başlanğıcı daxil, sonu xaric edir. Tətikləyici çatın bağlanma cədvəlini qurmur. Düzgün cədvəl olmadan nə birbaşa, nə tərs şərtin işləyəcəyini vəd et.

## 11. Dəvət keçidləri, reaksiyalar və siyahılar

### Dəvətlər

`["jr"]` qoşulma sorğularında `il` `Known Combot links`, `External invite link`, `Any source` qəbul edir. Məhdudiyyət lazım deyilsə yazma.

`Known Combot links` bu çatın Combot kataloqundakı keçidlərdir. `ilc` və `ilx` kataloq daxilində qəbul və istisna edilən keçid kodlarıdır; dəqiq kodları ixracdan və ya verilən məlumatdan götür. Boş siyahılar ümumi kateqoriya yoxlamasını saxlayır.

`External invite link` «seçdiyim iki keçiddən başqa hər şey» yox, bütün Combot kataloqundan kənarda müəyyən edilmiş keçiddir. Naməlum mənbə və əlçatmaz kataloq xarici keçid sayıla bilməz. Şərtin məlum dəvəti olmayan hər sorğunu tutacağını vəd etmə.

### İstifadəçi reaksiyaları

Hadisə `["mr"]`. `rct` `added` və/və ya `removed` saxlayır. `rnt` və `rnx` istifadəçinin yeni vəziyyətində reaksiyaları daxil və istisna edir. Birində dəyər varsa, `rct` daxilində `added` olmalıdır.

Emalçı `mr`-ni yalnız Telegram `user` verəndə işlədir. Kanal və ya anonim inzibatçıdan `actor_chat` ilə reaksiya hadisəni işə salmır. Bu, ümumi `rc` sayından fərqlidir.

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

Reaksiya dəyərləri adi emoji, sətir kimi xüsusi emoji ID-ləri və ya `paid`-dir. `rnt` yalnız fərqi yox, bütün yeni vəziyyəti yoxlayır. 👍 əvvəl də vardısa, istifadəçi başqa reaksiya əlavə edəndə şərt yenə uyğun gələ bilər. Burada `u` alıcısı reaksiyanı dəyişən şəxsdir; mesaj müəllifini avtomatik mükafatlandırmır.

### Ümumi reaksiya sayı

Hadisə `["rc"]`. `rcy`/`rcx` sayılan reaksiya növlərini seçir. `rcn`/`rcm` aşağı və yuxarı hədləri mənfi olmayan tam ədədlə qoyur. Sıfır və ya buraxılması həmin tərəfdə hədd yoxdur deməkdir.

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

Bu, «ilk dəfə ona çatdı» yox, yenilənmədə cari dəyəri yoxlayır. Başqa uyğun yenilənmə əməliyyatı yenidən işlədə bilər. Ümumi anonim sayğacda konkret reaksiya verən istifadəçi yoxdur.

### Tapşırıq siyahıları

`["cd"]` və `["ca"]` üçün `chl` qaydanı bir siyahı ilə məhdudlaşdırır. Konkret siyahı istənirsə, mesaja birbaşa keçidi soruş. Çat və ya mövzudakı bütün uyğun siyahılar istənirsə, `chl` əlavə etmə.

Mövzu nömrəli keçidlər daxil birbaşa Telegram keçidləri dəstəklənir; `?comment=` olanlar yox. Ünvan uydurma. Açıq keçid üçün hadisə emalçısı çatın istifadəçi adını bilməlidir; zahirən düzgün URL təkbaşına uyğunluğu sübut etmir.

## 12. Əməliyyatlar

`a.m: "a"` hər sətri ardıcıl işlədir. `a.m: "r"` bütün `fr: 1` işarəli sətirləri və varsa işarəsizlərdən dəqiq bir təsadüfi sətri işlədir. Seçilmiş sətirlər ilkin sıralarını saxlayır. Təsadüfilik istənməyibsə `a` istifadə et; təsadüfi rejimdən kənar `fr` əlavə etmə.

| Kod `a.r[].t` | Əməliyyat | Parametrlər `v` |
| --- | --- | --- |
| `s` | Mesaj göndərmək | `tx` və format; aşağıya bax |
| `d` | Qaydanı işə salan mesajı silmək | Parametr yoxdur |
| `w` | Xəbərdarlıq əlavə etmək | `tg`, müsbət `c`, adətən 1 |
| `rw` | Xəbərdarlıq götürmək | `tg`, müsbət `c`, adətən 1 |
| `m` | Yazmağı məhdudlaşdırmaq | `tg`, saniyə ilə `du` müddəti |
| `b` | Bloklamaq | `tg`, saniyə ilə `du` müddəti |
| `k` | Geri qoşulmağa icazə ilə çatdan çıxarmaq | `tg` |
| `um` | Yazma məhdudiyyətini götürmək | `tg` |
| `ub` | Bloku götürmək | `tg` |
| `du` | Bota əlçatan saxlanmış istifadəçi mesajlarını silmək | `tg` |
| `x` | XP-ni dəyişmək | `tg`, −99999-dan 99999-adək sıfırdan fərqli tam `v` |
| `r` | Reputasiyanı dəyişmək | `tg`, −999-dan 999-adək sıfırdan fərqli tam `v` |
| `ja` | Qoşulma sorğusunu təsdiqləmək | Yalnız `jr`, parametr yoxdur |
| `jd` | Qoşulma sorğusunu rədd etmək | Yalnız `jr`, parametr yoxdur |

`du` əməliyyat kodunu `v.du` müddət sahəsi ilə qarışdırma. Müddət dəqiqə ilə yox, saniyə ilədir: bir saat 3600. Susdurma və ya bloklamada sıfır sonun göstərilmədiyini bildirir; naməlum müddəti bununla əvəz etmə. İstənirsə səbəbi ayrıca mesajda yaz; sənədləşdirilməmiş sahə ilə fərdi cəza səbəbi vəd etmə.

İstifadəçi əməliyyatının `v.tg` alıcısı:

- `u`: hadisəyə səbəb olan iştirakçı.
- `t`: kontekstin hədəfi, məsələn cavab verilən mesajın müəllifi. Hərfi ID deyil.
- `l`: qoşulma sorğusunda Combot kataloqundakı dəvət keçidinin yaradıcısı.
- `b`: uyğun kontekstdə əlçatan hər iki iştirakçı. «Çatdakı hamı» deyil.

Alıcını həmişə göstər. Sadə əmrlər istifadəçi əməliyyatlarını dəstəkləmir. Cavab əmrlərində göndərən, hədəf və hər ikisi var. Qoşulma sorğusunda həm sorğu göndərən (`u`), həm məlum keçid yaradıcısı (`l`) lazımdırsa, ayrı əməliyyatlar istifadə et: `b` bu ikisini bildirmir. Redaktor keçid yaradıcısını qoşulma sorğuları üçün təklif edir; üzvün artıq qoşulması üzrə addım təlimatında eyni seçimi təklif etmə. Başqa hadisələrdə yalnız həmin hadisədə əlçatan alıcıları istifadə et.

Naməlum hədəf əməliyyatı əmri göndərənin cəzasına çevirməməlidir. Başqa insana ehtiyat keçid vəd etmə. `du` üzvün bütün tarixçəsinin silinməsinə zəmanət vermir: bot əlçatan mesajlar və Telegram imkanları ilə məhduddur.

Ssenari asılıdırsa xəbərdarlıq, səviyyə və reputasiya aktiv olmalıdır; moderasiyaya uyğun bot icazələri lazımdır. Susdurmanı götürmək, bloku götürmək və sorğunu təsdiqləmək ayrı əməliyyatlardır.

Qoşulma sorğularında mesaj göndərmə, əlçatan istifadəçilərə əməliyyat və `ja`/`jd` mümkündür; `d` mesaj silməsi uyğun deyil. Mesajsız hadisəyə silmə və ya olmayan mesaja cavab əlavə etmə.

## 13. Cavab mətni və ünvanı

`s` əməliyyatının parametrləri:

| Sahə | Məna |
| --- | --- |
| `tx` | 4096 simvoladək boş olmayan mətn; dəstəklənən Telegram HTML mümkündür |
| `d` | `sc`: mənbə çat; `lg`: qurulmuş jurnal kanalı; standart `sc` |
| `tp` | `ct`: cari mövzu; `gn`: Ümumi; `st`: seçilmiş mövzular; standart `ct` |
| `to` | Seçilmiş mövzuların müsbət ID-ləri; idxal sıfırlayır |
| `rp` | `r`: işə salan mesaja cavab; buraxılması: ayrıca mesaj |
| `cl` | `n`: əvvəlki cavabı saxla; `ps`: bu sətrin əvvəlki cavabını sil |
| `bt` | URL düymə sətirləri: `text` və `url` obyektlərinin massivlərindən massiv |
| `ph` | Keçid önizləmələri üçün şəkil URL-ləri massivi |
| `pa` | `true`: önizləməni mətnin üstünə qoy |

`rp: "r"` mənbə çat və cari mövzu üçün qalır. Jurnalda və ya başqa mövzuda eyni cavab əlaqəsini vəd etmə. `d`-yə sərbəst xarici çat, kanal və ya şəxsi mesaj qoyma.

Sətir səviyyəsində `cl` yoxdursa, qaydadan götürülür. Qayda səviyyəsində `cl: "ps"` əvvəlki cavabı təmizləyir; açıq sətir `cl: "n"` bunu üstələyir. Təmizləmə konkret qayda, əməliyyat sətri və ünvana aiddir. Fərqli təsadüfi sətirlər ortaq «son salamlama» olmur.

Adi cavab üçün `<b>Kurs məlumatı</b>\nYazılar bərkidilmiş mesajdadır.` istifadə edə bilərsən. Markdown-u HTML kimi vermə. Keçid və mətni düzgün qaçır. Düymə və şəkli yalnız insanın verdiyi real URL-lərlə əlavə et; `ph` fotoalbom göndərmir.

Təsdiqlənmiş mesaj konteksti dəyişənləri: `{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}`. Əlçatanlıq hadisədən asılıdır. `{target.name}`, `{user.first_name}`, `{reaction_count}` və oxşar dəyişənlər uydurma.

Cavab əmrində `{from.title}` cəzalanan və ya mükafatlanan üzvü yox, əmri göndərəni təsvir edir. `tg: "t"` seçmək dəyişən mənalarını dəyişmir. Hadisənin lazımi adı verdiyinə əmin deyilsənsə, neytral ifadə istifadə et.

Qoşulmada da `{from.title}` yeni gələnin adına zəmanət vermir: Aysel İlqarı əlavə edirsə, icraçı Ayseldir. Adsız «{chat.title} çatına xoş gəldiniz!» kimi ümumi salamlama istifadə et.

Əməliyyatlar tranzaksiya deyil. Susdurmadan sonra mesaj Telegram-ın susdurmanı tətbiq etdiyini sübut etmir. Şərtsiz cəza təsdiqini yoxlanmış nəticə kimi yazma: burada ayrıca uğur yoxlama şərti sənədləşdirilməyib.

## 14. Variantlar, limitlər və dəstəklənməyən vədlər

`ov` eyni qaydanın alternativ şərtləridir. Müstəqil ssenari yaratmaq əvəzinə əsas qaydanın hadisə və əməliyyatlarını paylaşır. Bir variantdakı istisna qlobal deyil. Qadağa həmişə qüvvədə olmalıdırsa, hər variantda saxla. `en: false` variantı uyğunluqda iştirak etmir.

Yeni mürəkkəb `ov`, `mtg`, `mog`, `uag`, `tug`, `mef`, `mmo` üçün real redaktor ixracları istifadə et. Rekursiv OR ağacları yaratma, variantlara müstəqil icra gözləyərək ayrıca əməliyyat zəncirləri qoyma.

İxracda `mt`, `mtl`, `t`, `rmi`, `rme` uyğunluq sahələri görünə bilər. Səbəbsiz sənədləşdirilmiş əsas parametrlər əvəzinə əlavə etmə. Sadə cavab məhdudiyyəti üçün `rm`: `a` hər mesaj, `r` yalnız cavab, `rb` bota cavab, `rc` Combot-a cavab, `nr` cavab olmayan. Yeni əmr sahələri əvəzinə `rm: "cr"` istifadə etmə.

Köhnə və ya daxili `lf`, `fc`, `lo`, UI sahələri `actions`, `destination`, `topic`, `applyTarget`, `alwaysRun` yaratma. Compact format onları başqa cür ifadə edir, bəziləri isə ümumiyyətlə aktiv funksiya deyil.

Planlama limitləri:

- Free: 2, Pro: 50, Business: 100 saxlanmış qaydayadək. Söndürülmüşlər də sayılır. Qalan yeri hesablayanda mövcud qaydaları nəzərə al.
- Bir qaydaya əlavə OR variantı: Free 0, Pro 2, Business 5.
- Bir qaydaya 100 əməliyyat sətrinədək, planın bir icrasına ayrıca hesablanan 20 əməliyyat büdcəsi.
- Göndərmə hər unikal ünvana 1, əvvəlki cavab təmizləməsi ilə 2 tutur. İstifadəçiyə aid Telegram əməliyyatları alıcı ilə sayılır, `b` ikiqat yer ayıra bilər. XP və reputasiya bu hesabda 0-dır. Təsadüfi rejim məcburi sətirləri və ən bahalı təsadüfi seçimi sayır.
- Bu daxili hesablamadır, bütün köməkçi əməliyyatlar daxil dəqiq iyirmi şəbəkə sorğusu vədi deyil. Növbəti sətir qalan büdcəni aşırsa icra dayanır; tamamlanan əməliyyatlar geri alınmır.

Hadisəsiz yalnız taymerlə icra, «saatda ən çox bir dəfə», birdəfəlik reaksiya mükafatı, təkrar hadisələrlə mükafat sui-istifadəsindən qorunma, yalnız ilk hədd keçidi, yalnız bir dəfə icra, sərbəst xarici çat emalı, hesab yaşı və ya keçmişin istənilən dövründə aktivlik statistikası vəd etmə. Bunlardan biri vacibdirsə, təkcə təsvir olunan qaydanın yetmədiyini izah et.

İdxal yeni qayda nüsxələri əlavə edir, köhnə Triggers v2-ni daşımır. Köhnə qaydanın mənasını Compact v3-də yenidən yaza bilərsən, amma köhnə JSON-u hazır idxal kimi göstərə bilməzsən.

## 15. Nümunələr üçün qəbul ssenariləri

Əlavə `examples` qovluğunda hərəsi bir söndürülmüş qaydalı altı müstəqil dəst var:

| Fayl | Uyğun hal | Əlavə yoxlamalar |
| --- | --- | --- |
| `01-course-command.json` | Üzv `/course_info` daxil edir | Əmrsiz adi mətn cavab yaratmamalıdır |
| `02-recording-faq.json` | Mətndə «yazı haradadır» var | Əlaqəsiz sual cavab yaratmamalıdır; qismən axtarış uzun ifadədə də uyğun gələ bilər |
| `03-random-welcome.json` | Yeni üzv qoşulur | Üçü də yox, bir salamlama seçilməlidir |
| `04-moderator-reply-mute.json` | Telegram inzibatçısı və ya sahib üzvə `/team_pause` cavabı verir | Adi üzv çağıra bilməz; inzibatçı hədəflər istisnadır; cavabsız əmr göndərəni məhdudlaşdırmamalıdır |
| `05-known-link-join-request.json` | Sorğu Combot kataloqundakı keçidlə gəlir | Xarici və ya naməlum mənbə uyğun deyil; konkret seçim yoxdursa bütün məlum keçidlər uyğundur |
| `06-thumbs-up-reaction.json` | İstifadəçi reaksiya əlavə edir və yeni vəziyyətdə 👍 var | 👍 silinməsi uyğun deyil; təkrar uyğun dəyişiklik yenə mesaj göndərə bilər |

Bunlar çatınız üçün qəbul ssenariləridir, hamısının icra olunduğu iddiası deyil. Tamamlanan yoxlamalar aşağıdadır. Aktiv etməzdən əvvəl hər nümunənin parametr və imkanlarını öz çatınızda yoxlamaq lazımdır.

## 16. Format mənbələri və tamamlanan yoxlamalar

Format Rails `0d80ce4788ef5adc5c7c1b79e85c6b8be27cc00e` və bot `ddc1a8a6b6ab99bd2517d783870495990c7058e5` ilə tutuşdurulub. Bu main reviziyalarında əlaqələndirilmiş redaktor və Avtomatlaşdırma düzəlişləri var. Rails PR #78 və bot PR #56 birləşmələri Codeberg-də təsdiqlənib; yerləşdirilmiş proseslərin dəqiq reviziyaları müstəqil müəyyən edilməyib.

Əsas mənbələr: `trigger_compact_codec_helpers.js`, `trigger_import_export_helpers.js`, `trigger_validation_helpers.js`, hadisə və əməliyyat reyestrləri, `user_attribute_model_helpers.js`, `AutomationController`, `docs/MONGODB.md` daxilində ətraflı Avtomatlaşdırma müqaviləsi və `automation.py` şərt/əməliyyat emalı.

Altı ilkin nümunə redaktorun mənbə kodeki ilə yaddaşda yoxlanıb: açmaq, yenidən qurmaq, yenə açmaq və normallaşdırılmış nəticənin sabitliyi. Əməliyyatlar və söndürülmüş vəziyyət qalıb. Kodek bəzi standartları buraxdığı üçün giriş JSON-u ilə bayt-bayt bərabərlik yox, normallaşdırılmış nəticələr müqayisə olunub.

Sentyabrın 8-də bütün altı ilkin nümunənin söndürülmüş vəziyyəti combot.org istehsal redaktorunda idxal, serverdə yadda saxlama və səhifə yenilənməsindən sonra yoxlanıb. Bu, Telegram-da hər şərt və əməliyyatın yoxlanmasını əvəz etmir.

Əmr və tez-tez verilən sual halları Telegram-da sınanıb: uyğun müraciətlər nəzərdə tutulan cavabı alıb, nəzarət nümunələri almayıb. Yalnız `/course_info` sınaq vasitəsinin qoruyucu qaydalarına uyğun unikal ada dəyişdirilib; başqa nümunə parametrləri qalıb. Bu nəticələr avtomatik başqa hadisə və əməliyyatları təsdiqləmir.

`06-thumbs-up-reaction.json` üçün şəxsi profildən 👍 əlavə etmək gözlənilən bir cavab yaradıb, silmək heç nə yaratmayıb. Kimlik və köhnə/yeni reaksiya dəstləri ayrıca Bot API müşahidəçisi ilə təsdiqlənib. Həmin sınaqda qoşulanda təsadüfi salamlama, susdurmanın tətbiqi və real qoşulma sorğusunun təsdiqi sınanmayıb; idxal əməliyyat icrasını sübut etmir.

Yaradılmış sınaq qaydaları silinib, ilkin siyahının bərpası yoxlanıb; nəticə mesajları sınaq qrupunda qalıb. JSON Schema əlavə sənəddir, məhsula qoşulmayıb və mövcud daxili yoxlayıcı kimi təqdim edilmir.

Sentyabrın 9-da redaksiya arayışı Rails `0d80ce4788ef5adc5c7c1b79e85c6b8be27cc00e` və bot `0a491a6ee50c57e98c1d9de04819253d15214506` ilə tutuşdurulub. Dəqiqləşdirmələr redaktorun ad həddini, inzibatçı qruplarını, hadisə iştirakçılarını, əməliyyat alıcılarını və məcburi olmayan siyahı keçidlərini əhatə edir. Bu, mənbəyə əsaslanan sənəd baxışıdır, yeni Telegram sınağı deyil. Lokallaşdırılmış nümunə mətnləri real mühitdə ayrıca sınanmayıb.
