40 lines
1.0 KiB
Python
40 lines
1.0 KiB
Python
import re
|
|
|
|
from nonebot import get_plugin_config, on_message
|
|
from nonebot.rule import Rule
|
|
from nonebot_plugin_alconna import Reference, Reply, UniMsg
|
|
|
|
from nonebot.adapters import Event
|
|
from pydantic import BaseModel
|
|
|
|
from konabot.common.permsys import require_permission
|
|
|
|
|
|
class Config(BaseModel):
|
|
bilifetch_enabled_groups: list[int] = []
|
|
|
|
|
|
config = get_plugin_config(Config)
|
|
pattern = (
|
|
r"^(?:(?:av|cv)\d+|BV[a-zA-Z0-9]{10})|"
|
|
r"(?:b23\.tv|bili(?:22|23|33|2233)\.cn|\.bilibili\.com|QQ小程序(?:]|]|\])哔哩哔哩).{0,500}"
|
|
)
|
|
|
|
|
|
def _rule(msg: UniMsg) -> bool:
|
|
to_search = msg.exclude(Reply, Reference).dump(json=True)
|
|
to_search2 = msg.exclude(Reply, Reference).extract_plain_text()
|
|
if not re.search(pattern, to_search) and not re.search(pattern, to_search2):
|
|
return False
|
|
return True
|
|
|
|
|
|
matcher_fix = on_message(rule=Rule(_rule) & require_permission("bilifetch"))
|
|
|
|
|
|
@matcher_fix.handle()
|
|
async def _(event: Event):
|
|
from nonebot_plugin_analysis_bilibili import handle_analysis
|
|
|
|
await handle_analysis(event)
|