refactor: summary after keyword list, remove separators, back button in admin

This commit is contained in:
2026-06-17 12:56:19 +02:00
parent 0634755e6b
commit c48706ac9c
+24 -3
View File
@@ -150,7 +150,6 @@ def _kw_action_keyboard(kw_id: str, is_active: bool) -> InlineKeyboardMarkup:
[InlineKeyboardButton(toggle_btn, callback_data=f"toggle:{sid}"),
InlineKeyboardButton("✏️ Edit", callback_data=f"edit_menu:{sid}")],
[InlineKeyboardButton("🗑 Remove", callback_data=f"remove_confirm:{sid}")],
[InlineKeyboardButton("↩ Back to Menu", callback_data="menu:")],
])
@@ -181,6 +180,7 @@ def _admin_menu_keyboard() -> InlineKeyboardMarkup:
[InlineKeyboardButton(" Add User", callback_data="admin_add"),
InlineKeyboardButton("👥 List Users", callback_data="admin_list")],
[InlineKeyboardButton("🗑 Remove User", callback_data="admin_remove")],
[InlineKeyboardButton("↩ Back", callback_data="menu:")],
])
@@ -192,7 +192,6 @@ def _format_kw_card(kw: dict) -> str:
return (
f"<b>🔍 {kw['keyword']}</b>\n"
f"━━━━━━━━━━━━━━━━━━━━━\n"
f"{status_icon} | Interval: <code>{kw['interval_minutes']} min</code>\n"
f"Last scrape: {_vienna_time(kw.get('last_scraped_at'))}{subs_line}"
)
@@ -507,6 +506,14 @@ async def _handle_callback(update: Update, context: ContextTypes.DEFAULT_TYPE) -
chat_id=chat_id, text=text, parse_mode="HTML", reply_markup=kb,
)
name = user["first_name"] or "there"
await context.bot.send_message(
chat_id=chat_id,
text=f"<b>That was all your listings, {name}!</b>\n\nAnything else I can help with?",
parse_mode="HTML",
reply_markup=_main_menu_keyboard(),
)
elif sub == "stats":
total_kw = await pool.fetchval(
"SELECT COUNT(DISTINCT ks.keyword_id) FROM keyword_subscriptions ks WHERE ks.user_id = $1",
@@ -518,13 +525,26 @@ async def _handle_callback(update: Update, context: ContextTypes.DEFAULT_TYPE) -
text = (
"<b>📊 Tracking Statistics</b>\n"
"━━━━━━━━━━━━━━━━━━━━━\n\n"
f"Keywords: <code>{total_kw}</code>\n"
f"Ads indexed: <code>{total_ads}</code>\n"
f"Notifications sent: <code>{total_notifs}</code>"
)
await query.edit_message_text(text=text, parse_mode="HTML")
else:
# Empty payload — "Back" button from sub-menus, show main menu
name = update.effective_user.first_name or "there"
kb = _main_menu_keyboard()
try:
await query.edit_message_text(
f"Hello <b>{name}</b>! I'll notify you about new willhaben listings.",
parse_mode="HTML", reply_markup=kb)
except Exception:
await context.bot.send_message(
chat_id=chat_id or user["telegram_id"],
text=f"Hello <b>{name}</b>! I'll notify you about new willhaben listings.",
parse_mode="HTML", reply_markup=kb)
# ════════════════════════════════════════════════════════════════════
# CANCEL / BACK
# ════════════════════════════════════════════════════════════════════
@@ -801,6 +821,7 @@ async def _handle_callback(update: Update, context: ContextTypes.DEFAULT_TYPE) -
kb = InlineKeyboardMarkup([
[InlineKeyboardButton(" Add User", callback_data="admin_add"),
InlineKeyboardButton("🗑 Remove User", callback_data="admin_remove")],
[InlineKeyboardButton("↩ Back", callback_data="menu:")],
])
await query.edit_message_text(text=text, parse_mode="HTML", reply_markup=kb)