📦
Hosting

Telegram Bot API local server: katta fayllar bilan ishlash uchun o'z serveringiz

11.11.2026
← Barcha maqolalar

Telegram botlarining ko'pchiligi api.telegram.org manziliga so'rov yuborib ishlaydi va bu ko'p hollarda yetarli. Lekin bot fayllar bilan ishlay boshlaganda cheklovlar seziladi: rasmiy hujjatlarga ko'ra standart Bot API orqali bot 20 MB gacha bo'lgan fayllarnigina yuklab oladi va 50 MB gacha bo'lgan fayllarnigina yubora oladi. Video, arxiv yoki katta PDF bilan ishlaydigan bot uchun bu jiddiy to'siq. Telegram bu muammo uchun ochiq kodli yechim taklif qiladi: Bot API serverini o'z serveringizda ishga tushirish.

Local server nima beradi

Telegram Bot API serverining manba kodi tdlib/telegram-bot-api omborida ochiq e'lon qilingan. U --local rejimida ishga tushirilganda bot bir qator kengaytirilgan imkoniyatlarga ega bo'ladi. Hujjatlarda keltirilgan asosiy farqlar quyidagicha:

Muhim jihat shundaki, bot baribir Telegram tarmog'i bilan bog'langan holda ishlaydi. Local server faqat bot bilan Telegram o'rtasidagi vositachini sizning serveringizga ko'chiradi, xabarlar va fayllar esa avvalgidek Telegram orqali foydalanuvchilarga yetib boradi.

Real misol: video studiya boti

Farg'onadagi kichik video studiya mijozlardan to'y va tadbir videolarini bot orqali qabul qilmoqchi deylik. Mijozlar telefondan 300-800 MB hajmdagi fayllarni yuboradi, bot ularni qabul qilib, montaj jamoasining saqlash diskiga joylashi kerak. Standart Bot API bilan bot bunday faylni yuklab ola olmaydi va getFile chaqiruvi xato qaytaradi. Local server o'rnatilgach, fayl to'g'ridan-to'g'ri serverning diskiga tushadi va bot uni oddiy fayl sifatida ko'chirib qo'yadi. Bunday yechim uchun VPS kerak bo'ladi, chunki oddiy shared hostingda o'z dasturingizni kompilyatsiya qilib, doimiy xizmat sifatida ishlatib bo'lmaydi.

api_id va api_hash olish

Local server Telegram'ga o'z nomidan ulanadi, shuning uchun unga ilova identifikatorlari kerak. Ularni my.telegram.org saytida Telegram akkauntingiz bilan kirib, "API development tools" bo'limida olasiz. Natijada ikki qiymat beriladi: raqamli api_id va satr ko'rinishidagi api_hash. Bu qiymatlar bot tokeni kabi maxfiy hisoblanadi, ularni ochiq repozitoriyga qo'ymang va faqat serverdagi konfiguratsiyada saqlang.

Serverda kompilyatsiya qilish

Rasmiy ombordagi ko'rsatmalar turli tizimlar uchun buyruqlarni beradi. Ubuntu yoki Debian uchun jarayon taxminan quyidagicha bo'ladi. Kompilyatsiya ko'p operativ xotira talab qilishi va bir necha o'n daqiqa davom etishi mumkin, kichik VPS'larda vaqtinchalik swap qo'shish yoki rasmiy hujjatlardagi kam xotira uchun tavsiyalardan foydalanish foydali.

sudo apt-get update
sudo apt-get install -y make git zlib1g-dev libssl-dev gperf cmake g++
git clone --recursive https://github.com/tdlib/telegram-bot-api.git
cd telegram-bot-api
rm -rf build && mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr/local ..
cmake --build . --target install
telegram-bot-api --help

Hamjamiyat tomonidan tayyorlangan Docker obrazlari ham mavjud, ular kompilyatsiya vaqtini tejaydi. Lekin ular rasmiy emas, shuning uchun ishlatishdan oldin manbasini va yangilanib turishini tekshiring.

