jameshns commited on
Commit
3a3251b
verified
1 Parent(s): 475f359

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +62 -4
app.py CHANGED
@@ -1,7 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  from fastapi import FastAPI
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
 
3
- app = FastAPI()
 
 
 
 
4
 
5
- @app.get("/")
6
- def greet_json():
7
- return {"Hello": "World!"}
 
1
+ # from fastapi import FastAPI
2
+
3
+ # app = FastAPI()
4
+
5
+ # @app.get("/")
6
+ # def greet_json():
7
+ # return {"Hello": "World!"}
8
+
9
+
10
+ import logging
11
+ from aiogram.client.default import DefaultBotProperties
12
+ from aiogram import Bot, Dispatcher, F
13
+ from aiogram.types import Message, Update
14
+ from aiogram.filters import CommandStart
15
+ from aiogram.enums import ParseMode
16
  from fastapi import FastAPI
17
+ from fastapi.responses import HTMLResponse
18
+ from fastapi.staticfiles import StaticFiles
19
+ from fastapi.templating import Jinja2Templates
20
+ from fastapi.requests import Request
21
+ import uvicorn
22
+ from contextlib import asynccontextmanager
23
+ import os
24
+
25
+ bot = Bot(token=os.getenv('BOT_TOKEN'),
26
+ default=DefaultBotProperties(parse_mode=ParseMode.HTML))
27
+ dp = Dispatcher()
28
+
29
+ @asynccontextmanager
30
+ async def lifespan(app: FastAPI):
31
+ await bot.set_webhook(url="小小蝎袥袣袗 小 袙袝袘啸校袣袨袦",
32
+ allowed_updates=dp.resolve_used_update_types(),
33
+ drop_pending_updates=True)
34
+ yield
35
+ await bot.delete_webhook()
36
+
37
+
38
+ app = FastAPI(lifespan=lifespan)
39
+ app.mount("/static", StaticFiles(directory="static"), name="static")
40
+ templates = Jinja2Templates(directory="templates")
41
+
42
+
43
+ @dp.message(CommandStart())
44
+ async def start(message: Message) -> None:
45
+ await message.answer('袩褉懈胁械褌!')
46
+
47
+
48
+ @app.get("/", response_class=HTMLResponse)
49
+ async def read_root(request: Request):
50
+ return templates.TemplateResponse("index.html", {"request": request})
51
+
52
+
53
+ @app.post("/webhook")
54
+ async def webhook(request: Request) -> None:
55
+ update = Update.model_validate(await request.json(), context={"bot": bot})
56
+ await dp.feed_update(bot, update)
57
+
58
 
59
+ if __name__ == "__main__":
60
+ logging.basicConfig(
61
+ level=logging.INFO,
62
+ format=u'%(filename)s:%(lineno)d #%(levelname)-8s [%(asctime)s] - %(name)s - %(message)s',
63
+ )
64
 
65
+ uvicorn.run(app, host="0.0.0.0", port=5000)