Files
Mofox-Core/src/chat/utils/self_voice_cache.py
明天好像没什么 0e129d385e refactor: 统一类型注解风格并优化代码结构
- 将裸 except 改为显式 Exception 捕获
- 用列表推导式替换冗余 for 循环
- 为类属性添加 ClassVar 注解
- 统一 Union/Optional 写法为 |
- 移除未使用的导入
- 修复 SQLAlchemy 空值比较语法
- 优化字符串拼接与字典更新逻辑
- 补充缺失的 noqa 注释与异常链

BREAKING CHANGE: 所有插件基类的类级字段现要求显式 ClassVar 注解,自定义插件需同步更新
2025-10-31 22:42:39 +08:00

42 lines
1.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
自我语音缓存模块
用于在机器人发送TTS语音后临时存储其原始文本
以便在接收到该语音消息时,能够直接获取文本内容,
避免不必要的自我语音识别。
"""
import hashlib
# 一个简单的内存缓存,用于将机器人自己发送的语音消息映射到其原始文本。
# 键是语音base64内容的SHA256哈希值。
_self_voice_cache: dict[str, str] = {}
def get_voice_key(base64_content: str) -> str:
"""为语音内容生成一个一致的键。"""
return hashlib.sha256(base64_content.encode("utf-8")).hexdigest()
def register_self_voice(base64_content: str, text: str):
"""
为机器人自己发送的语音消息注册其原始文本。
Args:
base64_content (str): 语音的base64编码内容。
text (str): 原始文本。
"""
key = get_voice_key(base64_content)
_self_voice_cache[key] = text
def consume_self_voice_text(base64_content: str) -> str | None:
"""
获取并移除机器人自己发送的语音消息的原始文本。
这是一个一次性操作,获取后即从缓存中删除。
Args:
base64_content (str): 语音的base64编码内容。
Returns:
str | None: 如果找到则返回原始文本否则返回None。
"""
key = get_voice_key(base64_content)
return _self_voice_cache.pop(key, None)