summaryrefslogtreecommitdiff
path: root/ATRI/plugins
diff options
context:
space:
mode:
authorRuoqi Yang <[email protected]>2022-11-10 12:29:10 +0800
committerRuoqi Yang <[email protected]>2022-11-12 19:20:21 +0800
commitb251cd28e24c08e9170a11535fc121441b324d4f (patch)
tree7f28ee5638dbaf7ceda0be38dc684b75f14d4e96 /ATRI/plugins
parent8aba97ec5c4d9dd001e01427defd9bbd6bdb47cf (diff)
downloadATRI-b251cd28e24c08e9170a11535fc121441b324d4f.tar.gz
ATRI-b251cd28e24c08e9170a11535fc121441b324d4f.tar.bz2
ATRI-b251cd28e24c08e9170a11535fc121441b324d4f.zip
add plugin: geoip loopup
Diffstat (limited to 'ATRI/plugins')
-rw-r--r--ATRI/plugins/geoip.py28
1 files changed, 28 insertions, 0 deletions
diff --git a/ATRI/plugins/geoip.py b/ATRI/plugins/geoip.py
new file mode 100644
index 0000000..a6521c2
--- /dev/null
+++ b/ATRI/plugins/geoip.py
@@ -0,0 +1,28 @@
+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:
+ response = client.city(ip_address)
+ country = response.country.names[LANG]
+ city = response.city.names[LANG]
+ subdivision = ""
+ if response.subdivisions:
+ subdivision = response.subdivisions[0].names[LANG]
+ await query_geoip.finish(
+ f"IP: {ip_address}\n"
+ f"{country}{subdivision}{city}"
+ )