From c46b88060b9aad5056a8bde9e0064d3f6973c8c0 Mon Sep 17 00:00:00 2001 From: passthem Date: Thu, 19 Feb 2026 17:57:00 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=BE=E5=87=A0=E4=BA=BA=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E8=B0=83=E6=95=B4=EF=BC=9Bbilibili=20fetch=20=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- konabot/plugins/bilibili_fetch/__init__.py | 15 +++++++++++++-- konabot/plugins/mc_count_player/__init__.py | 7 ++++++- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/konabot/plugins/bilibili_fetch/__init__.py b/konabot/plugins/bilibili_fetch/__init__.py index 15ff7b3..2695403 100644 --- a/konabot/plugins/bilibili_fetch/__init__.py +++ b/konabot/plugins/bilibili_fetch/__init__.py @@ -1,18 +1,29 @@ import re -from nonebot import on_message +from nonebot import get_plugin_config, on_message from nonebot_plugin_alconna import Reference, Reply, UniMsg from nonebot.adapters import Event +from nonebot.adapters.onebot.v11.event import GroupMessageEvent as OB11GroupEvent +from pydantic import BaseModel +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): +def _rule(msg: UniMsg, evt: Event) -> bool: + if isinstance(evt, OB11GroupEvent): + if evt.group_id not in config.bilifetch_enabled_groups: + return False + 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): diff --git a/konabot/plugins/mc_count_player/__init__.py b/konabot/plugins/mc_count_player/__init__.py index ee65ebc..433a8c4 100644 --- a/konabot/plugins/mc_count_player/__init__.py +++ b/konabot/plugins/mc_count_player/__init__.py @@ -26,7 +26,12 @@ def dump_server_status(name: str, status: JavaStatusResponse | BaseException) -> motd = status.motd.to_plain() # Bingo Status: [PRE-GAME], [IN-GAME], [POST-GAME] st = parse_status(motd) - return f"{name}: {st} {status.players.online} 人在线" + players_sample = status.players.sample or [] + players_sample_suffix = "" + if len(players_sample) > 0: + player_list = [s.name for s in players_sample] + players_sample_suffix = " (" + ", ".join(player_list) + ")" + return f"{name}: {st} {status.players.online} 人在线{players_sample_suffix}" else: return f"{name}: 好像没开"