mirror of
https://github.com/Zippland/Bubbles.git
synced 2026-01-30 22:09:43 +08:00
51 lines
1.6 KiB
Python
51 lines
1.6 KiB
Python
"""Group insult helper utilities."""
|
|
from __future__ import annotations
|
|
|
|
from dataclasses import dataclass
|
|
from typing import Optional
|
|
|
|
from commands.context import MessageContext
|
|
from function.func_insult import generate_random_insult
|
|
|
|
|
|
@dataclass
|
|
class InsultResult:
|
|
success: bool
|
|
message: str
|
|
|
|
|
|
def build_insult(ctx: MessageContext, target_name: str) -> InsultResult:
|
|
if not ctx.is_group:
|
|
return InsultResult(success=True, message="❌ 骂人功能只支持群聊哦~")
|
|
|
|
cleaned = target_name.strip()
|
|
if not cleaned:
|
|
return InsultResult(success=False, message="❌ 需要提供要骂的对象")
|
|
|
|
actual_target = cleaned
|
|
target_wxid: Optional[str] = None
|
|
|
|
try:
|
|
members = ctx.room_members
|
|
if members:
|
|
for wxid, name in members.items():
|
|
if cleaned == name:
|
|
target_wxid = wxid
|
|
actual_target = name
|
|
break
|
|
if target_wxid is None:
|
|
for wxid, name in members.items():
|
|
if cleaned in name and wxid != ctx.robot_wxid:
|
|
target_wxid = wxid
|
|
actual_target = name
|
|
break
|
|
except Exception as exc:
|
|
if ctx.logger:
|
|
ctx.logger.error(f"查找群成员信息时出错: {exc}")
|
|
|
|
if target_wxid and target_wxid == ctx.robot_wxid:
|
|
return InsultResult(success=True, message="😅 不行,我不能骂我自己。")
|
|
|
|
insult_text = generate_random_insult(actual_target)
|
|
return InsultResult(success=True, message=insult_text)
|