Uliandika Telegram bot na aiogram, ukaitest locally, nayo inafanya kazi. Sasa lazima iishi mahali pasipolala unapofunga laptop. VPS ndogo ni gharama ya asili — lakini kuna pengo kati ya python bot.py katika kikao cha SSH na bot inayobaki juu dhati kupitia crashes, reboots, na muunganisho wako kudondoka.
Hii ni version ya production: virtualenv, token iliyowekwa nje ya code yako, huduma ya systemd inayoifufua bot yenyewe, na jibu la macho-wazi kwa swali kila mtu hatimaye huuliza — polling au webhook?
Kwa nini usiiendeshe tu kwenye laptop yako
Bot inahitaji muunganisho thabiti unaotoka kwa Telegram. Laptop yako hulala, huwaka upya kwa updates, na huruka kati ya networks — kila mmoja wa hizo hudondosha bot, na watumiaji hugonga ukuta wa ukimya. VPS hushikilia muunganisho huo mchana kutwa. Hiyo ndiyo sababu yote ya kuihamisha kutoka mashine yako, nayo ni sababu ileile Discord bot iko kwenye seva pia.
Kama unataka tu njia ya haraka zaidi ya "iweke mtandaoni" na bot ndogo, host-a-Telegram-bot walkthrough inaifunika. Kipande hiki huenda ngazi moja zaidi: aiogram, token handling salama, na kujua lini kuscale.
Bot, katika virtualenv
SSH ndani na uweke bot ikiwa isolated katika venv yake — usisakinishe packages system-wide, hufanya upgrades na cleanup kuwa gharabu baadaye:
sudo apt update && sudo apt install -y python3-venv
mkdir ~/tgbot && cd ~/tgbot
python3 -m venv venv && source venv/bin/activate
pip install -U aiogram
aiogram 3 bot ndogo inayosoma token yake kutoka environment, si kutoka hard-coded string:
# bot.py
import asyncio, logging, os
from aiogram import Bot, Dispatcher
from aiogram.types import Message
from aiogram.filters import CommandStart
logging.basicConfig(level=logging.INFO)
dp = Dispatcher()
@dp.message(CommandStart())
async def start(m: Message):
await m.answer("Alive and running on a VPS.")
async def main():
bot = Bot(os.environ["BOT_TOKEN"])
await dp.start_polling(bot)
if __name__ == "__main__":
asyncio.run(main())
Weka token nje ya code yako
Kamwe usipaste BotFather token katika bot.py — push moja kwa public repo nayo imevuja. Iweke katika root-readable env file badala yake:
sudo tee /etc/tgbot.env >/dev/null <<'EOF'
BOT_TOKEN=123456:your-token-from-botfather
EOF
sudo chmod 600 /etc/tgbot.env
Token iliyovuja iko /revoke moja katika BotFather kutoka kurekebishwa — lakini kitu kingine chochote kilichovuja kwenye shared machine ni mbaya zaidi. VPS ya kujitolea kwa bot ni kwa uaminifu gharama salama zaidi kwa token kuliko laptop yako ya kila siku: ikivuja, unagharibisha token moja, si usanidi wako wote.
Sehemu inayoiweka hai: systemd
Hii ndiyo inayotenganisha bot inayoendesha na bot inayobaki ikiendesha. Unda huduma:
# /etc/systemd/system/tgbot.service
[Unit]
Description=Telegram bot (aiogram)
After=network-online.target
Wants=network-online.target
[Service]
User=botuser
WorkingDirectory=/home/botuser/tgbot
EnvironmentFile=/etc/tgbot.env
ExecStart=/home/botuser/tgbot/venv/bin/python bot.py
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
Iendeshe kama non-root user (botuser hapo juu), si root — kama bot itasambaratika, unaitaka imefungwa. Kisha:
sudo systemctl daemon-reload
sudo systemctl enable --now tgbot
Restart=always na RestartSec=3 maana yake crash — update mbaya kutoka Telegram, unhandled exception, OOM — huleta bot tena kwa sekunde tatu badala ya kuiacha imekufa hadi ugundue. Iangalie live:
journalctl -u tgbot -f
Huo ndio logging setup wako wote. Hakuna log files za kugeuza, hakuna tooling ya ziada — journald tayari inayo.
Kuupdate bila drama ya downtime
Unapobadilisha code au kubump aiogram:
cd ~/tgbot && source venv/bin/activate
pip install -U aiogram # kama unaupgrade library
sudo systemctl restart tgbot
journalctl -u tgbot -n 30 --no-pager # thibitisha ilirudi safi
Restart inapepesa bot kwa sekunde moja au mbili. Kwa polling bot hiyo haionekani kwa watumiaji — Telegram huqueue updates na kuzipeleka mara bot inaporeconnect.
Polling dhidi ya webhook — version ya uaminifu
Huu ni uamuzi watu huufikiri kupita kiasi. Hii ndio version sahihi:
Polling (start_polling, ambayo code hapo juu inatumia) huifanya bot kuuliza Telegram "kuna kipya?" kwenye muunganisho wa muda mrefu. Haihitaji chochote isipokuwa outbound internet — hakuna domain, hakuna TLS, hakuna ports zilizo wazi zinazoingia. Inaendesha vizuri nyuma ya NAT. Kwa wingi mkubwa wa bots, hii ni sahihi nawe unapaswa kusimama hapa.
Webhook huifanya Telegram kusukuma updates kwako, ambayo maana yake lazima ufunue public HTTPS endpoint. Hiyo inahitaji domain na port inayofikika inayoingia — hivyo ama dedicated public IP au reverse proxy mbele. Sanidi zaidi, vitu zaidi vinavyovunjika. Faida ni latency ya chini na overhead ndogo kwa kiwango kikubwa — maelfu ya watumiaji wa wakati mmoja, wingi mzito wa updates.
Kanuni ya vitendo: anza na polling kwenye mpango wa NAT. Hamia webhook tu unapokuwa dhati umezidi polling — na kama unafanya, hapo ndipo dedicated IP inakama nafasi yake, kwa sababu unahitaji inbound HTTPS endpoint hiyo.
Inagharimu nini kuendesha
Polling bot ni nyepesi. Inakaa idle kwenye long-poll ya Telegram na kuitikia messages, hivyo sanduku kwa kiasi kikubwa husubiri:
- $3 Nano (1 vCPU / 1 GB) — sawa kwa bots wengi, hata wenye maneno mengi kiasi.
- $5 Micro (2 vCPU / 2 GB) — wakati bot inashikilia hifadhidata (SQLite/Postgres), inashughulikia media, au inasrv watumiaji wengi.
- Juu zaidi tu kama bot yenyewe hufanya kazi halisi — image processing, modeli ya ndani, per-message logic nzito.
Signup ni barua-pepe-pekee nawe unalipa kwa USDC au USDT kwenye Base au Ethereum — hakuna kadi, hakuna ID. Kadi inafanya kazi pia, lakini on-ramp ina kiwango cha chini cha ~$27, hivyo kwa mpango wa $3 ni laini zaidi kuongeza salio dogo mara moja na kuacha renewals zichote kutoka kwake. Ni CPU-pekee, datacenter moja Ujerumani — non-issue kwa bot, inastahili kujua kama ulihitaji GPU au eneo mahususi.
Mstari wa chini wa uaminifu
Telegram bot ni mojawapo ya vitu nafuu zaidi unavyoweza kujihifadhi: sanduku la $3, systemd unit, na polling hukupa bot iliyo mtandaoni kupitia crashes na reboots bila wewe kuilea. Fikia webhook na mpango mkubwa zaidi tu wakati kiwango kinapolazimisha dhati — si kwa sababu tutorial ilikuambia webhooks ni "bora." Pata sanduku ndogo, weka token katika env file, acha systemd ishughulikie uptime, na — kabla ya chochote kingine — endesha new-VPS security checklist ili sanduku lenyewe liwe limefungwa.
Uko tayari kuhifadhi yako? Telegram bot hutumia rasilimali kwa shida — mpango wa Nano ($3/mwezi) huiendesha 24/7 bila usumbufu.
Maoni
Bado hakuna maoni. Kuwa wa kwanza.