import os import requests from fastapi import FastAPI, Request from transformers import AutoTokenizer, AutoModelForSequenceClassification, TextClassificationPipeline # توكن تيلقرام (قدري تحطينه هنا مباشرة) TELEGRAM_BOT_TOKEN = os.getenv( "TELEGRAM_BOT_TOKEN", "8513655100:AAH5bgPDpXioJNW-o5IiNy6sqOVQvjvQXS0" # استبدليه لو غيرتي التوكن ) # موديل المشاعر من هقنق فيس MODEL_ID = "maryaa4/my-arabic-sentiment-model" print("Loading model...") tokenizer = AutoTokenizer.from_pretrained(MODEL_ID) model = AutoModelForSequenceClassification.from_pretrained(MODEL_ID) pipeline = TextClassificationPipeline(model=model, tokenizer=tokenizer, return_all_scores=False) print("Model loaded. Device set to CPU.") app = FastAPI() @app.get("/") async def root(): # عشان صفحة السبيس ما تعطي 404 return {"status": "ok", "message": "Telegram webhook is at /telegram"} def analyze_sentiment(text: str) -> str: if not text: return "أرسل لي جملة عربية عشان أحلل مشاعرها 😊" result = pipeline(text)[0] label = result["label"] score = result["score"] return f"التصنيف: {label} — الثقة: {score:.2f}" @app.post("/telegram") async def telegram_webhook(request: Request): """ هذا الإندبوينت يستقبل تحديثات تيلقرام كـ JSON ويرد على نفس الشات باستعمال sendMessage """ try: update = await request.json() # ناخذ المرسلة الأساسية (لو رسالة جديدة أو معدلة) message = update.get("message") or update.get("edited_message") or {} chat = message.get("chat") or {} chat_id = chat.get("id") # لو مافي شات آي دي، نطلع بس بدون ما نسوي شيء if not chat_id: return {"ok": True} text = message.get("text") or "" reply_text = analyze_sentiment(text) # نرسل الرد لتيلقرام url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage" payload = { "chat_id": chat_id, "text": reply_text, } requests.post(url, json=payload) except Exception as e: # تطبعين الخطأ في اللوق لو حبيتي تشوفين وش صار print("Error in /telegram webhook:", e) # لازم نرجع 200 لتيلقرام return {"ok": True}