یک ربات Discord روی لپتاپ شما همان لحظه که در را میبندید میمیرد. برای تست خوب است — برای رباتی که سرور شما واقعاً به آن وابسته است بیفایده. آن را به یک VPS منتقل کنید و آنلاین میماند: از قطع شدن وایفای شما جان سالم به در میبرد، وقتی میخوابید متوقف نمیشود، و خودش به Discord دوباره وصل میشود.
اینجا کل ماجرا را میبینید — یک ربات کمینه، یک سرویس که آن را زنده نگه میدارد، و اینکه چطور بدون تحویل دادن یک شناسه پرداخت کنید.
چرا یک VPS، نه لپتاپ شما
یک ربات Discord به یک اتصال پایدار و همیشهروشن به گیتوی Discord نیاز دارد. یک لپتاپ میخوابد، برای بهروزرسانیها ریبوت میشود، و شبکهها را عوض میکند — هر بار، ربات آفلاین میشود و اعضا متوجه میشوند. یک VPS یک اتصال پایدار را بهطور شبانهروزی نگه میدارد. این کل دلیلی است که آدمها رباتها را از دستگاههای شخصی جابهجا میکنند.
چه اندازهای — و چطور پرداخت میکنید
یک ربات Discord سبک است. یک وبسوکت را نگه میدارد و به رویدادها واکنش نشان میدهد، پس جعبه بیشتر منتظر میماند:
- 1 گیگابایت RAM، 1 تا 2 هسته از پس بیشتر رباتها برمیآید — حتی نسبتاً شلوغها.
- فقط اگر خود ربات کار سنگین را انجام میدهد ارتقا دهید: تولید تصویر، یک مدل محلی، صدا برای سرورهای زیاد، یک دیتابیس بزرگ.
دو تصمیم عملی:
- NAT کافی است. ربات فقط اتصالهای خروجی به Discord برقرار میکند، پس یک پلن NAT با SSH پورت-فوروارد شده کار میکند — بدون IP اختصاصی، بدون پورت ورودی باز. فقط اگر یک داشبورد وب هم اجرا میکنید یا وبهوک دریافت میکنید یک IP عمومی اضافه کنید.
- بدون KYC، با پرداخت رمزارز. با یک ایمیل ثبتنام کنید و با USDC یا USDT روی Base یا Ethereum پرداخت کنید — بدون کارت، بدون مدارک. کارت هم کار میکند، اما درگاه ورودی یک حداقل حدود ۲۷ دلاری دارد، پس یک بار شارژِ یک موجودی کوچک برای یک پلن ارزان روانتر است.
فقط CPU است و از یک دیتاسنتر واحد در آلمان اجرا میشود — برای یک ربات کاملاً خوب است، دانستنش مهم است اگر به یک GPU یا یک منطقه مشخص نیاز دارید.
یک ربات کمینه
SSH بزنید، Python را نصب کنید، و یک ربات کوچک discord.py بگذارید:
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"])
توکن را از Discord Developer Portal بگیرید (اپلیکیشن شما → Bot → Reset Token)، و اگر ربات شما پیامها را میخواند، اینتنت Message Content را همانجا فعال کنید.
آن را با systemd زنده نگه دارید
اجرای python bot.py در نشست SSH شما یعنی ربات وقتی قطع میشوید میمیرد. یک سرویس systemd این را درست میکند — روی کرشها ریاستارت میشود و از ریبوتها جان سالم به در میبرد:
# /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 # watch the logs
این همان تفاوت بین «اسکریپتی که اجرا میکنم» و «رباتی که خودش را اجرا میکند» است.
هشدارهای صادقانه
- مراقب توکن باشید. آن را در فایل سرویس (فقط-root) یا یک متغیر محیطی نگه دارید، بهعنوان یک
botuserغیر root اجرا کنید، هرگز کامیتش نکنید. اگر لو برود، بلافاصله آن را در Developer Portal ریست کنید. - صدا سنگینتر است. یک ربات موسیقی/صوتی که به سرورهای زیاد استریم میکند به CPU و پهنای باند بیشتری از یک ربات متنی نیاز دارد — ارتقا دهید و پیش از مقیاسدهی تست کنید.
- مراقب کاری که ربات میکند باشید، نه فقط هاستها. هاستینگ ارزان است؛ اگر ربات شما APIهای پولی را در یک حلقه فراخوانی میکند، هزینه آنجا خودش را نشان میدهد.
در همین چارچوب، یک ربات Discord روی سرور خودش فقط بالا میماند — که کل هدف است. یک پلن انتخاب کنید، با رمزارز پرداخت کنید، و در چند دقیقه آن را آنلاین داشته باشید. اگر رباتهای دیگری هم اجرا میکنید، همان الگوی systemd هر پردازهای را زنده نگه میدارد.
راهاندازی آماده: VPS برای رباتهای Discord را ببینید — پلن پیشنهادی و یک استقرار رمزارزی یکدقیقهای.
نظرات
هنوز نظری نیست. اولین نفر باشید.