startup-fix
This commit is contained in:
@@ -1,22 +1,28 @@
|
|||||||
from handlers.routing import handle_routing
|
from bot.handlers.routing import handle_routing
|
||||||
from handlers.callback_vouch import handle_button
|
from bot.handlers.callback_vouch import handle_button
|
||||||
from handlers.callback_unlink import handle_unlink
|
from bot.handlers.callback_unlink import handle_unlink
|
||||||
from handlers.handle_startup import handle_startup
|
from bot.handlers.handle_startup import handle_startup
|
||||||
from handlers.handle_join_request import handle_join_request
|
from bot.handlers.handle_join_request import handle_join_request
|
||||||
from api import register_webhook, send_message
|
from bot.api import register_webhook, send_message
|
||||||
from config import FEEDBACK_CHAT_ID
|
from bot.config import FEEDBACK_CHAT_ID, WEBHOOK
|
||||||
|
from bot.state import State
|
||||||
from sanic.app import Sanic
|
from sanic.app import Sanic
|
||||||
|
from sanic.response import text
|
||||||
|
import logging
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
logging.basicConfig(level=logging.INFO)
|
||||||
|
|
||||||
|
|
||||||
app = Sanic(name="welcomecenter")
|
app = Sanic(name="welcomecenter")
|
||||||
app.config.LOGGING = True
|
app.config.LOGGING = True
|
||||||
app.config.REGISTERED = False
|
app.config.REGISTERED = False
|
||||||
state = State()
|
state = State()
|
||||||
|
|
||||||
|
|
||||||
@app.get("/")
|
@app.get("/")
|
||||||
async def register(req):
|
async def register(req):
|
||||||
if not app.config.REGISTERED:
|
if not app.config.REGISTERED:
|
||||||
print(register_webhook())
|
logger.info(register_webhook())
|
||||||
app.config.REGISTERED = True
|
app.config.REGISTERED = True
|
||||||
await handle_startup()
|
await handle_startup()
|
||||||
return text("ok")
|
return text("ok")
|
||||||
@@ -24,10 +30,10 @@ async def register(req):
|
|||||||
|
|
||||||
@app.post("/")
|
@app.post("/")
|
||||||
async def handle(req):
|
async def handle(req):
|
||||||
print(req)
|
logger.debug(req)
|
||||||
try:
|
try:
|
||||||
update = req.json
|
update = req.json
|
||||||
print(update)
|
logger.debug(update)
|
||||||
|
|
||||||
# видимые сообщения
|
# видимые сообщения
|
||||||
msg = update.get("message", update.get("edited_message"))
|
msg = update.get("message", update.get("edited_message"))
|
||||||
@@ -45,12 +51,12 @@ async def handle(req):
|
|||||||
|
|
||||||
# заявки
|
# заявки
|
||||||
elif "chat_join_request" in update:
|
elif "chat_join_request" in update:
|
||||||
print("chat join request")
|
logger.info("chat join request")
|
||||||
await handle_join_request(update["chat_join_request"])
|
await handle_join_request(update["chat_join_request"])
|
||||||
|
|
||||||
except Exception:
|
except Exception:
|
||||||
import traceback
|
import traceback
|
||||||
|
|
||||||
await send_message(FEEDBACK_CHAT_ID, f"<pre>\n{traceback.format_exc()}\n</pre>")
|
await send_message(FEEDBACK_CHAT_ID, f"<pre>\n{traceback.format_exc()}\n</pre>")
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
|
logger.error(traceback.format_exc())
|
||||||
return text("ok")
|
return text("ok")
|
||||||
|
@@ -1,7 +1,6 @@
|
|||||||
import os
|
import os
|
||||||
|
|
||||||
BOT_TOKEN = os.environ.get("BOT_TOKEN") or ""
|
BOT_TOKEN = os.environ.get("BOT_TOKEN") or ""
|
||||||
ADMIN_ID = os.environ.get("ADMIN_ID") or ""
|
|
||||||
WEBHOOK = os.environ.get("VERCEL_URL") or "http://localhost:8000"
|
WEBHOOK = os.environ.get("VERCEL_URL") or "http://localhost:8000"
|
||||||
REDIS_URL = os.environ.get("REDIS_URL") or "redis://localhost:6379"
|
REDIS_URL = os.environ.get("REDIS_URL") or "redis://localhost:6379"
|
||||||
FEEDBACK_CHAT_ID = os.environ.get("FEEDBACK_CHAT_ID", "").replace("-", "-100")
|
FEEDBACK_CHAT_ID = os.environ.get("FEEDBACK_CHAT_ID", "").replace("-", "-100")
|
||||||
|
@@ -1,3 +1,4 @@
|
|||||||
|
from bot.config import FEEDBACK_CHAT_ID
|
||||||
from storage import scan, Profile
|
from storage import scan, Profile
|
||||||
from api import approve_chat_join_request, kick_member, send_message
|
from api import approve_chat_join_request, kick_member, send_message
|
||||||
from handlers.callback_vouch import update_button
|
from handlers.callback_vouch import update_button
|
||||||
@@ -7,8 +8,9 @@ import logging
|
|||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
logging.basicConfig(level=logging.INFO)
|
logging.basicConfig(level=logging.INFO)
|
||||||
|
|
||||||
# устанавливает соответствие данных
|
|
||||||
async def handle_startup(msg):
|
async def revalidate_storage():
|
||||||
|
# поддерживает консистентность данных
|
||||||
btn_ids, _btns = scan(match="btn-*", count=100)
|
btn_ids, _btns = scan(match="btn-*", count=100)
|
||||||
for btnid in btn_ids:
|
for btnid in btn_ids:
|
||||||
# для каждой ранее созданной кнопки
|
# для каждой ранее созданной кнопки
|
||||||
@@ -28,11 +30,9 @@ async def handle_startup(msg):
|
|||||||
logger.debug(r)
|
logger.debug(r)
|
||||||
if r["ok"]:
|
if r["ok"]:
|
||||||
_, identity, username = userdata_extract(newcomer["result"]["user"])
|
_, identity, username = userdata_extract(newcomer["result"]["user"])
|
||||||
lang = msg["from_user"]["lang"]
|
body = f"Участник {identity} {username} был удалён"
|
||||||
body = (
|
r = await send_message(FEEDBACK_CHAT_ID, body)
|
||||||
"Участник %s%s был удалён"
|
|
||||||
if lang == "ru"
|
|
||||||
else "Member %s%s was deleted"
|
|
||||||
) % (identity, username)
|
|
||||||
r = await send_message(chat_id, body)
|
|
||||||
logger.debug(r)
|
logger.debug(r)
|
||||||
|
|
||||||
|
async def handle_startup():
|
||||||
|
await revalidate_storage()
|
||||||
|
@@ -31,8 +31,6 @@ async def handle_routing(msg, state):
|
|||||||
logger.debug(msg)
|
logger.debug(msg)
|
||||||
if msg.get("reply_to_message"):
|
if msg.get("reply_to_message"):
|
||||||
await handle_answer(msg)
|
await handle_answer(msg)
|
||||||
elif msg["text"] == "/graph":
|
|
||||||
await handle_command_graph(msg)
|
|
||||||
elif msg["text"].startswith("/ask"):
|
elif msg["text"].startswith("/ask"):
|
||||||
await handle_command_ask(msg)
|
await handle_command_ask(msg)
|
||||||
|
|
||||||
|
@@ -6,7 +6,7 @@ from aiogram import Bot, Dispatcher, Router
|
|||||||
from aiogram.enums import ParseMode
|
from aiogram.enums import ParseMode
|
||||||
from aiogram.filters import CommandStart, Command
|
from aiogram.filters import CommandStart, Command
|
||||||
from aiogram.types import Message, ChatJoinRequest, CallbackQuery
|
from aiogram.types import Message, ChatJoinRequest, CallbackQuery
|
||||||
from config import BOT_TOKEN, ADMIN_ID
|
from config import BOT_TOKEN
|
||||||
from handlers.routing import handle_routing
|
from handlers.routing import handle_routing
|
||||||
from handlers.callback_unlink import handle_unlink
|
from handlers.callback_unlink import handle_unlink
|
||||||
from handlers.callback_vouch import handle_button
|
from handlers.callback_vouch import handle_button
|
||||||
|
Reference in New Issue
Block a user