MILAGPT
«Biznes uchun»dan boshlang: ishga tushirishgacha uch qadam.
Tahlilga yozilishTelegram ochiladi
RU·EN·UZ
Hujjatlar · Milalar jamoasi

Milalar jamoasi: bir-birini eshitadi va obunani behuda sarflamaydi

Kontent, reklama va admin — bitta chatda uchta Mila? Odatda Mila botlarni tinglamaydi: bir-biriga javob qaytaradigan ikki bot obunani eng tez tugatib qoʻyadi. Oʻzinikilarni u qatʼiy qoidalar bilan eshitadi: bot sizning roʻyxatingizda boʻlsin, unga @nom orqali yoki xabariga javob bilan murojaat qilinsin, bitta botdan soatiga 20 tadan ortiq xabar kelmasin. Quyidagi har bir qatorda kodga havola bor.

Bir nechta Milasi — kontent, reklama, admin — bitta chatda ishlaydigan egasi uchun.

Toʻrtta qoida

Boshqa Milaning xabari toʻrttala shart bajarilgandagina yetib keladi

Sessiyaga xabar yetkazuvchi — install/companion-feeder.py — Telegramdan kelgan xabarlarni Milaning suhbatiga uzatadi. Odamlarning xabarlari avvalgidek doim oʻtadi. Botning xabari esa faqat toʻrtta shart bilan oʻtadi. team-hearing.md:3-6 companion-feeder.py:274-276 team-hearing.md:10-17 companion-feeder.py:316-339 team-hearing.md:19 companion-feeder.py:320-321

01 · OʻZIMIZNIKI

Roʻyxatingizdagi bot

Yuboruvchi bizning botlar reyestrida — our-bots.json faylida bor. Begona botlarni Mila hech qachon eshitmaydi.

team-hearing.md:12-13 companion-feeder.py:323-326
02 · MANZIL

Unga murojaat

Matnda uning botining @nom koʻrinishidagi nomi bor (katta-kichik harf farqi yoʻq) yoki bu uning xabariga javob.

team-hearing.md:14-15 companion-feeder.py:327-330 companion-feeder.py:292 test_team_hearing.py:16
03 · OʻZINIKI EMAS

Oʻz xabari emas

Uning oʻz botining xabari unga qaytib uzatilmaydi.

team-hearing.md:16 companion-feeder.py:325
04 · LIMIT

Soatiga 20 tadan oshmaydi

Bitta botdan oxirgi bir soat ichida 20 tadan ortiq xabar oʻtmaydi. Qolganini xabar yetkazuvchi tashlab yuboradi.

team-hearing.md:30-31 companion-feeder.py:331-339
Hamkasbni qanday chaqirish

Uning botining @nomi yoki uning xabariga javob

Mila uchun qoida oddiy: boshqasiga yetib borish uchun u @uning_boti_nomi deb yozadi yoki uning xabariga javob beradi. Aks holda u eshitmaydi. team-hearing.md:19-21

«@Kontent» kabi soʻz bilan yozilgan rol nomi ishlamaydi — faqat botning foydalanuvchi nomi ishlaydi. Kimni qanday chaqirishni jamoa canon/TEAM-CONTACTS.md jadvalida saqlaydi: kim, nima qiladi, qanday chaqiriladi. Repozitoriyda shablon bor, sizning jadvalingizga esa yangilanishlar tegmaydi. TEAM-CONTACTS.example.md:3-4 TEAM-CONTACTS.example.md:12 release.json:50-58 release.json:77

Mila xabarga javob berganda, iqtibos suhbatga 3000 belgigacha boradi va konvertning qolgan qismi kabi ekranlanadi. team-hearing.md:25-26 companion-feeder.py:84-86

Hamkasblarni qanday chaqirish · shablon
  • Admin. Infratuzilma, pul. Chaqirish: @<admin_bot>.
  • Mijozlar. Mijozlar bilan ishlash. Chaqirish: @<bot>.
  • Kontent. Matnlar, rasmlar, video. Chaqirish: @<bot>. TEAM-CONTACTS.example.md:6-10
Reyestr

Kimni eshitishni bitta fayl hal qiladi

our-bots.json — @ belgisisiz bot nomlarining JSON massivi, katta-kichik harf farqi yoʻq. our-bots.example.json faylidan nusxa oling va oʻz roʻyxatingizni yozing. Xabar yetkazuvchi faylni COMPANION_OUR_BOTS oʻzgaruvchisidagi yoʻldan qidiradi, standart holatda — ~/.mila-companion/our-bots.json. Fayl .gitignore ichida: haqiqiy roʻyxat repozitoriyga tushmaydi. team-hearing.md:37-41 our-bots.example.json:1 companion-feeder.py:277 team-hearing.md:43-45 .gitignore:5

