Telegram bot በaiogram ጻፉ፣ በlocal ሞከሩ፣ እና ይሠራል። አሁን laptopን ሲዘጉ የማይተኛ የሆነ ቦታ መኖር አለበት። ትንሽ VPS ተፈጥሯዊ ቤት ነው — ግን በSSH session ውስጥ python bot.py እና በcrashes፣ reboots፣ እና connectionዎ በሚወድቅበት ጊዜ በእውነት up የሚቆይ bot መካከል ክፍተት አለ።
ይህ production ስሪቱ ነው: virtualenv፣ token ከcodeዎ ውጭ የተያዘ፣ botን በራሱ የሚያስነሳ systemd service፣ እና ሁሉም በመጨረሻ ለሚጠይቀው ጥያቄ ግልጽ መልስ — polling ወይስ webhook?
በlaptopዎ ላይ ብቻ ለምን አለማሄድ
bot ወደ Telegram የተረጋጋ outbound connection ይፈልጋል። laptopዎ ይተኛል፣ ለupdates ይreboot ያደርጋል፣ እና በnetworks መካከል ይዘላል — እያንዳንዱ ያ botን ያወርዳል፣ እና users የዝምታ ግድግዳ ይመታሉ። VPS ያንን connection 24 ሰዓት ይይዛል። ከmachineዎ የማንቀሳቀስ ሙሉ ምክንያት ያ ነው፣ እና Discord bot በserver ላይ የሚገባ ተመሳሳይ ምክንያት ነው።
አነስተኛ bot ጋር ፈጣኑን ሊሆን የሚችል "online አድርገው" መንገድ ብቻ ከፈለጉ፣ host-a-Telegram-bot walkthrough ያንን ይሸፍናል። ይህ ቁራጭ አንድ ደረጃ ጠለቅ ይላል: aiogram፣ ደኅንነቱ የተጠበቀ token handling፣ እና መቼ ማሳደግ እንዳለብዎ ማወቅ።
bot፣ በvirtualenv ውስጥ
SSH ያድርጉ እና botን በራሱ venv ውስጥ isolated ያድርጉ — packages system-wide አይጫኑ፣ upgrades እና cleanup ቆይቶ ብጥብጥ ያደርጋል:
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
tokenን ከenvironment የሚያነብ አነስተኛ aiogram 3 bot፣ ከ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())
tokenን ከcodeዎ ውጭ ያቆዩ
የBotFather tokenን ፈጽሞ በbot.py ውስጥ አይለጥፉ — ወደ public repo አንድ push እና ተለቋል። በምትኩ root-readable env file ውስጥ ያስቀምጡት:
sudo tee /etc/tgbot.env >/dev/null <<'EOF'
BOT_TOKEN=123456:your-token-from-botfather
EOF
sudo chmod 600 /etc/tgbot.env
የተለቀቀ token በBotFather ውስጥ አንድ /revoke ከመስተካከል ይርቃል — ግን በተጋራ machine ላይ የተለቀቀ ሌላ ማንኛውም የከፋ ነው። ለbot dedicated VPS ከዕለታዊ laptopዎ ይልቅ ለtoken በሐቀኝነት ደኅንነቱ የተጠበቀ ቤት ነው: ከተለቀቀ፣ አንድ token ያሽከረክራሉ፣ ሙሉ setupዎን አይደለም።
ሕያው የሚያደርገው ክፍል: systemd
ይህ የሚሮጥ botን የሚቆይ ከሚሮጥ bot የሚለየው ነው። serviceን ይፍጠሩ:
# /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
እንደ non-root user ያሂዱት (ከላይ botuser)፣ root አይደለም — bot ከተበላሸ፣ boxed-in እንዲሆን ይፈልጋሉ። ከዚያ:
sudo systemctl daemon-reload
sudo systemctl enable --now tgbot
Restart=always ከRestartSec=3 ጋር ማለት crash — ከTelegram መጥፎ update፣ ያልተያዘ exception፣ OOM — botን እስከሚያስተውሉ ድረስ ከመተው ይልቅ በሦስት ሰከንድ ይመልሰዋል። Live ይመልከቱት:
journalctl -u tgbot -f
ያ ሙሉ logging setupዎ ነው። ለማሽከርከር log files የለም፣ ተጨማሪ tooling የለም — journald አስቀድሞ አለው።
ያለdowntime drama ማዘመን
codeን ሲቀይሩ ወይም aiogram ሲbump ሲያደርጉ:
cd ~/tgbot && source venv/bin/activate
pip install -U aiogram # if upgrading the library
sudo systemctl restart tgbot
journalctl -u tgbot -n 30 --no-pager # confirm it came back clean
restart botን ለሰከንድ ወይም ሁለት ያblip ያደርጋል። ለpolling bot ያ ለusers የማይታይ ነው — Telegram updates ያqueue ያደርጋል እና bot እንደገና ሲገናኝ ያደርሳቸዋል።
Polling vs webhook — ግልጹ ስሪት
ይህ ሰዎች ከመጠን በላይ የሚያስቡት ውሳኔ ነው። ግልጹ ስሪት ይኸውና:
Polling (start_polling፣ ከላይ ያለው code የሚጠቀመው) botን Telegramን "አዲስ ነገር?" በlong-lived connection ላይ ይጠይቃል። ከoutbound internet በስተቀር ምንም አይፈልግም — domain የለም፣ TLS የለም፣ ክፍት inbound ports የለም። ከNAT በስተጀርባ በጥሩ ይሮጣል። ለአብዛኞቹ bots ይህ ትክክለኛ ነው እና እዚህ ማቆም አለብዎ።
Webhook Telegramን updates ወደ እርስዎ ያpush ያደርጋል፣ ይህም public HTTPS endpoint ማጋለጥ አለብዎ ማለት ነው። ያ domain እና ተደራሽ inbound port ይፈልጋል — ስለዚህ dedicated public IP ወይም ከፊት reverse proxy። ተጨማሪ setup፣ የሚሰበሩ ተጨማሪ ነገሮች። ጥቅሙ ዝቅተኛ latency እና በትልቅ skale ላይ ያነሰ overhead ነው — ሺዎች concurrent users፣ ከባድ update volume።
ተግባራዊ ደንቡ: በNAT plan ላይ በpolling ይጀምሩ። pollingን በእውነት ሲያልፉ ብቻ ወደ webhook ይንቀሳቀሱ — እና ካደረጉ፣ dedicated IP ቦታውን የሚያገኘው ያኔ ነው፣ ምክንያቱም ያንን inbound HTTPS endpoint ስለሚፈልጉ።
ለማሄድ ምን እንደሚያስከፍል
polling bot ቀላል ነው። በTelegram long-poll ላይ ይidle ያደርጋል እና ለmessages ይምላሽ ይሰጣል፣ ስለዚህ box በአብዛኛው ይጠብቃል:
- $3 Nano (1 vCPU / 1 GB) — ለአብዛኞቹ bots ጥሩ፣ በጣም ወሬኛ የሆኑም እንኳን።
- $5 Micro (2 vCPU / 2 GB) — bot database ሲይዝ (SQLite/Postgres)፣ media ሲያስተናግድ፣ ወይም ብዙ users ሲያገለግል።
- ከፍ ያለ bot ራሱ እውነተኛ ስራ ሲሠራ ብቻ — image processing፣ local model፣ ከባድ per-message logic።
Signup email-only ነው እና በUSDC ወይም USDT በBase ወይም Ethereum ይክፈላሉ — ካርድ የለም፣ ID የለም። ካርድ እንዲሁ ይሠራል፣ ግን on-ramp ~$27 ዝቅተኛ አለው፣ ስለዚህ ለ$3 plan ትንሽ balance አንድ ጊዜ መሙላት እና renewals ከእሱ እንዲሳቡ ማድረግ የተቀላጠፈ ነው። CPU-only ነው፣ በጀርመን አንድ datacenter — ለbot የማይሆን ጉዳይ፣ GPU ወይም የተወሰነ region ከፈለጉ ማወቅ ጠቃሚ።
ግልጹ ማጠቃለያ
Telegram bot self-host ማድረግ ከሚችሉት ርካሽ ነገሮች አንዱ ነው: $3 box፣ systemd unit፣ እና polling ሳይንከባከቡት በcrashes እና reboots online የሆነ bot ይሰጥዎታል። skale በእውነት ሲያስገድድ ብቻ ወደ webhook እና ትልቅ plan ይድረሱ — tutorial webhooks "የተሻሉ" ናቸው ስላለዎ አይደለም። ትንሹን box ያግኙ፣ tokenን በenv file ውስጥ ያቆዩ፣ systemd uptimeን እንዲያስተናግድ ይፍቀዱ፣ እና — ከሁሉም በፊት — box ራሱ እንዲቆለፍ new-VPS security checklist ያሂዱ።
የእርስዎን ለማስተናገድ ዝግጁ ነዎት? Telegram bot ብዙም resources አይጠቀምም — Nano plan ($3/ወር) ያለችግር 24/7 ያሄደዋል።
አስተያየቶች
እስካሁን አስተያየቶች የሉም። መጀመሪያ ይሁኑ።