Add quiet hours, health checks, and logging
This commit is contained in:
20
main.py
20
main.py
@@ -1,4 +1,5 @@
|
||||
import asyncio
|
||||
import logging
|
||||
import socket
|
||||
from datetime import datetime
|
||||
from app import bot, dp, cfg, ADMIN_ID
|
||||
@@ -11,6 +12,8 @@ from services.notify import notify
|
||||
from services.audit import AuditMiddleware, audit_start
|
||||
from services.ssl_alerts import monitor_ssl
|
||||
from services.external_checks import monitor_external
|
||||
from services.incidents import log_incident
|
||||
from services.logging_setup import setup_logging
|
||||
import state
|
||||
import handlers.menu
|
||||
import handlers.status
|
||||
@@ -24,6 +27,20 @@ import handlers.arcane
|
||||
import handlers.processes
|
||||
|
||||
|
||||
def _handle_async_exception(_loop, context):
|
||||
msg = context.get("message") or "Unhandled exception"
|
||||
exc = context.get("exception")
|
||||
if exc:
|
||||
text = f"❌ {msg}: {type(exc).__name__}: {exc}"
|
||||
else:
|
||||
text = f"❌ {msg}"
|
||||
try:
|
||||
log_incident(cfg, text)
|
||||
except Exception:
|
||||
pass
|
||||
logging.getLogger("asyncio").error(text)
|
||||
|
||||
|
||||
async def notify_start():
|
||||
await bot.send_message(
|
||||
ADMIN_ID,
|
||||
@@ -33,6 +50,7 @@ async def notify_start():
|
||||
|
||||
|
||||
async def main():
|
||||
setup_logging(cfg)
|
||||
dp.message.middleware(AuditMiddleware(cfg))
|
||||
dp.callback_query.middleware(AuditMiddleware(cfg))
|
||||
audit_start(cfg)
|
||||
@@ -51,6 +69,8 @@ async def main():
|
||||
state.METRICS_STORE = MetricsStore()
|
||||
asyncio.create_task(start_sampler(state.METRICS_STORE, interval=5))
|
||||
asyncio.create_task(queue_worker())
|
||||
loop = asyncio.get_running_loop()
|
||||
loop.set_exception_handler(_handle_async_exception)
|
||||
await notify_start()
|
||||
await dp.start_polling(bot)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user