যে 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 (outbound ঠিকানা আপনার নিজের নয়, একটি পোর্টে 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-এ আপনি সিদ্ধান্তের এক মিনিট পরে এটি চালু করতে পারেন।
মন্তব্য
এখনো কোনো মন্তব্য নেই। প্রথম হোন।