Skip to content
VDS · অ্যাপ ও বট

Discord বট: চালু ও মনিটরিং

VPS-এ systemd-এর অধীনে Discord বট চালানো, মেমরি সীমিত করা, লগ পড়া, rate limit সামলানো এবং ডাউনটাইম ছাড়াই আপডেট করা।

আপডেট: ২৩ আগস্ট, ২০২৬

একটি Discord বট Discord গেটওয়ের সাথে একটি স্থায়ী WebSocket সংযোগ ধরে রাখে, তাই এটির জন্য এমন একটি মেশিন প্রয়োজন যা সবসময় চালু থাকে। এর রিসোর্সের চাহিদা মাঝারি, তবে Telegram বটের বিপরীতে এটি রিস্টার্ট আরও খারাপভাবে সামলায়: প্রতিটি রিস্টার্ট গেটওয়ের সাথে একটি নতুন সংযোগ তৈরি করতে বাধ্য করে।

ইনস্টলেশন

useradd -r -m -d /srv/dbot -s /usr/sbin/nologin dbot
cd /srv/dbot && sudo -u dbot git clone https://github.com/you/bot.git .
sudo -u dbot npm ci --omit=dev
install -o dbot -g dbot -m 600 /dev/null /srv/dbot/.env

টোকেন এবং ID গুলো .env-এ রাখুন। Discord Developer Portal থেকে পাওয়া একটি টোকেন হলো বটের সম্পূর্ণ অ্যাক্সেস — এটিকে একটি পাসওয়ার্ডের মতোই গোপন রাখুন।

Python লাইব্রেরির জন্য পদ্ধতিটি একই, একটি ভার্চুয়াল এনভায়রনমেন্টসহ; দেখুন Python অ্যাপ।

সার্ভিস

/etc/systemd/system/dbot.service:

[Unit]
Description=Discord bot
After=network-online.target
Wants=network-online.target

[Service]
User=dbot
WorkingDirectory=/srv/dbot
EnvironmentFile=/srv/dbot/.env
ExecStart=/usr/bin/node index.js
Restart=always
RestartSec=15
MemoryMax=512M
NoNewPrivileges=true

[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable --now dbot

স্ট্যান্ডার্ড পাঁচ সেকেন্ডের বদলে RestartSec=15: যখন গেটওয়ের সাথে সংযোগ বিচ্ছিন্ন হয়, ঘন ঘন রিস্টার্ট Discord-এর দিক থেকে সংযোগের উপর একটি সাময়িক ব্লক তৈরি করে।

MemoryMax মেমরি লিক থাকা একটি বটকে পুরো মেশিনটিকে নিজের সাথে টেনে নামিয়ে ফেলা থেকে বিরত রাখে — বিশেষত VDS-1-এ 2 GB-তে এটি গুরুত্বপূর্ণ।

মনিটরিং

systemctl status dbot
journalctl -u dbot -f
journalctl -u dbot --since today -p err
systemctl show dbot -p NRestarts

NRestarts হলো সবচেয়ে কার্যকর মেট্রিক: যদি কাউন্টারটি প্রতি ঘণ্টায় বাড়তে থাকে, তাহলে বট ক্র্যাশ করছে এবং Restart=always সেটি ঢেকে রাখছে।

একটি নির্দিষ্ট সার্ভিসের মেমরি ব্যবহার:

systemctl status dbot | grep Memory

মেশিনের সার্বিক চিত্রের জন্য, /hosting/vds/m/<id>-এ প্যানেলের “Overview”-তে CPU, মেমরি এবং ট্রাফিকের গ্রাফ দেখুন।

রেট লিমিটিং

Discord API কলের উপর রেট লিমিট আরোপ করে। এর লক্ষণ হলো লগে 429 এরর এবং কমান্ডগুলো “আটকে” যাওয়া। যা সাহায্য করে:

  • বিরতি ছাড়া লুপে মেসেজ পাঠাবেন না;
  • নতুন মেসেজ পাঠানোর বদলে একটি মেসেজই এডিট করুন;
  • প্রতিটি ইভেন্টে রেফারেন্স ডেটা রিকোয়েস্ট করার বদলে তা ক্যাশে করুন;
  • বাল্ক ব্রডকাস্টের জন্য একটি Redis কিউ ব্যবহার করুন।

আপডেট করা

cd /srv/dbot
sudo -u dbot git pull
sudo -u dbot npm ci --omit=dev
systemctl restart dbot
journalctl -u dbot -n 50

শেষ লাইনটি বাধ্যতামূলক: নিশ্চিত করুন যে বট একটি নতুন ডিপেন্ডেন্সিতে ক্র্যাশ করার বদলে গেটওয়ের সাথে সংযুক্ত হয়েছে।

সাধারণ এরর

লক্ষণকারণ
বট অনলাইনে আছে কিন্তু কমান্ডে সাড়া দেয় নাDeveloper Portal-এ প্রয়োজনীয় ইনটেন্টগুলো সক্রিয় করা নেই
অবিরাম রিকানেক্টRestartSec খুব ছোট, অথবা একটি ইভেন্ট হ্যান্ডলারে ক্র্যাশ
Invalid tokenটোকেনটি পুনরায় জেনারেট করা হয়েছে এবং .env আপডেট করা হয়নি
কমান্ডগুলো ডুপ্লিকেট হচ্ছেবটের দুটি কপি চলছে — ps aux | grep node চেক করুন
মেশিনটি সোয়াপ করা শুরু করেছেMemoryMax নেই, কোডে একটি লিক আছে

screen বা tmux-এর অধীনে বট চালাবেন না। সেশনটি একটি SSH ডিসকানেক্ট টিকে থাকলেও একটি মেশিন রিবুট টিকে থাকে না — আর এক মাস পরে আপনি ভুলেই যাবেন এটি আসলে কোথায় চলছে।