mirror of https://github.com/Mai-with-u/MaiBot.git
表情管理器调整,减少计算
parent
537b24c24e
commit
0a572515ba
|
|
@ -56,15 +56,26 @@ class EmojiManager:
|
||||||
|
|
||||||
logger.info("启动表情包管理器")
|
logger.info("启动表情包管理器")
|
||||||
|
|
||||||
async def get_emoji_description_by_bytes(self, emoji_bytes: bytes) -> Optional[Tuple[str, List[str]]]:
|
async def get_emoji_description(
|
||||||
|
self, emoji_bytes: Optional[bytes] = None, emoji_hash: Optional[str] = None
|
||||||
|
) -> Optional[Tuple[str, List[str]]]:
|
||||||
"""
|
"""
|
||||||
根据表情包哈希获取表情包描述的封装方法
|
根据表情包哈希获取表情包描述的封装方法
|
||||||
|
|
||||||
|
Args:
|
||||||
|
emoji_bytes (Optional[bytes]): 表情包的字节数据,如果提供了字节数据但数据库中没有找到对应记录,则会尝试构建表情包描述
|
||||||
|
emoji_hash (Optional[str]): 表情包的哈希值,如果提供了哈希值则优先使用哈希值查找表情包描述
|
||||||
Returns:
|
Returns:
|
||||||
return (Optional[Tuple[str, List[str]]]): 如果找到对应的表情包,则返回包含描述和情感标签的元组;若没找到,则尝试构建表情包描述并返回,如果构建失败则返回 None
|
return (Optional[Tuple[str, List[str]]]): 如果找到对应的表情包,则返回包含描述和情感标签的元组;若没找到,则尝试构建表情包描述并返回,如果构建失败则返回 None
|
||||||
"""
|
"""
|
||||||
# 先查找
|
# 先查找
|
||||||
emoji_hash = hashlib.sha256(emoji_bytes).hexdigest()
|
if emoji_hash is None and emoji_bytes is not None:
|
||||||
|
emoji_hash = hashlib.sha256(emoji_bytes).hexdigest()
|
||||||
|
else:
|
||||||
|
emoji_hash = emoji_hash
|
||||||
|
if not emoji_hash:
|
||||||
|
raise ValueError("获取表情包描述失败: 既没有提供表情包字节数据,也没有提供表情包哈希值")
|
||||||
|
|
||||||
if emoji := self.get_emoji_by_hash(emoji_hash):
|
if emoji := self.get_emoji_by_hash(emoji_hash):
|
||||||
return emoji.description, emoji.emotion or []
|
return emoji.description, emoji.emotion or []
|
||||||
try:
|
try:
|
||||||
|
|
@ -75,6 +86,10 @@ class EmojiManager:
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.warning(f"从数据库查找表情包时出错: {e},将尝试构建表情包描述")
|
logger.warning(f"从数据库查找表情包时出错: {e},将尝试构建表情包描述")
|
||||||
|
|
||||||
|
# 如果提供了字节数据但数据库中没有找到,尝试构建
|
||||||
|
if not emoji_bytes:
|
||||||
|
return None
|
||||||
|
|
||||||
# 找不到尝试构建
|
# 找不到尝试构建
|
||||||
logger.info(f"未找到哈希值为 {emoji_hash} 的表情包与其描述,尝试构建描述")
|
logger.info(f"未找到哈希值为 {emoji_hash} 的表情包与其描述,尝试构建描述")
|
||||||
full_path = EMOJI_DIR / f"{emoji_hash}.png"
|
full_path = EMOJI_DIR / f"{emoji_hash}.png"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue