Files
Bubbles/function_calls/services/insult.py
zihanjian 33731cb83b refactor
2025-09-24 20:01:22 +08:00

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)