diff --git a/plugins/xiuren_image/main.py b/plugins/xiuren_image/main.py index 116957d..b098ffe 100644 --- a/plugins/xiuren_image/main.py +++ b/plugins/xiuren_image/main.py @@ -203,19 +203,22 @@ class XiurenImagePlugin(MessagePluginInterface): def _get_random_pic(self) -> Optional[str]: """ - 从 Redis 随机获取图片路径 + 从 Redis 随机获取并移除图片路径(确保不重复使用) """ redis_key = ImageCacheManager.IMAGE_KEY_PREFIX + "all" try: - img = DBConnectionManager.get_instance().get_redis_connection().srandmember(redis_key) + # 使用 spop 随机弹出并删除一个元素 + img = DBConnectionManager.get_instance().get_redis_connection().spop(redis_key) + if img: # redis 返回 bytes,转字符串 return img.decode('utf-8') if isinstance(img, bytes) else img - else: - self.LOG.warning("Redis 中没有图片数据") - return None + + self.LOG.warning("Redis 中没有图片数据(可能已全部耗尽)") + return None + except Exception as e: - self.LOG.error(f"从 Redis 获取随机图片失败: {e}") + self.LOG.error(f"从 Redis 获取并删除随机图片失败: {e}") return None # def _get_random_pic(self) -> Optional[str]: