修改bug
This commit is contained in:
@@ -61,7 +61,7 @@ class MxpWillingManager(BaseWillingManager):
|
|||||||
"""异步任务启动器"""
|
"""异步任务启动器"""
|
||||||
asyncio.create_task(self._return_to_basic_willing())
|
asyncio.create_task(self._return_to_basic_willing())
|
||||||
asyncio.create_task(self._chat_new_message_to_change_basic_willing())
|
asyncio.create_task(self._chat_new_message_to_change_basic_willing())
|
||||||
asyncio.create_task(self.fatigue_attenuation())
|
asyncio.create_task(self._fatigue_attenuation())
|
||||||
|
|
||||||
async def before_generate_reply_handle(self, message_id: str):
|
async def before_generate_reply_handle(self, message_id: str):
|
||||||
"""回复前处理"""
|
"""回复前处理"""
|
||||||
@@ -77,7 +77,7 @@ class MxpWillingManager(BaseWillingManager):
|
|||||||
time_interval = 60 - (current_time - self.chat_bot_message_time[w_info.chat_id].pop(0))
|
time_interval = 60 - (current_time - self.chat_bot_message_time[w_info.chat_id].pop(0))
|
||||||
if w_info.chat_id not in self.chat_fatigue_punishment_list:
|
if w_info.chat_id not in self.chat_fatigue_punishment_list:
|
||||||
self.chat_fatigue_punishment_list[w_info.chat_id] = []
|
self.chat_fatigue_punishment_list[w_info.chat_id] = []
|
||||||
self.chat_fatigue_punishment_list[w_info.chat_id].append(current_time, time_interval * 2)
|
self.chat_fatigue_punishment_list[w_info.chat_id].append([current_time, time_interval * 2])
|
||||||
|
|
||||||
async def after_generate_reply_handle(self, message_id: str):
|
async def after_generate_reply_handle(self, message_id: str):
|
||||||
"""回复后处理"""
|
"""回复后处理"""
|
||||||
@@ -120,9 +120,10 @@ class MxpWillingManager(BaseWillingManager):
|
|||||||
self.logger.debug(f"基础意愿值:{current_willing}")
|
self.logger.debug(f"基础意愿值:{current_willing}")
|
||||||
|
|
||||||
if w_info.is_mentioned_bot:
|
if w_info.is_mentioned_bot:
|
||||||
current_willing += self.mention_willing_gain / (int(current_willing) + 1)
|
current_willing_ = self.mention_willing_gain / (int(current_willing) + 1)
|
||||||
|
current_willing += current_willing_
|
||||||
if self.is_debug:
|
if self.is_debug:
|
||||||
self.logger.debug(f"提及增益:{self.mention_willing_gain / (int(current_willing) + 1)}")
|
self.logger.debug(f"提及增益:{current_willing_}")
|
||||||
|
|
||||||
if w_info.interested_rate > 0:
|
if w_info.interested_rate > 0:
|
||||||
current_willing += math.atan(w_info.interested_rate / 2) / math.pi * 2 * self.interest_willing_gain
|
current_willing += math.atan(w_info.interested_rate / 2) / math.pi * 2 * self.interest_willing_gain
|
||||||
@@ -153,15 +154,20 @@ class MxpWillingManager(BaseWillingManager):
|
|||||||
chat_person_ogoing_messages = [msg for msg in chat_ongoing_messages if msg.person_id == w_info.person_id]
|
chat_person_ogoing_messages = [msg for msg in chat_ongoing_messages if msg.person_id == w_info.person_id]
|
||||||
if len(chat_person_ogoing_messages) >= 2:
|
if len(chat_person_ogoing_messages) >= 2:
|
||||||
current_willing = 0
|
current_willing = 0
|
||||||
|
if self.is_debug:
|
||||||
|
self.logger.debug("进行中消息惩罚:归0")
|
||||||
elif len(chat_ongoing_messages) == 2:
|
elif len(chat_ongoing_messages) == 2:
|
||||||
current_willing -= 0.5
|
current_willing -= 0.5
|
||||||
|
if self.is_debug:
|
||||||
|
self.logger.debug("进行中消息惩罚:-0.5")
|
||||||
elif len(chat_ongoing_messages) == 3:
|
elif len(chat_ongoing_messages) == 3:
|
||||||
current_willing -= 1.5
|
current_willing -= 1.5
|
||||||
|
if self.is_debug:
|
||||||
|
self.logger.debug("进行中消息惩罚:-1.5")
|
||||||
elif len(chat_ongoing_messages) >= 4:
|
elif len(chat_ongoing_messages) >= 4:
|
||||||
current_willing = 0
|
current_willing = 0
|
||||||
else:
|
|
||||||
if self.is_debug:
|
if self.is_debug:
|
||||||
self.logger.debug("无进行中消息惩罚")
|
self.logger.debug("进行中消息惩罚:归0")
|
||||||
|
|
||||||
|
|
||||||
probability = self._willing_to_probability(current_willing)
|
probability = self._willing_to_probability(current_willing)
|
||||||
@@ -229,8 +235,8 @@ class MxpWillingManager(BaseWillingManager):
|
|||||||
|
|
||||||
async def _chat_new_message_to_change_basic_willing(self):
|
async def _chat_new_message_to_change_basic_willing(self):
|
||||||
"""聊天流新消息改变基础意愿"""
|
"""聊天流新消息改变基础意愿"""
|
||||||
while True:
|
|
||||||
update_time = 20
|
update_time = 20
|
||||||
|
while True:
|
||||||
await asyncio.sleep(update_time)
|
await asyncio.sleep(update_time)
|
||||||
async with self.lock:
|
async with self.lock:
|
||||||
for chat_id, message_times in self.chat_new_message_time.items():
|
for chat_id, message_times in self.chat_new_message_time.items():
|
||||||
@@ -253,6 +259,8 @@ class MxpWillingManager(BaseWillingManager):
|
|||||||
else:
|
else:
|
||||||
self.logger.debug(f"聊天流{chat_id}消息时间数量异常,数量:{len(message_times)}")
|
self.logger.debug(f"聊天流{chat_id}消息时间数量异常,数量:{len(message_times)}")
|
||||||
self.chat_reply_willing[chat_id] = 0
|
self.chat_reply_willing[chat_id] = 0
|
||||||
|
if self.is_debug:
|
||||||
|
self.logger.debug(f"聊天流意愿值更新:{self.chat_reply_willing}")
|
||||||
|
|
||||||
|
|
||||||
def _get_relationship_level_num(self, relationship_value) -> int:
|
def _get_relationship_level_num(self, relationship_value) -> int:
|
||||||
@@ -278,11 +286,11 @@ class MxpWillingManager(BaseWillingManager):
|
|||||||
return math.tan(t * self.expected_replies_per_min * math.pi
|
return math.tan(t * self.expected_replies_per_min * math.pi
|
||||||
/ 120 / self.number_of_message_storage) / 2
|
/ 120 / self.number_of_message_storage) / 2
|
||||||
|
|
||||||
async def fatigue_attenuation(self):
|
async def _fatigue_attenuation(self):
|
||||||
"""疲劳衰减"""
|
"""疲劳衰减"""
|
||||||
while True:
|
while True:
|
||||||
current_time = time.time()
|
|
||||||
await asyncio.sleep(1)
|
await asyncio.sleep(1)
|
||||||
|
current_time = time.time()
|
||||||
async with self.lock:
|
async with self.lock:
|
||||||
for chat_id, fatigue_list in self.chat_fatigue_punishment_list.items():
|
for chat_id, fatigue_list in self.chat_fatigue_punishment_list.items():
|
||||||
fatigue_list = [z for z in fatigue_list if current_time - z[0] < z[1]]
|
fatigue_list = [z for z in fatigue_list if current_time - z[0] < z[1]]
|
||||||
|
|||||||
Reference in New Issue
Block a user