From be5817a142c51b8ce8c1b7137ed1aa93c2c2a07e Mon Sep 17 00:00:00 2001 From: Agnes Digital Date: Wed, 13 Sep 2023 09:44:58 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=9C=B0=E5=9B=BE?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nonebot_plugin_l4d2_server/__init__.py | 5 +++- .../l4d2_file/__init__.py | 30 +++++++++++++------ pyproject.toml | 2 +- 3 files changed, 26 insertions(+), 11 deletions(-) diff --git a/nonebot_plugin_l4d2_server/__init__.py b/nonebot_plugin_l4d2_server/__init__.py index d1ed50c..4748d47 100644 --- a/nonebot_plugin_l4d2_server/__init__.py +++ b/nonebot_plugin_l4d2_server/__init__.py @@ -80,7 +80,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..7bd85e8 100644 --- a/nonebot_plugin_l4d2_server/l4d2_file/__init__.py +++ b/nonebot_plugin_l4d2_server/l4d2_file/__init__.py @@ -3,10 +3,11 @@ from typing import Tuple from nonebot import on_command, on_notice, on_regex -from nonebot.adapters.onebot.v11 import Message, NoticeEvent +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 @@ -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/pyproject.toml b/pyproject.toml index 33c3998..71f2c2c 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.4-post2" description = "L4D2 server related operations plugin for NoneBot2" authors = [ { name = "Agnes_Digital", email = "Z735803792@163.com" } From 18ac5c50bf72215cce457a32662004eca4afcc24 Mon Sep 17 00:00:00 2001 From: afu <735803792@qq.com> Date: Thu, 23 Nov 2023 00:00:01 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E5=88=A0=E9=99=A4=E9=87=8D=E5=A4=8D?= =?UTF-8?q?=E6=8C=87=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../l4d2_queries/__init__.py | 24 ------------------ pyproject.toml | 2 +- requirements.txt | Bin 918 -> 0 bytes 3 files changed, 1 insertion(+), 25 deletions(-) delete mode 100644 requirements.txt diff --git a/nonebot_plugin_l4d2_server/l4d2_queries/__init__.py b/nonebot_plugin_l4d2_server/l4d2_queries/__init__.py index af57b8d..2f366da 100644 --- a/nonebot_plugin_l4d2_server/l4d2_queries/__init__.py +++ b/nonebot_plugin_l4d2_server/l4d2_queries/__init__.py @@ -10,7 +10,6 @@ from nonebot.params import ArgPlainText, CommandArg, CommandStart, Keyword, RawCommand from nonebot_plugin_saa import Image, MessageFactory, Text -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 @@ -279,29 +278,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/pyproject.toml b/pyproject.toml index 71f2c2c..cd5a973 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "nonebot-plugin-l4d2-server" -version = "0.6.4-post2" +version = "0.6.4-post3" description = "L4D2 server related operations plugin for NoneBot2" authors = [ { name = "Agnes_Digital", email = "Z735803792@163.com" } diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 17eff7519fcc62925b09a1375ea7b5b9f563243c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 918 zcma)4+fKqj6r5)h|A8MUp$nos=)Wvjv9-2MyF~bTb>`6RVkFTtrQ}@Zw)^$jphbfM zTYdu^9{D)Tv9R|RH|$04d&RaYW` znA%tW!Dhr>S!NX(-L#!@9+=#Yn=PN3Op#w08%uD@>dNZptvPb5N5ez$?Ah({ zVvL2&D7UD?Prjv63Uh8seMj8DOywXWh8vU7Oj07|k{#X7G#{~))_O$q#L<}#mX%QM z_+I0x$T`rP?xL6yo9@0&I5EW;;W_%2a(N2$98XgF>YqJJ$B8&CW|qdx@YlBg4OrcX ALI3~& From 8863d3d92757d007066748c915b6bcf3ef333b01 Mon Sep 17 00:00:00 2001 From: afu <735803792@qq.com> Date: Thu, 23 Nov 2023 22:32:03 +0800 Subject: [PATCH 3/4] fix bug --- nonebot_plugin_l4d2_server/__init__.py | 12 ----------- .../l4d2_queries/__init__.py | 20 ++----------------- .../l4d2_queries/send_msg.py | 7 ++++--- .../l4d2_utils/config.py | 16 +++++++-------- pyproject.toml | 4 ++-- 5 files changed, 16 insertions(+), 43 deletions(-) diff --git a/nonebot_plugin_l4d2_server/__init__.py b/nonebot_plugin_l4d2_server/__init__.py index 4748d47..8fcd91c 100644 --- a/nonebot_plugin_l4d2_server/__init__.py +++ b/nonebot_plugin_l4d2_server/__init__.py @@ -59,18 +59,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 = """=====求生机器人帮助===== diff --git a/nonebot_plugin_l4d2_server/l4d2_queries/__init__.py b/nonebot_plugin_l4d2_server/l4d2_queries/__init__.py index 2f366da..39535ac 100644 --- a/nonebot_plugin_l4d2_server/l4d2_queries/__init__.py +++ b/nonebot_plugin_l4d2_server/l4d2_queries/__init__.py @@ -8,7 +8,7 @@ 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_image import server_group_ip_pic from ..l4d2_queries.qqgroup import add_ip, del_ip, get_number_url, show_ip @@ -161,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") 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 cd5a973..b9cc16f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -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", From 2e994c2eb1da4cccf955c075b740e5eb0a35e67d Mon Sep 17 00:00:00 2001 From: Agnes Digital Date: Wed, 6 Dec 2023 09:33:45 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=F0=9F=9A=80v0.6.5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nonebot_plugin_l4d2_server/__init__.py | 3 +- .../l4d2_file/__init__.py | 4 +-- .../l4d2_push/__init__.py | 35 +++++++++++-------- pyproject.toml | 2 +- 4 files changed, 26 insertions(+), 18 deletions(-) diff --git a/nonebot_plugin_l4d2_server/__init__.py b/nonebot_plugin_l4d2_server/__init__.py index 8fcd91c..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="可用于管理求生之路查服和本地管理", diff --git a/nonebot_plugin_l4d2_server/l4d2_file/__init__.py b/nonebot_plugin_l4d2_server/l4d2_file/__init__.py index 7bd85e8..363dd12 100644 --- a/nonebot_plugin_l4d2_server/l4d2_file/__init__.py +++ b/nonebot_plugin_l4d2_server/l4d2_file/__init__.py @@ -2,13 +2,13 @@ from pathlib import Path from typing import Tuple -from nonebot import on_command, on_notice, on_regex +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 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 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/pyproject.toml b/pyproject.toml index b9cc16f..d0f8538 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "nonebot-plugin-l4d2-server" -version = "0.6.4-post3" +version = "0.6.5" description = "L4D2 server related operations plugin for NoneBot2" authors = [ { name = "Agnes_Digital", email = "Z735803792@163.com" }