秀人图片插件化改造完成。
This commit is contained in:
@@ -124,20 +124,36 @@ class XiurenImagePlugin(MessagePluginInterface):
|
|||||||
if not os.path.exists(self.image_folder):
|
if not os.path.exists(self.image_folder):
|
||||||
self.LOG.error(f"图片文件夹不存在: {self.image_folder}")
|
self.LOG.error(f"图片文件夹不存在: {self.image_folder}")
|
||||||
return None
|
return None
|
||||||
|
image_extensions = {'.jpg', '.jpeg', '.png', '.gif', '.bmp', '.tiff', '.webp'}
|
||||||
image_files = [f for f in os.listdir(self.image_folder)
|
image_files = []
|
||||||
if f.lower().endswith(('.png', '.jpg', '.jpeg', '.gif', '.webp'))]
|
if not os.path.exists(self.image_folder):
|
||||||
|
print(f"Error: Directory '{self.image_folder}' does not exist.")
|
||||||
if not image_files:
|
return None
|
||||||
self.LOG.error("图片文件夹中没有图片")
|
|
||||||
|
if not os.access(self.image_folder, os.R_OK):
|
||||||
|
print(f"Error: No read access to directory '{self.image_folder}'.")
|
||||||
|
return None
|
||||||
|
|
||||||
|
print(f"Scanning directory: {self.image_folder} (including subdirectories)")
|
||||||
|
|
||||||
|
# 使用 os.walk() 递归遍历所有子目录
|
||||||
|
for root, _, files in os.walk(self.image_folder):
|
||||||
|
for file in files:
|
||||||
|
_, ext = os.path.splitext(file)
|
||||||
|
if ext.lower() in image_extensions:
|
||||||
|
full_path = os.path.join(root, file)
|
||||||
|
image_files.append(full_path)
|
||||||
|
|
||||||
|
if not image_files:
|
||||||
|
print("No image files found in the directory (including subdirectories).")
|
||||||
return None
|
return None
|
||||||
|
|
||||||
# 随机选择一张图片
|
# 随机选择一张图片
|
||||||
random_pic = random.choice(image_files)
|
random_pic = random.choice(image_files)
|
||||||
pic_path = os.path.join(self.image_folder, random_pic)
|
if random_pic:
|
||||||
|
return os.path.abspath(random_pic)
|
||||||
return pic_path
|
else:
|
||||||
|
return None
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.LOG.error(f"获取随机图片出错: {e}")
|
self.LOG.error(f"获取随机图片出错: {e}")
|
||||||
return None
|
return None
|
||||||
|
|||||||
66
robot.py
66
robot.py
@@ -34,7 +34,6 @@ from group_video_man.bot_video_man import BotVideoMan
|
|||||||
from message_sign.main import SignInSystem
|
from message_sign.main import SignInSystem
|
||||||
from message_storage.message_to_db import MessageStorage
|
from message_storage.message_to_db import MessageStorage
|
||||||
from message_summary.message_summary_dify import message_summary_dify
|
from message_summary.message_summary_dify import message_summary_dify
|
||||||
from music.bot_music import BotMusic
|
|
||||||
from plugin_common.event_system import EventType, EventSystem
|
from plugin_common.event_system import EventType, EventSystem
|
||||||
from plugin_common.message_plugin_interface import MessagePluginInterface
|
from plugin_common.message_plugin_interface import MessagePluginInterface
|
||||||
from plugin_common.plugin_interface import PluginStatus
|
from plugin_common.plugin_interface import PluginStatus
|
||||||
@@ -49,7 +48,6 @@ from robot_cmd.robot_command import PermissionStatus
|
|||||||
__version__ = "39.2.4.0"
|
__version__ = "39.2.4.0"
|
||||||
|
|
||||||
from sehuatang.shehuatang import pdf_file_path
|
from sehuatang.shehuatang import pdf_file_path
|
||||||
from xiuren.main import Xiuren
|
|
||||||
from xiuren.meitu_dl import meitu_dowload_pub_pic
|
from xiuren.meitu_dl import meitu_dowload_pub_pic
|
||||||
from xiuren.random_pic import get_xiuren_heisi_pic
|
from xiuren.random_pic import get_xiuren_heisi_pic
|
||||||
from xiuren.xiuren_pdf import generate_pdf_from_images
|
from xiuren.xiuren_pdf import generate_pdf_from_images
|
||||||
@@ -123,8 +121,6 @@ class Robot(Job):
|
|||||||
self.message_storage = MessageStorage()
|
self.message_storage = MessageStorage()
|
||||||
# 群成员变更模块加载
|
# 群成员变更模块加载
|
||||||
self.gmc = GroupMemberChange(wcf, self.redis_pool)
|
self.gmc = GroupMemberChange(wcf, self.redis_pool)
|
||||||
# # 点歌模块加载
|
|
||||||
# self.music = BotMusic(wcf, self.gbm)
|
|
||||||
# 签到模块加载
|
# 签到模块加载
|
||||||
self.signin = SignInSystem(wcf, self.gbm, self.allContacts, self.db_pool, self.redis_pool, self.message_util)
|
self.signin = SignInSystem(wcf, self.gbm, self.allContacts, self.db_pool, self.redis_pool, self.message_util)
|
||||||
# 积分赠送功能加载
|
# 积分赠送功能加载
|
||||||
@@ -133,8 +129,6 @@ class Robot(Job):
|
|||||||
self.video = BotVideo(wcf, self.gbm)
|
self.video = BotVideo(wcf, self.gbm)
|
||||||
# 肌肉男视频
|
# 肌肉男视频
|
||||||
self.videoman = BotVideoMan(wcf, self.gbm)
|
self.videoman = BotVideoMan(wcf, self.gbm)
|
||||||
# 秀人模块
|
|
||||||
self.xiuren = Xiuren(wcf, self.gbm)
|
|
||||||
# 美腿模块
|
# 美腿模块
|
||||||
self.beautyleg = BeautyLeg(wcf, self.gbm)
|
self.beautyleg = BeautyLeg(wcf, self.gbm)
|
||||||
# 加群测试
|
# 加群测试
|
||||||
@@ -241,17 +235,6 @@ class Robot(Job):
|
|||||||
elif q == '#总结':
|
elif q == '#总结':
|
||||||
self.message_summary_robot((msg.roomid if msg.from_group() else msg.sender))
|
self.message_summary_robot((msg.roomid if msg.from_group() else msg.sender))
|
||||||
return True
|
return True
|
||||||
# 暂时只支持4K群要图
|
|
||||||
elif q == "#黑丝":
|
|
||||||
if self.gbm.get_group_permission(msg.roomid, Feature.PIC) == PermissionStatus.DISABLED:
|
|
||||||
return True
|
|
||||||
else:
|
|
||||||
try:
|
|
||||||
file_path = get_xiuren_heisi_pic()
|
|
||||||
self.wcf.send_file(file_path, msg.roomid)
|
|
||||||
except Exception as e:
|
|
||||||
self.LOG.error(f"黑丝发图出错:{e}")
|
|
||||||
return True
|
|
||||||
# 如果正则匹配到时加群指令,则从库中提取第一个群ID
|
# 如果正则匹配到时加群指令,则从库中提取第一个群ID
|
||||||
elif match:
|
elif match:
|
||||||
try:
|
try:
|
||||||
@@ -345,11 +328,6 @@ class Robot(Job):
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.LOG.error(f"group_member_change error: {e}")
|
self.LOG.error(f"group_member_change error: {e}")
|
||||||
|
|
||||||
# try:
|
|
||||||
# self.music.get_music(message=msg)
|
|
||||||
# except Exception as e:
|
|
||||||
# self.LOG.error(f"get_music error: {e}")
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self.signin.member_sign_in(message=msg)
|
self.signin.member_sign_in(message=msg)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
@@ -372,13 +350,6 @@ class Robot(Job):
|
|||||||
self.videoman.get_video(message=msg)
|
self.videoman.get_video(message=msg)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.LOG.error(f"videoman get_video error: {e}")
|
self.LOG.error(f"videoman get_video error: {e}")
|
||||||
|
|
||||||
# 加入秀人图来功能
|
|
||||||
try:
|
|
||||||
self.xiuren.handle_message(message=msg)
|
|
||||||
except Exception as e:
|
|
||||||
self.LOG.error(f"xiuren.handle_message error: {e}")
|
|
||||||
|
|
||||||
# 美腿功能
|
# 美腿功能
|
||||||
try:
|
try:
|
||||||
self.beautyleg.handle_message(message=msg)
|
self.beautyleg.handle_message(message=msg)
|
||||||
@@ -587,43 +558,6 @@ class Robot(Job):
|
|||||||
self.LOG.error(f"插件 {plugin.name} 处理消息失败: {e}")
|
self.LOG.error(f"插件 {plugin.name} 处理消息失败: {e}")
|
||||||
|
|
||||||
return False
|
return False
|
||||||
#
|
|
||||||
# def _start_stats_dashboard(self) -> None:
|
|
||||||
# """启动统计看板服务器"""
|
|
||||||
# try:
|
|
||||||
# # 检查是否已加载统计看板插件
|
|
||||||
# if 'stats_dashboard' in self.plugins:
|
|
||||||
# dashboard_plugin = self.plugins['stats_dashboard']
|
|
||||||
# if hasattr(dashboard_plugin, 'start_server'):
|
|
||||||
# dashboard_plugin.start_server()
|
|
||||||
# self.LOG.info("统计看板服务器已启动")
|
|
||||||
# # 获取本地IP地址
|
|
||||||
# import socket
|
|
||||||
# hostname = socket.gethostname()
|
|
||||||
# local_ip = socket.gethostbyname(hostname)
|
|
||||||
#
|
|
||||||
# # 获取配置信息
|
|
||||||
# if hasattr(dashboard_plugin, 'config'):
|
|
||||||
# host = dashboard_plugin.config.get("host", "127.0.0.1")
|
|
||||||
# port = dashboard_plugin.config.get("port", 8080)
|
|
||||||
# username = dashboard_plugin.config.get("username", "admin")
|
|
||||||
# password = dashboard_plugin.config.get("password", "admin123")
|
|
||||||
#
|
|
||||||
# # 在控制台输出访问信息
|
|
||||||
# print("\n" + "="*50)
|
|
||||||
# print("统计看板服务器已启动")
|
|
||||||
# print(f"本地访问地址: http://127.0.0.1:{port}")
|
|
||||||
# print(f"局域网访问地址: http://{local_ip}:{port}")
|
|
||||||
# print(f"用户名: {username}")
|
|
||||||
# print(f"密码: {password}")
|
|
||||||
# print("="*50 + "\n")
|
|
||||||
# else:
|
|
||||||
# self.LOG.warning("统计看板插件未实现start_server方法")
|
|
||||||
# else:
|
|
||||||
# self.LOG.warning("未找到统计看板插件,请确保插件已正确安装")
|
|
||||||
# except Exception as e:
|
|
||||||
# self.LOG.error(f"启动统计看板服务器出错: {e}")
|
|
||||||
#
|
|
||||||
|
|
||||||
# ============================================== 业务内容==========================================================
|
# ============================================== 业务内容==========================================================
|
||||||
@scheduled_job(cron="0 0 8 * * *", name="每日新闻推送")
|
@scheduled_job(cron="0 0 8 * * *", name="每日新闻推送")
|
||||||
|
|||||||
Reference in New Issue
Block a user