Как определить местонахождение человека через Телеграмм

Telegram бот на Python, работа с геолокацией пользователя

Вот и третья часть, где мы продолжим создавать телеграм бота с помощью Python и библиотеки requests . Сегодня вы узнаете как работать с геолокацией пользователя, и как с помощью бесплатного «API геокодера» определить адрес по координатам.

Функционал бота будем выглядеть следующим образом: Пользователь нажимает кнопку в боте и отправляет свою геолокацию. А в ответ к нему бот пишет, в каком городе он находится.

Это часть добавлена по просьбе одно из читателей сайта ramziv.com 🙂

просьбе одно из читателей сайта ramziv.com

Код телеграм бота

Перед тем как продолжить писать код, предлагаю убрать для удобства весь лишний функционал, что мы добавили в прошлых частях. Оставить только настраиваемую клавиатуру и ответ на приветствие.

Прошу вас обратить внимание на функцию run , я добавил новое условие, так как бот прекращал работу ошибкой, если вместо текста отправить ему файл, картинку или геолокацию. Данный код будет работать на Python 3.8 и выше.

Определение Местоположения По Номеру Мобильного Телефона 2018

#https://ramziv.com/blog/29 import requests import time import json TOKEN = ‘ТОКЕН’ URL = ‘https://api.telegram.org/bot’ def get_updates(offset=0): result = requests.get(f’/getUpdates?offset=’).json() return result[‘result’] def send_message(chat_id, text): requests.get(f’/sendMessage?chat_id= «keyboard»: [[«Привет», «Hello»]], «resize_keyboard»: True, «one_time_keyboard»: True>data = requests.post(f’/sendMessage’, data=data) def check_message(chat_id, message): if message.lower() in [‘привет’, ‘hello’]: send_message(chat_id, ‘Привет :)’) else: reply_keyboard(chat_id, ‘Я не понимаю тебя :(‘) def run(): update_id = get_updates()[-1][‘update_id’] # Сохраняем ID последнего отправленного сообщения боту while True: time.sleep(2) messages = get_updates(update_id) # Получаем обновления for message in messages: # Если в обновлении есть ID больше чем ID последнего сообщения, значит пришло новое сообщение if update_id < message[‘update_id’]: update_id = message[‘update_id’]# Сохраняем ID последнего отправленного сообщения боту if (user_message := message[‘message’].get(‘text’)): # Проверим, есть ли текст в сообщении check_message(message[‘message’][‘chat’][‘id’], user_message) # Отвечаем if __name__ == ‘__main__’: run()

Геолокация пользователя

Что бы получить геолокацию пользователя, добавим в нашу клавиатуру новую кнопку с текстом «Где я нахожусь» и укажем ключ request_location со значением True .

#https://ramziv.com/blog/29 def reply_keyboard(chat_id, text): reply_markup =< «keyboard»: [[«Привет», «Hello»], []], «resize_keyboard»: True, «one_time_keyboard»: True> data = requests.post(f’/sendMessage’, data=data)

Так же добавим новое условие в функцию run , что бы проверить, что вместо текста в сообщение была отправлена геолокация. Если условие истина, выведем на экран сообщение с координатами пользователя.

КАК УЗНАТЬ МЕСТОПОЛОЖЕНИЕ ЧЕЛОВЕКА


#https://ramziv.com/blog/29 def run(): update_id = get_updates()[-1][‘update_id’] # Сохраняем ID последнего отправленного сообщения боту while True: time.sleep(2) messages = get_updates(update_id) # Получаем обновления for message in messages: # Если в обновлении есть ID больше чем ID последнего сообщения, значит пришло новое сообщение if update_id < message[‘update_id’]: update_id = message[‘update_id’]# Сохраняем ID последнего отправленного сообщения боту if (user_message := message[‘message’].get(‘text’)): # Проверим, есть ли текст в сообщении check_message(message[‘message’][‘chat’][‘id’], user_message) # Отвечаем if (user_location := message[‘message’].get(‘location’)): # Проверим, если ли location в сообщении print(user_location)

Еще по теме:  На каком языке программирования написан Telegram

Запустим, и проверим нашего бота.

Если нажать кнопку «Где я нахожусь», всплывает push сообщения, где телеграм спрашивает разрешение на отправку геолокации боту.

Телеграм бот на Python

Нажимаем «Ок», и видим что в консоли появилось сообщение с координатами пользователя.

Все работает, теперь можно переходить к следующему этапу, где мы научимся определять адрес по координатам с помощью обратного геокодирования.

API геокодер

просьбе одно из читателей сайта ramziv.com

LocationIQ API: позволяет определять координаты и получать сведения об объекте по его адресу (прямое геокодирование) и наоборот, определять адрес объекта по его координатам (обратное геокодирование). Сервис предлагает бесплатный план, где разрешено делать 5000 запросов в день, с 2 запросами в секунду.

Зарегистрируемся, и получим токен.

Проверим как работает API, откроем в новой вкладке ссылку заменив токен и ранее полученные координаты пользователя.

https://eu1.locationiq.com/v1/reverse.php?key=lon=lat=format=json’, headers=headers).json() return f’Твое местоположение: ‘

Почти все готово, осталось изменить функцию run , что бы бот отправил пользователю сообщение с его местоположением, если в боте нажали кнопку «Где я нахожусь».

#https://ramziv.com/blog/29 import requests import time import json TOKEN = ‘ТОКЕН’ URL = ‘https://api.telegram.org/bot’ def get_updates(offset=0): result = requests.get(f’/getUpdates?offset=’).json() return result[‘result’] def send_message(chat_id, text): requests.get(f’/sendMessage?chat_id= «keyboard»: [[«Привет», «Hello»], []], «resize_keyboard»: True, «one_time_keyboard»: True> data = requests.post(f’/sendMessage’, data=data) def check_message(chat_id, message): if message.lower() in [‘привет’, ‘hello’]: send_message(chat_id, ‘Привет :)’) else: reply_keyboard(chat_id, ‘Я не понимаю тебя :(‘) def geocoder(latitude, longitude): token = ‘pk.токен’ headers = address = requests.get(f’https://eu1.locationiq.com/v1/reverse.php?key=lon= message[‘update_id’]: update_id = message[‘update_id’]# Присваиваем ID последнего отправленного сообщения боту if (user_message := message[‘message’].get(‘text’)): # Проверим, есть ли текст в сообщении check_message(message[‘message’][‘chat’][‘id’], user_message) # Отвечаем if (user_location := message[‘message’].get(‘location’)): # Проверим, если ли location в сообщении latitude = user_location[‘latitude’] longitude = user_location[‘longitude’] send_message(message[‘message’][‘chat’][‘id’], geocoder(latitude, longitude)) if __name__ == ‘__main__’: run()

Проверим как работает.

Телеграм бот Python

Ответ с местоположением выглядит смешно :), но это сделано для демонстрации. Вы можете в функции geocoder заменить address.get(«display_name») на address[«address»].get(«town») и в ответ получать только название города.

Конец

Теперь вы знаете как работать с геолокацией пользователя. Надеюсь полученный знания помогут вам реализовать, что ни будь интересное в вашем проекте. Если у вас есть пожелания для следующей части, прошу отпишите мне в обратной связи.

Комментарии

ballout

13 марта 2023

Привет, огромное спасибо за предоставленный код! очень помогло! Хотел спросить, как сделать чтобы когда я нажимал на «позицию» мне предоставлялась информация где я нахожусь и когда я бы нажимал на кнопку «погода» то бот также запрашивал геопозицию и выдавал мне только погоду в моем городе, на этом месте у меня полетела логика, так как когда я все сделал то у меня при нажатии на кнопку присылается сразу два сообщения, код внизу, буду очень благодарен если кто поможет!

Рамис

14 марта 2023

ballout

15 марта 2023

Источник: ramziv.com

Как найти людей рядом в Телеграм

Некоторые функции в Telegram так и не взыскали особой популярности на территории СНГ из-за определенных обстоятельств, хотя на практике зачастую оказываются крайне полезными и удобными.

Еще по теме:  Изменение юзернейма в Телеграме оповещение

Сегодня мы рассмотрим именно такой случай, из инструкции вы узнаете, как найти людей рядом в телеграмме используя смартфон на Android и IOS, также мы выясним можно ли сделать это с помощью ПК и рассмотрим руководство по запрету отображения вас в подобных списках.

Что такое Геочаты

Фактически, данная функция позволяет найти любого пользователя или чат на расстоянии в несколько километров.

Единственное условие – каждый пользователь должен дать разрешение мессенджеру на отслеживание его местоположение, по умолчанию этот доступ для телеграм закрыт.

В отличие от США, где приложения с возможностью быстро познакомиться с рядом находящимся человеком нашло множество почитателей, в России на данный момент геочаты остались относительно незамеченными.

Как искать людей или группы рядом

Прежде чем приступить изучению пошагового руководства стоит отметить существенное различие версии мессенджера на разных устройствах. Несмотря на визуальное сходство некоторые элементы располагаются в совершено разных местах. Во избежание путаницы рекомендуем использовать инструкцию именно для устройства с вашей операционной системой.

Android

  1. Итак, для начала нам необходимо открыть категорию «Контакты». После запуска приложения необходимо тапнуть на 3 горизонтальные полосы в углу экрана.
  2. В появившемся списке выберете пункт «Контакты».
  3. Нажимаем на «Найти людей рядом».
  4. Мессенджер запросит разрешение на отслеживание вашего местонахождения, даём согласие и переходим в основное окно данной функции. Здесь можно написать людям, находящимся недалеко от вас или присоединиться с таким же сообществам.

