From d5518bdc1186dbb867df03e5cc0b6df7fd569d54 Mon Sep 17 00:00:00 2001 From: mio <455457521@qq.com> Date: Sat, 10 May 2025 15:17:05 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20=E7=BE=A4=E7=BB=84=E4=B8=AD?= =?UTF-8?q?=E5=B9=BF=E6=92=AD=E6=97=B6=E4=B8=8D=E5=8F=91=E9=80=81=E5=88=B0?= =?UTF-8?q?=E5=BD=93=E5=89=8D=E7=BE=A4=E7=BB=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../superuser/broadcast/__init__.py | 6 +++++- .../superuser/broadcast/message_processor.py | 17 +++++++++++++++-- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/zhenxun/builtin_plugins/superuser/broadcast/__init__.py b/zhenxun/builtin_plugins/superuser/broadcast/__init__.py index d5b27e61..3fc08e4c 100644 --- a/zhenxun/builtin_plugins/superuser/broadcast/__init__.py +++ b/zhenxun/builtin_plugins/superuser/broadcast/__init__.py @@ -46,7 +46,7 @@ __plugin_meta__ = PluginMetadata( description="昭告天下!", usage=""" 广播 [消息内容] - - 直接发送消息到所有群组 + - 直接发送消息到除当前群组外的所有群组 - 支持文本、图片、@、表情、视频等多种消息类型 - 示例:广播 你们好! - 示例:广播 [图片] 新活动开始啦! @@ -61,6 +61,10 @@ __plugin_meta__ = PluginMetadata( - 仅能撤回短时间内的消息 - 示例:广播撤回 + 特性: + - 在群组中使用广播时,不会将消息发送到当前群组 + - 在私聊中使用广播时,会发送到所有群组 + 别名: - bc (广播的简写) - recall (广播撤回的别名) diff --git a/zhenxun/builtin_plugins/superuser/broadcast/message_processor.py b/zhenxun/builtin_plugins/superuser/broadcast/message_processor.py index f9e64208..809e3645 100644 --- a/zhenxun/builtin_plugins/superuser/broadcast/message_processor.py +++ b/zhenxun/builtin_plugins/superuser/broadcast/message_processor.py @@ -520,8 +520,21 @@ async def get_broadcast_target_groups( """获取广播目标群组和启用了广播功能的群组""" target_groups = [] all_groups, _ = await BroadcastManager.get_all_groups(bot) - target_groups = all_groups - logger.info("向所有群组广播", "广播", session=session) + + current_group_id = None + if hasattr(session, "id2") and session.id2: + current_group_id = session.id2 + + if current_group_id: + target_groups = [ + group for group in all_groups if group.group_id != current_group_id + ] + logger.info( + f"向除当前群组({current_group_id})外的所有群组广播", "广播", session=session + ) + else: + target_groups = all_groups + logger.info("向所有群组广播", "广播", session=session) if not target_groups: await MessageUtils.build_message("没有找到符合条件的广播目标群组。").send(