diff --git a/worker/src/bot.py b/worker/src/bot.py
index d0a0117..7c4adf3 100644
--- a/worker/src/bot.py
+++ b/worker/src/bot.py
@@ -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"🔍 {kw['keyword']}\n"
- f"━━━━━━━━━━━━━━━━━━━━━\n"
f"{status_icon} | Interval: {kw['interval_minutes']} min\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"That was all your listings, {name}!\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 = (
"📊 Tracking Statistics\n"
- "━━━━━━━━━━━━━━━━━━━━━\n\n"
f"Keywords: {total_kw}\n"
f"Ads indexed: {total_ads}\n"
f"Notifications sent: {total_notifs}"
)
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 {name}! 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 {name}! 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)