🐛 修复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(
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:
await LevelUser.set_level(user_id, group_id, 9)
join_time = datetime.strptime(

View File

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

View File

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

View File

@ -1,6 +1,6 @@
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.message import run_postprocessor, run_preprocessor
from nonebot_plugin_alconna import UniMsg

View File

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

View File

@ -1,6 +1,7 @@
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
@ -63,16 +64,24 @@ _blmt = BanCheckLimiter(
# 恶意触发命令检测
@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
if plugin := matcher.plugin:
module = plugin.module_name
if metadata := plugin.metadata:
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
else:
return
if matcher.type == "notice":
return
user_id = session.id1
group_id = session.id3 or session.id2
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)
path = DATA_PATH / "welcome_message" / "qq" / f"{group_id}"
data = json.load((path / "text.json").open(encoding="utf-8"))
message = data["message"]
msg_split = re.split(r"\[image:\d+\]", message)
file = path / "text.json"
msg_list = []
if data["at"]:
msg_list.append(At(flag="user", target=user_id))
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 file.exists():
data = json.load((path / "text.json").open(encoding="utf-8"))
message = data["message"]
msg_split = re.split(r"\[image:\d+\]", message)
if data["at"]:
msg_list.append(At(flag="user", target=user_id))
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):
logger.info(f"发送群欢迎消息...", "入群检测", group_id=group_id)
if msg_list:

View File

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

View File

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

View File

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