Merge pull request #571 from MaiM-with-u/main-fix

Main fix
This commit is contained in:
SengokuCola
2025-03-25 15:49:45 +08:00
committed by GitHub
3 changed files with 49 additions and 15 deletions

View File

@@ -25,7 +25,11 @@ except ImportError:
# 配置控制台输出格式 # 配置控制台输出格式
logger.remove() # 移除默认的处理器 logger.remove() # 移除默认的处理器
logger.add(sys.stderr, format="{time:MM-DD HH:mm} | emoji_reviewer | {message}") # 添加控制台输出 logger.add(sys.stderr, format="{time:MM-DD HH:mm} | emoji_reviewer | {message}") # 添加控制台输出
logger.add("logs/emoji_reviewer/{time:YYYY-MM-DD}.log", rotation="00:00", format="{time:MM-DD HH:mm} | emoji_reviewer | {message}") logger.add(
"logs/emoji_reviewer/{time:YYYY-MM-DD}.log",
rotation="00:00",
format="{time:MM-DD HH:mm} | emoji_reviewer | {message}"
)
logger.warning("检测到src.common.logger并未导入将使用默认loguru作为日志记录器") logger.warning("检测到src.common.logger并未导入将使用默认loguru作为日志记录器")
logger.warning("如果你是用的是低版本(0.5.13)麦麦,请忽略此警告") logger.warning("如果你是用的是低版本(0.5.13)麦麦,请忽略此警告")
# 忽略 gradio 版本警告 # 忽略 gradio 版本警告
@@ -43,8 +47,8 @@ if os.path.exists(bot_config_path):
except tomli.TOMLDecodeError as e: except tomli.TOMLDecodeError as e:
logger.critical(f"配置文件bot_config.toml填写有误请检查第{e.lineno}行第{e.colno}处:{e.msg}") logger.critical(f"配置文件bot_config.toml填写有误请检查第{e.lineno}行第{e.colno}处:{e.msg}")
exit(1) exit(1)
except KeyError as e: except KeyError:
logger.critical(f"配置文件bot_config.toml缺少model.embedding设置请补充后再编辑表情包") logger.critical("配置文件bot_config.toml缺少model.embedding设置请补充后再编辑表情包")
exit(1) exit(1)
else: else:
logger.critical(f"没有找到配置文件{bot_config_path}") logger.critical(f"没有找到配置文件{bot_config_path}")
@@ -61,7 +65,7 @@ tags = {
"blacklist": ("黑名单", "排除"), "blacklist": ("黑名单", "排除"),
} }
format_choices = ["包括", ""] format_choices = ["包括", ""]
formats = ["jpg", "png", "gif"] formats = ["jpg", "jpeg", "png", "gif", "其它"]
def signal_handler(signum, frame): def signal_handler(signum, frame):
@@ -106,7 +110,7 @@ async def get_embedding(text):
return embedding return embedding
else: else:
return f"网络错误{response.status_code}" return f"网络错误{response.status_code}"
except: except Exception:
return None return None
@@ -133,10 +137,16 @@ def filter_emojis(tag_filters, format_filters):
elif value == "排除": elif value == "排除":
e_filtered = [d for d in e_filtered if tag not in d] e_filtered = [d for d in e_filtered if tag not in d]
if len(format_include) > 0: if '其它' in format_include:
exclude = [f for f in formats if f not in format_include]
if exclude:
ff = '|'.join(exclude)
compiled_pattern = re.compile(rf"\.({ff})$", re.IGNORECASE)
e_filtered = [d for d in e_filtered if not compiled_pattern.search(d.get("path", ""), re.IGNORECASE)]
else:
ff = '|'.join(format_include) ff = '|'.join(format_include)
pattern = rf"\.({ff})$" compiled_pattern = re.compile(rf"\.({ff})$", re.IGNORECASE)
e_filtered = [d for d in e_filtered if re.search(pattern, d.get("path", ""), re.IGNORECASE)] e_filtered = [d for d in e_filtered if compiled_pattern.search(d.get("path", ""), re.IGNORECASE)]
emoji_filtered = e_filtered emoji_filtered = e_filtered
@@ -170,7 +180,7 @@ def on_select(evt: gr.SelectData, *tag_values):
if new_index is None: if new_index is None:
emoji_show = None emoji_show = None
targets = [] targets = []
for current_value, tag in zip(tag_values, tags.keys()): for current_value in tag_values:
if current_value: if current_value:
neglect_update += 1 neglect_update += 1
targets.append(False) targets.append(False)
@@ -224,7 +234,11 @@ async def save_desc(desc):
yield ["正在构建embedding请勿关闭页面...", gr.update(interactive=False), gr.update(interactive=False)] yield ["正在构建embedding请勿关闭页面...", gr.update(interactive=False), gr.update(interactive=False)]
embedding = await get_embedding(desc) embedding = await get_embedding(desc)
if embedding is None or isinstance(embedding, str): if embedding is None or isinstance(embedding, str):
yield [f"<span style='color: red;'>获取embeddings失败{embedding}</span>", gr.update(interactive=True), gr.update(interactive=True)] yield [
f"<span style='color: red;'>获取embeddings失败{embedding}</span>",
gr.update(interactive=True),
gr.update(interactive=True)
]
else: else:
e_id = emoji_show["_id"] e_id = emoji_show["_id"]
update_dict = {"$set": {"embedding": embedding, "description": desc}} update_dict = {"$set": {"embedding": embedding, "description": desc}}
@@ -239,7 +253,11 @@ async def save_desc(desc):
logger.info(f'Update description and embeddings: {e_id}(hash={hash})') logger.info(f'Update description and embeddings: {e_id}(hash={hash})')
yield ["保存完成", gr.update(value=desc, interactive=True), gr.update(interactive=True)] yield ["保存完成", gr.update(value=desc, interactive=True), gr.update(interactive=True)]
except Exception as e: except Exception as e:
yield [f"<span style='color: red;'>出现异常: {e}</span>", gr.update(interactive=True), gr.update(interactive=True)] yield [
f"<span style='color: red;'>出现异常: {e}</span>",
gr.update(interactive=True),
gr.update(interactive=True)
]
else: else:
yield ["没有选中表情包", gr.update()] yield ["没有选中表情包", gr.update()]
@@ -343,8 +361,8 @@ with gr.Blocks(title="MaimBot表情包审查器") as app:
gallery.select(fn=on_select, inputs=list(tag_boxes.values()), outputs=[gallery, description, *tag_boxes.values()]) gallery.select(fn=on_select, inputs=list(tag_boxes.values()), outputs=[gallery, description, *tag_boxes.values()])
revert_btn.click(fn=revert_desc, inputs=None, outputs=description) revert_btn.click(fn=revert_desc, inputs=None, outputs=description)
save_btn.click(fn=save_desc, inputs=description, outputs=[description_label, description, save_btn]) save_btn.click(fn=save_desc, inputs=description, outputs=[description_label, description, save_btn])
for k, v in tag_boxes.items(): for box in tag_boxes.values():
v.change(fn=change_tag, inputs=list(tag_boxes.values()), outputs=description_label) box.change(fn=change_tag, inputs=list(tag_boxes.values()), outputs=description_label)
app.load( app.load(
fn=update_gallery, fn=update_gallery,
inputs=[check_from_latest, *filters], inputs=[check_from_latest, *filters],

View File

@@ -398,7 +398,9 @@ class EmojiManager:
# 修复拼写错误 # 修复拼写错误
if "discription" in emoji: if "discription" in emoji:
desc = emoji["discription"] desc = emoji["discription"]
db.emoji.update_one({"_id": emoji["_id"]}, {"$unset": {"discription": ""}, "$set": {"description": desc}}) db.emoji.update_one(
{"_id": emoji["_id"]}, {"$unset": {"discription": ""}, "$set": {"description": desc}}
)
except Exception as item_error: except Exception as item_error:
logger.error(f"[错误] 处理表情包记录时出错: {str(item_error)}") logger.error(f"[错误] 处理表情包记录时出错: {str(item_error)}")

View File

@@ -6,6 +6,7 @@ from ...common.database import db
from .message_base import UserInfo from .message_base import UserInfo
from .chat_stream import ChatStream from .chat_stream import ChatStream
import math import math
from bson.decimal128 import Decimal128
logger = get_module_logger("rel_manager") logger = get_module_logger("rel_manager")
@@ -113,6 +114,19 @@ class RelationshipManager:
if relationship: if relationship:
for k, value in kwargs.items(): for k, value in kwargs.items():
if k == "relationship_value": if k == "relationship_value":
# 检查relationship.relationship_value是否为double类型
if not isinstance(relationship.relationship_value, float):
try:
# 处理 Decimal128 类型
if isinstance(relationship.relationship_value, Decimal128):
relationship.relationship_value = float(relationship.relationship_value.to_decimal())
else:
relationship.relationship_value = float(relationship.relationship_value)
logger.info(f"[关系管理] 用户 {user_id}({platform}) 的关系值已转换为double类型: {relationship.relationship_value}")
except (ValueError, TypeError):
# 如果不能解析/强转则将relationship.relationship_value设置为double类型的0
relationship.relationship_value = 0.0
logger.warning(f"[关系管理] 用户 {user_id}({platform}) 的关系值无法转换为double类型已设置为0")
relationship.relationship_value += value relationship.relationship_value += value
await self.storage_relationship(relationship) await self.storage_relationship(relationship)
relationship.saved = True relationship.saved = True
@@ -311,7 +325,7 @@ class RelationshipManager:
level_num = 0 level_num = 0
elif -227 <= relationship_value < -73: elif -227 <= relationship_value < -73:
level_num = 1 level_num = 1
elif -76 <= relationship_value < 227: elif -73 <= relationship_value < 227:
level_num = 2 level_num = 2
elif 227 <= relationship_value < 587: elif 227 <= relationship_value < 587:
level_num = 3 level_num = 3