Fayl boʻlmasa yoki buzilgan boʻlsa, reyestr boʻsh qoladi va Mila birorta ham botni eshitmaydi. Nosozlik eshikni ochmaydi, yopadi. team-hearing.md:45-46 companion-feeder.py:290-294

Oʻz botining nomini Mila COMPANION_BOT_USERNAME oʻzgaruvchisidan oladi, u boʻlmasa — qabul qiluvchining receiver.log jurnalidan. team-hearing.md:54 companion-feeder.py:297-313

# ~/.mila-companion/our-bots.json
["acme_content_bot",
 "acme_traffic_bot",
 "acme_admin_bot"]
Aylanish cheklagichi

Soatiga 20 ta xabar — va aylanish uziladi

Cheklagich har bir yuboruvchi botdan oxirgi 3600 soniyada uzatilgan xabarlarni sanaydi. Yigirma birinchisini xabar yetkazuvchi uzatmaydi va oʻz jurnaliga bot-loop-guard @nom qatorini bir soatdagi xabarlar soni bilan yozadi. companion-feeder.py:278-280 companion-feeder.py:331-338 team-hearing.md:30-32 companion-feeder.py:335

Shu chatdagi odam hech narsani sezmaydi: limit odamlarni sanamaydi. team-hearing.md:32-33 companion-feeder.py:320-321

Chegarani COMPANION_BOT_PAIR_MAX belgilaydi. U yerda son boʻlmasa, 20 qoladi. companion-feeder.py:283-287

Oʻzgaruvchilar toʻrtta, har birining standart qiymati bor. team-hearing.md:48-55

# oʻzgaruvchi → standart qiymat
COMPANION_OUR_BOTS
  ~/.mila-companion/our-bots.json
COMPANION_BOT_PAIR_MAX
  20
COMPANION_BOT_USERNAME
  receiver.log faylidan
COMPANION_STATE
  ~/.mila-companion/state
Tekshiruv

Toʻqqiz holat bitta testda

python3 install/test_team_hearing.py testi ALL OK javobini kutadi. Umumiy tests/run_all.sh uni qolgan test_* fayllari bilan birga ishga tushiradi. team-hearing.md:57 test_team_hearing.py:27 tests/run_all.sh:14-16

Holatlar — oʻsha qoidalar, birma-bir: odam, manzilsiz bot, tilga olish, javob, begona bot, oʻziga oʻzi, limit va iqtibos.

Test nimani tekshiradi
  • Odam — eshitadi. test:14
  • Oʻzimizning bot, @nomsiz — eshitmaydi. test:15
  • Boshqa registrdagi @nom — eshitadi. test:16
  • Uning xabariga javob — eshitadi. test:17
  • Uning @nomi bilan begona bot — eshitmaydi. test:18
  • Uning oʻz boti — eshitmaydi. test:19
  • Ketma-ket 22 ta — 20 tasini eshitadi, 2 tasini yoʻq. test:20-22
  • Chegara 2 — uchinchisini eshitmaydi. test:23-24
  • 2500 belgili iqtibos — toʻliq yetib keladi. test:25-26
Ochigʻini aytsak

Qoida nima qilmaydi

Repozitoriyda

Har bir qatorni oʻzingiz oʻqib chiqing

mila repozitoriysida Milalar bir-birini eshitadigan fayllar
FaylNima qiladi
docs/team-hearing.mdmanzil qoidalari, reyestr, cheklagich, sozlamalar (ingliz tilida)
install/companion-feeder.pyxabar yetkazuvchi: gate_message bot xabarini uzatish-uzatmaslikni hal qiladi
install/test_team_hearing.pytest: toʻqqiz holat, ALL OK kutadi
our-bots.example.jsonreyestr namunasi: uchta bot
TEAM-CONTACTS.example.md«kimni qanday chaqirish» shabloni (ingliz tilida)
docs/REFERENCE.mdmaʼlumotnomada xabar yetkazuvchi haqidagi qator (ingliz tilida)
Ochiq kod · Apache-2.0

Fork qiling, oʻrgating, PR yuboring

Toʻplam ochiq: koʻnikmalar, hooklar, asboblar va shablonlar. python3 install/test_team_hearing.py buyrugʻini ishga tushiring: shu sahifadagi toʻqqiz holat tekshiriladi, javob — ALL OK.

Sahifadagi faktlar: github.com/shakhruz/mila (main, 88d0704), 27.10.2026 da tekshirilgan; test_team_hearing.py ALL OK chiqardi. Telefondagi xabarlar — shu testdagi holatlar. «Mila», «MILAGPT» va logotip — MILAGPT tovar belgilari.