diff --git a/nonebot_plugin_l4d2_server/__init__.py b/nonebot_plugin_l4d2_server/__init__.py index d1ed50c..ed264df 100644 --- a/nonebot_plugin_l4d2_server/__init__.py +++ b/nonebot_plugin_l4d2_server/__init__.py @@ -34,6 +34,7 @@ # from .l4d2_file.input_json import * from .l4d2_image.steam import url_to_byte_name +from .l4d2_push import scheduler # noqa: F401 from .l4d2_utils.command import help_, search_api from .l4d2_utils.config import l4_config from .l4d2_utils.utils import upload_file @@ -41,7 +42,7 @@ driver = get_driver() -__version__ = "0.6.4" +__version__ = "0.6.5" __plugin_meta__ = PluginMetadata( name="求生之路小助手", description="可用于管理求生之路查服和本地管理", @@ -59,18 +60,6 @@ """相当于启动就检查数据库""" -# @search_api.handle() -# async def _(matcher:Matcher,state:T_State,event:GroupMessageEvent,args:Message = CommandArg()): # noqa: E501 -# msg:str = args.extract_plain_text() -# # if msg.startswith('代码'): -# # 建图代码返回三方图信息 -# data = await seach_map(msg,l4_config.l4_master[0],l4_config.l4_key) -# # else: -# if type(data) == str: -# await matcher.finish(data) -# else: -# state['maps'] = data -# await matcher.send(await map_dict_to_str(data)) @help_.handle() async def _(matcher: Matcher): msg = """=====求生机器人帮助===== @@ -80,7 +69,10 @@ async def _(matcher: Matcher): 4、创意工坊下载【创意工坊下载[物品id/链接]】 5、指定ip查询【求生ip[ip]】(可以是域名) 6、求生喷漆制作【求生喷漆】 - 7、本地服务器操作(略,详情看项目地址) + 7、本地服务器相关【l4地图上传】【l4地图改名】【l4地图删除】【l4路径】【l4插件】 + 8、ip导入(私聊发送json文件,格式参考下方链接中readme) + 9、内置ip更新【l4公益服更新】【求生更新anne】 + 项目地址:https://github.com/Agnes4m/nonebot_plugin_l4d2_server """ await matcher.finish(msg) diff --git a/nonebot_plugin_l4d2_server/l4d2_file/__init__.py b/nonebot_plugin_l4d2_server/l4d2_file/__init__.py index e2c5ca1..363dd12 100644 --- a/nonebot_plugin_l4d2_server/l4d2_file/__init__.py +++ b/nonebot_plugin_l4d2_server/l4d2_file/__init__.py @@ -2,12 +2,13 @@ from pathlib import Path from typing import Tuple -from nonebot import on_command, on_notice, on_regex -from nonebot.adapters.onebot.v11 import Message, NoticeEvent +from nonebot import on_command, on_regex +from nonebot.adapters.onebot.v11 import Event, Message, NoticeEvent from nonebot.log import logger from nonebot.matcher import Matcher from nonebot.params import ArgPlainText, CommandArg, RegexGroup +# from nonebot.typing import T_State from ..l4d2_utils.config import MASTER, config_manager, file_format, l4_config, vpk_path from ..l4d2_utils.rule import wenjian from ..l4d2_utils.txt_to_img import mode_txt_to_img @@ -15,21 +16,26 @@ from .input_json import upload # noqa: F401 from .utils import updown_l4d2_vpk -up = on_notice(rule=wenjian) +up = on_command( + "l4_upload", + aliases={"l4地图上传"}, + priority=20, + block=True, +) rename_vpk = on_regex( - r"^求生地图\s*(\S+.*?)\s*(改|改名)?\s*(\S+.*?)\s*$", + r"^l4地图\s*(\S+.*?)\s*(改|改名)?\s*(\S+.*?)\s*$", flags=re.S, block=True, priority=20, permission=MASTER, ) -find_vpk = on_command("l4_map", aliases={"求生地图"}, priority=25, block=True) +find_vpk = on_command("l4_map", aliases={"l4地图"}, priority=25, block=True) del_vpk = on_command( "l4_del_map", - aliases={"求生地图删除", "地图删除"}, + aliases={"l4地图删除", "地图删除"}, priority=20, permission=MASTER, ) @@ -37,14 +43,14 @@ check_path = on_command( "l4_check", - aliases={"求生路径"}, + aliases={"l4路径"}, priority=20, block=True, permission=MASTER, ) smx_file = on_command( "l4_smx", - aliases={"求生插件"}, + aliases={"l4插件"}, priority=20, block=True, permission=MASTER, @@ -52,8 +58,14 @@ @up.handle() -async def _(matcher: Matcher, event: NoticeEvent): - if not l4_config.l4_group_upload: +async def _(): + ... + + +@up.got("map_url", prompt="图来") +async def _(matcher: Matcher, event: Event): + if not isinstance(event, NoticeEvent) or not wenjian(event): + await matcher.finish("未检测到地图") return args = event.dict() if args["notice_type"] != "offline_file": diff --git a/nonebot_plugin_l4d2_server/l4d2_push/__init__.py b/nonebot_plugin_l4d2_server/l4d2_push/__init__.py index b7de491..7ee3ad5 100644 --- a/nonebot_plugin_l4d2_server/l4d2_push/__init__.py +++ b/nonebot_plugin_l4d2_server/l4d2_push/__init__.py @@ -15,6 +15,7 @@ from nonebot.matcher import Matcher from nonebot.params import CommandArg from nonebot.permission import SUPERUSER +from nonebot_plugin_saa import MessageFactory from ..l4d2_queries import get_ip_to_mes from ..l4d2_queries.utils import json_server_to_tag_dict @@ -22,8 +23,10 @@ from ..l4d2_utils.utils import extract_last_digit, split_maohao require("nonebot_plugin_apscheduler") -# from nonebot_plugin_apscheduler import scheduler - +try: + scheduler = require("nonebot_plugin_apscheduler").scheduler +except Exception: + scheduler = None driver = get_driver() sch_json = Path("data/L4D2/scheduler.json") if not sch_json.exists(): @@ -58,12 +61,13 @@ async def _(event: GroupMessageEvent, matcher: Matcher, args: Message = CommandA await matcher.finish("无响应的服务器,请检查") else: return_msg = await add_or_update_data(group_id, msg) - if isinstance(push_msg, bytes): - await matcher.finish(MessageSegment.image(push_msg)) - elif isinstance(push_msg, Union[Message, MessageSegment]): - await matcher.finish(push_msg) - else: - await matcher.send(push_msg) + await MessageFactory(push_msg).send() + # if isinstance(push_msg, bytes): + # await matcher.finish(MessageSegment.image(push_msg)) + # elif isinstance(push_msg, Union[Message, MessageSegment]): + # await matcher.finish(push_msg) + # else: + # await matcher.send(push_msg) if return_msg == "add": await matcher.send(f"已添加群定时任务【{msg}】{l4_config.l4_push_times}次") elif return_msg in ["update", "change"]: @@ -209,11 +213,14 @@ async def send_message( async def server_is_change(): """检测服务器是否发生变化""" + ... -# @driver.on_bot_connect -# async def _(): -# logger.success("已成功启动求生定时推送") -# scheduler.add_job( -# rss_ip, "interval", minutes=l4_config.l4_push_interval, id="rss_ip" -# ) +if scheduler: + logger.success("已成功启动求生定时推送") + scheduler.add_job( + rss_ip, + "interval", + minutes=l4_config.l4_push_interval, + id="rss_ip", + ) diff --git a/nonebot_plugin_l4d2_server/l4d2_queries/__init__.py b/nonebot_plugin_l4d2_server/l4d2_queries/__init__.py index af57b8d..39535ac 100644 --- a/nonebot_plugin_l4d2_server/l4d2_queries/__init__.py +++ b/nonebot_plugin_l4d2_server/l4d2_queries/__init__.py @@ -8,9 +8,8 @@ from nonebot.log import logger from nonebot.matcher import Matcher from nonebot.params import ArgPlainText, CommandArg, CommandStart, Keyword, RawCommand -from nonebot_plugin_saa import Image, MessageFactory, Text +from nonebot_plugin_saa import Image, MessageFactory -from ..l4d2_anne.server import updata_anne_server from ..l4d2_image import server_group_ip_pic from ..l4d2_queries.qqgroup import add_ip, del_ip, get_number_url, show_ip from ..l4d2_queries.utils import queries_server @@ -162,23 +161,7 @@ async def _( if push_msg is None: return - if isinstance(push_msg, bytes): - logger.info("直接发送图片") - await MessageFactory([Image(push_msg)]).finish() - return - if msg and isinstance(push_msg, list): - logger.info("更加构造函数") - await MessageFactory([Image(push_msg[0]), Text(push_msg[-1])]).finish() - return - if msg and isinstance(push_msg, str): - send_msg = push_msg - else: - logger.info("出错了") - return - logger.info(type(send_msg)) - if not send_msg: - logger.warning("没有") - await matcher.finish(send_msg) + await MessageFactory(push_msg).send() # tests = on_command("测试1") @@ -279,29 +262,6 @@ async def _(): await init() -updata = on_command( - "updata_anne", - aliases={"求生更新anne"}, - priority=20, - block=True, - permission=MASTER, -) - - -@updata.handle() -async def _(matcher: Matcher, args: Message = CommandArg()): - """更新""" - if args: - # 占位先,除了电信服还有再加 - ... - anne_ip_dict = await updata_anne_server() - if anne_ip_dict is None: - await matcher.finish("网络开小差了捏") - return - server_number = len(anne_ip_dict["云"]) - await matcher.finish(f"更新成功\n一共更新了{server_number}个电信anne服ip") - - @add2_queries.handle() async def _(matcher: Matcher, arg: Message = CommandArg()): arg_list = arg.extract_plain_text().split(" ") diff --git a/nonebot_plugin_l4d2_server/l4d2_queries/send_msg.py b/nonebot_plugin_l4d2_server/l4d2_queries/send_msg.py index 662f5cc..14627f9 100644 --- a/nonebot_plugin_l4d2_server/l4d2_queries/send_msg.py +++ b/nonebot_plugin_l4d2_server/l4d2_queries/send_msg.py @@ -2,6 +2,7 @@ from typing import Dict, List, Optional, Tuple from nonebot.log import logger +from nonebot_plugin_saa import Image, Text from ..l4d2_queries.local_ip import ALL_HOST from ..l4d2_queries.qqgroup import qq_ip_queries_pic @@ -29,7 +30,7 @@ async def get_ip_to_mes(msg: str, command: str = ""): msg_tuple = (one_ip["id"], host, port) ip_list.append(msg_tuple) img = await qq_ip_queries_pic(ip_list, igr) - return img if img else None + return [Image(img)] if img else None if not msg[0].isdigit(): # if any(mode in msg for mode in gamemode_list): @@ -46,10 +47,10 @@ async def get_ip_to_mes(msg: str, command: str = ""): try: msg_send: Optional[str] = await get_anne_server_ip(ip) if msg_send is not None: - return msg_send + return [Text(msg_send)] except (OSError, asyncio.exceptions.TimeoutError): - return "服务器无响应" + return [Text("服务器无响应")] # async def get_read_group_ip(): diff --git a/nonebot_plugin_l4d2_server/l4d2_utils/config.py b/nonebot_plugin_l4d2_server/l4d2_utils/config.py index 43bb069..32d0649 100644 --- a/nonebot_plugin_l4d2_server/l4d2_utils/config.py +++ b/nonebot_plugin_l4d2_server/l4d2_utils/config.py @@ -86,15 +86,15 @@ class L4d2Config(BaseModel): "49c294d32f69b732ef6447c18379451ce1738922a75cd1d4812ef150318a2ed0", alias="后台管理token密钥", ) - l4_master: List[str] = Field(["114514919"], alias="求生地图全局管理员qq") + l4_master: List[str] = Field(default=["114514919"], alias="求生地图全局管理员qq") # l4_ip:bool = Field(False, alias='查询地图是否显示ip') - l4_font: str = Field("simsun.ttc", alias="字体") - l4_only: bool = Field(False, alias="下载地图是是否阻碍其他指令") - l4_push_interval: int = Field(3, alias="定时任务间隔") - l4_push_times: int = Field(10, alias="定时任务次数") - l4_connect: bool = Field(True, alias="是否在查服命令后加入connect ip") - l4_group_upload: bool = Field(False, alias="是否在群里传地图的时候,提示上传服务器") - group_config: Dict[int, L4d2GroupConfig] = Field({}, alias="分群配置") + l4_font: str = Field(default="simsun.ttc", alias="字体") + l4_only: bool = Field(default=False, alias="下载地图是是否阻碍其他指令") + l4_push_interval: int = Field(default=3, alias="定时任务间隔") + l4_push_times: int = Field(default=10, alias="定时任务次数") + l4_connect: bool = Field(default=True, alias="是否在查服命令后加入connect ip") + l4_group_upload: bool = Field(default=False, alias="是否在群里传地图的时候,提示上传服务器") + group_config: Dict[int, L4d2GroupConfig] = Field(default_factory=dict, alias="分群配置") def update(self, **kwargs): for key, value in kwargs.items(): diff --git a/pyproject.toml b/pyproject.toml index 33c3998..d0f8538 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "nonebot-plugin-l4d2-server" -version = "0.6.4-post1" +version = "0.6.5" description = "L4D2 server related operations plugin for NoneBot2" authors = [ { name = "Agnes_Digital", email = "Z735803792@163.com" } @@ -9,7 +9,7 @@ requires-python = ">=3.9,<4.0" keywords = ["steam", "game", "l4d2", "nonebot2", "plugin"] dependencies = [ "nonebot2>=2.0.0", - "nonebot-plugin-htmlrender==0.2.0.3", + "nonebot-plugin-htmlrender==0.2.2", "nonebot_plugin_txt2img>=0.3.0", "nonebot-plugin-apscheduler>=0.2.0", "nonebot-adapter-onebot>=2.2.3", @@ -21,7 +21,7 @@ dependencies = [ "bs4==0.0.1", "httpx>=0.22.0", "rcon==2.1.0", - "pillow>=9.4.0", + "pillow<10.0.0", "pyunpack>=0.3.0", "ruamel.yaml>=0.17.21", "rarfile>=4.0", diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 17eff75..0000000 Binary files a/requirements.txt and /dev/null differ