Discord бот на лаптопа ти умира в мига, в който затвориш капака. Наред за тестване — безполезно за бот, от който сървърът ти реално зависи. Премести го на VPS и той остава онлайн: преживява падането на wifi-то ти, не спира, когато спиш, и се пресвързва към Discord сам.
Ето цялото нещо — минимален бот, услуга, която го държи жив, и как да платиш, без да предаваш документ.
Защо VPS, а не лаптопа ти
Discord бот се нуждае от стабилна, винаги включена връзка към gateway-а на Discord. Лаптоп заспива, рестартира за ъпдейти и сменя мрежи — всеки път ботът пада офлайн и членовете забелязват. VPS държи една стабилна връзка денонощно. Това е цялата причина хората да местят ботове от лични машини.
Какъв размер — и как плащаш
Discord бот е лек. Държи websocket и реагира на събития, така че машината основно чака:
- 1 GB RAM, 1–2 ядра покрива повечето ботове — дори доста натоварени.
- Мащабирай нагоре само ако ботът върши тежката работа сам: генериране на изображения, локален модел, аудио за много сървъри, голяма база данни.
Две практични решения:
- NAT е достатъчен. Ботът прави само изходящи връзки към Discord, така че NAT план с port-forwarded SSH работи — без dedicated IP, без отворени входящи портове. Добави публичен IP само ако пускаш и уеб табло или получаваш webhook-ове.
- No-KYC, платено с crypto. Регистрирай се с имейл и плати в USDC или USDT на Base или Ethereum — без карта, без документи. Карта също работи, но on-ramp-ът има минимум ~$27, така че еднократното зареждане на малък баланс е по-гладко за евтин план.
Само 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) и включи там intent-а 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 # гледай логовете
Това е разликата между „скрипт, който пускам“ и „бот, който се пуска сам“.
Честни забележки
- Пази токена. Дръж го в service файла (само за root) или env променлива, пускай като non-root
botuser, никога не го commit-вай. Ако изтече, нулирай го в Developer Portal веднага. - Гласът е по-тежък. Музикален/гласов бот, стрийминг към много сървъри, се нуждае от повече CPU и банда от текстов бот — покачи размера и тествай, преди да мащабираш.
- Гледай какво прави ботът, не само хостването. Хостингът е евтин; ако ботът ти извиква платени API-та в цикъл, там се появява разходът.
Вътре в това Discord бот на собствен сървър просто стои онлайн — което е целият смисъл. Избери план, плати в crypto и го имай онлайн за минути. Ако пускаш и други ботове, същият systemd модел държи всеки процес жив.
Готова настройка: виж VPS за Discord ботове — препоръчаният план и едноминутно crypto разгръщане.
Коментари
Още няма коментари. Бъди първият.