Archived
1
0
Fork 0
This repository has been archived on 2024-04-26. You can view files and clone it, but cannot push or open issues or pull requests.
akari-bot/modules/whois/__init__.py

55 lines
1.6 KiB
Python
Raw Normal View History

2023-05-25 05:31:42 +00:00
import ipaddress
2023-05-19 02:00:30 +00:00
import re
2023-01-28 05:53:11 +00:00
2023-02-05 14:33:33 +00:00
from core.builtins import Bot
2023-03-04 08:51:56 +00:00
from core.component import module
2023-01-19 03:29:50 +00:00
from .ip import check_ip, format_ip
2023-05-27 03:10:09 +00:00
# from .domain import check_domain, format_domain
2023-01-19 03:29:50 +00:00
2023-05-25 05:04:40 +00:00
w = module('whois', desc='{whois.help.desc}',
2023-05-25 15:04:48 +00:00
alias={'ip': 'whois ip'},
2023-05-25 05:04:40 +00:00
developers=['Dianliang233'])
2023-01-19 03:29:50 +00:00
@w.handle('<ip_or_domain>')
2023-02-05 14:33:33 +00:00
async def _(msg: Bot.MessageSession):
2023-01-19 03:29:50 +00:00
query = msg.parsed_msg['<ip_or_domain>']
query_type = ip_or_domain(query)
if query_type == 'ip':
res = await check_ip(query)
2023-03-15 14:09:57 +00:00
await msg.finish(await format_ip(msg, res))
2023-01-19 06:39:06 +00:00
# elif query_type == 'domain':
# res = await check_domain(query)
2023-05-25 15:01:43 +00:00
# await msg.finish(await format_domain(msg, res))
2023-05-19 02:02:31 +00:00
else:
await msg.finish(msg.locale.t("whois.message.unknown"))
2023-01-19 03:29:50 +00:00
def ip_or_domain(string: str):
2023-05-25 05:30:18 +00:00
domain_regex = r'^https?://[-a-zA-Z0-9@:%._+~#=]{2,256}\.[a-z]{2,4}\b[-a-zA-Z0-9@:%_+.~#?&/=]*$'
try:
ipaddress.ip_address(string)
2023-01-19 03:29:50 +00:00
return 'ip'
2023-05-25 05:30:18 +00:00
except ValueError:
if re.match(domain_regex, string):
2023-05-25 15:01:43 +00:00
return 'domain'
@w.handle('ip <ip>')
async def _(msg: Bot.MessageSession):
query = msg.parsed_msg['<ip>']
2023-05-27 03:05:30 +00:00
try:
ipaddress.ip_address(query)
except:
2023-05-27 03:20:04 +00:00
await msg.finish(msg.locale.t('whois.message.ip.error.unknown'))
2023-05-27 03:11:49 +00:00
res = await check_ip(query)
2023-05-25 15:01:43 +00:00
await msg.finish(await format_ip(msg, res))
2023-05-27 03:10:09 +00:00
# @w.handle('domain <domain>', required_superuser=True)
# async def _(msg: Bot.MessageSession):
# query = msg.parsed_msg['<domain>']
# res = await check_domain(query)
# await msg.finish(await format_domain(msg, res))