__version__ = (1, 0, 0)
# meta developer: @RUIS_VlP
from .. import loader, utils
import aiohttp
from telethon.tl.types import InputGeoPoint, InputMediaGeoPoint
from urllib.parse import quote
async def get_coordinates(query: str):
base_url = "https://nominatim.openstreetmap.org/search"
encoded_query = quote(query)
url = f"{base_url}?q={encoded_query}&format=json"
headers = {
"User-Agent": "Heroku-GeoMod/1.0 (https://t.me/RUIS_VlP)"
}
async with aiohttp.ClientSession() as session:
async with session.get(url, headers=headers) as resp:
if resp.status == 200:
data = await resp.json()
if data:
lat = float(data[0]["lat"])
lon = float(data[0]["lon"])
return [lat, lon]
return None
@loader.tds
class GeoMod(loader.Module):
"""Модуль для отправки геолокации с указанным адресом или координатами"""
strings = {
"name": "GeoMod",
}
@loader.command()
async def sendgeo(self, message):
"""<адрес> - отправить геолокацию с указанным адресом или координатами"""
args = utils.get_args_raw(message)
if not args:
await utils.answer(
message,
"Укажите адрес, например: .sendgeo Москва, Манежная улица, 2
"
)
return
coords = await get_coordinates(args)
if coords:
await message.client.send_file(
message.chat_id,
InputMediaGeoPoint(
geo_point=InputGeoPoint(
lat=coords[0],
long=coords[1],
)
)
)
await message.delete()
else:
await utils.answer(message, "Координаты не найдены.")