Skip to content

Commit

Permalink
Merge pull request #42 from Agnes4m/dev-main
Browse files Browse the repository at this point in the history
v0.6.5
  • Loading branch information
Agnes4m authored Dec 6, 2023
2 parents 3dbee72 + 2e994c2 commit 028db71
Show file tree
Hide file tree
Showing 8 changed files with 66 additions and 94 deletions.
20 changes: 6 additions & 14 deletions nonebot_plugin_l4d2_server/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,14 +34,15 @@

# 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
from .l4d2_web import web, webUI # noqa: F401

driver = get_driver()

__version__ = "0.6.4"
__version__ = "0.6.5"
__plugin_meta__ = PluginMetadata(
name="求生之路小助手",
description="可用于管理求生之路查服和本地管理",
Expand All @@ -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 = """=====求生机器人帮助=====
Expand All @@ -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)

Expand Down
32 changes: 22 additions & 10 deletions nonebot_plugin_l4d2_server/l4d2_file/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,58 +2,70 @@
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
from ..l4d2_utils.utils import del_map, get_vpk, mes_list, rename_map
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,
)


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,
)


@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":
Expand Down
35 changes: 21 additions & 14 deletions nonebot_plugin_l4d2_server/l4d2_push/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,18 @@
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
from ..l4d2_utils.config import l4_config
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():
Expand Down Expand Up @@ -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"]:
Expand Down Expand Up @@ -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",
)
44 changes: 2 additions & 42 deletions nonebot_plugin_l4d2_server/l4d2_queries/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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")
Expand Down Expand Up @@ -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(" ")
Expand Down
7 changes: 4 additions & 3 deletions nonebot_plugin_l4d2_server/l4d2_queries/send_msg.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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):
Expand All @@ -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():
Expand Down
16 changes: 8 additions & 8 deletions nonebot_plugin_l4d2_server/l4d2_utils/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -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():
Expand Down
6 changes: 3 additions & 3 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -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 = "[email protected]" }
Expand All @@ -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",
Expand All @@ -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",
Expand Down
Binary file removed requirements.txt
Binary file not shown.

0 comments on commit 028db71

Please sign in to comment.