Важно отметить, компания не передаёт данные о местонахождении третьим лицам и заботится о сохранности личных данных своих пользователей.

iPhone

  1. В отличие от Андроид, на IOS список контактов находится на нижней панели на основном экране. В данном случае переходить в дополнительный раздел нет необходимости, достаточно тапнуть на иконку человека в круге в левом нижнем углу экрана.
  2. Здесь потребуется нажать на первую строчку с надписью «Найти людей рядом».
  3. После разрешения на отслеживание местоположения появится список рядом находящихся людей. Если спуститься ниже, можно найти групп в пределах нескольких километров. Для вступления в любое сообщество достаточно нажать на его название и выбрать «Присоединиться» или «Подписаться».

На компьютере

К сожалению, реализовать данную возможность на desktop и web версии Telegram компания не смогла или не захотела.

Видимо это связано с затрудненной возможностью получить точную геопозицию человека на ПК. Это одно из существенных функциональных ограничений компьютерной версии мессенджера.

Как запретить отображать меня в поиске «Люди рядом»

Наиболее оптимальным способом отключения данной функции будет выключение геоданных на смартфоне. В руководстве ниже показана инструкция для Samsung Galaxy S6, однако она практически идентична и для других устройства.

Основной

  1. Переходим в «Люди рядом» и обращаем внимание на кнопку «Показать меня здесь». Если она есть, вас и так не видно в списке.
  2. В противном случае там должна располагаться кнопка «Не показывать меня». Нажав на неё, вы отключите ненужную вам функцию.
Еще по теме:  Как избавиться в Телеграмме от скучных печатает

Альтернативный

  1. Сделайте свайп сверху вниз для вызова шторки с дополнительным меню.
  2. В появившемся списке один раз нажмите на «Геоданные».

Если вы не нашли данного пункта, перейдите в настройки смартфона и найдите соответствующий пункт меню.

Теперь вы знаете как найти людей рядом в телеграмме. Для активных и общительных пользователей данная функция позволяет расширить круг знакомств и найти новых друзей. Через геопозицию вы можете найти полезные чаты, позволяющие организовать совместный досуг или решить давно надоевшую проблему. При подобном поиске можно найти отдельную группу жильцов дома, что, несомненно, принесет пользу в определенных ситуациях, когда будет необходимо решить общедомовой вопрос.

Источник: telegramfag.ru

Баг? Нет. Telegram раскрывает точное местоположение своих пользователей

В одном из обновлений Telegram, появилась функция «Люди поблизости», с помощью которой пользователи могут найти других пользователей поблизости для создания совместного чата.

Используя служебную программу, которая имитирует местоположение устройства Android, исследователь смог определить расстояние до людей из трех разных точек, а затем использовать трилатерацию, чтобы точно определить, где они находятся. Исследователь смог получить точные домашние адреса с помощью данного метода, что технически не сложно.

Эксперт сообщил об этой проблеме разработчикам в надежде получить награду за обнаруженный баг, но ему отказали, сообщив:

«Пользователи в разделе «Люди поблизости» намеренно сообщают свое местоположение, и эта функция по умолчанию отключена. Предполагается, что определение точного местоположения возможно при определенных условиях».

«Если вы активируете функцию отображения своего местоположения на карте, вы публикуете свой домашний адрес в Интернете. Многие пользователи не знают об этом, когда включают данную функцию», – говорит исследователь.

Он также считает, что существует широко распространенная проблема, когда злоумышленники подделывают свое местоположение, присоединяются к местным группам и рассылают пользователям спам или используют другие виды мошенничества, что, по его утверждению, свидетельствует о плохой безопасности приложений.

В часто задаваемых вопросах Telegram утверждает, что он «более безопасен, чем другие популярные мессенджеры, такие как WhatsApp и Line», благодаря использованию своих протоколов безопасности, но не учитывает риски со стороны злоумышленников.

Подобные проблемы с местоположением возникали и раньше с другими приложениями. Исследователь обнаружил ту же уязвимость в приложении для обмена сообщениями Line, которое, по его словам, «они исправили, добавив случайное число в пункт назначения пользователя».

Telegram мог бы стать лучше. Редакция The Register установила Telegram на устройство Android и обнаружила, что включение функции «Люди поблизости» и выбор «Показать ваш профиль» отображает предупреждение о том, что «находящиеся поблизости пользователи смогут просматривать ваш профиль и отправлять вам сообщения. Это может помочь вам найти новых друзей, но также может привлечь чрезмерное внимание «.

В нем не сообщается, что незнакомцы с небольшим количеством “продвинутых программ” могут легко узнать, где вы живете. Ни в вышеупомянутом FAQ, ни даже в техническом FAQ «для технически подкованных» об этом не говорится. Основное внимание, как и раньше, уделяется использованию шифрования.

Источник: www.comss.ru

Рейтинг
( Пока оценок нет )
Загрузка ...