🐛 修复群权限检测获取群问题并优化代码

This commit is contained in:
HibiKier 2024-08-02 21:38:32 +08:00
parent 36047693aa
commit 51fcdf649e
6 changed files with 117 additions and 89 deletions

View File

@ -21,8 +21,6 @@ from zhenxun.utils.image_utils import (
) )
from zhenxun.utils.rules import admin_check, ensure_group from zhenxun.utils.rules import admin_check, ensure_group
base_config = Config.get("admin_bot_manage")
__plugin_meta__ = PluginMetadata( __plugin_meta__ = PluginMetadata(
name="群组管理员帮助", name="群组管理员帮助",
description="管理员帮助列表", description="管理员帮助列表",

View File

@ -3,7 +3,7 @@ from nonebot.adapters.onebot.v11 import GroupAdminNoticeEvent
from nonebot.plugin import PluginMetadata from nonebot.plugin import PluginMetadata
from zhenxun.configs.config import Config from zhenxun.configs.config import Config
from zhenxun.configs.utils import PluginExtraData from zhenxun.configs.utils import PluginExtraData, RegisterConfig
from zhenxun.models.level_user import LevelUser from zhenxun.models.level_user import LevelUser
from zhenxun.services.log import logger from zhenxun.services.log import logger
from zhenxun.utils.enum import PluginType from zhenxun.utils.enum import PluginType
@ -13,7 +13,18 @@ __plugin_meta__ = PluginMetadata(
description="检测群管理员变动, 添加与删除管理员默认权限, 当配置项 ADMIN_DEFAULT_AUTH 为空时, 不会添加管理员权限", description="检测群管理员变动, 添加与删除管理员默认权限, 当配置项 ADMIN_DEFAULT_AUTH 为空时, 不会添加管理员权限",
usage="", usage="",
extra=PluginExtraData( extra=PluginExtraData(
author="HibiKier", version="0.1", plugin_type=PluginType.HIDDEN author="HibiKier",
version="0.1",
plugin_type=PluginType.HIDDEN,
configs=[
RegisterConfig(
module="admin_bot_manage",
key="ADMIN_DEFAULT_AUTH",
value=5,
help="设置群欢迎消息所需要的管理员权限等级",
default_value=5,
)
],
).dict(), ).dict(),
) )

View File

@ -35,6 +35,7 @@ __plugin_meta__ = PluginMetadata(
admin_level=base_config.get("SET_GROUP_WELCOME_MESSAGE_LEVEL", 2), admin_level=base_config.get("SET_GROUP_WELCOME_MESSAGE_LEVEL", 2),
configs=[ configs=[
RegisterConfig( RegisterConfig(
module="admin_bot_manage",
key="SET_GROUP_WELCOME_MESSAGE_LEVEL", key="SET_GROUP_WELCOME_MESSAGE_LEVEL",
value=2, value=2,
help="设置群欢迎消息所需要的管理员权限等级", help="设置群欢迎消息所需要的管理员权限等级",

View File

@ -417,9 +417,12 @@ class AuthChecker:
""" """
if group_id := session.id3 or session.id2: if group_id := session.id3 or session.id2:
text = message.extract_plain_text() text = message.extract_plain_text()
group, _ = await GroupConsole.get_or_create( group = await GroupConsole.get_or_none(
group_id=group_id, channel_id__isnull=True group_id=group_id, channel_id__isnull=True
) )
if not group:
"""群不存在"""
raise IgnoredException("群不存在")
if group.level < 0: if group.level < 0:
"""群权限小于0""" """群权限小于0"""
logger.debug( logger.debug(

View File

@ -49,7 +49,7 @@ __plugin_meta__ = PluginMetadata(
module="invite_manager", module="invite_manager",
key="flag", key="flag",
value=True, value=True,
help="强制拉群后进群回复内容", help="强制拉群后进群退出并回复内容",
default_value=True, default_value=True,
type=bool, type=bool,
), ),
@ -113,8 +113,10 @@ async def _(bot: Bot, event: GroupIncreaseNoticeEvent | GroupMemberIncreaseEvent
group = await GroupConsole.get_or_none( group = await GroupConsole.get_or_none(
group_id=group_id, channel_id__isnull=True group_id=group_id, channel_id__isnull=True
) )
if (not group or group.group_flag == 0) and base_config.get("flag"): if not group or group.group_flag == 0:
"""群聊不存在或被强制拉群,退出该群""" """群聊不存在或被强制拉群"""
if base_config.get("flag"):
"""退出群组"""
try: try:
if result_msg := base_config.get("message"): if result_msg := base_config.get("message"):
await bot.send_group_msg( await bot.send_group_msg(
@ -130,7 +132,9 @@ async def _(bot: Bot, event: GroupIncreaseNoticeEvent | GroupMemberIncreaseEvent
"入群检测", "入群检测",
group_id=event.group_id, group_id=event.group_id,
) )
if req := await FgRequest.get_or_none(group_id=group_id): if req := await FgRequest.get_or_none(
group_id=group_id, handle_type__isnull=True
):
req.handle_type = RequestHandleType.IGNORE req.handle_type = RequestHandleType.IGNORE
await req.save(update_fields=["handle_type"]) await req.save(update_fields=["handle_type"])
except Exception as e: except Exception as e:
@ -144,10 +148,18 @@ async def _(bot: Bot, event: GroupIncreaseNoticeEvent | GroupMemberIncreaseEvent
user_id=int(superuser), user_id=int(superuser),
message=f"触发强制入群保护,退出群聊 {event.group_id} 失败...", message=f"触发强制入群保护,退出群聊 {event.group_id} 失败...",
) )
elif not GroupConsole.exists(group_id=group_id, channel_id__isnull=True): await GroupConsole.filter(group_id=group_id).delete()
"""默认群功能开关""" else:
"""允许群组并设置群认证,默认群功能开关"""
if group:
await GroupConsole.filter(
group_id=group_id, channel_id__isnull=True
).update(group_flag=1)
else:
block_plugin = "" block_plugin = ""
if plugin_list := await PluginInfo.filter(default_status=False).all(): if plugin_list := await PluginInfo.filter(
default_status=False
).all():
for plugin in plugin_list: for plugin in plugin_list:
block_plugin += f"{plugin.module}," block_plugin += f"{plugin.module},"
group_info = await bot.get_group_info(group_id=event.group_id) group_info = await bot.get_group_info(group_id=event.group_id)
@ -160,11 +172,14 @@ async def _(bot: Bot, event: GroupIncreaseNoticeEvent | GroupMemberIncreaseEvent
block_plugin=block_plugin, block_plugin=block_plugin,
platform="qq", platform="qq",
) )
"""刷新群管理员权限"""
admin_default_auth = Config.get_config( admin_default_auth = Config.get_config(
"admin_bot_manage", "ADMIN_DEFAULT_AUTH" "admin_bot_manage", "ADMIN_DEFAULT_AUTH"
) )
# 即刻刷新权限 # 即刻刷新权限
for user_info in await bot.get_group_member_list(group_id=event.group_id): for user_info in await bot.get_group_member_list(
group_id=event.group_id
):
"""即刻刷新权限""" """即刻刷新权限"""
if ( if (
user_info["role"] user_info["role"]

View File

@ -67,7 +67,7 @@ class ConfigGroup(BaseModel):
"""配置项列表""" """配置项列表"""
def get(self, c: str, default: Any = None) -> Any: def get(self, c: str, default: Any = None) -> Any:
cfg = self.configs.get(c) cfg = self.configs.get(c.upper())
if cfg is not None: if cfg is not None:
if cfg.value is not None: if cfg.value is not None:
return cfg.value return cfg.value