群组中广播时不发送到当前群组

This commit is contained in:
mio 2025-05-10 15:17:05 +08:00
parent 2bbecd9062
commit d5518bdc11
2 changed files with 20 additions and 3 deletions

View File

@ -46,7 +46,7 @@ __plugin_meta__ = PluginMetadata(
description="昭告天下!",
usage="""
广播 [消息内容]
- 直接发送消息到所有群组
- 直接发送消息到除当前群组外的所有群组
- 支持文本图片@表情视频等多种消息类型
- 示例广播 你们好
- 示例广播 [图片] 新活动开始啦
@ -61,6 +61,10 @@ __plugin_meta__ = PluginMetadata(
- 仅能撤回短时间内的消息
- 示例广播撤回
特性
- 在群组中使用广播时不会将消息发送到当前群组
- 在私聊中使用广播时会发送到所有群组
别名
- bc (广播的简写)
- recall (广播撤回的别名)

View File

@ -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(