mirror of
https://github.com/suyiiyii/nonebot-bison.git
synced 2025-06-04 02:26:11 +08:00
Merge branch 'main' into dev
This commit is contained in:
commit
0916b1a19d
@ -33,7 +33,7 @@ async def send_help(bot: Bot, event: Event, state: T_State):
|
||||
def do_add_sub(add_sub: Type[Matcher]):
|
||||
@add_sub.handle()
|
||||
async def init_promote(bot: Bot, event: Event, state: T_State):
|
||||
state['_prompt'] = '请输入想要订阅的平台,目前支持:\n' + \
|
||||
state['_prompt'] = '请输入想要订阅的平台,目前支持,请输入冒号左边的名称:\n' + \
|
||||
''.join(['{}:{}\n'.format(platform_name, platform_manager[platform_name].name) \
|
||||
for platform_name in common_platform]) + \
|
||||
'要查看全部平台请输入:“全部”'
|
||||
@ -74,7 +74,7 @@ def do_add_sub(add_sub: Type[Matcher]):
|
||||
state['cats'] = []
|
||||
return
|
||||
state['_prompt'] = '请输入要订阅的类别,以空格分隔,支持的类别有:{}'.format(
|
||||
','.join(list(platform_manager[state['platform']].categories.values())))
|
||||
' '.join(list(platform_manager[state['platform']].categories.values())))
|
||||
|
||||
async def parser_cats(bot: Bot, event: Event, state: T_State):
|
||||
res = []
|
||||
|
@ -40,6 +40,7 @@ class Arknights(NewMessage, NoTargetMixin):
|
||||
|
||||
async def parse(self, raw_post: RawPost) -> Post:
|
||||
announce_url = raw_post['webUrl']
|
||||
text = ''
|
||||
async with httpx.AsyncClient() as client:
|
||||
raw_html = await client.get(announce_url)
|
||||
soup = bs(raw_html, 'html.parser')
|
||||
@ -49,12 +50,14 @@ class Arknights(NewMessage, NoTargetMixin):
|
||||
render = Render()
|
||||
viewport = {'width': 320, 'height': 6400, 'deviceScaleFactor': 3}
|
||||
pic_data = await render.render(announce_url, viewport=viewport, target='div.main')
|
||||
pics.append(pic_data)
|
||||
if pic_data:
|
||||
pics.append(pic_data)
|
||||
text = '图片渲染失败'
|
||||
elif (pic := soup.find('img', class_='banner-image')):
|
||||
pics.append(pic['src'])
|
||||
else:
|
||||
raise CategoryNotSupport()
|
||||
return Post('arknights', text='', url='', target_name="明日方舟游戏内公告", pics=pics, compress=True, override_use_pic=False)
|
||||
return Post('arknights', text=text, url='', target_name="明日方舟游戏内公告", pics=pics, compress=True, override_use_pic=False)
|
||||
|
||||
class AkVersion(NoTargetMixin, StatusChange):
|
||||
|
||||
@ -81,9 +84,13 @@ class AkVersion(NoTargetMixin, StatusChange):
|
||||
def compare_status(self, _, old_status, new_status):
|
||||
res = []
|
||||
if old_status.get('preAnnounceType') == 2 and new_status.get('preAnnounceType') == 0:
|
||||
res.append(Post('arknights', text='开始维护!', target_name='明日方舟更新信息'))
|
||||
res.append(Post('arknights',
|
||||
text='登录界面维护公告上线(大概是开始维护了)',
|
||||
target_name='明日方舟更新信息'))
|
||||
elif old_status.get('preAnnounceType') == 0 and new_status.get('preAnnounceType') == 2:
|
||||
res.append(Post('arknights', text='维护结束!冲!(可能不太准确)', target_name='明日方舟更新信息'))
|
||||
res.append(Post('arknights',
|
||||
text='登录界面维护公告下线(大概是开服了,冲!)',
|
||||
target_name='明日方舟更新信息'))
|
||||
if old_status.get('clientVersion') != new_status.get('clientVersion'):
|
||||
res.append(Post('arknights', text='游戏本体更新(大更新)', target_name='明日方舟更新信息'))
|
||||
if old_status.get('resVersion') != new_status.get('resVersion'):
|
||||
|
@ -3,6 +3,7 @@ import base64
|
||||
from html import escape
|
||||
import os
|
||||
from time import asctime
|
||||
import re
|
||||
from typing import Awaitable, Callable, Optional
|
||||
|
||||
from nonebot.adapters.cqhttp.message import MessageSegment
|
||||
@ -12,6 +13,8 @@ from pyppeteer.browser import Browser
|
||||
from pyppeteer.chromium_downloader import check_chromium, download_chromium
|
||||
from pyppeteer.page import Page
|
||||
|
||||
from bs4 import BeautifulSoup as bs
|
||||
|
||||
from .plugin_config import plugin_config
|
||||
|
||||
class Singleton(type):
|
||||
@ -121,3 +124,15 @@ async def parse_text(text: str) -> MessageSegment:
|
||||
return await render.text_to_pic_cqcode(text)
|
||||
else:
|
||||
return MessageSegment.text(text)
|
||||
|
||||
def html_to_text(html: str, query_dict: dict = {}) -> str:
|
||||
html = re.sub(r'<br\s*/?>', '<br>\n', html)
|
||||
html = html.replace('</p>', '</p>\n')
|
||||
soup = bs(html, 'html.parser')
|
||||
if query_dict:
|
||||
node = soup.find(**query_dict)
|
||||
else:
|
||||
node = soup
|
||||
assert node is not None
|
||||
return node.text.strip()
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user