Geo update WIP

This commit is contained in:
Profitroll
2022-12-28 18:56:13 +01:00
parent e59aa98fd5
commit 22011829a5
6 changed files with 65 additions and 14 deletions

View File

@@ -4,25 +4,35 @@ from pyrogram.types import Message
from pyrogram.client import Client
from classes.holo_user import HoloUser
from modules import custom_filters
from modules.utils import configGet, should_quote
from modules.utils import configGet, locale, should_quote, find_location
from modules.database import col_applications
from classes.errors.geo import PlaceNotFoundError
# Nearby command ===============================================================================================================
@app.on_message(~ filters.scheduled & (custom_filters.allowed | custom_filters.admin) & (filters.private | (filters.chat(configGet("admin_group")) | filters.chat(configGet("destination_group")))) & filters.command(["nearby"], prefixes=["/"]))
async def cmd_nearby(app: Client, msg: Message):
if len(msg.command) < 1:
holo_user = HoloUser(msg.from_user)
if len(msg.command) < 2:
application = col_applications.find_one({"user": msg.from_user})
if application is None:
await msg.reply_text("You have no application")
await msg.reply_text(locale("nearby_user_empty", "message", locale=holo_user.locale))
return
location = application["application"]["3"]["loc"][0], application["application"]["3"]["loc"][1]
else:
# find location
location = "result"
try:
location_coordinates = find_location(" ".join(msg.command[2:]))
location = location_coordinates["lng"], location_coordinates["lat"]
except PlaceNotFoundError:
await msg.reply_text(locale("nearby_invalid", "message", locale=holo_user.locale), quote=should_quote(msg))
return
except Exception as exp:
await msg.reply_text(locale("nearby_error", "message", locale=holo_user.locale), quote=should_quote(msg))
return
output = []
users_nearby = col_applications.find( {"application": {"loc": { "$within": { "$center": [[location], 5] } }}} )
users_nearby = col_applications.find( {"application.loc": {"$near": { "$geometry": { "type": "Point", "coordinates": location }, "$maxDistance": 30000 }} } )
for user in users_nearby:
output.append(user)