ربات Discord به gateway دیسکورد وصل میشود و متصل میماند، پس به ماشینی نیاز دارد که همیشه روشن باشد. یک VPS کوچک ارزان است، آنلاین میماند و به اینترنت خانهتان وابسته نیست. این راهنما یک ربات Node.js را با discord.js مستقر میکند و با systemd زنده نگه میدارد.
VPS با چه اندازهای؟
1 vCPU و 1 تا 2 GB RAM برای بیشتر رباتها کافی است. رباتهای بزرگتر که سرورهای زیادی را کش میکنند یا صدا پردازش میکنند بیشتر نیاز دارند. برای طرحها هاستینگ ربات Discord را ببینید.
مرحله 1: ربات را در Discord بسازید
- Discord Developer Portal را باز کنید و یک application جدید بسازید.
- یک Bot اضافه کنید، توکنش را کپی کنید و محرمانه نگه دارید.
- در OAuth2، یک لینک دعوت با scopeهای
botوapplications.commandsبسازید و ربات را به سرور خود اضافه کنید.
مرحله 2: Node.js را نصب کنید
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs
node -v
sudo adduser --disabled-password --gecos "" discord
مرحله 3: ربات را بنویسید
sudo -iu discord
mkdir ~/bot && cd ~/bot
npm init -y
npm install discord.js
// index.js
const { Client, GatewayIntentBits } = require('discord.js');
const client = new Client({ intents: [GatewayIntentBits.Guilds] });
client.once('ready', () => console.log('Logged in as ' + client.user.tag));
client.on('interactionCreate', async (i) => {
if (i.isChatInputCommand() && i.commandName === 'ping') await i.reply('Pong!');
});
client.login(process.env.DISCORD_TOKEN);
دستور اسلش /ping را یک بار با روش موجود در راهنمای discord.js ثبت کنید.
مرحله 4: توکن را از کد دور نگه دارید
echo "DISCORD_TOKEN=your-token-here" > ~/bot/.env
chmod 600 ~/bot/.env
مرحله 5: آن را با systemd اجرا کنید
[Unit]
Description=Discord bot
After=network-online.target
[Service]
User=discord
WorkingDirectory=/home/discord/bot
EnvironmentFile=/home/discord/bot/.env
ExecStart=/usr/bin/node index.js
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now discordbot
journalctl -u discordbot -f
فایل را /etc/systemd/system/discordbot.service نامگذاری کنید.
عادتهای خوب
- فقط intentهای موردنیاز را استفاده کنید. intentهای privileged باید در پورتال روشن شوند.
- اگر توکن لو رفت، فوراً آن را در پورتال بازنشانی کنید.
- راهاندازی مجدد هنگام خرابی در بالا تنظیم شده است. اگر ربات برای یک جامعه مهم است، نظارت اضافه کنید.