Skip to content

Commit

Permalink
🎨优化代码结构与速度
Browse files Browse the repository at this point in the history
  • Loading branch information
wling-art committed Jan 7, 2024
1 parent ced32bd commit 35328d7
Show file tree
Hide file tree
Showing 28 changed files with 581 additions and 523 deletions.
32 changes: 14 additions & 18 deletions src/plugins/Menu/__init__.py
Original file line number Diff line number Diff line change
@@ -1,22 +1,21 @@
import base64
import traceback
from typing import Union
import re
import jinja2
import aiofiles
from nonebot.log import logger
from pathlib import Path
from typing import Union
from nonebot.matcher import Matcher
from nonebot.params import CommandArg
from nonebot import on_command
from nonebot.adapters.onebot.v11 import Bot as V11Bot
from nonebot.adapters.onebot.v11 import Message as V11Msg
from nonebot.adapters.onebot.v11 import MessageSegment as V11MsgSeg
from nonebot.adapters.onebot.v12 import Bot as V12Bot
from nonebot.adapters.onebot.v12 import MessageSegment as V12MsgSeg
from nonebot.log import logger
from nonebot.matcher import Matcher
from pathlib import Path
from nonebot_plugin_htmlrender import html_to_pic
import aiofiles

# import aiohttp
import re
import json

