iShotaBot/modules/ip.py
2022-07-25 18:04:36 +08:00

73 lines
3.2 KiB
Python

from urllib.parse import urlparse
from httpx import get
from pyrogram import Client, filters
from pyrogram.types import Message
from defs.ip import ip_info
from init import user_me
@Client.on_message(filters.incoming & filters.group &
filters.command(["ip", f"ip@{user_me.username}"]))
async def ip_command(_: Client, message: Message):
msg = await message.reply('正在查询中...')
rep_text = ''
reply = message.reply_to_message
if reply:
if reply.entities:
for num in range(0, len(reply.entities)):
url = reply.text[
reply.entities[num].offset:reply.entities[num].offset + reply.entities[num].length]
url = urlparse(url)
if url.hostname or url.path:
if url.hostname:
url = url.hostname
else:
url = url.path
ipinfo_json = get(
"http://ip-api.com/json/" + url + "?fields=status,message,country,regionName,city,"
"lat,lon,isp,"
"org,as,mobile,proxy,hosting,query").json()
if ipinfo_json['status'] == 'fail':
pass
elif ipinfo_json['status'] == 'success':
rep_text = ip_info(url, ipinfo_json)
text = ''
if message.entities:
for num in range(0, len(message.entities)):
url = message.text[
message.entities[num].offset:message.entities[num].offset + message.entities[num].length]
url = urlparse(url)
if url.hostname or url.path:
if url.hostname:
url = url.hostname
else:
url = url.path
ipinfo_json = get(
"http://ip-api.com/json/" + url + "?fields=status,message,country,regionName,city,lat,"
"lon,isp,"
"org,as,mobile,proxy,hosting,query").json()
if ipinfo_json['status'] == 'fail':
pass
elif ipinfo_json['status'] == 'success':
text = ip_info(url, ipinfo_json)
if text == '':
url = message.text[4:]
if not url == '':
ipinfo_json = get(
"http://ip-api.com/json/" + url + "?fields=status,message,country,regionName,city,lat,"
"lon,isp,"
"org,as,mobile,proxy,hosting,query").json()
if ipinfo_json['status'] == 'fail':
pass
elif ipinfo_json['status'] == 'success':
text = ip_info(url, ipinfo_json)
if rep_text == '' and text == '':
await msg.edit('没有找到要查询的 ip/域名 ...')
elif not rep_text == '' and not text == '':
await msg.edit(f'{rep_text}\n================\n{text}')
else:
await msg.edit(f'{rep_text}{text}')