# █▀▀ ▄▀█   █▀▄▀█ █▀█ █▀▄ █▀ # █▀░ █▀█   █░▀░█ █▄█ █▄▀ ▄█ # https://t.me/famods # 🔒 Licensed under the GNU AGPLv3 # 🌐 https://www.gnu.org/licenses/agpl-3.0.html # --------------------------------------------------------------------------------- # Name: InfoIP # Description: Информация об IP адресе # meta developer: @FAmods # meta banner: https://github.com/FajoX1/FAmods/blob/main/assets/banners/infoip.png?raw=true # requires: ipinfo # --------------------------------------------------------------------------------- import ipinfo import asyncio import logging from .. import loader, utils logger = logging.getLogger(__name__) @loader.tds class InfoIP(loader.Module): """Информация об IP адресе""" strings = { "name": "InfoIP", "no_ip": " Должно быть .ipi [айпи]", "no_token": " Нету токена! Поставь его в {}cfg InfoIP", "invalid_token": "😕 Неверный токен", "invalid_ip": "😕 Неверный IP", "searching_info": "🔄 Получаю информацию...", } def __init__(self): self.config = loader.ModuleConfig( loader.ConfigValue( "api_token", None, lambda: "Токен для работы с API. Взять можно на сайте https://ipinfo.io/account/token", validator=loader.validators.Hidden(loader.validators.String()), ), ) async def client_ready(self, client, db): self.db = db self._client = client @loader.command() async def ipi(self, message): """Информация об IP""" ip = utils.get_args_raw(message) if not ip: return await utils.answer(message, self.strings["no_ip"]) if not self.config["api_token"]: return await utils.answer(message, self.strings["no_token"].format(self.get_prefix())) await utils.answer(message, self.strings['searching_info']) access_token = self.config["api_token"] handler = ipinfo.getHandler(access_token) try: info = handler.getDetails(ip) except ipinfo.error.APIError: return await utils.answer(message, self.strings['invalid_token']) except ValueError: return await utils.answer(message, self.strings['invalid_ip']) return await utils.answer(message, f""" 🌐 Информация об IP 📟 IP: {info.ip} ⛰ Регион: {info.region} 🏙 Город: {info.city} 🗺 Страна: {info.country_flag['emoji']} {info.country_name} ({info.country}) 🗺 Континент: {info.continent['name']} ({info.continent['code']}) 🧾 Пост-код: {info.postal} 🏛 Организация: {info.org} 🪙 Валюта: {info.country_currency['code']} ({info.country_currency['symbol']}) 🏕 Место: {info.loc} 🕒 Часовой пояс: {info.timezone} """)