Refactor bugtracker
This commit is contained in:
parent
75c386750b
commit
f49cfe1751
4 changed files with 109 additions and 4 deletions
8
core/utils.py
Normal file
8
core/utils.py
Normal file
|
@ -0,0 +1,8 @@
|
|||
import aiohttp
|
||||
|
||||
|
||||
async def get_url(url: str):
|
||||
async with aiohttp.ClientSession() as session:
|
||||
async with session.get(url, timeout=aiohttp.ClientTimeout(total=20)) as req:
|
||||
text = await req.text()
|
||||
return text
|
|
@ -4,7 +4,7 @@ from graia.application import MessageChain
|
|||
from graia.application.message.elements.internal import Plain
|
||||
|
||||
from core.template import sendMessage
|
||||
from .bugtracker import bug
|
||||
from .bugtracker_new import bugtracker_get
|
||||
|
||||
|
||||
async def bugtracker(kwargs: dict):
|
||||
|
@ -12,7 +12,7 @@ async def bugtracker(kwargs: dict):
|
|||
msg = re.sub('bug ', '', msg)
|
||||
q = re.match(r'(.*)\-(.*)', msg)
|
||||
if q:
|
||||
result = await bug(q.group(1) + '-' + q.group(2))
|
||||
result = await bugtracker_get(q.group(1) + '-' + q.group(2))
|
||||
msgchain = MessageChain.create([Plain(result)])
|
||||
await sendMessage(kwargs, msgchain)
|
||||
|
||||
|
@ -26,7 +26,7 @@ async def regex_bugtracker(kwargs: dict):
|
|||
msg = re.sub('bug ', '', msg)
|
||||
q = re.match(r'(.*)\-(.*)', msg)
|
||||
if q:
|
||||
result = await bug(q.group(1) + '-' + q.group(2))
|
||||
result = await bugtracker_get(q.group(1) + '-' + q.group(2))
|
||||
msgchain = MessageChain.create([Plain(result)])
|
||||
await sendMessage(kwargs, msgchain)
|
||||
findlink = re.findall(r'(https://bugs.mojang.com/browse/.*?-\d*)', msg)
|
||||
|
@ -34,7 +34,7 @@ async def regex_bugtracker(kwargs: dict):
|
|||
print(link)
|
||||
matchbug = re.match(r'https://bugs.mojang.com/browse/(.*?-\d*)', link)
|
||||
if matchbug:
|
||||
await sendMessage(kwargs, await bug(matchbug.group(1)))
|
||||
await sendMessage(kwargs, await bugtracker_get(matchbug.group(1)))
|
||||
|
||||
|
||||
command = {'bug': bugtracker}
|
||||
|
|
97
modules/bugtracker/bugtracker_new.py
Normal file
97
modules/bugtracker/bugtracker_new.py
Normal file
|
@ -0,0 +1,97 @@
|
|||
import json
|
||||
from xml.etree import ElementTree
|
||||
|
||||
from core.utils import get_url
|
||||
|
||||
|
||||
async def bugtracker_get(MojiraID):
|
||||
Title = False
|
||||
Type = False
|
||||
TStatus = False
|
||||
Project = False
|
||||
Resolution = False
|
||||
Priority = False
|
||||
Version = False
|
||||
Link = False
|
||||
FixVersion = False
|
||||
json_url = 'https://bugs.mojang.com/rest/api/2/issue/' + str.upper(MojiraID)
|
||||
get_json = await get_url(json_url)
|
||||
if get_json:
|
||||
load_json = json.loads(get_json)
|
||||
errmsg = ''
|
||||
if 'errorMessages' in load_json:
|
||||
for msg in load_json['errorMessages']:
|
||||
errmsg += '\n' + msg
|
||||
else:
|
||||
if 'key' in load_json:
|
||||
Title = f'[{load_json["key"]}] '
|
||||
if 'fields' in load_json:
|
||||
fields = load_json['fields']
|
||||
if 'summary' in fields:
|
||||
Title = Title + fields['summary']
|
||||
if 'issuetype' in fields:
|
||||
Type = fields['issuetype']['name']
|
||||
if 'status' in fields:
|
||||
TStatus = fields['status']['name']
|
||||
if 'project' in fields:
|
||||
Project = fields['project']['name']
|
||||
if 'resolution' in fields:
|
||||
if fields['resolution'] is not None:
|
||||
Resolution = fields['resolution']['name']
|
||||
else:
|
||||
Resolution = 'Unresolved'
|
||||
if 'versions' in load_json['fields']:
|
||||
Versions = fields['versions']
|
||||
verlist = []
|
||||
for item in Versions[:]:
|
||||
verlist.append(item['name'])
|
||||
if verlist[0] == verlist[-1]:
|
||||
Version = "Version: " + verlist[0]
|
||||
else:
|
||||
Version = "Versions: " + verlist[0] + " ~ " + verlist[-1]
|
||||
Link = 'https://bugs.mojang.com/browse/' + str.upper(MojiraID)
|
||||
if 'customfield_12200' in fields:
|
||||
if fields['customfield_12200']:
|
||||
Priority = "Mojang Priority: " + fields['customfield_12200']['value']
|
||||
if 'priority' in fields:
|
||||
if fields['priority']:
|
||||
Priority = "Priority: " + fields['priority']['name']
|
||||
if 'fixVersions' in fields:
|
||||
if TStatus == 'Resolved':
|
||||
if fields['fixVersions']:
|
||||
print(fields['fixVersions'])
|
||||
FixVersion = fields['fixVersions'][0]['name']
|
||||
else:
|
||||
return '发生错误:获取Json失败。'
|
||||
msglist = []
|
||||
if errmsg != '':
|
||||
msglist.append(errmsg)
|
||||
else:
|
||||
if Title:
|
||||
msglist.append(Title)
|
||||
if Type:
|
||||
Type = 'Type: ' + Type
|
||||
if TStatus in ['Open', 'Resolved']:
|
||||
Type = f'{Type} | Status: {TStatus}'
|
||||
msglist.append(Type)
|
||||
if Project:
|
||||
Project = 'Project: ' + Project
|
||||
msglist.append(Project)
|
||||
if TStatus:
|
||||
if TStatus not in ['Open', 'Resolved']:
|
||||
TStatus = 'Status: ' + TStatus
|
||||
msglist.append(TStatus)
|
||||
if Priority:
|
||||
msglist.append(Priority)
|
||||
if Resolution:
|
||||
Resolution = "Resolution: " + Resolution + ('\nFixed Version: ' + FixVersion if FixVersion else '')
|
||||
msglist.append(Resolution)
|
||||
if Version:
|
||||
msglist.append(Version)
|
||||
if Link:
|
||||
msglist.append(Link)
|
||||
msg = '\n'.join(msglist)
|
||||
return msg
|
||||
|
||||
|
||||
|
Reference in a new issue