آپ کے لیپ ٹاپ پر ایک Discord bot اُس لمحے مر جاتا ہے جب آپ ڈھکن بند کریں۔ testing کے لیے ٹھیک — ایک ایسے bot کے لیے بیکار جس پر آپ کا server دراصل انحصار کرتا ہے۔ اسے ایک VPS پر منتقل کریں اور یہ آن لائن رہتا ہے: یہ آپ کے wifi چھوڑنے سے بچتا ہے، آپ کے سونے پر رکتا نہیں، اور خود Discord سے دوبارہ کنیکٹ ہوتا ہے۔
یہ رہی پوری چیز — ایک minimal bot، ایک سروس جو اسے زندہ رکھتی ہے، اور ایک ID دیے بغیر کیسے ادا کریں۔
ایک VPS کیوں، آپ کا لیپ ٹاپ نہیں
ایک Discord bot کو Discord کے gateway سے ایک مستحکم، ہمیشہ-آن کنکشن چاہیے۔ ایک لیپ ٹاپ سوتا، updates کو ری بوٹ ہوتا، اور networks بدلتا ہے — ہر بار، bot آف لائن ہو جاتا اور members نوٹ کرتے ہیں۔ ایک VPS دن رات ایک مستحکم کنکشن رکھتا ہے۔ یہی پوری وجہ ہے لوگ bots کو ذاتی مشینوں سے ہٹاتے ہیں۔
کون سا size — اور آپ کیسے ادا کرتے ہیں
ایک Discord bot ہلکا ہے۔ یہ ایک websocket رکھتا اور events پر ردعمل دیتا ہے، تو باکس زیادہ تر انتظار کرتا ہے:
- 1 GB RAM، 1–2 cores زیادہ تر bots کور کرتے — کافی مصروف بھی۔
- اوپر صرف تب scale کریں جب bot خود بھاری کام کرے: image generation، ایک local ماڈل، بہت سے servers کے لیے audio، ایک بڑا database۔
دو عملی فیصلے:
- NAT کافی ہے۔ bot صرف Discord کو outbound کنکشنز بناتا ہے، تو port-forwarded SSH والا ایک NAT پلان چلتا ہے — کوئی dedicated IP، کوئی کھلے inbound ports نہیں۔ ایک public IP صرف تب جوڑیں جب آپ ایک web dashboard بھی چلائیں یا webhooks وصول کریں۔
- No-KYC، کرپٹو میں ادا۔ ایک ای میل سے sign up کریں اور Base یا Ethereum پر USDC یا USDT میں ادا کریں — کوئی کارڈ، کوئی دستاویزات نہیں۔ ایک کارڈ بھی چلتا ہے، لیکن on-ramp کی ~$27 کم-از-کم حد ہے، تو ایک بار ایک چھوٹا بیلنس top up کرنا ایک سستے پلان کے لیے ہموار تر ہے۔
یہ CPU-only ہے اور جرمنی میں ایک واحد datacenter سے چلتا ہے — ایک bot کے لیے بالکل ٹھیک، جاننا فائدہ مند اگر آپ کو ایک GPU یا ایک مخصوص علاقہ چاہیے۔
ایک minimal bot
SSH کریں، Python انسٹال کریں، اور ایک چھوٹا discord.py bot ڈالیں:
sudo apt update && sudo apt install -y python3-venv
mkdir ~/bot && cd ~/bot
python3 -m venv venv && source venv/bin/activate
pip install -U discord.py
# bot.py
import os, discord
intents = discord.Intents.default()
intents.message_content = True
client = discord.Client(intents=intents)
@client.event
async def on_ready():
print(f"online as {client.user}")
@client.event
async def on_message(m):
if m.author == client.user:
return
if m.content == "!ping":
await m.channel.send("pong")
client.run(os.environ["DISCORD_TOKEN"])
token کو Discord Developer Portal سے لیں (آپ کی application → Bot → Reset Token)، اور اگر آپ کا bot messages پڑھتا ہے تو وہاں Message Content intent فعال کریں۔
اسے systemd سے زندہ رکھیں
اپنے SSH سیشن میں python bot.py چلانے کا مطلب ہے bot آپ کے disconnect کرنے پر مر جاتا ہے۔ ایک systemd سروس اسے ٹھیک کرتی ہے — یہ کریشز پر restart ہوتا اور reboots سے بچتا ہے:
# /etc/systemd/system/discordbot.service
[Unit]
Description=Discord bot
After=network-online.target
[Service]
User=botuser
WorkingDirectory=/home/botuser/bot
Environment=DISCORD_TOKEN=your-token-here
ExecStart=/home/botuser/bot/venv/bin/python bot.py
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now discordbot
sudo journalctl -u discordbot -f # logs دیکھیں
یہی "ایک script جو میں چلاتا ہوں" اور "ایک bot جو خود چلتا ہے" کے بیچ فرق ہے۔
ایماندار احتیاطیں
- token کی حفاظت کریں۔ اسے سروس فائل (root-only) یا ایک env var میں رکھیں، ایک non-root
botuserکے طور پر چلائیں، کبھی commit نہ کریں۔ اگر یہ لیک ہو، تو اسے فوراً Developer Portal میں reset کریں۔ - Voice بھاری تر ہے۔ بہت سے servers کو streaming کرتا ایک music/voice bot ایک text bot سے زیادہ CPU اور bandwidth چاہتا ہے — scale کرنے سے پہلے size اور test کریں۔
- bot کیا کرتا ہے دیکھیں، صرف hosts نہیں۔ hosting سستی ہے؛ اگر آپ کا bot ایک loop میں paid APIs کال کرے، وہیں لاگت ظاہر ہوتی ہے۔
اُس کے اندر، اپنے سرور پر ایک Discord bot بس چلتا رہتا ہے — جو پورا مقصد ہے۔ ایک پلان چنیں، کرپٹو میں ادا کریں، اور اسے منٹوں میں آن لائن رکھیں۔ اگر آپ دیگر bots بھی چلاتے ہیں، تو وہی systemd پیٹرن کسی بھی process کو زندہ رکھتا ہے۔
تیار-شدہ سیٹ اپ: Discord bots کے لیے VPS دیکھیں — تجویز کردہ پلان اور ایک ایک-منٹ کرپٹو deploy۔
تبصرے
ابھی کوئی تبصرہ نہیں۔ پہلے بنیں۔