增加语音发送支持
parent
2785d6797d
commit
65bb6f5443
|
|
@ -23,7 +23,7 @@ class Config:
|
|||
self.config_path = os.path.join(self.root_path, "config.toml")
|
||||
|
||||
def load_config(self):
|
||||
include_configs = ["Nickname", "Napcat_Server", "MaiBot_Server", "Debug"]
|
||||
include_configs = ["Nickname", "Napcat_Server", "MaiBot_Server", "Debug", "Voice"]
|
||||
if os.path.exists(self.config_path):
|
||||
with open(self.config_path, "rb") as f:
|
||||
try:
|
||||
|
|
@ -46,6 +46,7 @@ class Config:
|
|||
self.mai_host = raw_config["MaiBot_Server"].get("host", "localhost")
|
||||
self.mai_port = raw_config["MaiBot_Server"].get("port", 8000)
|
||||
self.debug_level = raw_config["Debug"].get("level", "INFO")
|
||||
self.use_tts = raw_config["Voice"].get("use_tts", False)
|
||||
else:
|
||||
logger.error("配置文件不存在!")
|
||||
logger.info("正在创建配置文件...")
|
||||
|
|
|
|||
|
|
@ -169,6 +169,10 @@ class RecvHandler:
|
|||
logger.warning("群聊消息类型不支持")
|
||||
return None
|
||||
|
||||
additional_config: dict = {}
|
||||
if global_config.use_tts:
|
||||
additional_config["allow_tts"] = True
|
||||
|
||||
# 消息信息
|
||||
message_info: BaseMessageInfo = BaseMessageInfo(
|
||||
platform=global_config.platform,
|
||||
|
|
@ -178,6 +182,7 @@ class RecvHandler:
|
|||
group_info=group_info,
|
||||
template_info=template_info,
|
||||
format_info=format_info,
|
||||
additional_config=additional_config,
|
||||
)
|
||||
|
||||
# 处理实际信息
|
||||
|
|
@ -417,14 +422,14 @@ class RecvHandler:
|
|||
seg_message: List[Seg] = []
|
||||
if not sender_nickname:
|
||||
logger.warning("无法获取被引用的人的昵称,返回默认值")
|
||||
seg_message.append(Seg(type="text", data=f"[回复 QQ用户(未知id):"))
|
||||
seg_message.append(Seg(type="text", data="[回复 QQ用户(未知id):"))
|
||||
seg_message += reply_message
|
||||
seg_message.append(Seg(type="text", data=f"],说:"))
|
||||
seg_message.append(Seg(type="text", data="],说:"))
|
||||
return seg_message
|
||||
else:
|
||||
seg_message.append(Seg(type="text", data=f"[回复 {sender_nickname}({sender_id}):"))
|
||||
seg_message += reply_message
|
||||
seg_message.append(Seg(type="text", data=f"],说:"))
|
||||
seg_message.append(Seg(type="text", data="],说:"))
|
||||
return seg_message
|
||||
|
||||
async def handle_notice(self, raw_message: dict) -> None:
|
||||
|
|
|
|||
|
|
@ -105,6 +105,9 @@ class SendHandler:
|
|||
elif seg.type == "emoji":
|
||||
emoji = seg.data
|
||||
new_payload = self.build_payload(payload, self.handle_emoji_message(emoji), False)
|
||||
elif seg.type == "voice":
|
||||
voice = seg.data
|
||||
new_payload = self.build_payload(payload, self.handle_voice_message(voice), False)
|
||||
return new_payload
|
||||
|
||||
def build_payload(self, payload: list, addon: dict, is_reply: bool = False) -> list:
|
||||
|
|
@ -132,7 +135,10 @@ class SendHandler:
|
|||
"""处理图片消息"""
|
||||
return {
|
||||
"type": "image",
|
||||
"data": {"file": f"base64://{encoded_image}", "subtype": 0},
|
||||
"data": {
|
||||
"file": f"base64://{encoded_image}",
|
||||
"subtype": 0,
|
||||
},
|
||||
} # base64 编码的图片
|
||||
|
||||
def handle_emoji_message(self, encoded_emoji: str) -> dict:
|
||||
|
|
@ -150,6 +156,15 @@ class SendHandler:
|
|||
},
|
||||
}
|
||||
|
||||
def handle_voice_message(self, encoded_voice: str) -> dict:
|
||||
"""处理语音消息"""
|
||||
if not encoded_voice:
|
||||
return {}
|
||||
return {
|
||||
"type": "record",
|
||||
"data": {"file": f"base64://{encoded_voice}"},
|
||||
}
|
||||
|
||||
async def send_message_to_napcat(self, action: str, params: dict) -> dict:
|
||||
request_uuid = str(uuid.uuid4())
|
||||
payload = json.dumps({"action": action, "params": params, "echo": request_uuid})
|
||||
|
|
|
|||
|
|
@ -16,5 +16,8 @@ group_list = []
|
|||
private_list = []
|
||||
enable_temp = false
|
||||
|
||||
[Voice] # 发送语音设置
|
||||
use_tts = false # 是否使用tts语音(请确保你配置了tts并有对应的adapter)
|
||||
|
||||
[Debug]
|
||||
level = "INFO" # 日志等级(DEBUG, INFO, WARNING, ERROR)
|
||||
|
|
|
|||
Loading…
Reference in New Issue