mirror of
https://github.com/nonebot/nonebot2.git
synced 2025-09-11 14:36:58 +00:00
Add some commands
This commit is contained in:
60
commands/networktools.py
Normal file
60
commands/networktools.py
Normal file
@ -0,0 +1,60 @@
|
||||
import json
|
||||
|
||||
import requests
|
||||
from lxml import etree
|
||||
|
||||
from command import CommandRegistry
|
||||
from commands import core
|
||||
|
||||
__registry__ = cr = CommandRegistry()
|
||||
|
||||
|
||||
@cr.register('ip')
|
||||
def ip(args_text, ctx_msg):
|
||||
query = args_text.strip()
|
||||
if not query:
|
||||
core.echo('请指定要查询的 IP 或域名', ctx_msg)
|
||||
return
|
||||
|
||||
core.echo('正在查询,请稍等……', ctx_msg)
|
||||
|
||||
chinaz_url = 'http://ip.chinaz.com/%s'
|
||||
ipcn_url = 'http://ip.cn/?ip=%s'
|
||||
ipipnet_url = 'http://freeapi.ipip.net/%s'
|
||||
|
||||
found = False
|
||||
|
||||
# Get data from ChinaZ.com
|
||||
resp = requests.get(chinaz_url % query)
|
||||
if resp.status_code == 200:
|
||||
html = etree.HTML(resp.text)
|
||||
p_elems = html.xpath('//*[@id="leftinfo"]/div[3]/div[2]/p')
|
||||
if len(p_elems) > 1:
|
||||
p_elems = p_elems[1:]
|
||||
reply = 'ChinaZ:'
|
||||
for p_elem in p_elems:
|
||||
span_elems = p_elem.getchildren()
|
||||
reply += '\n' + span_elems[1].text.replace('.', '_') + ', ' + span_elems[3].text
|
||||
core.echo(reply, ctx_msg)
|
||||
found = True
|
||||
|
||||
# Get data from ip.cn
|
||||
resp = requests.get(ipcn_url % query, headers={'User-Agent': 'curl/7.47.0'})
|
||||
if resp.status_code == 200:
|
||||
# Example: 'IP:123.125.114.144 来自:北京市 联通'
|
||||
items = resp.text.strip().split(':')
|
||||
if len(items) == 3:
|
||||
reply = 'IP_CN:\n' + items[1].split(' ')[0].replace('.', '_') + ', ' + items[2]
|
||||
core.echo(reply, ctx_msg)
|
||||
found = True
|
||||
|
||||
# Get data from ipip.net
|
||||
resp = requests.get(ipipnet_url % query, headers={'User-Agent': 'curl/7.47.0'})
|
||||
if resp.status_code == 200 and resp.text.strip():
|
||||
# Example: '["中国","江苏","常州","","教育网"]'
|
||||
parts = json.loads(resp.text)
|
||||
reply = 'IPIP_NET\n' + query.replace('.', '_') + ' ' + ''.join(parts)
|
||||
core.echo(reply, ctx_msg)
|
||||
found = True
|
||||
|
||||
core.echo('以上' if found else '查询失败', ctx_msg)
|
Reference in New Issue
Block a user