mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2026-10-12 23:40:03 +08:00
@@ -2,19 +2,19 @@ import time
|
||||
from collections import defaultdict
|
||||
|
||||
from nonebot.adapters import Event
|
||||
from nonebot.adapters.onebot.v11 import Bot
|
||||
from nonebot.exception import IgnoredException
|
||||
from nonebot.matcher import Matcher
|
||||
from nonebot.message import run_preprocessor
|
||||
from nonebot.typing import T_State
|
||||
from nonebot.matcher import Matcher
|
||||
from nonebot_plugin_alconna import At
|
||||
from nonebot.adapters.onebot.v11 import Bot
|
||||
from nonebot.message import run_preprocessor
|
||||
from nonebot.exception import IgnoredException
|
||||
from nonebot_plugin_session import EventSession
|
||||
|
||||
from zhenxun.configs.config import Config
|
||||
from zhenxun.models.ban_console import BanConsole
|
||||
from zhenxun.services.log import logger
|
||||
from zhenxun.configs.config import Config
|
||||
from zhenxun.utils.enum import PluginType
|
||||
from zhenxun.utils.message import MessageUtils
|
||||
from zhenxun.models.ban_console import BanConsole
|
||||
|
||||
malicious_check_time = Config.get_config("hook", "MALICIOUS_CHECK_TIME")
|
||||
malicious_ban_count = Config.get_config("hook", "MALICIOUS_BAN_COUNT")
|
||||
@@ -36,12 +36,12 @@ class BanCheckLimiter:
|
||||
self.default_check_time = default_check_time
|
||||
self.default_count = default_count
|
||||
|
||||
def add(self, key: str | int | float):
|
||||
def add(self, key: str | float):
|
||||
if self.mint[key] == 1:
|
||||
self.mtime[key] = time.time()
|
||||
self.mint[key] += 1
|
||||
|
||||
def check(self, key: str | int | float) -> bool:
|
||||
def check(self, key: str | float) -> bool:
|
||||
if time.time() - self.mtime[key] > self.default_check_time:
|
||||
self.mtime[key] = time.time()
|
||||
self.mint[key] = 0
|
||||
@@ -76,6 +76,7 @@ async def _(
|
||||
PluginType.HIDDEN,
|
||||
PluginType.DEPENDANT,
|
||||
PluginType.ADMIN,
|
||||
PluginType.SUPERUSER,
|
||||
]:
|
||||
return
|
||||
else:
|
||||
@@ -101,7 +102,7 @@ async def _(
|
||||
await MessageUtils.build_message(
|
||||
[
|
||||
At(flag="user", target=user_id),
|
||||
f"检测到恶意触发命令,您将被封禁 30 分钟",
|
||||
"检测到恶意触发命令,您将被封禁 30 分钟",
|
||||
]
|
||||
).send()
|
||||
logger.debug(
|
||||
|
||||
@@ -15,6 +15,7 @@ CONFIG_INDEX_CDN_URL = "https://cdn.jsdelivr.net/gh/zhenxun-org/zhenxun_bot_plug
|
||||
"""插件索引库信息文件cdn"""
|
||||
|
||||
DEFAULT_GITHUB_URL = "https://github.com/zhenxun-org/zhenxun_bot_plugins/tree/main"
|
||||
"""默认github仓库地址"""
|
||||
|
||||
GITHUB_REPO_URL_PATTERN = re.compile(
|
||||
r"^https://github.com/(?P<owner>[^/]+)/(?P<repo>[^/]+)(/tree/(?P<branch>[^/]+))?$"
|
||||
|
||||
@@ -180,7 +180,7 @@ class ShopManage:
|
||||
str: 版本号
|
||||
"""
|
||||
module = plugin_info.module
|
||||
if cls.check_version_is_new(plugin_info, suc_plugin):
|
||||
if not cls.check_version_is_new(plugin_info, suc_plugin):
|
||||
return f"{suc_plugin[module]} (有更新->{plugin_info.version})"
|
||||
return plugin_info.version
|
||||
|
||||
@@ -198,7 +198,16 @@ class ShopManage:
|
||||
bool: 是否有更新
|
||||
"""
|
||||
module = plugin_info.module
|
||||
return module in suc_plugin and plugin_info.version != suc_plugin[module]
|
||||
return suc_plugin.get(module) and plugin_info.version == suc_plugin[module]
|
||||
|
||||
@classmethod
|
||||
async def get_loaded_plugins(cls, *args) -> list[tuple[str, str]]:
|
||||
"""获取已加载的插件
|
||||
|
||||
返回:
|
||||
list[str]: 已加载的插件
|
||||
"""
|
||||
return await PluginInfo.filter(load_status=True).values_list(*args)
|
||||
|
||||
@classmethod
|
||||
async def get_plugins_info(cls) -> BuildImage | str:
|
||||
@@ -209,9 +218,7 @@ class ShopManage:
|
||||
"""
|
||||
data: dict[str, StorePluginInfo] = await cls.__get_data()
|
||||
column_name = ["-", "ID", "名称", "简介", "作者", "版本", "类型"]
|
||||
plugin_list = await PluginInfo.filter(load_status=True).values_list(
|
||||
"module", "version"
|
||||
)
|
||||
plugin_list = await cls.get_loaded_plugins("module", "version")
|
||||
suc_plugin = {p[0]: (p[1] or "0.1") for p in plugin_list}
|
||||
data_list = [
|
||||
[
|
||||
@@ -380,9 +387,7 @@ class ShopManage:
|
||||
BuildImage | str: 返回消息
|
||||
"""
|
||||
data = await cls.__get_data()
|
||||
plugin_list = await PluginInfo.filter(load_status=True).values_list(
|
||||
"module", "version"
|
||||
)
|
||||
plugin_list = await cls.get_loaded_plugins("module", "version")
|
||||
suc_plugin = {p[0]: p[1] for p in plugin_list if p[1]}
|
||||
filtered_data = [
|
||||
(id, plugin_info)
|
||||
@@ -430,9 +435,7 @@ class ShopManage:
|
||||
plugin_key = list(data.keys())[plugin_id]
|
||||
logger.info(f"尝试更新插件 {plugin_key}", "插件管理")
|
||||
plugin_info = data[plugin_key]
|
||||
plugin_list = await PluginInfo.filter(load_status=True).values_list(
|
||||
"module", "version"
|
||||
)
|
||||
plugin_list = await cls.get_loaded_plugins("module", "version")
|
||||
suc_plugin = {p[0]: p[1] for p in plugin_list if p[1]}
|
||||
logger.debug(f"当前插件列表: {suc_plugin}", "插件管理")
|
||||
if cls.check_version_is_new(plugin_info, suc_plugin):
|
||||
|
||||
Reference in New Issue
Block a user