From 4e42d1dda1d0aa62a06d96c8dc3389772fb32cb6 Mon Sep 17 00:00:00 2001 From: HibiKier <775757368@qq.com> Date: Mon, 9 Sep 2024 23:01:15 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20=E4=BF=AE=E5=A4=8D=E8=B6=85?= =?UTF-8?q?=E7=BA=A7=E7=94=A8=E6=88=B7id=E8=8E=B7=E5=8F=96=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../platform/qq/group_handle.py | 25 +++++++++++-------- zhenxun/builtin_plugins/record_request.py | 20 +++++++-------- zhenxun/configs/config.py | 11 +++----- zhenxun/utils/platform.py | 22 ++++++++-------- 4 files changed, 37 insertions(+), 41 deletions(-) diff --git a/zhenxun/builtin_plugins/platform/qq/group_handle.py b/zhenxun/builtin_plugins/platform/qq/group_handle.py index 148500e6..2e10b79a 100644 --- a/zhenxun/builtin_plugins/platform/qq/group_handle.py +++ b/zhenxun/builtin_plugins/platform/qq/group_handle.py @@ -105,7 +105,7 @@ add_group = on_request(priority=1, block=False) @group_increase_handle.handle() async def _(bot: Bot, event: GroupIncreaseNoticeEvent | GroupMemberIncreaseEvent): - superuser = BotConfig.get_superuser("qq") + superusers = BotConfig.get_superuser("qq") user_id = str(event.user_id) group_id = str(event.group_id) if user_id == bot.self_id: @@ -123,10 +123,11 @@ async def _(bot: Bot, event: GroupIncreaseNoticeEvent | GroupMemberIncreaseEvent group_id=event.group_id, message=result_msg ) await bot.set_group_leave(group_id=event.group_id) - await bot.send_private_msg( - user_id=int(superuser), - message=f"触发强制入群保护,已成功退出群聊 {group_id}...", - ) + if superusers: + await bot.send_private_msg( + user_id=int(superusers[0]), + message=f"触发强制入群保护,已成功退出群聊 {group_id}...", + ) logger.info( "强制拉群或未有群信息,退出群聊成功", "入群检测", @@ -144,10 +145,12 @@ async def _(bot: Bot, event: GroupIncreaseNoticeEvent | GroupMemberIncreaseEvent group_id=event.group_id, e=e, ) - await bot.send_private_msg( - user_id=int(superuser), - message=f"触发强制入群保护,退出群聊 {event.group_id} 失败...", - ) + if superusers: + await bot.send_private_msg( + user_id=int(superusers[0]), + message="触发强制入群保护," + f"退出群聊 {event.group_id} 失败...", + ) await GroupConsole.filter(group_id=group_id).delete() else: """允许群组并设置群认证,默认群功能开关""" @@ -274,8 +277,8 @@ async def _(bot: Bot, event: GroupDecreaseNoticeEvent | GroupMemberDecreaseEvent operator_name = "None" group = await GroupConsole.filter(group_id=str(group_id)).first() group_name = group.group_name if group else "" - if superuser := BotConfig.get_superuser("qq"): - coffee = int(superuser) + if superusers := BotConfig.get_superuser("qq"): + coffee = int(superusers[0]) await bot.send_private_msg( user_id=coffee, message=f"****呜..一份踢出报告****\n" diff --git a/zhenxun/builtin_plugins/record_request.py b/zhenxun/builtin_plugins/record_request.py index 730bf1db..f7ac4b21 100644 --- a/zhenxun/builtin_plugins/record_request.py +++ b/zhenxun/builtin_plugins/record_request.py @@ -68,7 +68,6 @@ _t = on_message(priority=999, block=False, rule=lambda: False) @friend_req.handle() async def _(bot: v12Bot | v11Bot, event: FriendRequestEvent, session: EventSession): - superuser = BotConfig.get_superuser("qq") if event.user_id and Timer.check(event.user_id): logger.debug("收录好友请求...", "好友请求", target=event.user_id) user = await bot.get_stranger_info(user_id=event.user_id) @@ -102,16 +101,15 @@ async def _(bot: v12Bot | v11Bot, event: FriendRequestEvent, session: EventSessi nickname=nickname, comment=comment, ) - if superuser: - await PlatformUtils.send_superuser( - bot, - f"*****一份好友申请*****\n" - f"ID: {f.id}" - f"昵称:{nickname}({event.user_id})\n" - f"自动同意:{'√' if base_config.get('AUTO_ADD_FRIEND') else '×'}\n" - f"日期:{str(datetime.now()).split('.')[0]}\n" - f"备注:{event.comment}", - ) + await PlatformUtils.send_superuser( + bot, + f"*****一份好友申请*****\n" + f"ID: {f.id}" + f"昵称:{nickname}({event.user_id})\n" + f"自动同意:{'√' if base_config.get('AUTO_ADD_FRIEND') else '×'}\n" + f"日期:{str(datetime.now()).split('.')[0]}\n" + f"备注:{event.comment}", + ) else: logger.debug("好友请求五分钟内重复, 已忽略", "好友请求", target=event.user_id) diff --git a/zhenxun/configs/config.py b/zhenxun/configs/config.py index 86583f19..b2b99996 100644 --- a/zhenxun/configs/config.py +++ b/zhenxun/configs/config.py @@ -1,4 +1,3 @@ -import random from pathlib import Path import nonebot @@ -8,7 +7,6 @@ from .utils import ConfigsManager class BotSetting(BaseModel): - self_nickname: str = "" """回复时NICKNAME""" system_proxy: str | None = None @@ -18,19 +16,18 @@ class BotSetting(BaseModel): platform_superusers: dict[str, list[str]] = {} """平台超级用户""" - def get_superuser(self, platform: str) -> str: + def get_superuser(self, platform: str) -> list[str]: """获取超级用户 参数: platform: 对应平台 返回: - str | None: 超级用户id + list[str]: 超级用户id """ if self.platform_superusers: - if platform_superuser := self.platform_superusers.get(platform): - return random.choice(platform_superuser) - return "" + return self.platform_superusers.get(platform, []) + return [] def get_sql_type(self) -> str: """获取数据库类型 diff --git a/zhenxun/utils/platform.py b/zhenxun/utils/platform.py index 9235ab1d..c1213904 100644 --- a/zhenxun/utils/platform.py +++ b/zhenxun/utils/platform.py @@ -1,29 +1,28 @@ import random -from collections.abc import Awaitable, Callable from typing import Literal +from collections.abc import Callable, Awaitable import httpx import nonebot +from pydantic import BaseModel from nonebot.adapters import Bot -from nonebot.adapters.discord import Bot as DiscordBot +from nonebot.utils import is_coroutine_callable from nonebot.adapters.dodo import Bot as DodoBot -from nonebot.adapters.kaiheila import Bot as KaiheilaBot from nonebot.adapters.onebot.v11 import Bot as v11Bot from nonebot.adapters.onebot.v12 import Bot as v12Bot -from nonebot.utils import is_coroutine_callable -from nonebot_plugin_alconna.uniseg import Receipt, Target, UniMessage -from pydantic import BaseModel +from nonebot.adapters.discord import Bot as DiscordBot +from nonebot.adapters.kaiheila import Bot as KaiheilaBot +from nonebot_plugin_alconna.uniseg import Target, Receipt, UniMessage -from zhenxun.configs.config import BotConfig -from zhenxun.models.friend_user import FriendUser -from zhenxun.models.group_console import GroupConsole from zhenxun.services.log import logger -from zhenxun.utils.exception import NotFindSuperuser +from zhenxun.configs.config import BotConfig from zhenxun.utils.message import MessageUtils +from zhenxun.models.friend_user import FriendUser +from zhenxun.utils.exception import NotFindSuperuser +from zhenxun.models.group_console import GroupConsole class UserData(BaseModel): - name: str """昵称""" card: str | None = None @@ -41,7 +40,6 @@ class UserData(BaseModel): class PlatformUtils: - @classmethod async def ban_user(cls, bot: Bot, user_id: str, group_id: str, duration: int): """禁言