Archived
1
0
Fork 0
This commit is contained in:
多羅狼 2024-02-10 01:24:45 +08:00 committed by GitHub
parent f9a552efcf
commit 7faa529f68
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
12 changed files with 31 additions and 36 deletions

View file

@ -13,7 +13,7 @@ bili = module('bilibili', alias='bili', developers=['DoroWolf'],
@bili.command('<bid> [-i] {{bilibili.help}}', @bili.command('<bid> [-i] {{bilibili.help}}',
options_desc={'-i': '{bilibili.help.option.i}'}) options_desc={'-i': '{bilibili.help.option.i}'})
async def _(msg: Bot.MessageSession, bid: str, get_detail=False): async def _(msg: Bot.MessageSession, bid: str, get_detail = False):
if msg.parsed_msg.get('-i', False): if msg.parsed_msg.get('-i', False):
get_detail = True get_detail = True
if bid[:2].upper() == "BV": if bid[:2].upper() == "BV":

View file

@ -25,9 +25,7 @@ async def _(msg: Bot.MessageSession, term: str):
chk = await check(res_moegirl, res_nbnhhsh, res_urban) chk = await check(res_moegirl, res_nbnhhsh, res_urban)
res = '' res = ''
for i in chk: for i in chk:
if not i['status']: res += i['content'] + '\n'
i = '[???] ' + msg.locale.t('check.redacted') res = res.replace("<吃掉了>", msg.locale.t("check.redacted"))
res += i + '\n' res = res.replace("<全部吃掉了>", msg.locale.t("check.redacted.all"))
else: await msg.finish(res.strip())
res += i['content'] + '\n'
await msg.finish(res)

View file

@ -1,5 +1,3 @@
import traceback
from bs4 import BeautifulSoup from bs4 import BeautifulSoup
from config import CFG from config import CFG
@ -40,5 +38,4 @@ async def jiki(term: str, locale: Locale):
count = str(result) if results < 15 else '15+' count = str(result) if results < 15 else '15+'
return f'[{locale.t("meme.message.jiki")}] {locale.t("meme.message.result", result=count)}{title}\n{content}\n{str(Url(link))}' return f'[{locale.t("meme.message.jiki")}] {locale.t("meme.message.result", result=count)}{title}\n{content}\n{str(Url(link))}'
except Exception: except Exception:
traceback.print_exc()
return f'[{locale.t("meme.message.jiki")}] {locale.t("meme.message.error")}' return f'[{locale.t("meme.message.jiki")}] {locale.t("meme.message.error")}'

View file

@ -1,5 +1,3 @@
import traceback
import ujson as json import ujson as json
from core.logger import Logger from core.logger import Logger
@ -32,5 +30,4 @@ async def nbnhhsh(term: str, locale: Locale):
else: else:
return f'[{locale.t("meme.message.nbnhhsh")}] {locale.t("meme.message.not_found")}' return f'[{locale.t("meme.message.nbnhhsh")}] {locale.t("meme.message.not_found")}'
except Exception: except Exception:
traceback.print_exc()
return f'[{locale.t("meme.message.nbnhhsh")}] {locale.t("meme.message.error")}' return f'[{locale.t("meme.message.nbnhhsh")}] {locale.t("meme.message.error")}'

View file

@ -1,5 +1,3 @@
import traceback
import ujson as json import ujson as json
from config import CFG from config import CFG
@ -41,7 +39,6 @@ async def urban(term: str, locale: Locale):
link = data[0]['permalink'] link = data[0]['permalink']
return f'[{locale.t("meme.message.urban")}] {locale.t("meme.message.result", result=count)}\n{word}\n{definition}\nExample: {example}\n{str(Url(link))}' return f'[{locale.t("meme.message.urban")}] {locale.t("meme.message.result", result=count)}\n{word}\n{definition}\nExample: {example}\n{str(Url(link))}'
except Exception: except Exception:
traceback.print_exc()
return f'[{locale.t("meme.message.urban")}] {locale.t("meme.message.error")}' return f'[{locale.t("meme.message.urban")}] {locale.t("meme.message.error")}'

View file

@ -16,7 +16,6 @@ web_render_local = CFG.get_url('web_render_local')
t = module('tweet', t = module('tweet',
developers=['Dianliang233'], developers=['Dianliang233'],
desc='{tweet.help.desc}', desc='{tweet.help.desc}',
exclude_from=['QQ', 'QQ|Group', 'Kook'],
alias=['x'] alias=['x']
) )

View file

@ -5,11 +5,16 @@ from core.component import module
from modules.wiki.utils.dbutils import WikiTargetInfo from modules.wiki.utils.dbutils import WikiTargetInfo
from .user import get_user_info from .user import get_user_info
usr = module('user', developers=['OasisAkari'], recommend_modules='wiki') usr = module('user',
developers=['OasisAkari'],
recommend_modules='wiki',
options_desc={'-r': '{user.help.option.r}')
@usr.command('<username> {{user.help.desc}}') @usr.command('<username> [-r] {{user.help.desc}}')
async def user(msg: Bot.MessageSession, username: str): async def user(msg: Bot.MessageSession, username: str, gp_mode = False):
if msg.parsed_msg.get('-r', False):
gp_mode = True
target = WikiTargetInfo(msg) target = WikiTargetInfo(msg)
get_url = target.get_start_wiki() get_url = target.get_start_wiki()
if get_url: if get_url:
@ -17,8 +22,7 @@ async def user(msg: Bot.MessageSession, username: str):
if match_interwiki: if match_interwiki:
interwikis = target.get_interwikis() interwikis = target.get_interwikis()
if match_interwiki.group(1) in interwikis: if match_interwiki.group(1) in interwikis:
return await msg.finish( await get_user_info(msg, interwikis[match_interwiki.group(1)], match_interwiki.group(2), gp_mode)
await get_user_info(msg, interwikis[match_interwiki.group(1)], match_interwiki.group(2))) await get_user_info(msg, get_url, username, gp_mode)
await msg.finish(await get_user_info(msg, get_url, username))
else: else:
await msg.finish(msg.locale.t('wiki.message.not_set')) await msg.finish(msg.locale.t('wiki.message.not_set'))

View file

@ -1,5 +1,6 @@
{ {
"user.help.desc": "Get information about a MediaWiki user.", "user.help.desc": "Get information about a MediaWiki user.",
"user.help.option.r": "Get extra information from Gamepedia site.",
"user.message.blocked": "${user} is being blocked!", "user.message.blocked": "${user} is being blocked!",
"user.message.blocked.detail": "Blocked by ${blocked_by}. Time from ${blocked_time} to ${blocked_expires}", "user.message.blocked.detail": "Blocked by ${blocked_by}. Time from ${blocked_time} to ${blocked_expires}",
"user.message.blocked.reason": "Reason: ", "user.message.blocked.reason": "Reason: ",

View file

@ -1,5 +1,6 @@
{ {
"user.help.desc": "获取一个 MediaWiki 用户的信息。", "user.help.desc": "获取一个 MediaWiki 用户的信息。",
"user.help.option.r": "获取来自 Gamepedia 网站的更多信息。",
"user.message.blocked": "${user} 正在被封禁中!", "user.message.blocked": "${user} 正在被封禁中!",
"user.message.blocked.detail": "被 ${blocked_by} 封禁,时间从 ${blocked_time} 到 ${blocked_expires}", "user.message.blocked.detail": "被 ${blocked_by} 封禁,时间从 ${blocked_time} 到 ${blocked_expires}",
"user.message.blocked.reason": "理由:", "user.message.blocked.reason": "理由:",
@ -24,4 +25,4 @@
"user.message.users_groups": "用户组:", "user.message.users_groups": "用户组:",
"user.message.wiki_unavailable": "${wikiurl} 不可用。", "user.message.wiki_unavailable": "${wikiurl} 不可用。",
"user.message.wikipoints": "Wikipoints" "user.message.wikipoints": "Wikipoints"
} }

View file

@ -1,5 +1,6 @@
{ {
"user.help.desc": "取得一個 MediaWiki 使用者的資訊。", "user.help.desc": "取得一個 MediaWiki 使用者的資訊。",
"user.help.option.r": "取得來自 Gamepedia 網站的更多資訊。",
"user.message.blocked": "${user} 正在被封鎖中!", "user.message.blocked": "${user} 正在被封鎖中!",
"user.message.blocked.detail": "被 ${blocked_by} 封鎖,時間從 ${blocked_time} 到 ${blocked_expires}", "user.message.blocked.detail": "被 ${blocked_by} 封鎖,時間從 ${blocked_time} 到 ${blocked_expires}",
"user.message.blocked.reason": "理由:", "user.message.blocked.reason": "理由:",

View file

@ -5,13 +5,14 @@ import urllib.parse
from bs4 import BeautifulSoup as bs from bs4 import BeautifulSoup as bs
from core.builtins import Plain, MessageSession from core.builtins import Plain, MessageSession
from core.dirty_check import check_bool, rickroll
from core.logger import Logger from core.logger import Logger
from core.utils.http import get_url from core.utils.http import get_url
from modules.wiki.utils.wikilib import WikiLib from modules.wiki.utils.wikilib import WikiLib
from modules.wiki.utils.time import strptime2ts from modules.wiki.utils.time import strptime2ts
async def get_user_info(msg: MessageSession, wikiurl, username): async def get_user_info(msg: MessageSession, wikiurl, username, gp_mode=False):
wiki = WikiLib(wikiurl) wiki = WikiLib(wikiurl)
if not await wiki.check_wiki_available(): if not await wiki.check_wiki_available():
return [Plain(msg.locale.t('user.message.wiki_unavailable', wikiurl=wikiurl))] return [Plain(msg.locale.t('user.message.wiki_unavailable', wikiurl=wikiurl))]
@ -20,7 +21,7 @@ async def get_user_info(msg: MessageSession, wikiurl, username):
if match_interwiki: if match_interwiki:
if match_interwiki.group(1) in wiki.wiki_info.interwiki: if match_interwiki.group(1) in wiki.wiki_info.interwiki:
return await get_user_info(msg, wiki.wiki_info.interwiki[match_interwiki.group(1)], return await get_user_info(msg, wiki.wiki_info.interwiki[match_interwiki.group(1)],
match_interwiki.group(2)) match_interwiki.group(2), gp_mode)
data = {} data = {}
base_user_info = (await wiki.get_json(action='query', list='users', ususers=username, base_user_info = (await wiki.get_json(action='query', list='users', ususers=username,
usprop='groups|blockinfo|registration|editcount|gender'))['query']['users'][0] usprop='groups|blockinfo|registration|editcount|gender'))['query']['users'][0]
@ -61,7 +62,7 @@ async def get_user_info(msg: MessageSession, wikiurl, username):
data['gender'] = msg.locale.t('unknown') data['gender'] = msg.locale.t('unknown')
# if one day LGBTers... # if one day LGBTers...
try: if gp_mode:
gp_clawler = bs(await get_url(re.sub(r'\$1', 'UserProfile:' + username, wiki.wiki_info.articlepath), 200, logging_err_resp=False), gp_clawler = bs(await get_url(re.sub(r'\$1', 'UserProfile:' + username, wiki.wiki_info.articlepath), 200, logging_err_resp=False),
'html.parser') 'html.parser')
dd = gp_clawler.find('div', class_='section stats').find_all('dd') dd = gp_clawler.find('div', class_='section stats').find_all('dd')
@ -75,8 +76,7 @@ async def get_user_info(msg: MessageSession, wikiurl, username):
data['friends_count'] = dd[7].text data['friends_count'] = dd[7].text
data['wikipoints'] = gp_clawler.find('div', class_='score').text data['wikipoints'] = gp_clawler.find('div', class_='score').text
data['url'] = re.sub(r'\$1', urllib.parse.quote('UserProfile:' + username), wiki.wiki_info.articlepath) data['url'] = re.sub(r'\$1', urllib.parse.quote('UserProfile:' + username), wiki.wiki_info.articlepath)
except ValueError:
pass
if 'blockedby' in base_user_info: if 'blockedby' in base_user_info:
data['blocked_by'] = base_user_info['blockedby'] data['blocked_by'] = base_user_info['blockedby']
data['blocked_time'] = base_user_info['blockedtimestamp'] data['blocked_time'] = base_user_info['blockedtimestamp']
@ -161,5 +161,7 @@ async def get_user_info(msg: MessageSession, wikiurl, username):
if url := data.get('url', False): if url := data.get('url', False):
msgs.append(url) msgs.append(url)
if msgs: res = '\n'.join(msgs)
return [Plain('\n'.join(msgs))] if await check_bool(res):
await msg.finish(rickroll(msg))
await msg.finish(res)

View file

@ -10,7 +10,7 @@ import ujson as json
import core.utils.html2text as html2text import core.utils.html2text as html2text
from config import Config, CFG from config import Config, CFG
from core.builtins import Url from core.builtins import Url
from core.dirty_check import check from core.dirty_check import check_bool
from core.logger import Logger from core.logger import Logger
from core.utils.http import get_url from core.utils.http import get_url
from core.utils.i18n import Locale, default_locale from core.utils.i18n import Locale, default_locale
@ -774,10 +774,8 @@ class WikiLib:
checklist.append(page_info.before_title) checklist.append(page_info.before_title)
if page_info.desc: if page_info.desc:
checklist.append(page_info.desc) checklist.append(page_info.desc)
chk = await check(*checklist) if not await check_bool(*checklist)
for x in chk: ban = True
if not x['status']:
ban = True
if ban: if ban:
page_info.status = False page_info.status = False
page_info.title = page_info.before_title = None page_info.title = page_info.before_title = None