Spaces:
Sleeping
Sleeping
| import os | |
| import logging | |
| from fastapi import FastAPI, Request, Response | |
| from fastapi.responses import HTMLResponse | |
| from bot import message_log, BOT_TOKEN, handle_update | |
| logging.basicConfig(format="%(asctime)s | %(levelname)s | %(message)s", level=logging.INFO) | |
| logger = logging.getLogger(__name__) | |
| app = FastAPI() | |
| async def dashboard(): | |
| count = len(message_log) | |
| last = message_log[-1] if message_log else None | |
| last_info = (last["time"] + " - " + last["sent"][:60]) if last else "None yet" | |
| rows = "" | |
| for e in reversed(message_log[-10:]): | |
| s = "OK" if e["success"] else "FAIL" | |
| rows += "<tr><td>" + e["time"] + "</td><td>" + e["input"] + "</td><td>" + e["sent"] + "</td><td>" + s + "</td></tr>" | |
| return """<html><body style='font-family:sans-serif;padding:2rem;max-width:800px'> | |
| <h2>Status Bot - Running</h2> | |
| <p>Messages sent: <b>""" + str(count) + """</b> | Last: """ + last_info + """</p> | |
| <table border='1' cellpadding='6' width='100%'> | |
| <tr><th>Time</th><th>You typed</th><th>Sent to wife</th><th>Status</th></tr> | |
| """ + rows + """</table></body></html>""" | |
| async def health(): | |
| return {"status": "running", "messages_sent": len(message_log)} | |
| async def telegram_webhook(token: str, request: Request): | |
| if token != BOT_TOKEN: | |
| return Response(status_code=403) | |
| data = await request.json() | |
| await handle_update(data) | |
| return Response(status_code=200) | |