mirror of https://github.com/Mai-with-u/MaiBot.git
ruff fix
parent
7e63c36aa4
commit
b4e9fd113c
|
|
@ -139,14 +139,16 @@ class WillingManager:
|
|||
if chat_id not in self.chat_high_willing_duration:
|
||||
self.chat_high_willing_duration[chat_id] = random.randint(180, 240) # 3-4分钟
|
||||
|
||||
async def change_reply_willing_received(self,
|
||||
chat_stream: ChatStream,
|
||||
topic: str = None,
|
||||
is_mentioned_bot: bool = False,
|
||||
config = None,
|
||||
is_emoji: bool = False,
|
||||
interested_rate: float = 0,
|
||||
sender_id: str = None) -> float:
|
||||
async def change_reply_willing_received(
|
||||
self,
|
||||
chat_stream: ChatStream,
|
||||
topic: str = None,
|
||||
is_mentioned_bot: bool = False,
|
||||
config=None,
|
||||
is_emoji: bool = False,
|
||||
interested_rate: float = 0,
|
||||
sender_id: str = None,
|
||||
) -> float:
|
||||
"""改变指定聊天流的回复意愿并返回回复概率"""
|
||||
# 获取或创建聊天流
|
||||
stream = chat_stream
|
||||
|
|
@ -180,10 +182,15 @@ class WillingManager:
|
|||
|
||||
# 改进的追问检测逻辑
|
||||
time_window = 180 # 扩大到3分钟
|
||||
max_msgs = 8 # 增加消息数量阈值
|
||||
max_msgs = 8 # 增加消息数量阈值
|
||||
|
||||
# 1. 同一用户短时间内发送多条消息
|
||||
if sender_id and sender_id == last_sender and current_time - last_reply_time < time_window and msg_count <= max_msgs:
|
||||
if (
|
||||
sender_id
|
||||
and sender_id == last_sender
|
||||
and current_time - last_reply_time < time_window
|
||||
and msg_count <= max_msgs
|
||||
):
|
||||
is_follow_up_question = True
|
||||
in_conversation_context = True
|
||||
self.chat_conversation_context[chat_id] = True
|
||||
|
|
@ -191,9 +198,9 @@ class WillingManager:
|
|||
# 根据消息间隔动态调整回复意愿提升
|
||||
time_since_last = current_time - last_reply_time
|
||||
if time_since_last < 60: # 1分钟内
|
||||
current_willing += 0.4 # 快速跟进,提高更多
|
||||
current_willing += 0.4 # 快速跟进,提高更多
|
||||
else:
|
||||
current_willing += 0.2 # 较慢跟进,提高较少
|
||||
current_willing += 0.2 # 较慢跟进,提高较少
|
||||
|
||||
logger.debug(f"检测到追问 (同一用户), 提高回复意愿, 时间间隔: {time_since_last:.1f}秒")
|
||||
|
||||
|
|
@ -201,7 +208,7 @@ class WillingManager:
|
|||
elif in_conversation_context and current_time - last_reply_time < time_window:
|
||||
# 处于活跃对话中,但不是同一用户,视为对话延续
|
||||
in_conversation_context = True
|
||||
logger.debug(f"检测到对话延续 (不同用户), 保持对话上下文")
|
||||
logger.debug("检测到对话延续 (不同用户), 保持对话上下文")
|
||||
|
||||
# 特殊情况处理
|
||||
if is_mentioned_bot:
|
||||
|
|
@ -249,10 +256,10 @@ class WillingManager:
|
|||
# 根据连续回复次数调整概率
|
||||
if consecutive_replies >= 4:
|
||||
reply_probability *= 0.01 # 连续回复4次或以上,降低到1%
|
||||
logger.debug(f"连续回复次数 >= 3, 降低回复概率到1%")
|
||||
logger.debug("连续回复次数 >= 3, 降低回复概率到1%")
|
||||
elif consecutive_replies >= 3:
|
||||
reply_probability *= 0.1 # 连续回复3次,降低到10%
|
||||
logger.debug(f"连续回复次数 = 2, 降低回复概率到10%")
|
||||
reply_probability *= 0.1 # 连续回复3次,降低到10%
|
||||
logger.debug("连续回复次数 = 2, 降低回复概率到10%")
|
||||
|
||||
# 检查是否为冷群,提高冷群的回复概率
|
||||
if chat_stream.group_info:
|
||||
|
|
@ -373,7 +380,7 @@ class WillingManager:
|
|||
self.chat_last_reply_time,
|
||||
self.chat_last_sender_id,
|
||||
self.chat_conversation_context,
|
||||
self.chat_consecutive_replies
|
||||
self.chat_consecutive_replies,
|
||||
]
|
||||
|
||||
for dictionary in dictionaries:
|
||||
|
|
@ -444,7 +451,7 @@ class WillingManager:
|
|||
# 通常聊天流ID中会包含群组ID信息
|
||||
# 根据实际格式进行提取,这里假设格式为 platform:group_id:user_id
|
||||
try:
|
||||
parts = chat_id.split(':')
|
||||
parts = chat_id.split(":")
|
||||
if len(parts) >= 2:
|
||||
return f"{parts[0]}:{parts[1]}" # platform:group_id作为群组标识
|
||||
return chat_id
|
||||
|
|
@ -509,11 +516,13 @@ class WillingManager:
|
|||
scaled_active_users = active_users_count / scaled_interval
|
||||
|
||||
# 判断是否为冷群
|
||||
is_cold = (scaled_active_users < 5.0 and scaled_message_count < 20.0)
|
||||
is_cold = scaled_active_users < 5.0 and scaled_message_count < 20.0
|
||||
|
||||
# 更新冷群状态
|
||||
self.group_is_cold[group_id] = is_cold
|
||||
logger.debug(f"群 {group_id} 活跃度检查: 消息数={message_count}, 活跃用户数={active_users_count}, 时间间隔={interval:.1f}秒, 判定为{'冷群' if is_cold else '活跃群'}")
|
||||
logger.debug(
|
||||
f"群 {group_id} 活跃度检查: 消息数={message_count}, 活跃用户数={active_users_count}, 时间间隔={interval:.1f}秒, 判定为{'冷群' if is_cold else '活跃群'}"
|
||||
)
|
||||
|
||||
async def _cold_group_check(self):
|
||||
"""定期检查所有群组的冷热状态"""
|
||||
|
|
@ -550,5 +559,6 @@ class WillingManager:
|
|||
if inactive_groups:
|
||||
logger.debug(f"已清理 {len(inactive_groups)} 个不活跃的群组记录")
|
||||
|
||||
|
||||
# 创建全局实例
|
||||
willing_manager = WillingManager()
|
||||
Loading…
Reference in New Issue