Как извлечь расстояние из объекта GetLocatedRequest?

Как можно модифицировать код бота, чтобы он фильтровал пользователей, выводя только тех, чье расстояние равно введенному значению 1000 м, а не различные значения от 500 м до 2 км, как сейчас происходит?
  • 6 августа 2024 г. 1:03
Ответы на вопрос 3
Для извлечения расстояния из объекта GetLocatedRequest нужно обратиться к соответствующему полю в объекте. Например, если это поле называется "distance", то можно обратиться к нему следующим образом:

```java
int distance = getLocatedRequest.getDistance();
```

Для модификации кода бота и фильтрации пользователей по расстоянию, можно добавить дополнительное условие в код, которое будет проверять равенство расстояния указанному значению (в данном случае 1000 м). Например:

```java
for(User user : users) {
    if(user.getDistance() == 1000) {
        System.out.println(user.getName() + " is located at a distance of 1000m");
    }
}
```

Это изменение в цикле позволит выводить только тех пользователей, чье расстояние равно 1000 метров. Все остальные пользователи будут проигнорированы.
for user in users.updates[0].peers:
        print(user)
        if hasattr(user, 'peer') and hasattr(user.peer, 'user_id'):
            print(user.distance)
Простой способ: 
for user in users.updates[0].peers:
        if hasattr(user, 'peer') and hasattr(user.peer, 'user_id'):
        if user.peer.distance != 1000: pass
        else:
            async with TelegramClient(f'+254772755154.session', API_ID, API_HASH) as client:
                await client.connect()
                full_user = await client.get_entity(user.peer.user_id)
                await bot.send_message(message.chat.id,
                                       f"User ID: {full_user.id}, First Name: {full_user.first_name}, username @{full_user.username}, phone {full_user.phone}")

Можно еще собирать в array если хотите.
Похожие вопросы