fix(emoji_manager): 优化表情包删除和使用记录逻辑,确保在未找到记录时不再抛出异常,改为记录警告信息

This commit is contained in:
minecraft1024a
2025-08-12 15:01:45 +08:00
committed by Windpicker-owo
parent be13559563
commit a87dfd97b1

View File

@@ -206,10 +206,11 @@ class MaiEmoji:
# 2. 删除数据库记录 # 2. 删除数据库记录
try: try:
will_delete_emoji = session.execute(select(Emoji).where(Emoji.emoji_hash == self.hash)).scalar_one_or_none() will_delete_emoji = session.execute(select(Emoji).where(Emoji.emoji_hash == self.hash)).scalar_one_or_none()
result = will_delete_emoji.delete_instance() # Returns the number of rows deleted. if will_delete_emoji is None:
except Emoji.DoesNotExist: # type: ignore logger.warning(f"[删除] 数据库中未找到哈希值为 {self.hash} 的表情包记录。")
logger.warning(f"[删除] 数据库中未找到哈希值为 {self.hash} 的表情包记录。") result = 0 # Indicate no DB record was deleted
result = 0 # Indicate no DB record was deleted else:
result = will_delete_emoji.delete_instance() # Returns the number of rows deleted.
if result > 0: if result > 0:
logger.info(f"[删除] 表情包数据库记录 {self.filename} (Hash: {self.hash})") logger.info(f"[删除] 表情包数据库记录 {self.filename} (Hash: {self.hash})")
@@ -420,11 +421,12 @@ class EmojiManager:
"""记录表情使用次数""" """记录表情使用次数"""
try: try:
emoji_update = session.execute(select(Emoji).where(Emoji.emoji_hash == emoji_hash)).scalar_one_or_none() emoji_update = session.execute(select(Emoji).where(Emoji.emoji_hash == emoji_hash)).scalar_one_or_none()
emoji_update.usage_count += 1 if emoji_update is None:
emoji_update.last_used_time = time.time() # Update last used time logger.error(f"记录表情使用失败: 未找到 hash 为 {emoji_hash} 的表情包")
emoji_update.save() # Persist changes to DB else:
except Emoji.DoesNotExist: # type: ignore emoji_update.usage_count += 1
logger.error(f"记录表情使用失败: 未找到 hash 为 {emoji_hash} 的表情包") emoji_update.last_used_time = time.time() # Update last used time
emoji_update.save() # Persist changes to DB
except Exception as e: except Exception as e:
logger.error(f"记录表情使用失败: {str(e)}") logger.error(f"记录表情使用失败: {str(e)}")