Проблема, с которой вы столкнулись, связана с тем, как Telegram обрабатывает упоминания пользователей. Вот несколько ключевых моментов, которые могут объяснить, почему одно упоминание кликабельное, а другое — нет:
1. **Формат упоминания**: Чтобы упоминание стало кликабельным, оно должно быть оформлено правильно. В стандартном формате упоминания в Telegram используются символы `@`, чтобы указать на пользователя или группу. Например, если вы хотите упомянуть пользователя по его юзернейму, вам нужно использовать формат `@username`.
2. **Параметры конфиденциальности**: Даже если пользователь не заблокировал вашего бота, у него могут быть настроены параметры конфиденциальности, которые ограничивают его видимость. Если пользователь настроил свой аккаунт так, что его нельзя упоминать через ботов или другие методы, упоминание не будет кликабельным.
3. **Доступность юзернеймов**: Если у пользователя не установлен юзернейм, упоминание по `user_id` не станет кликабельным. В этом случае, вместо `user_id` нужно использовать `username` (если он есть). Это объясняет, почему одно упоминание может быть кликабельным, а другое — нет.
4. **Разные парсеры**: Telegram может по-разному обрабатывать сообщения, отправленные от людей и от ботов. Упоминания, отправленные от имени бота, могут обрабатываться иначе. Убедитесь, что используемый вами формат поддерживается API Telegram.
### Что можно сделать:
- **Проверьте, установлен ли у пользователей юзернейм**. Если у пользователя нет юзернейма, то необходимо обращаться по `user_id`, но в таком случае упоминание не будет кликабельным.
- **Используйте правильный формат** для создания упоминания. Вместо вашего кода попробуйте использовать формат с символом `@` и юзернеймами.
```python
async def send_mention_to_user(target_user_id: int, username: str, game_nickname: str):
mention = f'<a href="tg://user?id={target_user_id}">{game_nickname.strip()}</a>'
try:
message = await bot.send_message(
chat_id=target_user_id,
text=f"{mention}",
parse_mode="HTML",
)
logging.info(f"{target_user_id}, message_id: {message.message_id}")
except Exception as e:
logging.error(f"{target_user_id}: {e}")
```
- **Проверка возможности упоминания**: Если упоминание не работает корректно, это может быть связано с индивидуальными настройками пользователя. Убедитесь, что у обоих пользователей могут быть упомянуты в сообщениях от ботов.
С этими рекомендациями вы сможете добиться кликабельных упоминаний для обоих пользователей.