mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2026-10-07 12:50:03 +08:00
版本更新
This commit is contained in:
@@ -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)
|
||||
Reference in New Issue
Block a user