grammY integratsiyasi (Telegram Bot API)¶
Nima uchun grammY¶
- TS-first Bot API mijoz — ichki long-poll + webhook yordamchilari, middleware, xatolarni qayta ishlash va tezlik cheklovchiga ega.
- Qo‘lda fetch + FormData yozishga qaraganda tozaroq media yordamchilari; Bot API’ning barcha usullarini qo‘llab-quvvatlaydi.
- Kengaytiriladigan: maxsus fetch orqali proksi qo‘llab-quvvatlashi, sessiya middleware’i (ixtiyoriy), turga xavfsiz kontekst.
Nimani chiqardik¶
- Yagona mijoz yo‘li: fetch asosidagi implementatsiya olib tashlandi; endi grammY yagona Telegram mijozi (yuborish + gateway) bo‘lib, grammY throttler sukut bo‘yicha yoqilgan.
- Gateway:
monitorTelegramProvidergrammYBotyaratadi, mention/allowlist filtrlashni ulaydi,getFile/downloadorqali media yuklab oladi va javoblarnisendMessage/sendPhoto/sendVideo/sendAudio/sendDocumentbilan yetkazadi.webhookCallbackorqali long-poll yoki webhook’ni qo‘llab-quvvatlaydi. - Proxy: ixtiyoriy
channels.telegram.proxygrammY’ningclient.baseFetchorqaliundici.ProxyAgentdan foydalanadi. - Webhook qo‘llab-quvvatlovi:
webhook-set.tssetWebhook/deleteWebhookni o‘raydi;webhook.tscallback’ni health + graceful shutdown bilan joylashtiradi.channels.telegram.webhookUrl+channels.telegram.webhookSecreto‘rnatilganda Gateway webhook rejimini yoqadi (aks holda long-poll qiladi). - Sessiyalar: to‘g‘ridan-to‘g‘ri chatlar agentning asosiy sessiyasiga birlashtiriladi (
agent:<agentId>:<mainKey>); guruhlaragent:<agentId>:telegram:group:<chatId>dan foydalanadi; javoblar o‘sha kanalga qayta yo‘naltiriladi. - Config knobs:
channels.telegram.botToken,channels.telegram.dmPolicy,channels.telegram.groups(allowlist + mention defaults),channels.telegram.allowFrom,channels.telegram.groupAllowFrom,channels.telegram.groupPolicy,channels.telegram.mediaMaxMb,channels.telegram.linkPreview,channels.telegram.proxy,channels.telegram.webhookSecret,channels.telegram.webhookUrl. - Draft streaming: optional
channels.telegram.streamModeusessendMessageDraftin private topic chats (Bot API 9.3+). This is separate from channel block streaming. - Testlar: grammy mock’lari DM + guruh mention filtrlashi va chiqish yuborishni qamrab oladi; qo‘shimcha media/webhook fixture’lari mamnuniyat bilan qabul qilinadi.
Ochiq savollar
- Agar Bot API 429 xatolariga duch kelsak, ixtiyoriy grammY plaginlari (throttler).
- Add more structured media tests (stickers, voice notes).
- Make webhook listen port configurable (currently fixed to 8787 unless wired through the gateway).