Maryaa4's picture
Update app.py
a550529 verified
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}