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/wiki/__init__.py

181 lines
8.3 KiB
Python
Raw Normal View History

2020-08-07 06:19:34 +00:00
import asyncio
2020-08-12 16:01:34 +00:00
import re
2020-08-07 06:19:34 +00:00
import traceback
2020-08-12 16:01:34 +00:00
2020-08-18 13:12:38 +00:00
from modules.help import wikihelp
from modules.interwikilist import iwlist, iwlink
2020-09-05 09:51:43 +00:00
from .wikilib import wiki
2020-08-12 16:01:34 +00:00
2020-09-06 08:17:11 +00:00
langcode = ['ab', 'aa', 'af', 'sq', 'am', 'ar', 'hy', 'as', 'ay', 'az', 'ba', 'eu', 'bn', 'dz', 'bh', 'bi', 'br', 'bg',
'my', 'be', 'km', 'ca', 'zh', 'co', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'et', 'fo', 'fa', 'fj', 'fi', 'fr',
'fy', 'gl', 'gd', 'gv', 'ka', 'de', 'el', 'kl', 'gn', 'gu', 'ha', 'he', 'iw', 'hi', 'hu', 'is', 'id', 'in',
'ia', 'ie', 'iu', 'ik', 'ga', 'it', 'ja', 'jv', 'kn', 'ks', 'kk', 'rw', 'ky', 'rn', 'ko', 'ku', 'lo', 'la',
'lv', 'li', 'ln', 'lt', 'mk', 'mg', 'ms', 'ml', 'mt', 'mi', 'mr', 'mo', 'mn', 'na', 'ne', 'no', 'oc', 'or',
'om', 'ps', 'pl', 'pt', 'pa', 'qu', 'rm', 'ro', 'ru', 'sm', 'sg', 'sa', 'sr', 'sh', 'st', 'tn', 'sn', 'sd',
'si', 'ss', 'sk', 'sl', 'so', 'es', 'su', 'sw', 'sv', 'tl', 'tg', 'ta', 'tt', 'te', 'th', 'to', 'ts', 'tr',
'tk', 'tw', 'ug', 'uk', 'ur', 'uz', 'vi', 'vo', 'cy', 'wo', 'xh', 'yi', 'yo', 'zu']
2020-08-12 16:01:34 +00:00
2020-09-05 09:51:43 +00:00
async def wmg(message, group=0):
2020-08-14 07:43:26 +00:00
if message.find(' -h') != -1:
2020-08-20 10:30:08 +00:00
return wikihelp()
2020-08-07 06:19:34 +00:00
else:
2020-08-14 07:43:26 +00:00
lower = re.sub(r'^Wiki', 'wiki', message)
2020-08-07 06:19:34 +00:00
try:
2020-08-14 07:43:26 +00:00
matchmsg = re.match(r'^wiki-(.*?) (.*)', lower)
interwiki = matchmsg.group(1)
print(interwiki)
if interwiki in iwlist():
2020-09-05 09:51:43 +00:00
return await wiki(iwlink(interwiki), matchmsg.group(2))
2020-08-07 06:19:34 +00:00
else:
2020-08-30 08:26:54 +00:00
return '未知语言,请使用~wiki -h查看帮助。'
2020-08-21 12:40:05 +00:00
except Exception:
2020-08-14 07:43:26 +00:00
matchmsg = re.match(r'^wiki (.*)', lower)
2020-08-07 06:19:34 +00:00
try:
2020-08-14 07:43:26 +00:00
matchsite = re.match(r'~(.*?) (.*)', matchmsg.group(1))
2020-08-30 08:26:54 +00:00
wikiurl = 'https://' + matchsite.group(1) + '.gamepedia.com/'
2020-09-06 08:17:11 +00:00
return await wiki(wikiurl, matchsite.group(2), 'gp:' + matchsite.group(1))
2020-08-21 12:40:05 +00:00
except Exception:
2020-08-07 06:19:34 +00:00
try:
if group == 250500369 or group == 676942198:
2020-08-14 07:43:26 +00:00
pagename = matchmsg.group(1)
wikiurl = 'https://wiki.arcaea.cn/'
2020-09-05 09:59:54 +00:00
return await wiki(wikiurl, pagename, 'arc')
2020-08-07 06:19:34 +00:00
else:
2020-08-14 07:43:26 +00:00
matchinterwiki = re.match(r'(.*?):(.*)', matchmsg.group(1))
pagename = matchinterwiki.group(2)
interwiki = str.lower(matchinterwiki.group(1))
2020-09-06 08:17:11 +00:00
if interwiki == 'gp':
2020-08-30 08:26:54 +00:00
try:
matchsitename = re.match(r'(.*?):(.*)', pagename)
wikiurl = 'https://' + matchsitename.group(1) + '.gamepedia.com/'
2020-09-06 08:17:11 +00:00
return await wiki(wikiurl, matchsitename.group(2), 'gp:' + matchsitename.group(1))
except Exception as e:
traceback.print_exc()
return '发生错误:' + str(e)
if interwiki == 'fd':
try:
matchsitename = re.match(r'(.*?):(.*)', pagename)
try:
matchlangcode = re.match(r'(.*?):(.*)', matchsitename.group(2))
if matchlangcode.group(1) in langcode:
wikiurl = f'https://{matchsitename.group(1)}.fandom.com/{matchlangcode.group(1)}/'
pagename = matchlangcode.group(2)
interwiki = matchlangcode.group(1)
else:
wikiurl = f'https://{matchsitename.group(1)}.fandom.com/'
pagename = matchsitename.group(2)
interwiki = ''
except Exception:
wikiurl = f'https://{matchsitename.group(1)}.fandom.com/'
pagename = matchsitename.group(2)
interwiki = ''
return await wiki(wikiurl, pagename, 'fd:' + interwiki)
2020-08-30 08:26:54 +00:00
except Exception as e:
traceback.print_exc()
2020-09-05 09:59:54 +00:00
return '发生错误:' + str(e)
2020-08-14 07:43:26 +00:00
if interwiki in iwlist():
2020-08-07 06:19:34 +00:00
try:
2020-08-14 07:43:26 +00:00
wikiurl = iwlink(interwiki)
2020-09-05 09:59:54 +00:00
return await wiki(wikiurl, pagename, interwiki)
2020-08-07 06:19:34 +00:00
except Exception as e:
traceback.print_exc()
2020-09-05 09:59:54 +00:00
return '发生错误:' + str(e)
2020-08-14 07:43:26 +00:00
elif interwiki == 'Wikipedia' or interwiki == 'wikipedia':
2020-09-05 09:59:54 +00:00
return '暂不支持Wikipedia查询。'
2020-08-07 06:19:34 +00:00
else:
try:
2020-08-14 07:43:26 +00:00
wikiurl = 'https://minecraft.gamepedia.com/'
2020-09-05 09:59:54 +00:00
return await wiki(wikiurl, pagename, '')
2020-08-07 06:19:34 +00:00
except Exception as e:
traceback.print_exc()
2020-09-05 09:59:54 +00:00
return '发生错误:' + str(e)
2020-08-07 06:19:34 +00:00
except Exception:
2020-09-05 09:59:54 +00:00
return await wiki('en', matchmsg.group(1))
2020-08-07 06:19:34 +00:00
2020-08-14 07:43:26 +00:00
async def im(message):
2020-08-07 06:19:34 +00:00
try:
2020-08-14 07:43:26 +00:00
pipe = re.match(r'(.*?)\|.*', message)
message = pipe.group(1)
2020-08-07 06:19:34 +00:00
except Exception:
2020-08-14 07:43:26 +00:00
pass
message = re.sub(r'^:', '', message)
2020-08-07 06:19:34 +00:00
try:
2020-08-14 07:43:26 +00:00
matchinterwiki = re.match(r'(.*?):(.*)', message)
interwiki = matchinterwiki.group(1)
interwiki = str.lower(interwiki)
2020-08-30 08:26:54 +00:00
pagename = matchinterwiki.group(2)
2020-08-14 07:43:26 +00:00
if interwiki in iwlist():
url = iwlink(interwiki)
2020-09-06 08:17:11 +00:00
elif interwiki == 'gp':
2020-08-30 08:26:54 +00:00
wikiname = re.match(r'(.*?):(.*)', pagename)
url = 'https://' + wikiname.group(1) + '.gamepedia.com/'
pagename = wikiname.group(2)
2020-09-06 08:17:11 +00:00
interwiki = 'gp:' + wikiname.group(1)
elif interwiki == 'fd':
matchsitename = re.match(r'(.*?):(.*)', pagename)
try:
matchlangcode = re.match(r'(.*?):(.*)', matchsitename.group(2))
if matchlangcode.group(1) in langcode:
url = f'https://{matchsitename.group(1)}.fandom.com/{matchlangcode.group(1)}/'
pagename = matchlangcode.group(2)
2020-09-06 08:18:36 +00:00
interwiki = 'fd:' + matchlangcode.group(1)
2020-09-06 08:17:11 +00:00
else:
url = f'https://{matchsitename.group(1)}.fandom.com/'
pagename = matchsitename.group(2)
2020-09-06 08:18:36 +00:00
interwiki = 'fd:'
2020-09-06 08:17:11 +00:00
except Exception:
url = f'https://{matchsitename.group(1)}.fandom.com/'
pagename = matchsitename.group(2)
2020-09-06 08:18:36 +00:00
interwiki = 'fd:'
2020-08-07 06:19:34 +00:00
else:
2020-08-14 07:43:26 +00:00
url = iwlink('zh')
pagename = message
2020-09-06 12:42:15 +00:00
interwiki = ''
2020-08-07 06:19:34 +00:00
except Exception:
2020-08-14 07:43:26 +00:00
url = iwlink('zh')
pagename = message
2020-09-05 09:51:43 +00:00
interwiki = ''
return await wiki(url, pagename, interwiki)
2020-08-12 16:01:34 +00:00
2020-08-07 06:19:34 +00:00
2020-08-14 07:43:26 +00:00
async def imarc(message):
2020-08-07 06:19:34 +00:00
try:
2020-08-14 07:43:26 +00:00
pipe = re.match(r'(.*?)\|.*', message)
message = pipe.group(1)
2020-08-07 06:19:34 +00:00
except Exception:
2020-08-14 07:43:26 +00:00
pass
message = re.sub(r'^:', '', message)
url = 'https://wiki.arcaea.cn/'
2020-09-05 09:51:43 +00:00
interwiki = ''
return await wiki(url, message, interwiki, igmessage=True)
2020-08-12 16:01:34 +00:00
2020-08-07 06:19:34 +00:00
2020-08-14 07:43:26 +00:00
async def imt(message):
2020-08-07 06:19:34 +00:00
try:
2020-08-14 07:43:26 +00:00
pipe = re.match(r'(.*?)\|.*', message)
message = pipe.group(1)
2020-08-07 06:19:34 +00:00
except Exception:
2020-08-14 07:43:26 +00:00
pass
message = re.sub(r'^:', '', message)
2020-08-07 06:19:34 +00:00
try:
2020-08-14 07:43:26 +00:00
matchinterwiki = re.match(r'(.*?):(.*)', message)
interwiki = matchinterwiki.group(1)
interwiki = str.lower(interwiki)
if interwiki in iwlist():
url = iwlink(interwiki)
pagename = 'Template:' + matchinterwiki.group(2)
2020-08-07 06:19:34 +00:00
else:
2020-08-14 07:43:26 +00:00
url = iwlink('zh')
pagename = 'Template:' + message
2020-08-07 06:19:34 +00:00
except Exception:
2020-08-14 07:43:26 +00:00
url = iwlink('zh')
pagename = 'Template:' + message
2020-09-05 09:51:43 +00:00
interwiki = ''
2020-09-05 09:59:54 +00:00
return await wiki(url, pagename, interwiki, igmessage=False, template=True)
2020-08-07 06:19:34 +00:00
if __name__ == '__main__':
2020-08-12 16:01:34 +00:00
print(asyncio.run(wiki('wiki Netherite')))