Фикс: пустой ряд в клавиатуре ломал отправку («Задать вопрос» молчал) + vk.ru в резолвере

1) _kb при пустых рядах создавал ПУСТОЙ первый ряд (add_line до кнопок) — VK
   отклонял такую клавиатуру, из-за чего сообщения шага «Задать вопрос»,
   «другая игра», «нужен совет» не отправлялись (состояние при этом менялось).
   Теперь add_line ставится только между реальными кнопками — пустых рядов нет.
2) _resolve_vk_user_id теперь понимает домен vk.ru (и www./m.), а не только vk.com —
   ссылку https://vk.ru/screenname на добавление админа бот принимает.

Тесты: test_funnel_keyboards_no_empty_rows, test_resolve_vk_links. pytest 40 passed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Kenik
2026-07-26 10:45:31 +03:00
parent 81c1162ca1
commit 24daec1c09
3 changed files with 47 additions and 8 deletions
+9 -4
View File
@@ -34,16 +34,21 @@ def _kb(rows, back=False, ask_manager=False, back_menu=True):
back_menu — кнопка «В главное меню ↩️».
"""
keyboard = VkKeyboard(one_time=False)
for i, row in enumerate(rows):
if i:
has = False # была ли уже добавлена хоть одна кнопка (чтобы не создавать пустой ряд)
for row in rows:
if has:
keyboard.add_line()
for label in row:
keyboard.add_button(label, color=VkKeyboardColor.SECONDARY)
has = True
if ask_manager:
keyboard.add_line()
if has:
keyboard.add_line()
keyboard.add_button("Задать вопрос менеджеру 💬", color=VkKeyboardColor.SECONDARY)
has = True
if back or back_menu:
keyboard.add_line()
if has:
keyboard.add_line()
if back:
keyboard.add_button("Назад ⬅️", color=VkKeyboardColor.SECONDARY)
if back_menu: