版本更新

This commit is contained in:
HibiKier
2024-10-20 21:11:16 +08:00
parent 4e33bf3a50
commit d594d17bf6
253 changed files with 34987 additions and 2241 deletions
+17 -5
View File
@@ -1,11 +1,23 @@
import os
from pathlib import Path
import nonebot
from zhenxun.services.log import logger
path = Path(__file__).parent
for f in os.listdir(path):
_p = path / f
if _p.is_dir():
nonebot.load_plugins(str(_p.resolve()))
try:
from nonebot.adapters.onebot.v11 import Bot
nonebot.load_plugins(str((path / "qq").resolve()))
except ImportError:
logger.warning("未安装 onebot-adapter,无法加载QQ平台专用插件...")
try:
from nonebot.adapters.qq import Bot # noqa: F401
nonebot.load_plugins(str((path / "qq_api").resolve()))
except ImportError:
logger.warning("未安装 qq-adapter,无法加载QQ官平台专用插件...")
@@ -1,4 +1,5 @@
from nonebot.adapters import Bot
from nonebot_plugin_uninfo import Uninfo
from nonebot import on_notice, on_request
from nonebot.plugin import PluginMetadata
from nonebot.adapters.onebot.v11 import (
@@ -11,6 +12,7 @@ from nonebot.adapters.onebot.v12 import (
)
from zhenxun.utils.enum import PluginType
from zhenxun.utils.rules import notice_rule
from zhenxun.utils.platform import PlatformUtils
from zhenxun.utils.common_utils import CommonUtils
from zhenxun.configs.config import Config, BotConfig
@@ -82,16 +84,28 @@ base_config = Config.get("invite_manager")
limit_cd = base_config.get("welcome_msg_cd")
group_increase_handle = on_notice(priority=1, block=False)
group_increase_handle = on_notice(
priority=1,
block=False,
rule=notice_rule([GroupIncreaseNoticeEvent, GroupMemberIncreaseEvent]),
)
"""群员增加处理"""
group_decrease_handle = on_notice(priority=1, block=False)
group_decrease_handle = on_notice(
priority=1,
block=False,
rule=notice_rule([GroupMemberDecreaseEvent, GroupMemberIncreaseEvent]),
)
"""群员减少处理"""
add_group = on_request(priority=1, block=False)
"""加群同意请求"""
@group_increase_handle.handle()
async def _(bot: Bot, event: GroupIncreaseNoticeEvent | GroupMemberIncreaseEvent):
async def _(
bot: Bot,
session: Uninfo,
event: GroupIncreaseNoticeEvent | GroupMemberIncreaseEvent,
):
user_id = str(event.user_id)
group_id = str(event.group_id)
if user_id == bot.self_id:
@@ -99,17 +113,20 @@ async def _(bot: Bot, event: GroupIncreaseNoticeEvent | GroupMemberIncreaseEvent
group, _ = await GroupConsole.get_or_create(
group_id=group_id, channel_id__isnull=True
)
if group.group_flag == 0:
try:
await GroupManager.add_bot(bot, str(event.operator_id), group_id, group)
except ForceAddGroupError as e:
await PlatformUtils.send_superuser(bot, e.get_info())
try:
await GroupManager.add_bot(bot, str(event.operator_id), group_id, group)
except ForceAddGroupError as e:
await PlatformUtils.send_superuser(bot, e.get_info())
else:
await GroupManager.add_user(bot, user_id, group_id)
await GroupManager.add_user(session, bot, user_id, group_id)
@group_decrease_handle.handle()
async def _(bot: Bot, event: GroupDecreaseNoticeEvent | GroupMemberDecreaseEvent):
async def _(
bot: Bot,
session: Uninfo,
event: GroupDecreaseNoticeEvent | GroupMemberDecreaseEvent,
):
user_id = str(event.user_id)
group_id = str(event.group_id)
if event.sub_type == "kick_me":
@@ -120,6 +137,6 @@ async def _(bot: Bot, event: GroupDecreaseNoticeEvent | GroupMemberDecreaseEvent
bot, user_id, group_id, str(event.operator_id), event.sub_type
)
if result and not await CommonUtils.task_is_block(
"refund_group_remind", group_id
session, "refund_group_remind"
):
await group_decrease_handle.send(result)
@@ -7,6 +7,7 @@ from datetime import datetime
import ujson as json
from nonebot.adapters import Bot
from nonebot_plugin_alconna import At
from nonebot_plugin_uninfo import Uninfo
from zhenxun.services.log import logger
from zhenxun.configs.config import Config
@@ -55,7 +56,7 @@ class GroupManager:
block_plugin = ""
if plugin_list := await PluginInfo.filter(default_status=False).all():
for plugin in plugin_list:
block_plugin += f"{plugin.module},"
block_plugin += f"<{plugin.module},"
group_info = await bot.get_group_info(group_id=group_id)
await GroupConsole.create(
group_id=group_info["group_id"],
@@ -83,10 +84,10 @@ class GroupManager:
).values_list("user_id", flat=True)
# 即刻刷新权限
for user_info in member_list:
user_id = user_info["user_id"]
user_id = str(user_info["user_id"])
role = user_info["role"]
if user_id in bot.config.superusers:
await LevelUser.set_level(user_id, user_info["group_id"], 9)
await LevelUser.set_level(user_id, group_id, 9)
logger.debug(
"添加超级用户权限: 9",
"入群检测",
@@ -100,8 +101,8 @@ class GroupManager:
):
await LevelUser.set_level(
user_id,
user_info["group_id"],
admin_default_auth,
group_id,
admin_default_auth if role == "admin" else admin_default_auth + 1,
)
logger.debug(
f"添加默认群管理员权限: {admin_default_auth}",
@@ -202,7 +203,7 @@ class GroupManager:
).send()
@classmethod
async def add_user(cls, bot: Bot, user_id: str, group_id: str):
async def add_user(cls, session: Uninfo, bot: Bot, user_id: str, group_id: str):
"""拉入用户
参数:
@@ -219,7 +220,7 @@ class GroupManager:
)
logger.info(f"用户{user_info['user_id']} 所属{user_info['group_id']} 更新成功")
if not await CommonUtils.task_is_block(
"group_welcome", group_id
session, "group_welcome"
) and cls._flmt.check(group_id):
await cls.__send_welcome_message(user_id, group_id)
@@ -0,0 +1,28 @@
from nonebot_plugin_uninfo import Uninfo
from nonebot.message import run_preprocessor
from zhenxun.services.log import logger
from zhenxun.utils.platform import PlatformUtils
from zhenxun.models.friend_user import FriendUser
from zhenxun.models.group_console import GroupConsole
from zhenxun.models.group_member_info import GroupInfoUser
@run_preprocessor
async def do_something(session: Uninfo):
platform = PlatformUtils.get_platform(session)
if session.group:
if not await GroupConsole.exists(group_id=session.group.id):
await GroupConsole.create(group_id=session.group.id)
logger.info("添加当前群组ID信息" "", session=session)
if not await GroupInfoUser.exists(
user_id=session.user.id, group_id=session.group.id
):
await GroupInfoUser.create(
user_id=session.user.id, group_id=session.group.id, platform=platform
)
logger.info("添加当前用户群组ID信息", "", session=session)
elif not await FriendUser.exists(user_id=session.user.id, platform=platform):
await FriendUser.create(user_id=session.user.id, platform=platform)
logger.info("添加当前好友用户信息", "", session=session)