diff --git a/group_video_man/bot_video_man.py b/group_video_man/bot_video_man.py new file mode 100644 index 0000000..74c98df --- /dev/null +++ b/group_video_man/bot_video_man.py @@ -0,0 +1,66 @@ +import logging +import tomllib +import os +import requests +from wcferry import WxMsg, Wcf + +from robot_cmd.robot_command import Feature, PermissionStatus, GroupBotManager + + +class BotVideoMan: + def __init__(self, wcf: Wcf, gbm: GroupBotManager): + self.LOG = logging.getLogger(__name__) + self.wcf = wcf # 假设 wcf 对象在此类中初始化 + self.gbm = gbm # 权限功能 + with open("group_video_man/config.toml", "rb") as f: + plugin_config = tomllib.load(f) + + config = plugin_config["VideoMan"] + + self.enable = config["enable"] + self.command = config["command"] + self.LOG.info(f"[猛男视频] 组件初始化完成,指令: {self.command}") + + def get_video(self, message: WxMsg): + if not self.enable: + return + + content = str(message.content).strip() + command = content.split(" ") + + if command[0] not in self.command: + return + + # 如果触发了指令,但是没有权限,则返回权限不足 + if self.gbm.get_group_permission(message.roomid, Feature.VIDEO) == PermissionStatus.DISABLED: + return + + try: + file_abspath = self.download_video("https://api.guiguiya.com/api/video/fuji?type=json", + "group_video_man/down_load_dir") + self.wcf.send_file(file_abspath, (message.roomid if message.from_group() else message.sender)) + return + except requests.RequestException as e: + self.wcf.send_text(f"-----Bot-----\n❌请求出错:{e}", + (message.roomid if message.from_group() else message.sender), message.sender) + return + + def download_video(self, api_url, save_path): + response = requests.get(api_url) + if response.status_code == 200: + data = response.json() + video_url = data.get("url") + if video_url: + video_response = requests.get(video_url, stream=True) + if video_response.status_code == 200: + with open(save_path, "wb") as file: + for chunk in video_response.iter_content(chunk_size=1024): + file.write(chunk) + return os.path.abspath(save_path) + else: + print("无法下载视频,HTTP 状态码:", video_response.status_code) + else: + print("API 响应中没有找到视频 URL") + else: + print("API 请求失败,HTTP 状态码:", response.status_code) + return None diff --git a/group_video_man/config.toml b/group_video_man/config.toml new file mode 100644 index 0000000..45ffdab --- /dev/null +++ b/group_video_man/config.toml @@ -0,0 +1,3 @@ +[VideoMan] +enable = true +command = ["猛男", "肌肉", "帅哥"]