feat(napcat): 添加账号设置处理器和事件类型注解
为napcat插件增加SetProfileHandler来处理账号信息设置事件 - 实现参数解析和napcat API调用逻辑 - 添加详细的事件类型文档注解,包含参数说明和返回格式 - 扩展事件枚举类,新增多个群组相关操作事件 - 在插件初始化时自动注册所有事件处理器 - 为HandlerResultsCollection添加获取消息结果的方法 同时添加接口测试处理器用于验证事件系统的正常工作
This commit is contained in:
@@ -1,6 +1,92 @@
|
||||
from typing import List, Tuple
|
||||
from typing import List, Tuple, Optional
|
||||
|
||||
from src.plugin_system import BasePlugin, BaseEventHandler, register_plugin, EventType, ConfigField, BaseAction, ActionActivationType
|
||||
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)
|
||||
'''
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user