diff --git a/src/plugins/emoji_system/emoji_manager.py b/src/plugins/emoji_system/emoji_manager.py index 42ae6ed07..b23f99125 100644 --- a/src/plugins/emoji_system/emoji_manager.py +++ b/src/plugins/emoji_system/emoji_manager.py @@ -601,13 +601,10 @@ class EmojiManager: 返回: list[str]: 可读的表情包信息字符串列表 """ - # 按使用次数升序排序表情包对象 - sorted_emojis = sorted(emoji_objects, key=lambda emoji: emoji.usage_count) - # 使用概率分布选择20个表情包 selected_emojis = [] - while len(selected_emojis) < 20 and sorted_emojis: - for emoji in sorted_emojis: + while len(selected_emojis) < 20 and emoji_objects: + for emoji in emoji_objects: # 计算选择该表情包的概率,使用次数越少概率越大 probability = 1 / (emoji.usage_count + 1) if random.random() < probability: @@ -615,7 +612,7 @@ class EmojiManager: if len(selected_emojis) == 20: break # 从排序列表中移除已选择的表情包 - sorted_emojis = [emoji for emoji in sorted_emojis if emoji not in selected_emojis] + emoji_objects = [emoji for emoji in emoji_objects if emoji not in selected_emojis] emoji_info_list = [] for i, emoji in enumerate(selected_emojis): @@ -642,9 +639,9 @@ class EmojiManager: # 获取所有表情包对象 all_emojis = self.emoji_objects - + sorted_emojis = sorted(all_emojis, key=lambda emoji: emoji.usage_count) # 将表情包信息转换为可读的字符串 - emoji_info_list = self._emoji_objects_to_readable_list(all_emojis) + emoji_info_list = self._emoji_objects_to_readable_list(sorted_emojis) # 构建提示词 prompt = ( @@ -674,9 +671,9 @@ class EmojiManager: emoji_index = int(match.group(1)) - 1 # 转换为0-based索引 # 检查索引是否有效 - if 0 <= emoji_index < len(all_emojis): - emoji_to_delete = all_emojis[emoji_index] - + if 0 <= emoji_index < len(sorted_emojis): + emoji_to_delete = sorted_emojis[emoji_index] + print(emoji_to_delete.hash) # 删除选定的表情包 logger.info(f"[决策] 决定删除表情包: {emoji_to_delete.description}") delete_success = await self.delete_emoji(emoji_to_delete.hash)