systemd xizmati sifatida ishga tushirish

Server doimiy ishlashi va qayta yuklanishdan keyin o'zi ko'tarilishi kerak. Buning uchun alohida foydalanuvchi, fayllar uchun katalog va systemd xizmati yaratamiz. --http-port server tinglaydigan portni, --dir esa fayllar va ish ma'lumotlari saqlanadigan katalogni belgilaydi.

sudo useradd -r -s /usr/sbin/nologin tgapi
sudo mkdir -p /var/lib/telegram-bot-api
sudo chown tgapi:tgapi /var/lib/telegram-bot-api

# /etc/systemd/system/telegram-bot-api.service
[Unit]
Description=Telegram Bot API local server
After=network.target

[Service]
User=tgapi
EnvironmentFile=/etc/telegram-bot-api.env
ExecStart=/usr/local/bin/telegram-bot-api --local --http-port=8081 \
  --http-ip-address=127.0.0.1 --dir=/var/lib/telegram-bot-api
Restart=always

[Install]
WantedBy=multi-user.target

/etc/telegram-bot-api.env fayliga TELEGRAM_API_ID=... va TELEGRAM_API_HASH=... qatorlarini yozing; server bu muhit o'zgaruvchilarini o'qiy oladi. So'ng sudo systemctl enable --now telegram-bot-api bilan ishga tushiring. 8081-port tashqariga ochilmasligi kerak, aks holda token bilgan har kim serveringiz orqali so'rov yubora oladi.

Botni local serverga o'tkazish

Bot avval rasmiy serverda ishlagan bo'lsa, uni local serverga o'tkazishdan oldin api.telegram.org manzilida logOut metodini chaqirish kerak. Hujjatlarga ko'ra shundan keyin botni bir muddat, taxminan 10 daqiqa, rasmiy serverga qayta ulab bo'lmaydi, shuning uchun o'tishni rejalashtirib qiling.

curl "https://api.telegram.org/bot<TOKEN>/logOut"

Keyin bot kodida API manzilini almashtirish kifoya. Masalan, aiogram 3 da bu quyidagicha bajariladi:

from aiogram import Bot
from aiogram.client.session.aiohttp import AiohttpSession
from aiogram.client.telegram import TelegramAPIServer

session = AiohttpSession(
    api=TelegramAPIServer.from_base("http://127.0.0.1:8081", is_local=True)
)
bot = Bot(token=TOKEN, session=session)

Disk va xavfsizlik haqida unutmang

Local rejimda yuklab olingan fayllar --dir katalogida qoladi va o'z-o'zidan o'chirilmaydi. Video studiya misolida bir necha hafta ichida disk to'lib qolishi mumkin, shuning uchun qayta ishlangan fayllarni boshqa joyga ko'chirib, eski fayllarni muntazam tozalaydigan skript yozing. Bot jarayoni bu fayllarni o'qiy olishi uchun ikkala xizmat bitta guruhga kiritilishi yoki katalog huquqlari to'g'ri sozlanishi kerak. Server versiyasini ham vaqti-vaqti bilan yangilab turing, chunki Telegram Bot API'ga yangi metodlar qo'shilganda ular local serverga ham yangi versiya orqali keladi.

O'xshash maqolalar

⏱️ max_execution_time: uzoq ishlaydigan PHP skriptlar bilan to'g'ri ishlash 🥟 Bun runtime: Node.js o'rniga ishlatish mumkinmi va serverda qanday ishga tushiriladi 💻 VS Code Remote SSH: serverda to'g'ridan-to'g'ri kod yozish va tahrirlash 🚦 "Too many connections" xatosi: sabab va yechim
🌐 Til
🇺🇿 O'zbek ✓ 🇺🇿 Ўзбек 🇷🇺 Русский 🇬🇧 English