Напоминалки: кнопка смены часового пояса в разделе
Раньше сменить уже заданный пояс можно было только скрытой командой 'часовой пояс <±N>', нигде не упомянутой в интерфейсе. Добавлена кнопка «🌐 Часовой пояс» — открывает тот же выбор (кнопки городов + ручной ввод) заново, показывая текущее значение. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -555,7 +555,7 @@ class VKBotApplication:
|
||||
f"{listing}\n"
|
||||
"ℹ️ Чтобы время в списке отображалось верно у всех, каждому нужно один раз "
|
||||
"зайти сюда и указать свой часовой пояс.\n\n"
|
||||
"Управляйте кнопками ниже: ➕ добавить • 🗑 удалить • ⏸/▶ пауза",
|
||||
"Управляйте кнопками ниже: ➕ добавить • 🗑 удалить • ⏸/▶ пауза • 🌐 сменить часовой пояс",
|
||||
keyboard=get_reminders_admin_keyboard()
|
||||
)
|
||||
|
||||
@@ -749,6 +749,17 @@ class VKBotApplication:
|
||||
self.send_message(user_id, "⏸/▶ Какое напоминание переключить? Выберите:",
|
||||
keyboard=get_pick_keyboard(items))
|
||||
return
|
||||
elif text_lower in ["🌐 часовой пояс", "часовой пояс"]:
|
||||
current = db.get_admin_tz_offset(user_id)
|
||||
note = f" Сейчас: UTC{current:+d}." if current is not None else ""
|
||||
db.update_user_state(user_id, "ADMIN_REMINDER_TZ_SETUP")
|
||||
self.send_message(
|
||||
user_id,
|
||||
f"🌐 Выберите новый часовой пояс кнопкой ниже, либо введите смещение "
|
||||
f"от UTC вручную (например, +3).{note}",
|
||||
keyboard=get_timezone_keyboard()
|
||||
)
|
||||
return
|
||||
elif text_lower.startswith("часовой пояс"):
|
||||
self._handle_set_timezone(user_id, text_clean)
|
||||
return
|
||||
|
||||
@@ -209,6 +209,8 @@ def get_reminders_admin_keyboard() -> str:
|
||||
keyboard.add_line()
|
||||
keyboard.add_button("⏸/▶ Пауза", color=VkKeyboardColor.SECONDARY)
|
||||
keyboard.add_line()
|
||||
keyboard.add_button("🌐 Часовой пояс", color=VkKeyboardColor.SECONDARY)
|
||||
keyboard.add_line()
|
||||
keyboard.add_button("В админку ↩️", color=VkKeyboardColor.SECONDARY)
|
||||
return keyboard.get_keyboard()
|
||||
|
||||
|
||||
@@ -537,3 +537,20 @@ def test_timezone_change_command(app, monkeypatch):
|
||||
|
||||
app.handle_message(admin, "часовой пояс много")
|
||||
assert bot.db.get_admin_tz_offset(admin) == -5 # невалидный ввод не поменял значение
|
||||
|
||||
|
||||
def test_timezone_change_via_button(app, monkeypatch):
|
||||
"""Кнопка «🌐 Часовой пояс» открывает выбор заново, даже если пояс уже задан."""
|
||||
admin = 80011
|
||||
monkeypatch.setattr(bot.config, "ADMIN_IDS", [admin])
|
||||
bot.db.set_admin_tz_offset(admin, 3)
|
||||
|
||||
app.handle_message(admin, "⏰ Напоминалки")
|
||||
assert _state(admin) == "FREE_CHAT" # пояс уже есть — гейт не срабатывает
|
||||
|
||||
app.handle_message(admin, "🌐 Часовой пояс")
|
||||
assert _state(admin) == "ADMIN_REMINDER_TZ_SETUP"
|
||||
|
||||
app.handle_message(admin, "Владивосток, UTC+10")
|
||||
assert _state(admin) == "FREE_CHAT"
|
||||
assert bot.db.get_admin_tz_offset(admin) == 10
|
||||
|
||||
Reference in New Issue
Block a user