-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
38 lines (31 loc) · 1.2 KB
/
main.py
File metadata and controls
38 lines (31 loc) · 1.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# main.py
import os, logging, asyncio
from telegram.ext import Application
from dotenv import load_dotenv
from web.api import create_fastapi_app
from telegram_ux.handlers import register
load_dotenv()
BOT_TOKEN = os.getenv("BOT_TOKEN")
WEBHOOK_URL = os.getenv("WEBHOOK_URL", "")
logging.basicConfig(level=logging.INFO, format="%(asctime)s | %(levelname)s | %(message)s")
logger = logging.getLogger("Main")
telegram_app = Application.builder().token(BOT_TOKEN).read_timeout(60).write_timeout(60).build()
register(telegram_app) # 🔗 register all handlers
app = create_fastapi_app(telegram_app) # 🔗 plug Telegram into FastAPI
@app.on_event("startup")
async def startup():
await telegram_app.initialize()
await telegram_app.start()
if WEBHOOK_URL:
await telegram_app.bot.set_webhook(WEBHOOK_URL)
logger.info(f"Webhook set to {WEBHOOK_URL}")
else:
logger.warning("WEBHOOK_URL missing, polling mode only.")
@app.on_event("shutdown")
async def shutdown():
await telegram_app.stop()
await telegram_app.shutdown()
logger.info("Bot shut down cleanly.")
if __name__ == "__main__":
import uvicorn
uvicorn.run("main:app", host="0.0.0.0", port=8000, reload=True)