যে Telegram bot শুধু আপনার ল্যাপটপ খোলা থাকাকালীন চলে সেটি আসলে চলছে না — এটি demo করছে। এটিকে সত্যিই online রাখতে, ভোর 3টায় উত্তর দিতে, আপনার reboot ও নিজের ক্র্যাশ টিকিয়ে দিতে, এটিকে একটি সার্ভারে থাকতে হবে। এই যে পুরো পথ, শুরু থেকে শেষ, কমান্ড সহ।
আগে সুখবর: একটি bot একটি ক্ষুদ্র workload। এটি বেশিরভাগ বার্তার অপেক্ষায় idle বসে থাকে, তাই সবচেয়ে সস্তা বক্স এটি ভালোই চালায় — কোনো dedicated IP নয়, ডোমেইন নয়, কিছুই বিদেশি-বিচিত্র নয়।
1. BotFather থেকে একটি token পান
Telegram-এ, @BotFather-কে বার্তা দিন, /newbot পাঠান, একটি নাম ও username বাছুন। এটি আপনাকে 12345:AAH...-র মতো দেখতে একটি token দেয়। এটিকে একটি password-এর মতো ভাবুন — এটি সহ যে কেউ আপনার bot নিয়ন্ত্রণ করে।
2. একটি ন্যূনতম bot
সার্ভারে SSH করুন, Python ও library সেট করুন:
sudo apt update && sudo apt install -y python3-venv
mkdir ~/mybot && cd ~/mybot
python3 -m venv venv && source venv/bin/activate
pip install python-telegram-bot
একটি bot যা উত্তর দেয় — ~/mybot/bot.py:
import os
from telegram.ext import ApplicationBuilder, CommandHandler
async def start(update, ctx):
await update.message.reply_text("Alive and on a server. 🟢")
app = ApplicationBuilder().token(os.environ["BOT_TOKEN"]).build()
app.add_handler(CommandHandler("start", start))
app.run_polling()
লক্ষ্য করুন এটি token একটি environment variable থেকে পড়ে — hardcode নয়। পরের ধাপে ওটা গুরুত্বপূর্ণ।
3. যে অংশ আসলে এটিকে চালু রাখে: systemd
আপনি কেবল python bot.py চালালে, আপনি SSH বন্ধ করার মুহূর্তে এটি মরে। একটি systemd সার্ভিস-ই এটিকে logout, ক্র্যাশ ও reboot টিকিয়ে দেয়। /etc/systemd/system/mybot.service তৈরি করুন:
[Unit]
Description=Telegram bot
After=network-online.target
[Service]
WorkingDirectory=/home/youruser/mybot
Environment=BOT_TOKEN=12345:AAH...your-token
ExecStart=/home/youruser/mybot/venv/bin/python bot.py
Restart=always
RestartSec=5
User=youruser
[Install]
WantedBy=multi-user.target
তারপর:
sudo systemctl daemon-reload
sudo systemctl enable --now mybot
sudo systemctl status mybot # active (running) বলা উচিত
journalctl -u mybot -f # live log
Restart=always-ই সেই লাইন যা আসল কাজটা করছে — ক্র্যাশ, আর এটি 5 সেকেন্ডে ফিরে আসে। enable মানে এটি একটি reboot-এর পরে উঠে আসে। "আমি একবার একটি bot চালিয়েছি" ও "আমার bot চালু"-র মধ্যে পুরো পার্থক্য সেটাই।
4. কেন কোনো ডোমেইন বা খোলা পোর্ট নয়
bot long polling ব্যবহার করে — এটি update-এর জন্য Telegram-এ পৌঁছায়, তাই কিছু ভেতরে পৌঁছানোর দরকার নেই। কোনো পাবলিক URL নয়, inbound firewall নিয়ম নয়, dedicated IP নয়। ঠিক এজন্যই একটি NAT VPS (shared IP, একটি পোর্টে SSH) একটি bot-এর একটি ঠিক ও সস্তা ঘর। Webhook খুব উচ্চ ভলিউমের জন্য আছে, কিন্তু শুরু করতে আপনার প্রায় নিশ্চিতভাবেই এদের লাগে না।
সৎ সতর্কতা
- Token hygiene: এখানে স্পষ্টতার জন্য এটি unit ফাইলে inline — একটি locked-down বক্সে ঠিক, কিন্তু শেয়ার-করা যেকোনো কিছুর জন্য, বরং একটি root-only
EnvironmentFileথেকে load করুন, ও কখনও git-এ commit করবেন না। ফাঁস? BotFather-এ revoke করুন, একটি নতুন ইস্যু করুন। - ভারী bot: আপনার bot নিজে কাজ করলে (image generation, একটি local মডেল), এটি আর ক্ষুদ্র নয় — সেভাবে size করুন।
ব্যস। আগে security checklist দিয়ে বক্স লক করুন, সার্ভিসটি ফেলুন, আর আপনি থাকুন বা না-থাকুন আপনার bot online থাকে। একটি ক্রিপ্টো-পরিশোধিত VPS-এ আপনি সিদ্ধান্তের এক মিনিট পরে এটি চালু করতে পারেন।
মন্তব্য
এখনো কোনো মন্তব্য নেই। প্রথম হোন।