zhenxun_bot/zhenxun/plugins/parse_bilibili/__init__.py

58 lines
1.9 KiB
Python
Raw Normal View History

2024-07-28 20:29:03 +08:00
from nonebot import on_message
from nonebot.plugin import PluginMetadata
from nonebot_plugin_alconna import UniMsg
from nonebot_plugin_session import EventSession
from zhenxun.configs.utils import PluginExtraData, RegisterConfig, Task
from zhenxun.models.group_console import GroupConsole
from zhenxun.models.task_info import TaskInfo
from zhenxun.services.log import logger
from .data_source import Parser
__plugin_meta__ = PluginMetadata(
name="B站转发解析",
description="B站转发解析",
usage="""
usage
B站转发解析解析b站分享信息支持bvbilibili链接b站手机端转发卡片cvb23.tv且30秒内内不解析相同url
""".strip(),
extra=PluginExtraData(
author="HibiKier",
version="0.1",
menu_type="其他",
configs=[
RegisterConfig(
module="_task",
key="DEFAULT_BILIBILI_PARSE",
value=True,
default_value=True,
help="被动 B站转发解析 进群默认开关状态",
type=bool,
)
],
tasks=[Task(module="bilibili_parse", name="b站转发解析")],
).dict(),
)
async def _rule(session: EventSession) -> bool:
task = await TaskInfo.get_or_none(module="bilibili_parse")
if not task or not task.status:
logger.debug("b站转发解析被动全局关闭已跳过...")
return False
if gid := session.id3 or session.id2:
return not await GroupConsole.is_block_task(gid, "bilibili_parse")
return False
_matcher = on_message(priority=1, block=False, rule=_rule)
@_matcher.handle()
async def _(session: EventSession, message: UniMsg):
data = message[0]
if result := await Parser.parse(data, message.extract_plain_text().strip()):
await result.send()
logger.info(f"b站转发解析: {result}", "BILIBILI_PARSE", session=session)