dir_path = Path(__file__).parent
Expand Down Expand Up @@ -55,7 +54,7 @@ async def _(bot: Union[V11Bot, V12Bot], matcher: Matcher, arg: V11Msg = CommandA

if not msg: # 参数为空,主菜单
img_bytes = await async_open_file(dir_path / "main.png")
base64_str = "base64://" + base64.b64encode(img_bytes).decode()
base64_str = f"base64://{base64.b64encode(img_bytes).decode()}"
await matcher.finish(V11MsgSeg.image(base64_str))

match_result = re.match(r"^(?P<name>.*?)$", msg)
Expand All @@ -73,20 +72,17 @@ async def _(bot: Union[V11Bot, V12Bot], matcher: Matcher, arg: V11Msg = CommandA
if not plugin_dict:
await matcher.finish("插件序号不存在")
else:
plugin_dict = {}
for key, value in plugin_list.items():
# 模糊搜索
if plugin_name in value["name"]:
plugin_dict[key] = value
plugin_dict = {
key: value
for key, value in plugin_list.items()
if plugin_name in value["name"]
}
if not plugin_dict:
await matcher.finish("插件名过于模糊或不存在")

try:
if plugin_dict:
result = await get_reply(plugin_dict)
else:
result = "插件名过于模糊或不存在"
except Exception as e:
result = await get_reply(plugin_dict) if plugin_dict else "插件名过于模糊或不存在"
except Exception:
logger.warning(traceback.format_exc())
await matcher.finish("出错了,请稍后再试")

Expand Down
2 changes: 1 addition & 1 deletion src/plugins/cave/tool.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@


def url_to_base64(image_url):
response = requests.get(image_url)
response = requests.get(image_url,timeout=5)
image_data = response.content
return base64.b64encode(image_data).decode("utf-8")

Expand Down
6 changes: 2 additions & 4 deletions src/plugins/ddcheck/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ async def _(

try:
result = await get_reply(text)
except:
except Exception:
logger.warning(traceback.format_exc())
await matcher.finish("出错了,请稍后再试")

Expand All @@ -61,6 +61,4 @@ async def _(
elif isinstance(bot, V12Bot):
resp = await bot.upload_file(type="data", name="ddcheck", data=result)
file_id = resp["file_id"]
await matcher.finish(V12MsgSeg.image(file_id))

#
await matcher.finish(V12MsgSeg.image(file_id))
103 changes: 40 additions & 63 deletions src/plugins/ncm/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,12 @@
from nonebot.matcher import Matcher
from nonebot.params import CommandArg, RegexGroup, Arg
from nonebot.rule import Rule
from nonebot.plugin import PluginMetadata

from .data_source import nncm, ncm_config, setting, Q, cmd

# =======nonebot-plugin-help=======
__plugin_meta__ = nonebot.plugin.PluginMetadata(
__plugin_meta__ = PluginMetadata(
name='网易云点歌',
description='网易云无损音乐下载/点歌',
usage=(
Expand All @@ -41,45 +42,35 @@
# ===============Rule=============
async def song_is_open(event: Union[GroupMessageEvent, PrivateMessageEvent]) -> bool:
if isinstance(event, GroupMessageEvent):
info = setting.search(Q["group_id"] == event.group_id)
if info:
if info := setting.search(Q["group_id"] == event.group_id):
return info[0]["song"]
else:
setting.insert({"group_id": event.group_id, "song": False, "list": False})
return False
setting.insert({"group_id": event.group_id, "song": False, "list": False})
return False
elif isinstance(event, PrivateMessageEvent):
info = setting.search(Q["user_id"] == event.user_id)
if info:
if info := setting.search(Q["user_id"] == event.user_id):
return info[0]["song"]
else:
setting.insert({"user_id": event.user_id, "song": True, "list": True})
return True
setting.insert({"user_id": event.user_id, "song": True, "list": True})
return True


async def playlist_is_open(event: Union[GroupMessageEvent, PrivateMessageEvent]) -> bool:
if isinstance(event, GroupMessageEvent):
info = setting.search(Q["group_id"] == event.group_id)
if info:
if info := setting.search(Q["group_id"] == event.group_id):
return info[0]["list"]
else:
setting.insert({"group_id": event.group_id, "song": False, "list": False})
return False
setting.insert({"group_id": event.group_id, "song": False, "list": False})
return False
elif isinstance(event, PrivateMessageEvent):
info = setting.search(Q["user_id"] == event.user_id)
if info:
if info := setting.search(Q["user_id"] == event.user_id):
return info[0]["list"]
else:
setting.insert({"user_id": event.user_id, "song": True, "list": True})
return True
setting.insert({"user_id": event.user_id, "song": True, "list": True})
return True


async def check_search() -> bool:
info = setting.search(Q["global"] == "search")
if info:
if info := setting.search(Q["global"] == "search"):
return info[0]["value"]
else:
setting.insert({"global": "search", "value": True})
return True
setting.insert({"global": "search", "value": True})
return True


async def music_set_rule(event: Union[GroupMessageEvent, PrivateMessageEvent]) -> bool:
Expand Down Expand Up @@ -202,75 +193,62 @@ async def set_receive(bot: Bot, event: Union[GroupMessageEvent, PrivateMessageEv
if len(args) == 1:
mold = args[0]
if isinstance(event, GroupMessageEvent):
info = setting.search(Q["group_id"] == event.group_id)
# logger.info(info)
if info:
if info := setting.search(Q["group_id"] == event.group_id):
if mold in TRUE:
info[0]["song"] = True
info[0]["list"] = True
setting.update(info[0], Q["group_id"] == event.group_id)
msg = "已开启自动下载功能"
await bot.send(event=event, message=Message(MessageSegment.text(msg)))
await bot.send(event=event, message=Message(MessageSegment.text("已开启自动下载功能")))
elif mold in FALSE:
info[0]["song"] = False
info[0]["list"] = False
setting.update(info[0], Q["group_id"] == event.group_id)
msg = "已关闭自动下载功能"
await bot.send(event=event, message=Message(MessageSegment.text(msg)))
logger.debug(f"用户<{event.sender.nickname}>执行操作成功")
else:
if mold in TRUE:
setting.insert({"group_id": event.group_id, "song": True, "list": True})
elif mold in FALSE:
setting.insert({"group_id": event.group_id, "song": False, "list": False})
elif mold in TRUE:
setting.insert({"group_id": event.group_id, "song": True, "list": True})
elif mold in FALSE:
setting.insert({"group_id": event.group_id, "song": False, "list": False})
elif isinstance(event, PrivateMessageEvent):
info = setting.search(Q["user_id"] == event.user_id)
# logger.info(info)
if info:
if info := setting.search(Q["user_id"] == event.user_id):
if mold in TRUE:
info[0]["song"] = True
info[0]["list"] = True
setting.update(info[0], Q["user_id"] == event.user_id)
msg = "已开启下载功能"
await bot.send(event=event, message=Message(MessageSegment.text(msg)))
await bot.send(event=event, message=Message(MessageSegment.text("已开启下载功能")))
elif mold in FALSE:
info[0]["song"] = False
info[0]["list"] = False
setting.update(info[0], Q["user_id"] == event.user_id)
msg = "已关闭下载功能"
await bot.send(event=event, message=Message(MessageSegment.text(msg)))
logger.debug(f"用户<{event.sender.nickname}>执行操作成功")
else:
if mold in TRUE:
setting.insert({"user_id": event.user_id, "song": True, "list": True})
elif mold in FALSE:
setting.insert({"user_id": event.user_id, "song": False, "list": False})
elif mold in TRUE:
setting.insert({"user_id": event.user_id, "song": True, "list": True})
elif mold in FALSE:
setting.insert({"user_id": event.user_id, "song": False, "list": False})
elif len(args) == 2 and args[0] == "search":
mold = args[1]
info = setting.search(Q["global"] == "search")
if info:
if info := setting.search(Q["global"] == "search"):
if mold in TRUE:
info[0]["value"] = True
setting.update(info[0], Q["global"] == "search")
msg = "已开启点歌功能"
await bot.send(event=event, message=Message(MessageSegment.text(msg)))
await bot.send(event=event, message=Message(MessageSegment.text("已开启点歌功能")))
elif mold in FALSE:
info[0]["value"] = False
setting.update(info[0], Q["global"] == "search")
msg = "已关闭点歌功能"
await bot.send(event=event, message=Message(MessageSegment.text(msg)))
logger.debug(f"用户<{event.sender.nickname}>执行操作成功")
else:
if mold in TRUE:
setting.insert({"global": "search", "value": True})
elif mold in FALSE:
setting.insert({"global": "search", "value": False})
elif mold in TRUE:
setting.insert({"global": "search", "value": True})
elif mold in FALSE:
setting.insert({"global": "search", "value": False})
elif len(args) == 3 and args[0] == "private":
qq = args[1]
mold = args[2]
info = setting.search(Q["user_id"] == qq)
# logger.info(info)
if info:
if info := setting.search(Q["user_id"] == qq):
if mold in TRUE:
info[0]["song"] = True
info[0]["list"] = True
Expand All @@ -284,11 +262,10 @@ async def set_receive(bot: Bot, event: Union[GroupMessageEvent, PrivateMessageEv
msg = f"已关闭用户{qq}的下载功能"
await bot.send(event=event, message=Message(MessageSegment.text(msg)))
logger.debug(f"用户<{event.sender.nickname}>执行操作成功")
else:
if mold in TRUE:
setting.insert({"user_id": event.user_id, "song": True, "list": True})
elif mold in FALSE:
setting.insert({"user_id": event.user_id, "song": False, "list": False})
elif mold in TRUE:
setting.insert({"user_id": event.user_id, "song": True, "list": True})
elif mold in FALSE:
setting.insert({"user_id": event.user_id, "song": False, "list": False})
else:
msg = f"{cmd}ncm:获取命令菜单\r\n说明:网易云歌曲分享到群内后回复机器人即可下载\r\n" \
f"{cmd}ncm t:开启解析\r\n{cmd}ncm f:关闭解析\n{cmd}点歌 歌名:点歌"
Expand Down
Loading

0 comments on commit 35328d7

Please sign in to comment.