mirror of https://github.com/Mai-with-u/MaiBot.git
refactor: logger promotion
parent
5746afaa2a
commit
052802c851
|
|
@ -63,7 +63,7 @@ async def start_background_tasks():
|
||||||
# 初始化并启动情绪管理器
|
# 初始化并启动情绪管理器
|
||||||
mood_manager = MoodManager.get_instance()
|
mood_manager = MoodManager.get_instance()
|
||||||
mood_manager.start_mood_update(update_interval=global_config.mood_update_interval)
|
mood_manager.start_mood_update(update_interval=global_config.mood_update_interval)
|
||||||
logger.success("[初始化]情绪管理器已启动")
|
logger.success("情绪管理器启动成功")
|
||||||
|
|
||||||
# 只启动表情包管理任务
|
# 只启动表情包管理任务
|
||||||
asyncio.create_task(emoji_manager.start_periodic_check(interval_MINS=global_config.EMOJI_CHECK_INTERVAL))
|
asyncio.create_task(emoji_manager.start_periodic_check(interval_MINS=global_config.EMOJI_CHECK_INTERVAL))
|
||||||
|
|
|
||||||
|
|
@ -302,7 +302,7 @@ class EmojiManager:
|
||||||
# 从数据库中删除记录
|
# 从数据库中删除记录
|
||||||
result = self.db.db.emoji.delete_one({'_id': emoji['_id']})
|
result = self.db.db.emoji.delete_one({'_id': emoji['_id']})
|
||||||
if result.deleted_count > 0:
|
if result.deleted_count > 0:
|
||||||
logger.success(f"成功删除数据库记录: {emoji['_id']}")
|
logger.debug(f"成功删除数据库记录: {emoji['_id']}")
|
||||||
removed_count += 1
|
removed_count += 1
|
||||||
else:
|
else:
|
||||||
logger.error(f"删除数据库记录失败: {emoji['_id']}")
|
logger.error(f"删除数据库记录失败: {emoji['_id']}")
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
import asyncio
|
import asyncio
|
||||||
|
from loguru import logger
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
from ...common.database import Database
|
from ...common.database import Database
|
||||||
|
|
@ -8,9 +9,10 @@ class Impression:
|
||||||
traits: str = None
|
traits: str = None
|
||||||
called: str = None
|
called: str = None
|
||||||
know_time: float = None
|
know_time: float = None
|
||||||
|
|
||||||
relationship_value: float = None
|
relationship_value: float = None
|
||||||
|
|
||||||
|
|
||||||
class Relationship:
|
class Relationship:
|
||||||
user_id: int = None
|
user_id: int = None
|
||||||
# impression: Impression = None
|
# impression: Impression = None
|
||||||
|
|
@ -21,7 +23,7 @@ class Relationship:
|
||||||
nickname: str = None
|
nickname: str = None
|
||||||
relationship_value: float = None
|
relationship_value: float = None
|
||||||
saved = False
|
saved = False
|
||||||
|
|
||||||
def __init__(self, user_id: int, data=None, **kwargs):
|
def __init__(self, user_id: int, data=None, **kwargs):
|
||||||
if isinstance(data, dict):
|
if isinstance(data, dict):
|
||||||
# 如果输入是字典,使用字典解析
|
# 如果输入是字典,使用字典解析
|
||||||
|
|
@ -39,14 +41,12 @@ class Relationship:
|
||||||
self.nickname = kwargs.get('nickname')
|
self.nickname = kwargs.get('nickname')
|
||||||
self.relationship_value = kwargs.get('relationship_value', 0.0)
|
self.relationship_value = kwargs.get('relationship_value', 0.0)
|
||||||
self.saved = kwargs.get('saved', False)
|
self.saved = kwargs.get('saved', False)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class RelationshipManager:
|
class RelationshipManager:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.relationships: dict[int, Relationship] = {}
|
self.relationships: dict[int, Relationship] = {}
|
||||||
|
|
||||||
async def update_relationship(self, user_id: int, data=None, **kwargs):
|
async def update_relationship(self, user_id: int, data=None, **kwargs):
|
||||||
# 检查是否在内存中已存在
|
# 检查是否在内存中已存在
|
||||||
relationship = self.relationships.get(user_id)
|
relationship = self.relationships.get(user_id)
|
||||||
|
|
@ -62,7 +62,8 @@ class RelationshipManager:
|
||||||
setattr(relationship, key, value)
|
setattr(relationship, key, value)
|
||||||
else:
|
else:
|
||||||
# 如果不存在,创建新对象
|
# 如果不存在,创建新对象
|
||||||
relationship = Relationship(user_id, data=data) if isinstance(data, dict) else Relationship(user_id, **kwargs)
|
relationship = Relationship(user_id, data=data) if isinstance(data, dict) else Relationship(user_id,
|
||||||
|
**kwargs)
|
||||||
self.relationships[user_id] = relationship
|
self.relationships[user_id] = relationship
|
||||||
|
|
||||||
# 更新 id_name_nickname_table
|
# 更新 id_name_nickname_table
|
||||||
|
|
@ -71,9 +72,9 @@ class RelationshipManager:
|
||||||
# 保存到数据库
|
# 保存到数据库
|
||||||
await self.storage_relationship(relationship)
|
await self.storage_relationship(relationship)
|
||||||
relationship.saved = True
|
relationship.saved = True
|
||||||
|
|
||||||
return relationship
|
return relationship
|
||||||
|
|
||||||
async def update_relationship_value(self, user_id: int, **kwargs):
|
async def update_relationship_value(self, user_id: int, **kwargs):
|
||||||
# 检查是否在内存中已存在
|
# 检查是否在内存中已存在
|
||||||
relationship = self.relationships.get(user_id)
|
relationship = self.relationships.get(user_id)
|
||||||
|
|
@ -85,31 +86,30 @@ class RelationshipManager:
|
||||||
relationship.saved = True
|
relationship.saved = True
|
||||||
return relationship
|
return relationship
|
||||||
else:
|
else:
|
||||||
print(f"\033[1;31m[关系管理]\033[0m 用户 {user_id} 不存在,无法更新")
|
logger.warning(f"用户 {user_id} 不存在,无法更新")
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
def get_relationship(self, user_id: int) -> Optional[Relationship]:
|
def get_relationship(self, user_id: int) -> Optional[Relationship]:
|
||||||
"""获取用户关系对象"""
|
"""获取用户关系对象"""
|
||||||
if user_id in self.relationships:
|
if user_id in self.relationships:
|
||||||
return self.relationships[user_id]
|
return self.relationships[user_id]
|
||||||
else:
|
else:
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
async def load_relationship(self, data: dict) -> Relationship:
|
async def load_relationship(self, data: dict) -> Relationship:
|
||||||
"""从数据库加载或创建新的关系对象"""
|
"""从数据库加载或创建新的关系对象"""
|
||||||
rela = Relationship(user_id=data['user_id'], data=data)
|
rela = Relationship(user_id=data['user_id'], data=data)
|
||||||
rela.saved = True
|
rela.saved = True
|
||||||
self.relationships[rela.user_id] = rela
|
self.relationships[rela.user_id] = rela
|
||||||
return rela
|
return rela
|
||||||
|
|
||||||
async def load_all_relationships(self):
|
async def load_all_relationships(self):
|
||||||
"""加载所有关系对象"""
|
"""加载所有关系对象"""
|
||||||
db = Database.get_instance()
|
db = Database.get_instance()
|
||||||
all_relationships = db.db.relationships.find({})
|
all_relationships = db.db.relationships.find({})
|
||||||
for data in all_relationships:
|
for data in all_relationships:
|
||||||
await self.load_relationship(data)
|
await self.load_relationship(data)
|
||||||
|
|
||||||
async def _start_relationship_manager(self):
|
async def _start_relationship_manager(self):
|
||||||
"""每5分钟自动保存一次关系数据"""
|
"""每5分钟自动保存一次关系数据"""
|
||||||
db = Database.get_instance()
|
db = Database.get_instance()
|
||||||
|
|
@ -119,23 +119,23 @@ class RelationshipManager:
|
||||||
for data in all_relationships:
|
for data in all_relationships:
|
||||||
user_id = data['user_id']
|
user_id = data['user_id']
|
||||||
relationship = await self.load_relationship(data)
|
relationship = await self.load_relationship(data)
|
||||||
self.relationships[user_id] = relationship
|
self.relationships[user_id] = relationship
|
||||||
print(f"\033[1;32m[关系管理]\033[0m 已加载 {len(self.relationships)} 条关系记录")
|
logger.debug(f"已加载 {len(self.relationships)} 条关系记录")
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
print("\033[1;32m[关系管理]\033[0m 正在自动保存关系")
|
logger.debug("正在自动保存关系")
|
||||||
await asyncio.sleep(300) # 等待300秒(5分钟)
|
await asyncio.sleep(300) # 等待300秒(5分钟)
|
||||||
await self._save_all_relationships()
|
await self._save_all_relationships()
|
||||||
|
|
||||||
async def _save_all_relationships(self):
|
async def _save_all_relationships(self):
|
||||||
"""将所有关系数据保存到数据库"""
|
"""将所有关系数据保存到数据库"""
|
||||||
# 保存所有关系数据
|
# 保存所有关系数据
|
||||||
for userid, relationship in self.relationships.items():
|
for userid, relationship in self.relationships.items():
|
||||||
if not relationship.saved:
|
if not relationship.saved:
|
||||||
relationship.saved = True
|
relationship.saved = True
|
||||||
await self.storage_relationship(relationship)
|
await self.storage_relationship(relationship)
|
||||||
|
|
||||||
async def storage_relationship(self,relationship: Relationship):
|
async def storage_relationship(self, relationship: Relationship):
|
||||||
"""
|
"""
|
||||||
将关系记录存储到数据库中
|
将关系记录存储到数据库中
|
||||||
"""
|
"""
|
||||||
|
|
@ -145,7 +145,7 @@ class RelationshipManager:
|
||||||
gender = relationship.gender
|
gender = relationship.gender
|
||||||
age = relationship.age
|
age = relationship.age
|
||||||
saved = relationship.saved
|
saved = relationship.saved
|
||||||
|
|
||||||
db = Database.get_instance()
|
db = Database.get_instance()
|
||||||
db.db.relationships.update_one(
|
db.db.relationships.update_one(
|
||||||
{'user_id': user_id},
|
{'user_id': user_id},
|
||||||
|
|
@ -158,7 +158,7 @@ class RelationshipManager:
|
||||||
}},
|
}},
|
||||||
upsert=True
|
upsert=True
|
||||||
)
|
)
|
||||||
|
|
||||||
def get_name(self, user_id: int) -> str:
|
def get_name(self, user_id: int) -> str:
|
||||||
# 确保user_id是整数类型
|
# 确保user_id是整数类型
|
||||||
user_id = int(user_id)
|
user_id = int(user_id)
|
||||||
|
|
@ -169,4 +169,4 @@ class RelationshipManager:
|
||||||
return "某人"
|
return "某人"
|
||||||
|
|
||||||
|
|
||||||
relationship_manager = RelationshipManager()
|
relationship_manager = RelationshipManager()
|
||||||
|
|
|
||||||
|
|
@ -57,12 +57,12 @@ class ScheduleGenerator:
|
||||||
|
|
||||||
existing_schedule = self.db.db.schedule.find_one({"date": date_str})
|
existing_schedule = self.db.db.schedule.find_one({"date": date_str})
|
||||||
if existing_schedule:
|
if existing_schedule:
|
||||||
logger.info(f"{date_str}的日程已存在:")
|
logger.debug(f"{date_str}的日程已存在:")
|
||||||
schedule_text = existing_schedule["schedule"]
|
schedule_text = existing_schedule["schedule"]
|
||||||
# print(self.schedule_text)
|
# print(self.schedule_text)
|
||||||
|
|
||||||
elif read_only == False:
|
elif not read_only:
|
||||||
logger.info(f"{date_str}的日程不存在,准备生成新的日程。")
|
logger.debug(f"{date_str}的日程不存在,准备生成新的日程。")
|
||||||
prompt = f"""我是{global_config.BOT_NICKNAME},{global_config.PROMPT_SCHEDULE_GEN},请为我生成{date_str}({weekday})的日程安排,包括:""" + \
|
prompt = f"""我是{global_config.BOT_NICKNAME},{global_config.PROMPT_SCHEDULE_GEN},请为我生成{date_str}({weekday})的日程安排,包括:""" + \
|
||||||
"""
|
"""
|
||||||
1. 早上的学习和工作安排
|
1. 早上的学习和工作安排
|
||||||
|
|
@ -78,7 +78,7 @@ class ScheduleGenerator:
|
||||||
schedule_text = "生成日程时出错了"
|
schedule_text = "生成日程时出错了"
|
||||||
# print(self.schedule_text)
|
# print(self.schedule_text)
|
||||||
else:
|
else:
|
||||||
logger.info(f"{date_str}的日程不存在。")
|
logger.debug(f"{date_str}的日程不存在。")
|
||||||
schedule_text = "忘了"
|
schedule_text = "忘了"
|
||||||
|
|
||||||
return schedule_text, None
|
return schedule_text, None
|
||||||
|
|
@ -154,10 +154,10 @@ class ScheduleGenerator:
|
||||||
logger.warning("今日日程有误,将在下次运行时重新生成")
|
logger.warning("今日日程有误,将在下次运行时重新生成")
|
||||||
self.db.db.schedule.delete_one({"date": datetime.datetime.now().strftime("%Y-%m-%d")})
|
self.db.db.schedule.delete_one({"date": datetime.datetime.now().strftime("%Y-%m-%d")})
|
||||||
else:
|
else:
|
||||||
logger.info("\n=== 今日日程安排 ===")
|
logger.info("=== 今日日程安排 ===")
|
||||||
for time_str, activity in self.today_schedule.items():
|
for time_str, activity in self.today_schedule.items():
|
||||||
logger.info(f"时间[{time_str}]: 活动[{activity}]")
|
logger.info(f"时间[{time_str}]: 活动[{activity}]")
|
||||||
logger.info("==================\n")
|
logger.info("==================")
|
||||||
|
|
||||||
|
|
||||||
# def main():
|
# def main():
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue