فهرست منبع

feat: ip lookup module (#200)

* add: ip lookup module

* added timeout for http request
W4RR10R 4 سال پیش
والد
کامیت
d5e07023c8
1فایلهای تغییر یافته به همراه41 افزوده شده و 0 حذف شده
  1. 41 0
      wbb/modules/iplookup.py

+ 41 - 0
wbb/modules/iplookup.py

@@ -0,0 +1,41 @@
+import asyncio
+from wbb import app
+from pyrogram import filters
+from pyrogram.types import Message
+from wbb.utils import http
+
+
+# For /help menu
+__MODULE__ = "iplookup"
+__HELP__ = """
+/iplookup [ip address] to get the details about that ip
+"""
+
+
+@app.on_message(~filters.edited & filters.command("iplookup"))
+async def ip_lookup(_, message: Message):
+    if len(message.command) < 2:
+        return await message.reply_text("ip address is missing")
+    ip_address = message.command[1]
+    msg = await message.reply_text("checking ip address...")
+    try:
+        res = await http.get(f"https://ipinfo.io/{ip_address}/json", timeout=5)
+    except asyncio.TimeoutError:
+        return await message.reply_text("request timeout")
+    except Exception as e:
+        return await message.reply_text(f"ERROR: `{e}`")
+    hostname = res.get("hostname", "N/A")
+    city = res.get("city", "N/A")
+    region = res.get("region", "N/A")
+    country = res.get("country", "N/A")
+    location = res.get("loc", "N/A")
+    org = res.get("org", "N/A")
+    await msg.edit((
+        f"**Details of `{ip_address}`**\n\n"
+        f"HostName: `{hostname}`\n"
+        f"City: `{city}`\n"
+        f"Region: `{region}`\n"
+        f"Country: `{country}`\n"
+        f"Org: `{org}`\n"
+        f"Map: https://www.google.fr/maps?q={location}\n"
+    ), disable_web_page_preview=True)