Files
BSN-Livesystem/src/routes/telegram.py
T

40 lines
1.1 KiB
Python

"""Telegram-Webhook-Route und Queue-Integration."""
from flask import Blueprint, current_app, jsonify, request
from src.models.submission import Submission
telegram_bp = Blueprint("telegram", __name__)
@telegram_bp.route("/webhook/telegram", methods=["POST"])
def telegram_webhook() -> tuple:
"""Telegram Webhook-Endpunkt.
Nimmt eingehende Telegram-Bot-Nachrichten entgegen,
baut eine Submission und reiht sie in den QueueHandler ein.
"""
data = request.get_json(silent=True)
if not data:
return jsonify({"error": "Invalid JSON"}), 400
qh = current_app.queue_handler
message = data.get("message", {})
message_id = str(message.get("message_id", ""))
chat_id = str(message.get("chat", {}).get("id", ""))
text = message.get("text", "")
if not message_id or not text:
return jsonify({"error": "Missing message_id or text"}), 400
submission = Submission(
message_id=message_id,
plattform="telegram",
absender=chat_id,
text=text,
)
qh.enqueue(submission)
return jsonify({"status": "accepted"}), 200