fix: Postgres auth + worker startup
This commit is contained in:
+17
-16
@@ -1,16 +1,17 @@
|
||||
import logging
|
||||
import uuid
|
||||
from typing import Any
|
||||
|
||||
import asyncpg
|
||||
from telegram import InlineKeyboardButton, InlineKeyboardMarkup, Update
|
||||
from telegram.ext import CommandHandler, ExtBot, ContextTypes
|
||||
from telegram.ext import Application, CommandHandler, ContextTypes
|
||||
|
||||
from db import get_pool
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
async def _require_user(update: Update) -> asyncpg.Row | None: # type: ignore[name-defined]
|
||||
async def _require_user(update: Update) -> dict[str, Any] | None:
|
||||
"""Look up user by telegram_id. Auto-register on first /start."""
|
||||
telegram_id = update.effective_user.id
|
||||
pool = await get_pool()
|
||||
@@ -24,7 +25,7 @@ async def _require_user(update: Update) -> asyncpg.Row | None: # type: ignore[n
|
||||
return row
|
||||
|
||||
|
||||
async def _require_admin(update: Update) -> asyncpg.Row | None: # type: ignore[name-defined]
|
||||
async def _require_admin(update: Update) -> dict[str, Any] | None:
|
||||
"""Require the sender to be a whitelisted admin."""
|
||||
telegram_id = update.effective_user.id
|
||||
pool = await get_pool()
|
||||
@@ -38,7 +39,7 @@ async def _require_admin(update: Update) -> asyncpg.Row | None: # type: ignore[
|
||||
return row
|
||||
|
||||
|
||||
async def _auto_register(update: Update) -> asyncpg.Row | None: # type: ignore[name-defined]
|
||||
async def _auto_register(update: Update) -> dict[str, Any] | None:
|
||||
"""Create user row on first contact if not present. Returns nothing if un-whitelisted."""
|
||||
telegram_id = update.effective_user.id
|
||||
username = update.effective_user.username or None
|
||||
@@ -71,20 +72,20 @@ async def _auto_register(update: Update) -> asyncpg.Row | None: # type: ignore[
|
||||
first_name,
|
||||
)
|
||||
logger.info("Auto-registered user %s (%s)", telegram_id, first_name)
|
||||
return asyncpg.Record(("id", user_uuid), ("is_active", True)) # type: ignore[call-arg]
|
||||
return {"id": user_uuid, "is_active": True}
|
||||
|
||||
|
||||
def register_handlers(bot: ExtBot) -> None:
|
||||
bot.add_handler(CommandHandler("start", start_handler))
|
||||
bot.add_handler(CommandHandler("add", add_handler))
|
||||
bot.add_handler(CommandHandler("list", list_handler))
|
||||
bot.add_handler(CommandHandler("pause", pause_handler))
|
||||
bot.add_handler(CommandHandler("resume", resume_handler))
|
||||
bot.add_handler(CommandHandler("delete", delete_handler))
|
||||
bot.add_handler(CommandHandler("stats", stats_handler))
|
||||
bot.add_handler(CommandHandler("adduser", adduser_handler))
|
||||
bot.add_handler(CommandHandler("removeuser", removeuser_handler))
|
||||
bot.add_handler(CommandHandler("users", users_handler))
|
||||
def register_handlers(app: Application) -> None:
|
||||
app.add_handler(CommandHandler("start", start_handler))
|
||||
app.add_handler(CommandHandler("add", add_handler))
|
||||
app.add_handler(CommandHandler("list", list_handler))
|
||||
app.add_handler(CommandHandler("pause", pause_handler))
|
||||
app.add_handler(CommandHandler("resume", resume_handler))
|
||||
app.add_handler(CommandHandler("delete", delete_handler))
|
||||
app.add_handler(CommandHandler("stats", stats_handler))
|
||||
app.add_handler(CommandHandler("adduser", adduser_handler))
|
||||
app.add_handler(CommandHandler("removeuser", removeuser_handler))
|
||||
app.add_handler(CommandHandler("users", users_handler))
|
||||
|
||||
|
||||
# -- /start ---------------------------------------------------------------
|
||||
|
||||
+1
-1
@@ -160,7 +160,7 @@ async def main() -> None:
|
||||
|
||||
from bot import register_handlers # noqa: E402
|
||||
|
||||
register_handlers(app.bot)
|
||||
register_handlers(app)
|
||||
|
||||
scheduler = asyncio.ensure_future(scheduler_task(pool, app.bot))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user