为napcat插件增加SetProfileHandler来处理账号信息设置事件 - 实现参数解析和napcat API调用逻辑 - 添加详细的事件类型文档注解,包含参数说明和返回格式 - 扩展事件枚举类,新增多个群组相关操作事件 - 在插件初始化时自动注册所有事件处理器 - 为HandlerResultsCollection添加获取消息结果的方法 同时添加接口测试处理器用于验证事件系统的正常工作
93 lines
3.5 KiB
Python
93 lines
3.5 KiB
Python
from typing import List, Tuple, Optional
|
||
|
||
from src.plugin_system import BaseEventHandler
|
||
from src.plugin_system.base.base_event import HandlerResult
|
||
from src.plugin_system.core.event_manager import event_manager
|
||
|
||
from .src.send_handler import send_handler
|
||
from .event_types import *
|
||
|
||
from src.common.logger import get_logger
|
||
logger = get_logger("napcat_adapter")
|
||
|
||
|
||
class SetProfileHandler(BaseEventHandler):
|
||
handler_name: str = "napcat_set_qq_profile_handler"
|
||
handler_description: str = "设置账号信息"
|
||
weight: int = 100
|
||
intercept_message: bool = False
|
||
init_subscribe = [NapcatEvent.ACCOUNT.SET_PROFILE]
|
||
|
||
async def execute(self,params:dict):
|
||
raw = params.get("raw",{})
|
||
nickname = params.get("nickname","")
|
||
personal_note = params.get("personal_note","")
|
||
sex = params.get("sex","")
|
||
|
||
if params.get("raw",""):
|
||
nickname = raw.get("nickname","")
|
||
personal_note = raw.get("personal_note","")
|
||
sex = raw.get("sex","")
|
||
|
||
if not nickname:
|
||
logger.error("事件 napcat_set_qq_profile 缺少必要参数: nickname ")
|
||
return HandlerResult(False,False,{"status":"error"})
|
||
|
||
payload = {
|
||
"nickname": nickname,
|
||
"personal_note": personal_note,
|
||
"sex": sex
|
||
}
|
||
response = await send_handler.send_message_to_napcat(action="set_qq_profile",params=payload)
|
||
if response.get("status","") == "ok":
|
||
if response.get("data","").get("result","") == 0:
|
||
return HandlerResult(True,True,response)
|
||
else:
|
||
logger.error(f"事件 napcat_set_qq_profile 请求失败!err={response.get("data","").get("errMsg","")}")
|
||
return HandlerResult(False,False,response)
|
||
else:
|
||
logger.error("事件 napcat_set_qq_profile 请求失败!")
|
||
return HandlerResult(False,False,{"status":"error"})
|
||
'''
|
||
class SetProfileHandler(BaseEventHandler):
|
||
handler_name: str = "napcat_set_qq_profile_handler"
|
||
handler_description: str = "设置账号信息"
|
||
weight: int = 100
|
||
intercept_message: bool = False
|
||
init_subscribe = [NapcatEvent.ACCOUNT.SET_PROFILE]
|
||
|
||
async def execute(
|
||
self,
|
||
nickname: Optional[str] = "",
|
||
personal_note: Optional[str] = "",
|
||
sex: Optional[list["1","2","3"]] = "",
|
||
raw: dict = {}
|
||
):
|
||
if raw:
|
||
nickname = raw.get("nickname","")
|
||
personal_note = raw.get("personal_note","")
|
||
sex = raw.get("sex","")
|
||
|
||
if not nickname:
|
||
logger.error("事件 napcat_set_qq_profile 缺少必要参数: nickname ")
|
||
return HandlerResult(False,False,"缺少必要参数: nickname")
|
||
|
||
payload = {
|
||
"nickname": nickname,
|
||
"personal_note": personal_note,
|
||
"sex": sex
|
||
}
|
||
response = await send_handler.send_message_to_napcat(action="set_qq_profile",params=payload)
|
||
if response.get("status","") == "ok":
|
||
if response.get("data","").get("result","") == 0:
|
||
return HandlerResult(True,True,True)
|
||
else:
|
||
logger.error(f"事件 napcat_set_qq_profile 请求失败!err={response.get("data","").get("errMsg","")}")
|
||
return HandlerResult(False,False,False)
|
||
else:
|
||
logger.error("事件 napcat_set_qq_profile 请求失败!")
|
||
return HandlerResult(False,False,False)
|
||
'''
|
||
|
||
|