مقدمة سريعة
إذا كنت تتابع فرقًا مثل Brentford أو Chelsea وتريد إشعارات فورية عند بدء المباراة، تسجيل هدف أو تحديث جدول الترتيب، يمكنك بناء نظام بسيط يرسل تنبيهات إلى هاتفك أو مجموعة Telegram بشكل آلي. في هذا الدليل العملي ستجد طريقتين فعالتين: طريقة بدون برمجة كاملة باستخدام IFTTT وRSS، وطريقة برمجية بسيطة باستخدام Python. كلا الطريقتين مفيدتان للمشجعين، المجموعات، أو لأي شخص يحتاج إشعارات مخصصة للمباريات.
قبل أن تبدأ — مصادر البيانات والاعتبارات
- مصدر الإشعارات: تحتاج إلى مصدر موثوق (RSS من مواقع رياضية، Google News/RSS، أو واجهة API رياضية). تأكد من موثوقية المصدر ومن تحديثه بشكل متكرر.
- تجنب السبام: حدد أي أنواع الإشعارات تريد (بداية المباراة، الأهداف، النتيجة النهائية) لتقليل عدد الرسائل.
- احترام الحدود: إذا استخدمت API تحتاج للانتباه لقيود الطلبات (rate limits) وسياسات الاستخدام.
الطريقة الأولى: بدون برمجة — IFTTT + RSS + Telegram
هذه الطريقة مناسبة إذا تريد حلًا سريعًا دون إعداد خادم. الفكرة: تحويل تحديثات RSS إلى طلب Webhook يرسل رسالة عبر Telegram Bot API.
الخطوات
- أنشئ Telegram Bot:
- افتح Telegram وتواصل مع @BotFather لإنشاء بوت جديد واحصل على
BOT_TOKEN. - أنشئ قناة أو مجموعة ليتم إرسال الإشعارات إليها، ثم أضف البوت كمسؤول أو احصل على
chat_idباستخدام أدوات مثل @get_id_bot أو عبر إجراء بسيط لإرسال رسالة وتجربة API.
- افتح Telegram وتواصل مع @BotFather لإنشاء بوت جديد واحصل على
- جهز مصدر RSS:
- اختر مصدرًا يعطي تحديثات مباريات أو أخبار الفريق (مثل صفحة أخبار فريق على موقع رياضي يدعم RSS أو Google Alerts مع خيار RSS).
- أنشئ Applet على IFTTT:
- Trigger: خدمة RSS — New feed item (أدخل رابط RSS).
- Action: خدمة Webhooks — Make a web request.
- Configure Webhooks:
- URL:
https://api.telegram.org/bot{BOT_TOKEN}/sendMessage - Method: POST
- Content Type: application/json
- Body (مثال):
{ "chat_id":"YOUR_CHAT_ID", "text":"{{EntryTitle}} - {{EntryUrl}}" }
- URL:
- جرب وآدمج الفلترة:
- يمكنك تعديل نص الرسالة ليشمل فقط العناوين التي تتضمن اسم الفريق.
- إذا أردت المزيد من المرونة استخدم وسيطًا (middleman) مثل Zapier أو Make بدلاً من IFTTT.
مزايا وعيوب هذه الطريقة
- المزايا: سريعة الإعداد، لا تحتاج خادم، مناسبة للمستخدم العادي.
- العيوب: أقل مرونة للفلترة المعقدة أو إشعارات المباريات اللحظية جداً، تعتمد على تكرار تحديث RSS والقيود في IFTTT.
الطريقة الثانية: برمجية بسيطة باستخدام Python (مرنة وقوية)
هذه الطريقة تمنحك تحكمًا كاملاً: فلترة دقيقة، دمج بيانات من أكثر من مصدر، وإرسال أنواع إشعارات متعددة (بداية المباراة، الأهداف، التبديلات...).
المتطلبات الأساسية
- حساب Telegram Bot وBOT_TOKEN
- خادم صغير أو Raspberry Pi أو حتى كمبيوتر يعمل دائماً أو خدمة استضافة مثل Heroku (هناك خيارات مجانية ومأجورة)
- مكتبات Python:
feedparserلقراءة RSS، وrequestsلإرسال رسائل Telegram
نموذج كود بسيط
import feedparser
import requests
import time
import os
FEED_URL = "https://example.com/team-rss.xml" # ضع رابط RSS الموثوق
BOT_TOKEN = "123456:ABC-DEF..." # ضع توكن البوت
CHAT_ID = "987654321" # ضع chat_id
SEEN_FILE = "seen_ids.txt"
def load_seen():
if not os.path.exists(SEEN_FILE):
return set()
with open(SEEN_FILE, "r") as f:
return set(line.strip() for line in f)
def save_seen(seen):
with open(SEEN_FILE, "w") as f:
for id in seen:
f.write(id + "\n")
def send_telegram(text):
url = f"https://api.telegram.org/bot{BOT_TOKEN}/sendMessage"
payload = {"chat_id": CHAT_ID, "text": text}
requests.post(url, json=payload)
def main():
seen = load_seen()
while True:
feed = feedparser.parse(FEED_URL)
for entry in reversed(feed.entries): # عكس لترتيب زمني صحيح
entry_id = entry.get("id", entry.get("link"))
title = entry.get("title", "")
link = entry.get("link", "")
# فلترة حسب اسم الفريق
if ("Brentford" in title or "Chelsea" in title) and entry_id not in seen:
text = f"{title}\n{link}"
send_telegram(text)
seen.add(entry_id)
save_seen(seen)
time.sleep(60) # فاصل بين كل فحص وآخر (يمكن تغييره)
يمكن تطوير الكود ليشمل طلبات لواجهات API تعطي أحداث المباريات لحظيًا (live events)، أو لإرسال صور/ملفات متعددة.
تشغيل الكود على الدوام
- استخدم cron (Linux) لتشغيل السكربت كل دقيقة أو كل 30 ثانية حسب الحاجة.
- أو اصنع خدمة systemd لتشغيل البرنامج كخدمة دائمة.
- يمكن رفعه على خادم سحابي صغير إن رغبت بوصول دائم.
نصائح عملية لتحسين الإشعارات
- استخدم فلترة نصية دقيقة لتفادي الرسائل غير المرغوب بها (مثلاً تأكد من تطابق كل من اسم الفريق والملعب أو المسابقة إذا لزم الأمر).
- احفظ معرفات الأحداث المرسلة لتفادي التكرار (كما في ملف SEEN_FILE).
- ضع حدودًا زمنية (rate limiting) لتجنب حظر البوت أو إزعاج المستلمين.
- إذا أردت إشعارات أكثر تفصيلاً (إحصاءات لحظية، ترتيب الدوري) فكّر في دمج واجهات API متخصصة، لكن تحقق من سياسات الاستخدام والأسعار أولاً.
مقارنة سريعة: IFTTT vs Python
- السهولة: IFTTT أسهل للمبتدئين.
- المرونة: Python أفضل للتحكم والتخصيص والاندماج مع مصادر متعددة.
- التكلفة: IFTTT مجاني لعدد محدود من applets؛ Python يتطلب استضافة قد تكون مجانية أو منخفضة التكلفة.
أمثلة استخدام متقدمة
- إرسال إشعارات مخصصة لكل عضو حسب الفريق المفضل (باستخدام وضع قواعد في السكربت لتوجيه الرسائل لمجموعات مختلفة).
- ضم صور لحظية أو لقطات الهدف عبر روابط من مواقع موثوقة.
- تجميع ملخص يومي للمباريات وإرساله في رسالة واحدة بدلًا من إشعارات متفرقة.
ملاحظة حول المصادر والشرعية
استخدم مصادر مفتوحة أو مرخّصة لنشر الأخبار والنتائج. تجنب نسخ المحتوى المحمي بحقوق دون إذن، والتزم بشروط الخدمة لمزودي البيانات وواجهات الـAPI.
الخلاصة
بناء نظام إشعارات لمباريات فريقك ممكن بسرعة ومرونة. إذا أردت حلًا سريعًا وغير تقني فاعتمد على IFTTT + RSS + Webhooks لإرسال رسائل إلى Telegram. أما إذا رغبت بتحكم أكبر ومرونة في الفلترة والتخصيص فاختر مسار البرمجة باستخدام Python—ستتمكن حينها من دمج أكثر من مصدر، تجنب التكرار، وإرسال أنواع إشعارات متقدمة. ابدأ بتجربة بسيطة ثم طور النظام تدريجيًا حسب حاجتك.
