welcomecenterbot/api/webhook.py
2023-09-11 23:21:55 +03:00

57 lines
1.7 KiB
Python

from handlers.routing import handle_routing
from handlers.callback_vouch import handle_button
from handlers.callback_unlink import handle_unlink
from handlers.handle_startup import handle_startup
from handlers.handle_join_request import handle_join_request
from api import register_webhook, send_message
from config import FEEDBACK_CHAT_ID
from sanic.app import Sanic
app = Sanic(name="welcomecenter")
app.config.LOGGING = True
app.config.REGISTERED = False
state = State()
@app.get("/")
async def register(req):
if not app.config.REGISTERED:
print(register_webhook())
app.config.REGISTERED = True
await handle_startup()
return text("ok")
@app.post("/")
async def handle(req):
print(req)
try:
update = req.json
print(update)
# видимые сообщения
msg = update.get("message", update.get("edited_message"))
if msg:
msg["edit"] = "edited_message" in update
await handle_routing(msg)
# кнопки
elif "callback_query" in update:
data = update["callback_query"]["data"]
if data.startswith("vouch"):
await handle_button(update["callback_query"])
elif data.startswith("unlink"):
await handle_unlink(update["callback_query"])
# заявки
elif "chat_join_request" in update:
print("chat join request")
await handle_join_request(update["chat_join_request"])
except Exception:
import traceback
await send_message(FEEDBACK_CHAT_ID, f"<pre>\n{traceback.format_exc()}\n</pre>")
traceback.print_exc()
return text("ok")