v0.2修改了一些东西

使概率配置生效
将一些模块解耦合
将组信息管理器合并到关系管理器,添加了可以全局调用的接口
精简了llm生成器的代码
精简了message代码
重写了回复后处理
This commit is contained in:
SengokuCola
2025-02-28 00:28:34 +08:00
parent 6938a97941
commit 870be0a426
14 changed files with 333 additions and 653 deletions

View File

@@ -46,8 +46,8 @@ class Relationship:
class RelationshipManager:
def __init__(self):
self.relationships: dict[int, Relationship] = {} # user_id -> Relationship
#保存 qq号现在使用昵称别称
self.id_name_nickname_table: dict[str, str, list] = {} # name -> [nickname, nickname, ...]
# self.id_name_nickname_table: dict[str, list] = {} # name -> [nickname, nickname, ...]
# print("[关系管理] 初始化 id_name_nickname_table") # 调试信息
async def update_relationship(self, user_id: int, data=None, **kwargs):
# 检查是否在内存中已存在
@@ -67,6 +67,9 @@ class RelationshipManager:
relationship = Relationship(user_id, data=data) if isinstance(data, dict) else Relationship(user_id, **kwargs)
self.relationships[user_id] = relationship
# 更新 id_name_nickname_table
# self.id_name_nickname_table[user_id] = [relationship.nickname] # 别称设置为空列表
# 保存到数据库
await self.storage_relationship(relationship)
relationship.saved = True
@@ -149,31 +152,12 @@ class RelationshipManager:
}},
upsert=True
)
@staticmethod
async def get_user_nickname(bot: Bot, user_id: int, group_id: int = None) -> Tuple[str, Optional[str]]:
"""
通过QQ API获取用户昵称
"""
# 获取QQ昵称
stranger_info = await bot.get_stranger_info(user_id=user_id)
qq_nickname = stranger_info['nickname']
# 如果提供了群号,获取群昵称
if group_id:
try:
member_info = await bot.get_group_member_info(
group_id=group_id,
user_id=user_id,
no_cache=True
)
group_nickname = member_info['card'] or None
return qq_nickname, group_nickname
except:
return qq_nickname, None
return qq_nickname, None
def get_name(self, user_id: int) -> str:
if user_id in self.relationships:
return self.relationships[user_id].nickname
else:
return "[某人]"
def print_all_relationships(self):
"""打印内存中所有的关系记录"""
@@ -193,8 +177,4 @@ class RelationshipManager:
print("=" * 50)
relationship_manager = RelationshipManager()