🐛 修复bug

This commit is contained in:
HibiKier 2024-08-24 13:25:34 +08:00
parent a9ed5d144d
commit 28b7415581
35 changed files with 60 additions and 37 deletions

View File

@ -102,7 +102,10 @@ class MemberUpdateManage:
if role in ["owner", "admin"] and not await LevelUser.is_group_flag( if role in ["owner", "admin"] and not await LevelUser.is_group_flag(
user_id, group_id user_id, group_id
): ):
await LevelUser.set_level(user_id, group_id, default_auth) if role == "owner":
await LevelUser.set_level(user_id, group_id, default_auth + 1)
else:
await LevelUser.set_level(user_id, group_id, default_auth)
if user_id in bot.config.superusers: if user_id in bot.config.superusers:
await LevelUser.set_level(user_id, group_id, 9) await LevelUser.set_level(user_id, group_id, 9)
join_time = datetime.strptime( join_time = datetime.strptime(

View File

@ -58,7 +58,7 @@ __plugin_meta__ = PluginMetadata(
关闭群被动早晚安 关闭群被动早晚安
关闭群被动早晚安 -g 12355555 关闭群被动早晚安 -g 12355555
开启/关闭所有群被动 -[g ?[group_id]] 开启/关闭所有群被动 ?[-g [group_id]]
私聊中: 开启/关闭全局或指定群组被动状态 私聊中: 开启/关闭全局或指定群组被动状态
示例: 示例:
开启所有群被动: 开启全局所有被动 开启所有群被动: 开启全局所有被动

View File

@ -198,6 +198,8 @@ class AuthChecker:
return False return False
if not self._flmt_s.check(sid): if not self._flmt_s.check(sid):
return False return False
if plugin.module == "ai":
return False
return True return True
async def auth( async def auth(
@ -392,7 +394,7 @@ class AuthChecker:
if not plugin.status and plugin.block_type == BlockType.ALL: if not plugin.status and plugin.block_type == BlockType.ALL:
"""全局状态""" """全局状态"""
if group_id: if group_id:
if await GroupConsole.is_super_group(group_id, channel_id): if await GroupConsole.is_super_group(group_id):
raise IsSuperuserException() raise IsSuperuserException()
logger.debug( logger.debug(
f"{plugin.name}({plugin.module}) 全局未开启此功能...", f"{plugin.name}({plugin.module}) 全局未开启此功能...",

View File

@ -1,6 +1,6 @@
from typing import Optional from typing import Optional
from nonebot.adapters.onebot.v11 import Bot, Event, MessageEvent from nonebot.adapters.onebot.v11 import Bot, Event
from nonebot.matcher import Matcher from nonebot.matcher import Matcher
from nonebot.message import run_postprocessor, run_preprocessor from nonebot.message import run_postprocessor, run_preprocessor
from nonebot_plugin_alconna import UniMsg from nonebot_plugin_alconna import UniMsg

View File

@ -1,3 +1,5 @@
import logging
from nonebot.adapters import Bot, Event from nonebot.adapters import Bot, Event
from nonebot.exception import IgnoredException from nonebot.exception import IgnoredException
from nonebot.matcher import Matcher from nonebot.matcher import Matcher
@ -8,6 +10,7 @@ from nonebot_plugin_session import EventSession
from zhenxun.configs.config import Config from zhenxun.configs.config import Config
from zhenxun.models.ban_console import BanConsole from zhenxun.models.ban_console import BanConsole
from zhenxun.models.group_console import GroupConsole
from zhenxun.utils.enum import PluginType from zhenxun.utils.enum import PluginType
from zhenxun.utils.message import MessageUtils from zhenxun.utils.message import MessageUtils
from zhenxun.utils.utils import FreqLimiter from zhenxun.utils.utils import FreqLimiter
@ -30,7 +33,7 @@ async def _(
if plugin := matcher.plugin: if plugin := matcher.plugin:
if metadata := plugin.metadata: if metadata := plugin.metadata:
extra = metadata.extra extra = metadata.extra
if extra.get("plugin_type") == PluginType.HIDDEN: if extra.get("plugin_type") in [PluginType.HIDDEN, PluginType.DEPENDANT]:
return return
user_id = session.id1 user_id = session.id1
group_id = session.id3 or session.id2 group_id = session.id3 or session.id2
@ -38,7 +41,12 @@ async def _(
if user_id in bot.config.superusers: if user_id in bot.config.superusers:
return return
if await BanConsole.is_ban(None, group_id): if await BanConsole.is_ban(None, group_id):
logging.debug("群组处于黑名单中...", "ban_hook")
raise IgnoredException("群组处于黑名单中...") raise IgnoredException("群组处于黑名单中...")
if g := await GroupConsole.get_group(group_id):
if g.level < 0:
logging.debug("群黑名单, 群权限-1...", "ban_hook")
raise IgnoredException("群黑名单, 群权限-1..")
if user_id: if user_id:
ban_result = Config.get_config("hook", "BAN_RESULT") ban_result = Config.get_config("hook", "BAN_RESULT")
if user_id in bot.config.superusers: if user_id in bot.config.superusers:
@ -59,7 +67,7 @@ async def _(
time_str = f"{hours} 小时 {minute}分钟" time_str = f"{hours} 小时 {minute}分钟"
else: else:
time_str = f"{minute} 分钟" time_str = f"{minute} 分钟"
if ban_result and _flmt.check(user_id): if time != -1 and ban_result and _flmt.check(user_id):
_flmt.start_cd(user_id) _flmt.start_cd(user_id)
await MessageUtils.build_message( await MessageUtils.build_message(
[ [
@ -67,4 +75,5 @@ async def _(
f"{ban_result}\n在..在 {time_str} 后才会理你喔", f"{ban_result}\n在..在 {time_str} 后才会理你喔",
] ]
).send() ).send()
logging.debug("用户处于黑名单中...", "ban_hook")
raise IgnoredException("用户处于黑名单中...") raise IgnoredException("用户处于黑名单中...")

View File

@ -1,6 +1,7 @@
import time import time
from collections import defaultdict from collections import defaultdict
from nonebot.adapters import Event
from nonebot.adapters.onebot.v11 import Bot from nonebot.adapters.onebot.v11 import Bot
from nonebot.exception import IgnoredException from nonebot.exception import IgnoredException
from nonebot.matcher import Matcher from nonebot.matcher import Matcher
@ -63,16 +64,24 @@ _blmt = BanCheckLimiter(
# 恶意触发命令检测 # 恶意触发命令检测
@run_preprocessor @run_preprocessor
async def _(matcher: Matcher, bot: Bot, session: EventSession, state: T_State): async def _(
matcher: Matcher, bot: Bot, session: EventSession, state: T_State, event: Event
):
module = None module = None
if plugin := matcher.plugin: if plugin := matcher.plugin:
module = plugin.module_name module = plugin.module_name
if metadata := plugin.metadata: if metadata := plugin.metadata:
extra = metadata.extra extra = metadata.extra
if extra.get("plugin_type") in [PluginType.HIDDEN, PluginType.DEPENDANT]: if extra.get("plugin_type") in [
PluginType.HIDDEN,
PluginType.DEPENDANT,
PluginType.ADMIN,
]:
return return
else: else:
return return
if matcher.type == "notice":
return
user_id = session.id1 user_id = session.id1
group_id = session.id3 or session.id2 group_id = session.id3 or session.id2
malicious_ban_time = Config.get_config("hook", "MALICIOUS_BAN_TIME") malicious_ban_time = Config.get_config("hook", "MALICIOUS_BAN_TIME")

View File

@ -231,17 +231,19 @@ async def _(bot: Bot, event: GroupIncreaseNoticeEvent | GroupMemberIncreaseEvent
"""群欢迎消息""" """群欢迎消息"""
_flmt.start_cd(group_id) _flmt.start_cd(group_id)
path = DATA_PATH / "welcome_message" / "qq" / f"{group_id}" path = DATA_PATH / "welcome_message" / "qq" / f"{group_id}"
data = json.load((path / "text.json").open(encoding="utf-8")) file = path / "text.json"
message = data["message"]
msg_split = re.split(r"\[image:\d+\]", message)
msg_list = [] msg_list = []
if data["at"]: if file.exists():
msg_list.append(At(flag="user", target=user_id)) data = json.load((path / "text.json").open(encoding="utf-8"))
for i, text in enumerate(msg_split): message = data["message"]
msg_list.append(text) msg_split = re.split(r"\[image:\d+\]", message)
img_file = path / f"{i}.png" if data["at"]:
if img_file.exists(): msg_list.append(At(flag="user", target=user_id))
msg_list.append(img_file) for i, text in enumerate(msg_split):
msg_list.append(text)
img_file = path / f"{i}.png"
if img_file.exists():
msg_list.append(img_file)
if not TaskInfo.is_block("group_welcome", group_id): if not TaskInfo.is_block("group_welcome", group_id):
logger.info(f"发送群欢迎消息...", "入群检测", group_id=group_id) logger.info(f"发送群欢迎消息...", "入群检测", group_id=group_id)
if msg_list: if msg_list:

View File

@ -429,7 +429,9 @@ async def _generate_html_card(
"process": process, "process": process,
"date": str(now.replace(microsecond=0)), "date": str(now.replace(microsecond=0)),
} }
_type = "sign"
if is_card_view: if is_card_view:
_type = "view"
value_list = ( value_list = (
await SignUser.annotate() await SignUser.annotate()
.order_by("-impression") .order_by("-impression")
@ -451,5 +453,5 @@ async def _generate_html_card(
) )
image = BuildImage.open(pic) image = BuildImage.open(pic)
date = now.date() date = now.date()
await image.save(SIGN_TODAY_CARD_PATH / f"{user.user_id}_sign_{date}.png") await image.save(SIGN_TODAY_CARD_PATH / f"{user.user_id}_{_type}_{date}.png")
return IMAGE_PATH / "sign" / "today_card" / f"{user.user_id}_sign_{date}.png" return IMAGE_PATH / "sign" / "today_card" / f"{user.user_id}_{_type}_{date}.png"

View File

@ -117,7 +117,8 @@ class StatisticsManage:
mat = BuildMat(MatType.BARH) mat = BuildMat(MatType.BARH)
module2count = {x[0]: x[1] for x in data_list} module2count = {x[0]: x[1] for x in data_list}
plugin_info = await PluginInfo.filter( plugin_info = await PluginInfo.filter(
module__in=module2count.keys(), plugin_type=PluginType.NORMAL module__in=module2count.keys(),
plugin_type=PluginType.NORMAL,
).all() ).all()
x_index = [] x_index = []
data = [] data = []

View File

@ -227,22 +227,17 @@ async def _(parma: HandleRequest) -> Result:
if bot_id not in nonebot.get_bots(): if bot_id not in nonebot.get_bots():
return Result.warning_("指定Bot未连接...") return Result.warning_("指定Bot未连接...")
if req := await FgRequest.get_or_none(id=parma.id): if req := await FgRequest.get_or_none(id=parma.id):
if group := await GroupConsole.get_group(group_id=req.group_id): if req.request_type == RequestType.GROUP:
group.group_flag = 1 if group := await GroupConsole.get_group(group_id=req.group_id):
await group.save(update_fields=["group_flag"]) group.group_flag = 1
else: await group.save(update_fields=["group_flag"])
group_info = await bots[bot_id].get_group_info( else:
group_id=req.group_id await GroupConsole.update_or_create(
) group_id=req.group_id,
await GroupConsole.update_or_create( defaults={
group_id=str(group_info["group_id"]), "group_flag": 1,
defaults={ },
"group_name": group_info["group_name"], )
"max_member_count": group_info["max_member_count"],
"member_count": group_info["member_count"],
"group_flag": 1,
},
)
else: else:
return Result.warning_("未找到此Id请求...") return Result.warning_("未找到此Id请求...")
try: try: