EQVPS

یو Telegram bot ۲۴/۷ په یوه VPS وچلوئ: aiogram، systemd، polling vs webhook

Jul 4, 2026 · 6 دقیقې لوستل · EQVPS Team

تاسو یو Telegram bot د aiogram سره ولیکه، په محلي توګه مو یې وازمویه، او دا کار کوي. اوس دا باید یو ځای اوسیږي چې نه ویده کیږي کله چې تاسو laptop بند کړئ. یو کوچنی VPS طبیعي کور دی — خو د python bot.py په یوه SSH سیشن او یو bot چې واقعاً د crashونو، بیا پیلونو، او ستاسو د پیوستون د پرې کیدو ژوندی پاتې کیږي ترمنځ یوه تشه ده.

دا تولیدي نسخه ده: یو virtualenv، token ستاسو له کوډ څخه بهر ساتل شوی، یو systemd خدمت چې bot پخپله بیا ژوندی کوي، او د هغې پوښتنې یو روښانه ځواب چې هرڅوک یې بالاخره کوي — polling یا webhook؟

ولې یوازې ستاسو په laptop یې ونه چلوم

یو bot Telegram ته یو ثابت بهرته پیوستون ته اړتیا لري. ستاسو laptop ویده کیږي، د تازه معلوماتو لپاره بیا پیلیږي، او د شبکو ترمنځ ټوپ کوي — هر یو یې bot پریږدي، او کاروونکي د چوپتیا په یوه دیوال ولګیږي. یو VPS هغه پیوستون د شپې او ورځې ساتي. دا ټول دلیل دی چې دا له خپل ماشین لرې کړئ، او همدا دلیل دی چې یو Discord bot هم یوه سرور ته اړه لري.

که تاسو یوازې د یوه لږترلږه bot سره ترټولو ګړندۍ «آنلاین یې کړه» لاره غواړئ، د host-a-Telegram-bot لارښود هغه پوښي. دا ټوټه یو کچه ژوره ځي: aiogram، خوندي د token اداره، او د پورته کیدو د وخت پیژندل.

bot، په یوه virtualenv کې

SSH ورننوځئ او bot په خپل venv کې جلا وساتئ — بستې د سیسټم-په-کچه مه نصبوئ، دا لوړول او پاکول وروسته ګډوډ کوي:

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 چې خپل token له چاپیریال څخه لولي، نه له یوه 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 ستاسو له کوډ څخه بهر وساتئ

هیڅکله د BotFather token په bot.py کې مه پیسټ کوئ — یو push یوه عامه repo ته او دا لیک شوی دی. دا پرځای یې په یوه root-د لوستلو وړ env فایل کې کیږدئ:

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 د سمولو لرې دی — خو په یوه شریک ماشین د بل هر شي لیک بدتر دی. د bot لپاره یو dedicated VPS په رښتیا د token لپاره د ستاسو له ورځني laptop خوندي‌تر کور دی: که لیک شي، تاسو یو token څرخوئ، نه ستاسو ټول تنظیم.

هغه برخه چې یې ژوندی ساتي: systemd

دا هغه څه دي چې یو bot چې چلیږي د یوه bot څخه چې پاتې کیږي جلا کوي. خدمت جوړ کړئ:

# /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

دا د یوه غیر-root کاروونکي (پورته botuser) په توګه وچلوئ، نه root — که bot کله هم زیانمن شي، تاسو غواړئ دا بند وي. بیا:

sudo systemctl daemon-reload
sudo systemctl enable --now tgbot

Restart=always د RestartSec=3 سره پدې معنی چې یو crash — د Telegram یو بد تازه‌والی، یو غیر-اداره شوی استثنا، یو OOM — bot په درېو ثانیو کې بیرته راولي د دې پر ځای چې مړ پریږدي تر هغه چې تاسو یې ونیسئ. ژوندی یې وګورئ:

journalctl -u tgbot -f

دا ستاسو ټول د logging تنظیم دی. د rotate کولو لپاره هیڅ log فایلونه نشته، هیڅ اضافي وسیله نشته — journald یې لا دمخه لري.

د ودرونې دراما پرته تازه کول

کله چې تاسو کوډ بدل کړئ یا aiogram لوړ کړئ:

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

بیا پیل bot د یوې یا دوو ثانیو لپاره blip کوي. د یوه polling bot لپاره دا کاروونکو ته نالیدونکی دی — Telegram تازه معلومات په قطار کوي او یې رسوي کله چې bot بیا ونښلي.

Polling vs webhook — ریښتینې نسخه

دا هغه پریکړه ده چې خلک یې ډیر فکر کوي. دلته ساده نسخه ده:

Polling (start_polling، هغه څه چې پورته کوډ یې کاروي) bot ته وايي چې Telegram وپوښتي «کوم نوی شی؟» په یوه اوږد-عمره پیوستون. دا د بهرته انټرنیټ پرته هیڅ ته اړتیا نلري — هیڅ ډومین، هیڅ TLS، هیڅ خلاص دننه‌ورتګ پورټونه. دا د NAT تر شا ښه چلیږي. د botونو د لویې اکثریت لپاره، دا سم دی او تاسو باید دلته ودریږئ.

