আপনার ল্যাপটপে একটি Discord bot ঢাকনা বন্ধ করার মুহূর্তেই মরে। পরীক্ষার জন্য ঠিক — আপনার server আসলে যে bot-এর ওপর নির্ভর করে তার জন্য অকেজো। এটিকে একটি VPS-এ সরান আর এটি online থাকে: এটি আপনার wifi পড়ে যাওয়া টেকায়, আপনি ঘুমালে থামে না, ও নিজে থেকে Discord-এ পুনঃসংযুক্ত হয়।
এই যে পুরোটা — একটি ন্যূনতম bot, একটি সার্ভিস যা এটিকে জীবিত রাখে, ও কীভাবে একটি ID না-দিয়ে পরিশোধ করবেন।
একটি VPS কেন, আপনার ল্যাপটপ নয়
একটি Discord bot-এর Discord-এর gateway-তে একটি স্থিতিশীল, always-on সংযোগ দরকার। একটি ল্যাপটপ ঘুমায়, আপডেটের জন্য reboot করে, ও নেটওয়ার্ক বদলায় — প্রতিবার, bot offline হয় ও সদস্যরা টের পায়। একটি VPS দিনভর একটি স্থির সংযোগ ধরে রাখে। ব্যক্তিগত মেশিন থেকে bot সরানোর পুরো কারণ সেটাই।
কী আকার — আর কীভাবে পরিশোধ করবেন
একটি Discord bot হালকা। এটি একটি websocket ধরে রাখে ও event-এ প্রতিক্রিয়া দেয়, তাই বক্সটি বেশিরভাগ অপেক্ষা করে:
- 1 GB RAM, 1–2 core বেশিরভাগ bot কভার করে — এমনকি বেশ ব্যস্তগুলোও।
- শুধু তখনই ওপরে যান যদি bot নিজে ভারী কাজ করে: image generation, একটি local মডেল, অনেক server-এর জন্য audio, একটি বড় database।
দুটি ব্যবহারিক সিদ্ধান্ত:
- NAT যথেষ্ট। bot শুধু Discord-এ outbound সংযোগ করে, তাই port-forwarded SSH সহ একটি NAT প্ল্যান কাজ করে — কোনো dedicated IP নয়, খোলা inbound পোর্ট নয়। শুধু তখনই একটি পাবলিক IP যোগ করুন যদি আপনি একটি web dashboard-ও চালান বা webhook পান।
- No-KYC, ক্রিপ্টোতে পরিশোধিত। একটি ইমেল দিয়ে sign up করুন ও Base বা Ethereum-এ USDC বা USDT-তে পরিশোধ করুন — কোনো কার্ড, নথি নয়। একটি কার্ডও চলে, কিন্তু on-ramp-এর একটি ~$27 ন্যূনতম আছে, তাই একটি সস্তা প্ল্যানের জন্য একবার একটি ছোট balance top up করা মসৃণতর।
এটি CPU-only ও জার্মানির একটি একক datacenter থেকে চলে — একটি bot-এর জন্য পুরোপুরি ঠিক, জানা ভালো যদি আপনার একটি GPU বা একটি নির্দিষ্ট অঞ্চল লাগে।
একটি ন্যূনতম 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 বার্তা পড়লে সেখানে Message Content intent সক্রিয় করুন।
systemd দিয়ে জীবিত রাখুন
আপনার SSH সেশনে python bot.py চালানো মানে আপনি disconnect করলে bot মরে। একটি systemd সার্ভিস তা ঠিক করে — এটি ক্র্যাশে restart হয় ও reboot টেকায়:
# /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 # log দেখুন
ওটাই "একটি script যা আমি চালাই" ও "একটি bot যা নিজে চলে"-র মধ্যে পার্থক্য।
সৎ সতর্কতা
- token রক্ষা করুন। এটি সার্ভিস ফাইলে (root-only) বা একটি env var-এ রাখুন, একটি non-root
botuserহিসেবে চালান, কখনও commit করবেন না। এটি ফাঁস হলে, Developer Portal-এ সাথে সাথে এটি reset করুন। - Voice ভারী। অনেক server-এ stream করা একটি music/voice bot একটি text bot-এর চেয়ে বেশি CPU ও bandwidth চায় — scale করার আগে size করুন ও পরীক্ষা করুন।
- bot কী করে তা দেখুন, শুধু হোস্ট নয়। হোস্টিং সস্তা; আপনার bot একটি loop-এ paid API ডাকলে, খরচ সেখানে দেখা যায়।
এর মধ্যে, নিজের সার্ভারে একটি Discord bot কেবল চালু থাকে — যা পুরো উদ্দেশ্য। একটি প্ল্যান বাছুন, ক্রিপ্টোতে পরিশোধ করুন, ও মিনিটে এটি online করুন। আপনি অন্য bot-ও চালালে, একই systemd প্যাটার্ন যেকোনো process জীবিত রাখে।
তৈরি সেটআপ: Discord bot-এর জন্য VPS দেখুন — সুপারিশকৃত প্ল্যান ও এক-মিনিটের ক্রিপ্টো deploy।
মন্তব্য
এখনো কোনো মন্তব্য নেই। প্রথম হোন।