diff options
Diffstat (limited to 'ATRI/plugins/geoip.py')
-rw-r--r-- | ATRI/plugins/geoip.py | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/ATRI/plugins/geoip.py b/ATRI/plugins/geoip.py new file mode 100644 index 0000000..bbe8d60 --- /dev/null +++ b/ATRI/plugins/geoip.py @@ -0,0 +1,33 @@ +from nonebot.params import ArgStr +import geoip2.webservice +from ATRI.service import Service +from ATRI import conf + + +geoip = Service("GEOIP查询").document("search ip in MaxMind GEOIP databases") + +query_geoip = geoip.on_command("ip查询", "查询IP的地理位置", aliases={"IP查询", "查询IP"}) + +LANG = "zh-CN" + + +@query_geoip.got("ip_address", prompt="地址是?(支持ipv4/ipv6)") +async def _(ip_address: str = ArgStr()): + with geoip2.webservice.Client( + conf.GeoIP.account_id, conf.GeoIP.license_key, host="geolite.info" + ) as client: + await query_geoip.send("正在查询...请稍候") + response = client.city(ip_address) + country = response.country.names[LANG] + city = response.city.names[LANG] + org = response.traits.autonomous_system_organization + network = str(response.traits.network) + subdivision = "" + if subs := response.subdivisions: + subdivision = subs[0].names[LANG] + await query_geoip.finish( + f"IP: {ip_address}\n" + f"{country}{subdivision}{city}\n" + f"运营商{org}\n" + f"网段{network}" + ) |