بوت تيليجرام يعمل فقط بينما حاسوبك المحمول مفتوح ليس يعمل حقًا — إنه يعرض. ليكون على الإنترنت فعلًا، يجيب الساعة الثالثة فجرًا، ينجو من إعادات تشغيلك وأعطاله، عليه أن يعيش على خادم. إليك المسار كله، من البداية إلى النهاية، بالأوامر.
الأخبار الجيّدة أولًا: البوت حِمل ضئيل. يجلس خاملًا غالبًا منتظرًا الرسائل، فـ أرخص صندوق يُشغّله جيّدًا — بلا IP مخصّص، بلا نطاق، بلا شيء فاخر.
1. احصل على رمز من BotFather
في تيليجرام، راسل @BotFather، أرسل /newbot، اختر اسمًا واسم مستخدم. يسلّمك رمزًا يبدو كـ 12345:AAH.... عامله ككلمة مرور — أي أحد لديه يتحكّم ببوتك.
2. بوت أدنى
ادخل عبر SSH إلى الخادم، جهّز Python والمكتبة:
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
بوت يردّ — ~/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()
لاحظ أنه يقرأ الرمز من متغيّر بيئة — لا مُضمَّنًا. ذلك يهمّ في الخطوة التالية.
3. الجزء الذي يُبقيه يعمل فعلًا: systemd
إن شغّلت python bot.py فحسب، يموت لحظة تُغلق SSH. خدمة systemd هي ما يجعله ينجو من تسجيل الخروج والأعطال وإعادات التشغيل. أنشئ /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 # سجلّات حيّة
Restart=always هو السطر الذي يقوم بالعمل الحقيقي — تعطّل، ويعود في 5 ثوانٍ. enable يعني عودته بعد إعادة تشغيل. ذلك كل الفرق بين «شغّلت بوتًا مرة» و«بوتي مشتغل».
4. لماذا لا نطاق أو منافذ مفتوحة
يستخدم البوت الاستطلاع الطويل — يمدّ يده إلى تيليجرام للتحديثات، فلا شيء يحتاج الوصول للداخل. لا رابط عامّ، لا قاعدة جدار حماية واردة، لا IP مخصّص. لهذا بالضبط VPS من نوع NAT (IP مشترك، SSH على منفذ) بيت جيّد ورخيص لبوت. webhooks موجودة للحجم العالي جدًا، لكنك على الأرجح لا تحتاجها للبدء.
تحفّظات صادقة
- نظافة الرمز: هنا هو مضمّن في ملف الوحدة للوضوح — جيّد على صندوق محكم، لكن لأي شيء مشترك، حمّله من
EnvironmentFileيقرؤه root فقط بدلًا، ولا تلتزمه أبدًا في git. تسرّب؟ ألغِ في BotFather، أصدر جديدًا. - البوتات الثقيلة: إن قام بوتك بالعمل نفسه (توليد صور، نموذج محلي)، فهو لم يعد ضئيلًا — كبّر الحجم تبعًا.
هذا كل شيء. أحكِم الصندوق أولًا بـقائمة الأمان، ضع الخدمة، ويبقى بوتك على الإنترنت سواء بقيت أنت أم لا. على VPS مدفوع بالعملات المشفّرة يمكنك تشغيله بعد دقيقة من قرارك.
التعليقات
لا تعليقات بعد. كن الأول.