Webhook Telegram ته وايي چې تازه معلومات تاسو ته push کړي، چې پدې معنی چې تاسو باید یو عامه HTTPS endpoint څرګند کړئ. دا یو ډومین او یو د رسیدو وړ دننه‌ورتګ پورټ ته اړتیا لري — نو یا یو dedicated عامه IP یا یو reverse proxy مخته. نور تنظیم، نور شیان چې ماتیږي. ګټه یې ټیټ latency او په لوی مقیاس لږ اضافه بار دی — زرګونه هممهاله کاروونکي، درنه د تازه معلوماتو حجم.

عملي قاعده: په یوه NAT پلان په polling پیل وکړئ. یوازې هغه وخت webhook ته واوړئ چې تاسو واقعاً polling ماتولی وي — او که تاسو یې وکړئ، هغه وخت دی چې یو dedicated IP خپل ځای ګټي، ځکه چې تاسو هغه دننه‌ورتګ HTTPS endpoint ته اړتیا لرئ.

د چلولو لګښت څه دی

یو polling bot سپک دی. دا د Telegram long-poll انتظار کوي او په پیغامونو غبرګون کوي، نو box ډیری انتظار کوي:

راجستر یوازې-بریښنالیک دی او تاسو په USDC یا USDT په Base یا Ethereum تادیه کوئ — بې کارت، بې ID. یو کارت هم کار کوي، خو on-ramp یو ~$27 حداقل لري، نو د یوه $3 پلان لپاره یو ځل یو کوچنی بیلانس ډکول او پریښودل چې تمدیدونه یې ترې واخلي اسانه دي. دا یوازې-CPU دی، په جرمني کې یو datacenter — د یوه bot لپاره یو غیر-مسله، د دې پوهیدو ارزښت لري که تاسو یو GPU یا یوې ځانګړې سیمې ته اړتیا لرئ.

ریښتینی کتاکلی

یو Telegram bot یو له ترټولو ارزانه شیانو څخه دی چې تاسو یې ځان-کوربه کولی شئ: یو $3 box، یو systemd unit، او polling تاسو ته یو bot درکوي چې د crashونو او بیا پیلونو ژوندی دی بې ستاسو ماشوم‌ساتنې. یو webhook او یوه لویه پلان ته یوازې هغه وخت لاس ورسوئ چې مقیاس واقعاً یې اړ کړي — نه ځکه چې یوه ټیوټوریل تاسو ته وویل چې webhookونه «غوره» دي. کوچنی box واخلئ، token په یوه env فایل کې وساتئ، پریږدئ systemd اپټایم اداره کړي، او — له هر څه مخکې — د نوي-VPS د امنیت checklist وچلوئ نو box پخپله قفل وي.


د خپل کوربه کولو لپاره چمتو یاست؟ یو Telegram bot په سختۍ سرچینې کاروي — د Nano پلان ($3/میاشت) یې ۲۴/۷ بې زحمته چلوي.

پوښتنې

Polling یا webhook — کوم یو باید وکاروم؟

په polling پیل وکړئ. دا له هر box د بهرته انټرنیټ سره کار کوي — هیڅ ډومین، هیڅ خلاص پورټونه، هیڅ TLS — او د ډیری botونو لپاره کافي دی. یوازې هغه وخت webhook ته واوړئ چې تاسو په مقیاس چلیږئ (زرګونه کاروونکي) یا ترټولو ټیټ ممکنه latency ته اړتیا لرئ؛ یو webhook یو عامه HTTPS endpoint ته اړتیا لري، چې یو ډومین او یو د رسیدو وړ دننه‌ورتګ پورټ (یو dedicated IP، یا یو reverse proxy) معنی لري، نو دا نور حرکت‌کوونکي برخې دي. د ۹۵٪ botونو لپاره، په یوه کوچني VPS polling سم ځواب دی.

ایا زه د یوه Telegram bot لپاره یو dedicated IP یا یو ډومین ته اړتیا لرم؟

د polling لپاره نه — bot یوازې Telegram ته بهرته کالونه کوي، نو یو NAT پلان د port-forwarded SSH سره کافي دی. تاسو یو عامه HTTPS endpoint ته اړتیا لرئ (ډومین + دننه‌ورتګ پورټ، یعنې یو dedicated IP یا reverse proxy) یوازې که تاسو webhook حالت ته واوړئ. ډیری botونه هیڅکله ورته اړتیا نلري.

یو aiogram bot کوم اندازه VPS ته اړتیا لري؟

ترټولو کوچنی. یو polling bot ډیری د Telegram long-poll انتظار کوي، نو 1 vCPU / 1 GB (یو $3 Nano) ډیری botونه په آرامۍ اداره کوي. یوازې هغه وخت پورته لاړ شئ چې bot پخپله درنه کار کوي — یو ډیټابیس، د رسنیو پروسس، یا یو محلي مودل — چې تاسو 2 GB ($5) یا نور ته ورسوي.

زه څنګه bot روان وساتم وروسته له دې چې ووځم؟

دا د یوه systemd خدمت په توګه د Restart=always سره وچلوئ. ستاسو په terminal کې پیل شوی دا مري کله چې SSH بند شي؛ د systemd لاندې دا د وتلو ژوندی پاتې کیږي، په crash بیا پیلیږي، او د یوه بیا پیل وروسته بیرته راځي. دا د یوه ډیمو او یو څه چې تاسو پرې تکیه کولی شئ ترمنځ کرښه ده.

← بلاګ ته بیرتهپلانونه او بیې وګورئ →

تبصرې

لا تبصرې نشته. لومړی اوسئ.

یوه تبصره پریږدئ

تبصرې د ښکاره کیدو مخکې اعتدال کیږي.