From b4c3ad40dccd11632114d9fc264fac4ed3308874 Mon Sep 17 00:00:00 2001 From: Hosein Date: Wed, 24 Dec 2025 14:40:38 +0330 Subject: [PATCH] testing webhook and telegram library to see if it works --- bot.py | 7 ++++++- main.py | 41 ++++++++++++++++++++++++++++++++--------- 2 files changed, 38 insertions(+), 10 deletions(-) diff --git a/bot.py b/bot.py index 59e7300..8a2de16 100644 --- a/bot.py +++ b/bot.py @@ -7,11 +7,16 @@ def get_bot(): if _bot is None: import telebot BOT_TOKEN = os.environ.get("BOT_TOKEN") - _bot = telebot.TeleBot(BOT_TOKEN) + _bot = telebot.TeleBot(BOT_TOKEN, threaded=False) # threaded=False for serverless # Register handlers @_bot.message_handler(commands=["start"]) def start(message): _bot.reply_to(message, "Welcome!") + + # Add a handler for all other messages + @_bot.message_handler(func=lambda message: True) + def echo_all(message): + _bot.reply_to(message, f"You said: {message.text}") return _bot \ No newline at end of file diff --git a/main.py b/main.py index 67fd7ed..1bb780b 100644 --- a/main.py +++ b/main.py @@ -1,5 +1,6 @@ from fastapi import FastAPI, Request -from fastapi.responses import HTMLResponse +from fastapi.responses import HTMLResponse, JSONResponse +import logging app = FastAPI( title="Vercel + FastAPI", @@ -7,17 +8,39 @@ app = FastAPI( version="1.0.0", ) +logging.basicConfig(level=logging.INFO) +logger = logging.getLogger(__name__) + @app.post("/api/telegram_webhook") async def telegram_webhook(request: Request): - import telebot - from bot import get_bot + try: + import telebot + from bot import get_bot + + bot = get_bot() + json_data = await request.json() + + logger.info(f"Received update: {json_data}") + + update = telebot.types.Update.de_json(json_data) + + # Process the update directly instead of using process_new_updates + if update.message: + try: + # Call your message handlers directly + bot.process_new_updates([update]) + except Exception as e: + logger.error(f"Error processing update: {e}") + # Still return 200 to Telegram to acknowledge receipt + return JSONResponse(content={"ok": True}, status_code=200) + + return JSONResponse(content={"ok": True}, status_code=200) - bot = get_bot() - json_data = await request.json() - update = telebot.types.Update.de_json(json_data) - bot.process_new_updates([update]) - return {"ok": True} + except Exception as e: + logger.error(f"Webhook error: {e}") + # Return 200 even on error to prevent Telegram from retrying + return JSONResponse(content={"ok": True}, status_code=200) @app.post("/api/test") @@ -61,4 +84,4 @@ def read_root(): if __name__ == "__main__": import uvicorn - uvicorn.run("main:app", host="0.0.0.0", port=5001, reload=True) + uvicorn.run("main:app", host="0.0.0.0", port=5001, reload=True) \ No newline at end of file