✨ 移除saa依赖

This commit is contained in:
HibiKier
2024-08-11 15:57:33 +08:00
parent 71f3b031d4
commit d0792e0a1c
68 changed files with 1722 additions and 1528 deletions
-4
View File
@@ -15,12 +15,8 @@ from zhenxun.utils.decorator.shop import shop_register
require("nonebot_plugin_apscheduler")
require("nonebot_plugin_alconna")
require("nonebot_plugin_session")
require("nonebot_plugin_saa")
require("nonebot_plugin_userinfo")
from nonebot_plugin_saa import enable_auto_select_bot
enable_auto_select_bot()
import nonebot
import ujson as json
+1 -1
View File
@@ -155,6 +155,6 @@ async def _(
try:
await build_help()
except EmptyError:
await MessageUtils.build_message("管理员帮助为空").finish(reply=True)
await MessageUtils.build_message("管理员帮助为空").finish(reply_to=True)
await MessageUtils.build_message(ADMIN_HELP_IMAGE).send()
logger.info("查看管理员帮助", arparma.header_result, session=session)
@@ -237,7 +237,7 @@ async def _(
At(flag="user", target=user_id) if isinstance(user.result, At) else user_id, # type: ignore
f" 从黑屋中拉了出来并急救了一下!",
]
).finish(reply=True)
).finish(reply_to=True)
else:
await MessageUtils.build_message(f"该用户不在黑名单中捏...").finish(
reply_to=True
@@ -2,10 +2,12 @@ import time
from datetime import datetime, timedelta, timezone
from nonebot.adapters import Bot
from nonebot.adapters.discord import Bot as DiscordBot
from nonebot.adapters.dodo import Bot as DodoBot
# from nonebot.adapters.discord import Bot as DiscordBot
# from nonebot.adapters.dodo import Bot as DodoBot
from nonebot.adapters.dodo.models import MemberInfo
from nonebot.adapters.kaiheila import Bot as KaiheilaBot
# 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
@@ -23,63 +25,63 @@ class MemberUpdateManage:
await cls.v11(bot, group_id)
elif isinstance(bot, v12Bot):
await cls.v12(bot, group_id)
elif isinstance(bot, KaiheilaBot):
await cls.kaiheila(bot, group_id)
elif isinstance(bot, DodoBot):
await cls.dodo(bot, group_id)
elif isinstance(bot, DiscordBot):
await cls.discord(bot, group_id)
# elif isinstance(bot, KaiheilaBot):
# await cls.kaiheila(bot, group_id)
# elif isinstance(bot, DodoBot):
# await cls.dodo(bot, group_id)
# elif isinstance(bot, DiscordBot):
# await cls.discord(bot, group_id)
@classmethod
async def discord(cls, bot: DiscordBot, group_id: str):
# TODO: discord更新群组成员信息
pass
# @classmethod
# async def discord(cls, bot: DiscordBot, group_id: str):
# # TODO: discord更新群组成员信息
# pass
@classmethod
async def dodo(cls, bot: DodoBot, group_id: str):
page_size = 100
result_size = 100
max_id = 0
exist_member_list = []
group_member_list: list[MemberInfo] = []
while result_size == page_size:
group_member_data = await bot.get_member_list(
island_source_id=group_id, page_size=page_size
)
result_size = len(group_member_data.list)
group_member_list += group_member_data.list
max_id = group_member_data.max_id
if group_member_list:
for user in group_member_list:
exist_member_list.append(user.dodo_source_id)
await GroupInfoUser.update_or_create(
user_id=user.dodo_source_id,
group_id=group_id,
defaults={
"user_name": user.nick_name or user.personal_nick_name,
"user_join_time": user.join_time,
"platform": "dodo",
},
)
if delete_member_list := list(
set(exist_member_list).difference(
set(await GroupInfoUser.get_group_member_id_list(group_id))
)
):
await GroupInfoUser.filter(
user_id__in=delete_member_list, group_id=group_id
).delete()
logger.info(
f"删除已退群用户",
"更新群组成员信息",
group_id=group_id,
platform="dodo",
)
# @classmethod
# async def dodo(cls, bot: DodoBot, group_id: str):
# page_size = 100
# result_size = 100
# max_id = 0
# exist_member_list = []
# group_member_list: list[MemberInfo] = []
# while result_size == page_size:
# group_member_data = await bot.get_member_list(
# island_source_id=group_id, page_size=page_size
# )
# result_size = len(group_member_data.list)
# group_member_list += group_member_data.list
# max_id = group_member_data.max_id
# if group_member_list:
# for user in group_member_list:
# exist_member_list.append(user.dodo_source_id)
# await GroupInfoUser.update_or_create(
# user_id=user.dodo_source_id,
# group_id=group_id,
# defaults={
# "user_name": user.nick_name or user.personal_nick_name,
# "user_join_time": user.join_time,
# "platform": "dodo",
# },
# )
# if delete_member_list := list(
# set(exist_member_list).difference(
# set(await GroupInfoUser.get_group_member_id_list(group_id))
# )
# ):
# await GroupInfoUser.filter(
# user_id__in=delete_member_list, group_id=group_id
# ).delete()
# logger.info(
# f"删除已退群用户",
# "更新群组成员信息",
# group_id=group_id,
# platform="dodo",
# )
@classmethod
async def kaiheila(cls, bot: KaiheilaBot, group_id: str):
# TODO: kaiheila 更新群组成员信息
pass
# @classmethod
# async def kaiheila(cls, bot: KaiheilaBot, group_id: str):
# # TODO: kaiheila 更新群组成员信息
# pass
@classmethod
async def v11(cls, bot: v11Bot, group_id: str):
+25 -19
View File
@@ -1,8 +1,7 @@
from nonebot.adapters import Bot
from nonebot.exception import IgnoredException
from nonebot.matcher import Matcher
from nonebot_plugin_alconna import UniMsg
from nonebot_plugin_saa import Mention, MessageFactory, Text
from nonebot_plugin_alconna import At, UniMsg
from nonebot_plugin_session import EventSession
from pydantic import BaseModel
from tortoise.exceptions import IntegrityError
@@ -22,6 +21,7 @@ from zhenxun.utils.enum import (
PluginType,
)
from zhenxun.utils.exception import InsufficientGold
from zhenxun.utils.message import MessageUtils
from zhenxun.utils.utils import CountLimiter, FreqLimiter, UserBlockLimiter
@@ -146,7 +146,7 @@ class LimitManage:
key_type = channel_id or group_id
if is_limit and not limiter.check(key_type):
if limit.result:
await Text(limit.result).send()
await MessageUtils.build_message(limit.result).send()
logger.debug(
f"{limit.module}({limit.limit_type}) 正在限制中...",
"HOOK",
@@ -296,7 +296,9 @@ class AuthChecker:
"""超级用户群组插件状态"""
if self._flmt_s.check(group_id or user_id):
self._flmt_s.start_cd(group_id or user_id)
await Text("超级管理员禁用了该群此功能...").send(reply=True)
await MessageUtils.build_message(
"超级管理员禁用了该群此功能..."
).send(reply_to=True)
logger.debug(
f"{plugin.name}({plugin.module}) 超级管理员禁用了该群此功能...",
"HOOK",
@@ -309,7 +311,9 @@ class AuthChecker:
"""群组插件状态"""
if self._flmt_s.check(group_id or user_id):
self._flmt_s.start_cd(group_id or user_id)
await Text("该群未开启此功能...").send(reply=True)
await MessageUtils.build_message("该群未开启此功能...").send(
reply_to=True
)
logger.debug(
f"{plugin.name}({plugin.module}) 未开启此功能...",
"HOOK",
@@ -321,7 +325,9 @@ class AuthChecker:
try:
if self._flmt_c.check(group_id):
self._flmt_c.start_cd(group_id)
await Text("该功能在群组中已被禁用...").send(reply=True)
await MessageUtils.build_message(
"该功能在群组中已被禁用..."
).send(reply_to=True)
except Exception as e:
logger.error(
"auth_plugin 发送消息失败", "HOOK", session=session, e=e
@@ -338,7 +344,9 @@ class AuthChecker:
try:
if self._flmt_c.check(user_id):
self._flmt_c.start_cd(user_id)
await Text("该功能在私聊中已被禁用...").send()
await MessageUtils.build_message(
"该功能在私聊中已被禁用..."
).send()
except Exception as e:
logger.error(
"auth_admin 发送消息失败", "HOOK", session=session, e=e
@@ -356,7 +364,7 @@ class AuthChecker:
raise IsSuperuserException()
if self._flmt_s.check(group_id or user_id):
self._flmt_s.start_cd(group_id or user_id)
await Text("全局未开启此功能...").send()
await MessageUtils.build_message("全局未开启此功能...").send()
logger.debug(
f"{plugin.name}({plugin.module}) 全局未开启此功能...",
"HOOK",
@@ -381,14 +389,12 @@ class AuthChecker:
try:
if self._flmt.check(user_id):
self._flmt.start_cd(user_id)
await MessageFactory(
await MessageUtils.build_message(
[
Mention(user_id),
Text(
f"你的权限不足喔,该功能需要的权限等级: {plugin.admin_level}"
),
At(flag="user", target=user_id),
f"你的权限不足喔,该功能需要的权限等级: {plugin.admin_level}",
]
).send(reply=True)
).send(reply_to=True)
except Exception as e:
logger.error(
"auth_admin 发送消息失败", "HOOK", session=session, e=e
@@ -402,7 +408,7 @@ class AuthChecker:
else:
if not await LevelUser.check_level(user_id, None, plugin.admin_level):
try:
await Text(
await MessageUtils.build_message(
f"你的权限不足喔,该功能需要的权限等级: {plugin.admin_level}"
).send()
except Exception as e:
@@ -428,9 +434,7 @@ class AuthChecker:
"""
if group_id := session.id3 or session.id2:
text = message.extract_plain_text()
group = await GroupConsole.get_or_none(
group_id=group_id, channel_id__isnull=True
)
group = await GroupConsole.get_group(group_id)
if not group:
"""群不存在"""
raise IgnoredException("群不存在")
@@ -468,7 +472,9 @@ class AuthChecker:
if user.gold < plugin.cost_gold:
"""插件消耗金币不足"""
try:
await Text(f"金币不足..该功能需要{plugin.cost_gold}金币..").send()
await MessageUtils.build_message(
f"金币不足..该功能需要{plugin.cost_gold}金币.."
).send()
except Exception as e:
logger.error("auth_cost 发送消息失败", "HOOK", session=session, e=e)
logger.debug(
+5 -5
View File
@@ -3,13 +3,13 @@ from nonebot.exception import IgnoredException
from nonebot.matcher import Matcher
from nonebot.message import run_preprocessor
from nonebot.typing import T_State
from nonebot_plugin_saa import Mention, MessageFactory, Text
from nonebot_plugin_alconna import At
from nonebot_plugin_session import EventSession
from zhenxun.configs.config import Config
from zhenxun.models.ban_console import BanConsole
from zhenxun.services.log import logger
from zhenxun.utils.enum import PluginType
from zhenxun.utils.message import MessageUtils
from zhenxun.utils.utils import FreqLimiter
Config.add_plugin_config(
@@ -61,10 +61,10 @@ async def _(
time_str = f"{minute} 分钟"
if ban_result and _flmt.check(user_id):
_flmt.start_cd(user_id)
await MessageFactory(
await MessageUtils.build_message(
[
Mention(user_id),
Text(f"{ban_result}\n在..在 {time_str} 后才会理你喔"),
At(flag="user", target=user_id),
f"{ban_result}\n在..在 {time_str} 后才会理你喔",
]
).send()
raise IgnoredException("用户处于黑名单中...")
+6 -7
View File
@@ -1,20 +1,19 @@
import time
from collections import defaultdict
from click import command
from nonebot.adapters.onebot.v11 import ActionFailed, Bot, GroupMessageEvent
from nonebot.adapters.onebot.v11 import Bot
from nonebot.exception import IgnoredException
from nonebot.matcher import Matcher
from nonebot.message import run_preprocessor
from nonebot.typing import T_State
from nonebot_plugin_alconna import Arparma
from nonebot_plugin_saa import Mention, MessageFactory, Text
from nonebot_plugin_alconna import At
from nonebot_plugin_session import EventSession
from zhenxun.configs.config import Config
from zhenxun.models.ban_console import BanConsole
from zhenxun.services.log import logger
from zhenxun.utils.enum import PluginType
from zhenxun.utils.message import MessageUtils
malicious_check_time = Config.get_config("hook", "MALICIOUS_CHECK_TIME")
malicious_ban_count = Config.get_config("hook", "MALICIOUS_BAN_COUNT")
@@ -88,10 +87,10 @@ async def _(matcher: Matcher, bot: Bot, session: EventSession, state: T_State):
"HOOK",
session=session,
)
await MessageFactory(
await MessageUtils.build_message(
[
Mention(user_id),
Text(f"检测到恶意触发命令,您将被封禁 30 分钟"),
At(flag="user", target=user_id),
f"检测到恶意触发命令,您将被封禁 30 分钟",
]
).send()
logger.debug(
+11 -9
View File
@@ -9,7 +9,6 @@ from nonebot.adapters.onebot.v11 import FriendRequestEvent, GroupRequestEvent
from nonebot.adapters.onebot.v12 import Bot as v12Bot
from nonebot.plugin import PluginMetadata
from nonebot_plugin_apscheduler import scheduler
from nonebot_plugin_saa import TargetQQPrivate, Text
from nonebot_plugin_session import EventSession
from zhenxun.configs.config import NICKNAME, Config
@@ -19,6 +18,8 @@ from zhenxun.models.friend_user import FriendUser
from zhenxun.models.group_console import GroupConsole
from zhenxun.services.log import logger
from zhenxun.utils.enum import PluginType, RequestHandleType, RequestType
from zhenxun.utils.message import MessageUtils
from zhenxun.utils.platform import PlatformUtils
base_config = Config.get("invite_manager")
@@ -76,14 +77,15 @@ async def _(bot: v12Bot | v11Bot, event: FriendRequestEvent, session: EventSessi
# sex = user["sex"]
# age = str(user["age"])
comment = event.comment
superuser = int(superuser)
await Text(
f"*****一份好友申请*****\n"
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}"
).send_to(target=TargetQQPrivate(user_id=superuser), bot=bot)
if superuser:
superuser = int(superuser)
await MessageUtils.build_message(
f"*****一份好友申请*****\n"
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}"
).send(target=PlatformUtils.get_target(bot, superuser))
if base_config.get("AUTO_ADD_FRIEND"):
logger.debug(
f"已开启好友请求自动同意,成功通过该请求",
+2 -2
View File
@@ -58,8 +58,8 @@ async def _():
# # 睡觉了
@scheduler.scheduled_job(
"cron",
hour=1,
minute=16,
hour=23,
minute=59,
)
async def _():
message = MessageUtils.build_message(
+2 -2
View File
@@ -6,7 +6,6 @@ from typing import Any, Callable, Literal
from nonebot.adapters import Bot, Event
from nonebot_plugin_alconna import UniMessage, UniMsg
from nonebot_plugin_saa import MessageFactory
from nonebot_plugin_session import EventSession
from pydantic import BaseModel, create_model
@@ -298,8 +297,9 @@ class ShopManage:
raise ValueError("该商品使用函数已被注册!")
kwargs["send_success_msg"] = send_success_msg
kwargs["max_num_limit"] = max_num_limit
# TODO: create_model(f"{uuid}_model", __base__=ShopParam, **kwargs)
cls.uuid2goods[uuid] = Goods(
model=create_model(f"{uuid}_model", __base__=ShopParam, **kwargs),
model=None,# create_model(f"{uuid}_model", __base__=ShopParam, **kwargs),
params=kwargs,
before_handle=before_handle,
after_handle=after_handle,
@@ -17,7 +17,6 @@ from zhenxun.utils.image_utils import BuildImage, ImageTemplate
from zhenxun.utils.utils import get_user_avatar
from ._random_event import random_event
from .goods_register import driver
from .utils import get_card
ICON_PATH = IMAGE_PATH / "_icon"
+4 -4
View File
@@ -172,8 +172,8 @@ async def _generate_card(
uid_img = await BuildImage.build_text_image(
f"UID: {uid}", size=30, font_color=(255, 255, 255)
)
image1 = await bk.build_text_image("Accumulative check-in for", bk.font)
image2 = await bk.build_text_image("days", bk.font)
image1 = await bk.build_text_image("Accumulative check-in for", bk.font, size=30)
image2 = await bk.build_text_image("days", bk.font, size=30)
sign_day_img = await BuildImage.build_text_image(
f"{user.sign_count}", size=40, font_color=(211, 64, 33)
)
@@ -181,8 +181,8 @@ async def _generate_card(
tip_height = max([image1.height, image2.height, sign_day_img.height])
tip_image = BuildImage(tip_width, tip_height, (255, 255, 255, 0))
await tip_image.paste(image1, (0, 7))
await tip_image.paste(sign_day_img, (image1.width + 15, 0))
await tip_image.paste(image2, (image1.width + sign_day_img.width + 30, 7))
await tip_image.paste(sign_day_img, (image1.width + 7, 0))
await tip_image.paste(image2, (image1.width + sign_day_img.width + 15, 7))
lik_text1_img = await BuildImage.build_text_image("当前", size=20)
lik_text2_img = await BuildImage.build_text_image(
@@ -7,13 +7,12 @@ from nonebot.permission import SUPERUSER
from nonebot.plugin import PluginMetadata
from nonebot_plugin_alconna import Text as alcText
from nonebot_plugin_alconna import UniMsg
from nonebot_plugin_saa import Text
from nonebot_plugin_session import EventSession
from zhenxun.configs.config import Config
from zhenxun.configs.utils import PluginExtraData, RegisterConfig, Task
from zhenxun.services.log import logger
from zhenxun.utils.enum import PluginType
from zhenxun.utils.message import MessageUtils
from ._data_source import BroadcastManage
@@ -56,10 +55,10 @@ async def _(
if isinstance(msg, alcText) and msg.text.strip().startswith(command[0]):
msg.text = msg.text.replace(command[0], "", 1).strip()
break
await Text("正在发送..请等一下哦!").send()
await MessageUtils.build_message("正在发送..请等一下哦!").send()
count, error_count = await BroadcastManage.send(bot, message, session)
result = f"成功广播 {count} 个群组"
if error_count:
result += f"\n广播失败 {error_count} 个群组"
await Text(f"发送广播完成!\n{result}").send(reply=True)
await MessageUtils.build_message(f"发送广播完成!\n{result}").send(reply_to=True)
logger.info(f"发送广播信息: {message}", "广播", session=session)
@@ -1,17 +1,17 @@
import nonebot_plugin_alconna as alc
from nonebot.adapters import Bot
from nonebot.adapters.discord import Bot as DiscordBot
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_plugin_alconna import UniMsg
from nonebot_plugin_saa import Image, MessageFactory, Text
# from nonebot.adapters.discord import Bot as DiscordBot
# 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_plugin_alconna import Image, UniMsg
from nonebot_plugin_session import EventSession
from zhenxun.models.group_console import GroupConsole
from zhenxun.models.task_info import TaskInfo
from zhenxun.services.log import logger
from zhenxun.utils.message import MessageUtils
from zhenxun.utils.platform import PlatformUtils
@@ -34,9 +34,9 @@ class BroadcastManage:
message_list = []
for msg in message:
if isinstance(msg, alc.Image) and msg.url:
message_list.append(Image(msg.url))
message_list.append(Image(url=msg.url))
elif isinstance(msg, alc.Text):
message_list.append(Text(msg.text))
message_list.append(msg.text)
group_list, _ = await PlatformUtils.get_group_list(bot)
if group_list:
error_count = 0
@@ -50,7 +50,9 @@ class BroadcastManage:
bot, None, group.channel_id or group.group_id
)
if target:
await MessageFactory(message_list).send_to(target, bot)
await MessageUtils.build_message(message_list).send(
target, bot
)
logger.debug(
"发送成功",
"广播",
@@ -7,13 +7,13 @@ from nonebot.rule import to_me
from nonebot.utils import run_sync
from nonebot_plugin_alconna import Alconna, on_alconna
from nonebot_plugin_apscheduler import scheduler
from nonebot_plugin_saa import Text
from nonebot_plugin_session import EventSession
from zhenxun.configs.path_config import TEMP_PATH
from zhenxun.configs.utils import PluginExtraData
from zhenxun.services.log import logger
from zhenxun.utils.enum import PluginType
from zhenxun.utils.message import MessageUtils
from zhenxun.utils.utils import ResourceDirManager
__plugin_meta__ = PluginMetadata(
@@ -44,11 +44,14 @@ ResourceDirManager.add_temp_dir(TEMP_PATH, True)
@_matcher.handle()
async def _(session: EventSession):
await Text("开始清理临时数据...").send()
await MessageUtils.build_message("开始清理临时数据...").send()
size = await _clear_data()
await Text("共清理了 {:.2f}MB 的数据...".format(size / 1024 / 1024)).send()
await MessageUtils.build_message(
"共清理了 {:.2f}MB 的数据...".format(size / 1024 / 1024)
).send()
logger.info(
"清理临时数据完成,共清理了 {:.2f}MB 的数据...".format(size / 1024 / 1024), session=session
"清理临时数据完成,共清理了 {:.2f}MB 的数据...".format(size / 1024 / 1024),
session=session,
)
@@ -71,8 +74,14 @@ def _clear_data() -> float:
dir_size += file_size
logger.debug(f"移除临时文件: {file.absolute()}", "清理临时数据")
except Exception as e:
logger.error(f"清理临时数据错误,临时文件夹: {dir_.absolute()}...", "清理临时数据", e=e)
logger.debug("清理临时文件夹大小: {:.2f}MB".format(size / 1024 / 1024), "清理临时数据")
logger.error(
f"清理临时数据错误,临时文件夹: {dir_.absolute()}...",
"清理临时数据",
e=e,
)
logger.debug(
"清理临时文件夹大小: {:.2f}MB".format(size / 1024 / 1024), "清理临时数据"
)
return float(size)
@@ -83,4 +92,7 @@ def _clear_data() -> float:
)
async def _():
size = await _clear_data()
logger.info("自动清理临时数据完成,共清理了 {:.2f}MB 的数据...".format(size / 1024 / 1024), "定时任务")
logger.info(
"自动清理临时数据完成,共清理了 {:.2f}MB 的数据...".format(size / 1024 / 1024),
"定时任务",
)
@@ -4,12 +4,12 @@ from nonebot.permission import SUPERUSER
from nonebot.plugin import PluginMetadata
from nonebot.rule import to_me
from nonebot_plugin_alconna import Alconna, on_alconna
from nonebot_plugin_saa import Text
from nonebot_plugin_session import EventSession
from zhenxun.configs.utils import PluginExtraData
from zhenxun.services.log import logger
from zhenxun.utils.enum import PluginType
from zhenxun.utils.message import MessageUtils
from zhenxun.utils.rules import admin_check, ensure_group
__plugin_meta__ = PluginMetadata(
@@ -70,13 +70,13 @@ async def _(
msg = ["{user_id} {nickname}".format_map(g) for g in fl]
msg = "\n".join(msg)
msg = f"| UID | 昵称 | 共{len(fl)}个好友\n" + msg
await Text(msg).send()
await MessageUtils.build_message(msg).send()
logger.info("查看好友列表", "好友列表", session=session)
except (ApiNotAvailable, AttributeError) as e:
await Text("Api未实现...").send()
await MessageUtils.build_message("Api未实现...").send()
except Exception as e:
logger.error("好友列表发生错误", "好友列表", session=session, e=e)
await Text("其他未知错误...").send()
await MessageUtils.build_message("其他未知错误...").send()
@_group_matcher.handle()
@@ -90,10 +90,10 @@ async def _(
msg = ["{group_id} {group_name}".format_map(g) for g in gl]
msg = "\n".join(msg)
msg = f"| GID | 名称 | 共{len(gl)}个群组\n" + msg
await Text(msg).send()
await MessageUtils.build_message(msg).send()
logger.info("查看群组列表", "群组列表", session=session)
except (ApiNotAvailable, AttributeError) as e:
await Text("Api未实现...").send()
await MessageUtils.build_message("Api未实现...").send()
except Exception as e:
logger.error("查看群组列表发生错误", "群组列表", session=session, e=e)
await Text("其他未知错误...").send()
await MessageUtils.build_message("其他未知错误...").send()
@@ -14,7 +14,6 @@ from nonebot_plugin_alconna import (
on_alconna,
store_true,
)
from nonebot_plugin_saa import Text
from nonebot_plugin_session import EventSession
from zhenxun.configs.config import NICKNAME
@@ -22,6 +21,7 @@ from zhenxun.configs.utils import PluginExtraData
from zhenxun.models.group_console import GroupConsole
from zhenxun.services.log import logger
from zhenxun.utils.enum import PluginType
from zhenxun.utils.message import MessageUtils
__plugin_meta__ = PluginMetadata(
name="管理群操作",
@@ -139,7 +139,7 @@ def CheckGroupId():
if group_id.available:
gid = group_id.result
if not gid:
await Text("群组id不能为空...").finish()
await MessageUtils.build_message("群组id不能为空...").finish()
state["group_id"] = gid
return Depends(dependency)
@@ -152,7 +152,7 @@ async def _(session: EventSession, arparma: Arparma, state: T_State, level: int)
old_level = group.level
group.level = level
await group.save(update_fields=["level"])
await Text("群权限修改成功!").send(reply=True)
await MessageUtils.build_message("群权限修改成功!").send(reply_to=True)
logger.info(
f"修改群权限: {old_level} -> {level}",
arparma.header_result,
@@ -166,11 +166,11 @@ async def _(session: EventSession, arparma: Arparma, state: T_State):
gid = state["group_id"]
group = await GroupConsole.get_or_none(group_id=gid)
if not group:
await Text("群组信息不存在, 请更新群组信息...").finish()
await MessageUtils.build_message("群组信息不存在, 请更新群组信息...").finish()
s = "删除" if arparma.find("del") else "添加"
group.is_super = not arparma.find("del")
await group.save(update_fields=["is_super"])
await Text(f"{s}群白名单成功!").send(reply=True)
await MessageUtils.build_message(f"{s}群白名单成功!").send(reply_to=True)
logger.info(f"{s}群白名单", arparma.header_result, session=session, target=gid)
@@ -181,7 +181,7 @@ async def _(session: EventSession, arparma: Arparma, state: T_State):
group_id=gid, defaults={"group_flag": 0 if arparma.find("del") else 1}
)
s = "删除" if arparma.find("del") else "添加"
await Text(f"{s}群认证成功!").send(reply=True)
await MessageUtils.build_message(f"{s}群认证成功!").send(reply_to=True)
logger.info(f"{s}群白名单", arparma.header_result, session=session, target=gid)
@@ -191,17 +191,17 @@ async def _(bot: Bot, session: EventSession, arparma: Arparma, group_id: int):
group_list = [g["group_id"] for g in await bot.get_group_list()]
if group_id not in group_list:
logger.debug("群组不存在", "退群", session=session, target=group_id)
await Text(f"{NICKNAME}未在该群组中...").finish()
await MessageUtils.build_message(f"{NICKNAME}未在该群组中...").finish()
try:
await bot.set_group_leave(group_id=group_id)
logger.info(
f"{NICKNAME}退出群组成功", "退群", session=session, target=group_id
)
await Text(f"退出群组 {group_id} 成功!").send()
await MessageUtils.build_message(f"退出群组 {group_id} 成功!").send()
await GroupConsole.filter(group_id=group_id).delete()
except Exception as e:
logger.error(f"退出群组失败", "退群", session=session, target=group_id, e=e)
await Text(f"退出群组 {group_id} 失败...").send()
await MessageUtils.build_message(f"退出群组 {group_id} 失败...").send()
else:
# TODO: 其他平台的退群操作
await Text(f"暂未支持退群操作...").send()
await MessageUtils.build_message(f"暂未支持退群操作...").send()
@@ -3,13 +3,13 @@ from nonebot.plugin import PluginMetadata
from nonebot.rule import to_me
from nonebot_plugin_alconna import Alconna, Arparma, on_alconna
from nonebot_plugin_apscheduler import scheduler
from nonebot_plugin_saa import Text
from nonebot_plugin_session import EventSession
from zhenxun.configs.config import Config
from zhenxun.configs.utils import PluginExtraData, RegisterConfig
from zhenxun.services.log import logger
from zhenxun.utils.enum import PluginType
from zhenxun.utils.message import MessageUtils
__plugin_meta__ = PluginMetadata(
name="重载配置",
@@ -55,7 +55,7 @@ _matcher = on_alconna(
async def _(session: EventSession, arparma: Arparma):
Config.reload()
logger.debug("自动重载配置文件", arparma.header_result, session=session)
await Text("重载完成!").send(reply=True)
await MessageUtils.build_message("重载完成!").send(reply_to=True)
@scheduler.scheduled_job(
+29 -13
View File
@@ -9,13 +9,13 @@ from nonebot_plugin_alconna import (
Subcommand,
on_alconna,
)
from nonebot_plugin_saa import Mention, MessageFactory, Text
from nonebot_plugin_session import EventSession, SessionLevel
from zhenxun.configs.utils import PluginExtraData
from zhenxun.models.level_user import LevelUser
from zhenxun.services.log import logger
from zhenxun.utils.enum import PluginType
from zhenxun.utils.message import MessageUtils
__plugin_meta__ = PluginMetadata(
name="用户权限管理",
@@ -43,7 +43,9 @@ _matcher = on_alconna(
Alconna(
"权限设置",
Subcommand(
"add", Args["level", int]["uid", [str, At]]["gid?", str], help_text="添加权限"
"add",
Args["level", int]["uid", [str, At]]["gid?", str],
help_text="添加权限",
),
Subcommand("delete", Args["uid", [str, At]]["gid?", str], help_text="删除权限"),
),
@@ -72,13 +74,17 @@ async def _(
f"修改权限: {old_level} -> {level}", arparma.header_result, session=session
)
if session.level in [SessionLevel.LEVEL2, SessionLevel.LEVEL3]:
await MessageFactory(
[Text("成功为 "), Mention(uid), Text(f" 设置权限:{old_level} -> {level}")]
).finish(reply=True)
await Text(
await MessageUtils.build_message(
[
"成功为 ",
At(flag="user", target=uid),
f" 设置权限:{old_level} -> {level}",
]
).finish(reply_to=True)
await MessageUtils.build_message(
f"成功为 \n群组:{group_id}\n用户:{uid} \n设置权限!\n权限:{old_level} -> {level}"
).finish()
await Text(f"设置权限时群组不能为空...").finish()
await MessageUtils.build_message(f"设置权限时群组不能为空...").finish()
@_matcher.assign("delete")
@@ -95,11 +101,21 @@ async def _(
if user := await LevelUser.get_or_none(user_id=uid, group_id=group_id):
await user.delete()
if session.level in [SessionLevel.LEVEL2, SessionLevel.LEVEL3]:
await MessageFactory(
[Text("成功删除 "), Mention(uid), Text(f" 的权限等级!")]
).finish(reply=True)
await Text(
logger.info(
f"删除权限: {user.user_level} -> 0",
arparma.header_result,
session=session,
)
await MessageUtils.build_message(
["成功删除 ", At(flag="user", target=uid), f" 的权限等级!"]
).finish(reply_to=True)
logger.info(
f"删除群组用户权限: {user.user_level} -> 0",
arparma.header_result,
session=session,
)
await MessageUtils.build_message(
f"成功删除 \n群组:{group_id}\n用户:{uid} \n的权限等级!\n权限:{user.user_level} -> 0"
).finish()
await Text(f"对方目前暂无权限喔...").finish()
await Text(f"设置权限时群组不能为空...").finish()
await MessageUtils.build_message(f"对方目前暂无权限喔...").finish()
await MessageUtils.build_message(f"设置权限时群组不能为空...").finish()
@@ -3,12 +3,12 @@ from nonebot.permission import SUPERUSER
from nonebot.plugin import PluginMetadata
from nonebot.rule import to_me
from nonebot_plugin_alconna import Alconna, Arparma, on_alconna
from nonebot_plugin_saa import Text
from nonebot_plugin_session import EventSession
from zhenxun.configs.utils import PluginExtraData
from zhenxun.services.log import logger
from zhenxun.utils.enum import PluginType
from zhenxun.utils.message import MessageUtils
from zhenxun.utils.platform import PlatformUtils
__plugin_meta__ = PluginMetadata(
@@ -60,12 +60,12 @@ async def _(
arparma.header_result,
session=session,
)
await Text(f"成功更新了 {num} 个群组的信息").send()
await MessageUtils.build_message(f"成功更新了 {num} 个群组的信息").send()
except Exception as e:
logger.error(
"更新群组信息发生错误", arparma.header_result, session=session, e=e
)
await Text("其他未知错误...").send()
await MessageUtils.build_message("其他未知错误...").send()
@_friend_matcher.handle()
@@ -75,15 +75,15 @@ async def _(
arparma: Arparma,
):
try:
num = await PlatformUtils.update_friend(bot, session.platform)
num = await PlatformUtils.update_friend(bot)
logger.info(
f"更新好友信息完成,共更新了 {num} 个好友的信息!",
arparma.header_result,
session=session,
)
await Text(f"成功更新了 {num} 个好友的信息").send()
await MessageUtils.build_message(f"成功更新了 {num} 个好友的信息").send()
except Exception as e:
logger.error(
"更新好友信息发生错误", arparma.header_result, session=session, e=e
)
await Text("其他未知错误...").send()
await MessageUtils.build_message("其他未知错误...").send()