Фикс: пустой ряд в клавиатуре ломал отправку («Задать вопрос» молчал) + 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:
@@ -225,12 +225,12 @@ class VKBotApplication:
|
||||
def _resolve_vk_user_id(self, raw: str) -> Optional[int]:
|
||||
"""Из ссылки / короткого имени / ID получает числовой VK user_id (или None).
|
||||
|
||||
Принимает что угодно: https://vk.com/gruzdevas, vk.com/id123, @gruzdevas,
|
||||
gruzdevas, 123456. Короткое имя резолвится через VK API.
|
||||
Принимает что угодно: https://vk.com/gruzdevas, https://vk.ru/gruzdevas,
|
||||
m.vk.com/id123, @gruzdevas, gruzdevas, 123456. Короткое имя резолвится через VK API.
|
||||
"""
|
||||
s = (raw or "").strip()
|
||||
s = re.sub(r"^https?://", "", s, flags=re.I) # убираем протокол
|
||||
s = re.sub(r"^(m\.)?vk\.com/", "", s, flags=re.I) # убираем домен
|
||||
s = re.sub(r"^https?://", "", s, flags=re.I) # убираем протокол
|
||||
s = re.sub(r"^(www\.|m\.)?vk\.(com|ru)/", "", s, flags=re.I) # убираем домен (vk.com / vk.ru)
|
||||
s = s.split("?")[0].split("/")[0].strip().strip("@").strip() # берём первый сегмент
|
||||
if not s:
|
||||
return None
|
||||
|
||||
Reference in New Issue
Block a user