mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2026-10-05 20:00:04 +08:00
refactor code
This commit is contained in:
+119
-67
@@ -2,28 +2,55 @@ from nonebot import on_command
|
||||
from nonebot.permission import SUPERUSER
|
||||
from models.level_user import LevelUser
|
||||
from nonebot.typing import T_State
|
||||
from nonebot.adapters.cqhttp import Bot, Event, MessageEvent, Message
|
||||
from nonebot.adapters.cqhttp import Bot, MessageEvent, Message
|
||||
from nonebot.rule import to_me
|
||||
from utils.utils import get_message_at, get_message_text, is_number, get_bot
|
||||
from services.log import logger
|
||||
from .data_source import open_remind, close_remind
|
||||
from models.group_info import GroupInfo
|
||||
from models.friend_user import FriendUser
|
||||
from utils.init_result import at
|
||||
from utils.message_builder import at
|
||||
from configs.path_config import IMAGE_PATH
|
||||
import asyncio
|
||||
import os
|
||||
|
||||
|
||||
__plugin_name__ = '超级用户指令 [Hidden]'
|
||||
__plugin_usage__ = '用法'
|
||||
__plugin_name__ = "超级用户指令 [Hidden]"
|
||||
__plugin_usage__ = "用法"
|
||||
|
||||
|
||||
super_cmd = on_command("添加管理", aliases={'删除管理', '添加权限', '删除权限'}, rule=to_me(), priority=1, permission=SUPERUSER, block=True)
|
||||
oc_gb = on_command('开启广播通知', aliases={'关闭广播通知'}, rule=to_me(), permission=SUPERUSER, priority=1, block=True)
|
||||
cls_group = on_command("所有群组", rule=to_me(), permission=SUPERUSER, priority=1, block=True)
|
||||
cls_friend = on_command("所有好友", rule=to_me(), permission=SUPERUSER, priority=1, block=True)
|
||||
del_group = on_command('退群', rule=to_me(), permission=SUPERUSER, priority=1, block=True)
|
||||
update_group_info = on_command('更新群信息', rule=to_me(), permission=SUPERUSER, priority=1, block=True)
|
||||
update_friend_info = on_command('更新好友信息', rule=to_me(), permission=SUPERUSER, priority=1, block=True)
|
||||
# update_cmd = on_command('更新命令开关', rule=to_me(), permission=SUPERUSER, priority=1, block=True)
|
||||
super_cmd = on_command(
|
||||
"添加管理",
|
||||
aliases={"删除管理", "添加权限", "删除权限"},
|
||||
rule=to_me(),
|
||||
priority=1,
|
||||
permission=SUPERUSER,
|
||||
block=True,
|
||||
)
|
||||
oc_gb = on_command(
|
||||
"开启广播通知",
|
||||
aliases={"关闭广播通知"},
|
||||
rule=to_me(),
|
||||
permission=SUPERUSER,
|
||||
priority=1,
|
||||
block=True,
|
||||
)
|
||||
cls_group = on_command(
|
||||
"所有群组", rule=to_me(), permission=SUPERUSER, priority=1, block=True
|
||||
)
|
||||
cls_friend = on_command(
|
||||
"所有好友", rule=to_me(), permission=SUPERUSER, priority=1, block=True
|
||||
)
|
||||
del_group = on_command("退群", rule=to_me(), permission=SUPERUSER, priority=1, block=True)
|
||||
update_group_info = on_command(
|
||||
"更新群信息", rule=to_me(), permission=SUPERUSER, priority=1, block=True
|
||||
)
|
||||
update_friend_info = on_command(
|
||||
"更新好友信息", rule=to_me(), permission=SUPERUSER, priority=1, block=True
|
||||
)
|
||||
clear_data = on_command(
|
||||
"清理数据", rule=to_me(), permission=SUPERUSER, priority=1, block=True
|
||||
)
|
||||
|
||||
|
||||
@super_cmd.handle()
|
||||
@@ -40,10 +67,13 @@ async def _(bot: Bot, event: MessageEvent, state: T_State):
|
||||
level = int(args[2])
|
||||
flag = 1
|
||||
else:
|
||||
await super_cmd.finish('所有参数必须是数字!', at_sender=True)
|
||||
await super_cmd.finish("所有参数必须是数字!", at_sender=True)
|
||||
else:
|
||||
await super_cmd.finish('权限参数不完全\n\t格式:添加/删除权限 [at] [level]'
|
||||
'\n\t格式:添加/删除权限 [qq] [group] [level]', at_sender=True)
|
||||
await super_cmd.finish(
|
||||
"权限参数不完全\n\t格式:添加/删除权限 [at] [level]"
|
||||
"\n\t格式:添加/删除权限 [qq] [group] [level]",
|
||||
at_sender=True,
|
||||
)
|
||||
else:
|
||||
qq = int(qq[0])
|
||||
group_id = event.group_id
|
||||
@@ -51,7 +81,7 @@ async def _(bot: Bot, event: MessageEvent, state: T_State):
|
||||
if is_number(args[0]):
|
||||
level = int(args[0])
|
||||
else:
|
||||
await super_cmd.finish('权限等级必须是数字!', at_sender=True)
|
||||
await super_cmd.finish("权限等级必须是数字!", at_sender=True)
|
||||
if state["_prefix"]["raw_command"][:2] == "添加":
|
||||
if await LevelUser.set_level(qq, group_id, level, 1):
|
||||
result = "添加管理成功, 权限: " + str(level)
|
||||
@@ -65,120 +95,142 @@ async def _(bot: Bot, event: MessageEvent, state: T_State):
|
||||
if flag == 2:
|
||||
await super_cmd.send(result)
|
||||
elif flag == 1:
|
||||
await bot.send_group_msg(group_id=group_id, message=Message(f'{at(qq)}管理员修改了你的权限'
|
||||
f'\n--------\n你当前的权限等级:{level}'))
|
||||
await super_cmd.send('修改成功')
|
||||
await bot.send_group_msg(
|
||||
group_id=group_id,
|
||||
message=Message(f"{at(qq)}管理员修改了你的权限" f"\n--------\n你当前的权限等级:{level}"),
|
||||
)
|
||||
await super_cmd.send("修改成功")
|
||||
except Exception as e:
|
||||
await super_cmd.send("执行指令失败!")
|
||||
logger.error(f'执行指令失败 e{e}')
|
||||
logger.error(f"执行指令失败 e{e}")
|
||||
|
||||
|
||||
@oc_gb.handle()
|
||||
async def _(bot: Bot, event: Event, state: T_State):
|
||||
async def _(bot: Bot, event: MessageEvent, state: T_State):
|
||||
group = get_message_text(event.json())
|
||||
if group:
|
||||
if is_number(group):
|
||||
group = int(group)
|
||||
for g in await bot.get_group_list():
|
||||
if g['group_id'] == group:
|
||||
if g["group_id"] == group:
|
||||
break
|
||||
else:
|
||||
await oc_gb.finish('没有加入这个群...', at_sender=True)
|
||||
await oc_gb.finish("没有加入这个群...", at_sender=True)
|
||||
# try:
|
||||
if state["_prefix"]["raw_command"] == '开启广播通知':
|
||||
logger.info(f'USER {event.user_id} 开启了 GROUP {group} 的广播')
|
||||
await oc_gb.finish(await open_remind(group, 'gb'), at_sender=True)
|
||||
if state["_prefix"]["raw_command"] == "开启广播通知":
|
||||
logger.info(f"USER {event.user_id} 开启了 GROUP {group} 的广播")
|
||||
await oc_gb.finish(await open_remind(group, "gb"), at_sender=True)
|
||||
else:
|
||||
logger.info(f'USER {event.user_id} 关闭了 GROUP {group} 的广播')
|
||||
await oc_gb.finish(await close_remind(group, 'gb'), at_sender=True)
|
||||
logger.info(f"USER {event.user_id} 关闭了 GROUP {group} 的广播")
|
||||
await oc_gb.finish(await close_remind(group, "gb"), at_sender=True)
|
||||
# except Exception as e:
|
||||
# await oc_gb.finish(f'关闭 {group} 的广播失败', at_sender=True)
|
||||
else:
|
||||
await oc_gb.finish('请输入正确的群号', at_sender=True)
|
||||
await oc_gb.finish("请输入正确的群号", at_sender=True)
|
||||
else:
|
||||
await oc_gb.finish('请输入要关闭广播的群号', at_sender=True)
|
||||
await oc_gb.finish("请输入要关闭广播的群号", at_sender=True)
|
||||
|
||||
|
||||
@del_group.handle()
|
||||
async def _(bot: Bot, event: Event, state: T_State):
|
||||
async def _(bot: Bot, event: MessageEvent, state: T_State):
|
||||
group = get_message_text(event.json())
|
||||
if group:
|
||||
if is_number(group):
|
||||
try:
|
||||
await bot.set_group_leave(group_id=int(group))
|
||||
logger.info(f'退出群聊 {group} 成功')
|
||||
await del_group.finish(f'退出群聊 {group} 成功', at_sender=True)
|
||||
logger.info(f"退出群聊 {group} 成功")
|
||||
await del_group.finish(f"退出群聊 {group} 成功", at_sender=True)
|
||||
except Exception as e:
|
||||
logger.info(f'退出群聊 {group} 失败 e:{e}')
|
||||
logger.info(f"退出群聊 {group} 失败 e:{e}")
|
||||
else:
|
||||
await del_group.finish(f'请输入正确的群号', at_sender=True)
|
||||
await del_group.finish(f"请输入正确的群号", at_sender=True)
|
||||
else:
|
||||
await del_group.finish(f'请输入群号', at_sender=True)
|
||||
await del_group.finish(f"请输入群号", at_sender=True)
|
||||
|
||||
|
||||
@cls_group.handle()
|
||||
async def _(bot: Bot, event: Event, state: T_State):
|
||||
gl = await bot.get_group_list(self_id=bot.self_id)
|
||||
async def _(bot: Bot, event: MessageEvent, state: T_State):
|
||||
gl = await bot.get_group_list(self_id=int(bot.self_id))
|
||||
msg = ["{group_id} {group_name}".format_map(g) for g in gl]
|
||||
msg = "\n".join(msg)
|
||||
msg = f"bot:{bot.self_id}\n| 群号 | 群名 | 共{len(gl)}个群\n" + msg
|
||||
await bot.send_private_msg(self_id=bot.self_id, user_id=int(list(bot.config.superusers)[0]), message=msg)
|
||||
await bot.send_private_msg(
|
||||
self_id=int(bot.self_id),
|
||||
user_id=int(list(bot.config.superusers)[0]),
|
||||
message=msg,
|
||||
)
|
||||
|
||||
|
||||
@cls_friend.handle()
|
||||
async def _(bot: Bot, event: Event, state: T_State):
|
||||
gl = await bot.get_friend_list(self_id=bot.self_id)
|
||||
async def _(bot: Bot, event: MessageEvent, state: T_State):
|
||||
gl = await bot.get_friend_list(self_id=int(bot.self_id))
|
||||
msg = ["{user_id} {nickname}".format_map(g) for g in gl]
|
||||
msg = "\n".join(msg)
|
||||
msg = f"| QQ号 | 昵称 | 共{len(gl)}个好友\n" + msg
|
||||
await bot.send_private_msg(self_id=bot.self_id, user_id=int(list(bot.config.superusers)[0]), message=msg)
|
||||
await bot.send_private_msg(
|
||||
self_id=int(bot.self_id),
|
||||
user_id=int(list(bot.config.superusers)[0]),
|
||||
message=msg,
|
||||
)
|
||||
|
||||
|
||||
@update_group_info.handle()
|
||||
async def _(bot: Bot, event: Event, state: T_State):
|
||||
async def _(bot: Bot, event: MessageEvent, state: T_State):
|
||||
bot = get_bot()
|
||||
gl = await bot.get_group_list(self_id=bot.self_id)
|
||||
gl = [g['group_id'] for g in gl]
|
||||
gl = [g["group_id"] for g in gl]
|
||||
num = 0
|
||||
rst = ''
|
||||
rst = ""
|
||||
for g in gl:
|
||||
group_info = await bot.get_group_info(group_id=g)
|
||||
if await GroupInfo.add_group_info(group_info['group_id'], group_info['group_name'],
|
||||
group_info['max_member_count'], group_info['member_count']):
|
||||
if await GroupInfo.add_group_info(
|
||||
group_info["group_id"],
|
||||
group_info["group_name"],
|
||||
group_info["max_member_count"],
|
||||
group_info["member_count"],
|
||||
):
|
||||
num += 1
|
||||
logger.info(f'自动更新群组 {g} 信息成功')
|
||||
logger.info(f"自动更新群组 {g} 信息成功")
|
||||
else:
|
||||
logger.info(f'自动更新群组 {g} 信息失败')
|
||||
rst += f'{g} 更新失败\n'
|
||||
await update_group_info.send(f'成功更新了 {num} 个群的信息\n{rst[:-1]}')
|
||||
logger.info(f"自动更新群组 {g} 信息失败")
|
||||
rst += f"{g} 更新失败\n"
|
||||
await update_group_info.send(f"成功更新了 {num} 个群的信息\n{rst[:-1]}")
|
||||
|
||||
|
||||
@update_friend_info.handle()
|
||||
async def _(bot: Bot, event: Event, state: T_State):
|
||||
async def _(bot: Bot, event: MessageEvent, state: T_State):
|
||||
num = 0
|
||||
rst = ''
|
||||
rst = ""
|
||||
fl = await get_bot().get_friend_list(self_id=bot.self_id)
|
||||
for f in fl:
|
||||
if await FriendUser.add_friend_info(f['user_id'], f['nickname']):
|
||||
if await FriendUser.add_friend_info(f["user_id"], f["nickname"]):
|
||||
logger.info(f'自动更新好友 {f["user_id"]} 信息成功')
|
||||
num += 1
|
||||
else:
|
||||
logger.warning(f'自动更新好友 {f["user_id"]} 信息失败')
|
||||
rst += f'{f["user_id"]} 更新失败\n'
|
||||
await update_friend_info.send(f'成功更新了 {num} 个好友的信息\n{rst[:-1]}')
|
||||
|
||||
|
||||
# @update_cmd.handle()
|
||||
# async def _(bot: Bot, event: Event, state: T_State):
|
||||
# gl = await bot.get_group_list(self_id=bot.self_id)
|
||||
# gl = [g['group_id'] for g in gl]
|
||||
# for g in gl:
|
||||
# check_group_switch_json(g)
|
||||
# for file in os.listdir(DATA_PATH + 'group_help'):
|
||||
# os.remove(DATA_PATH + f'group_help/{file}')
|
||||
# await update_cmd.finish('更新命令完成!', at_sender=True)
|
||||
|
||||
await update_friend_info.send(f"成功更新了 {num} 个好友的信息\n{rst[:-1]}")
|
||||
|
||||
|
||||
@clear_data.handle()
|
||||
async def _(bot: Bot, event: MessageEvent, state: T_State):
|
||||
await clear_data.send("开始清理临时数据....")
|
||||
size = await asyncio.get_event_loop().run_in_executor(
|
||||
None, _clear_data
|
||||
)
|
||||
await clear_data.send("共清理了 {:.2f}MB 的数据...".format(size / 1024 / 1024))
|
||||
|
||||
|
||||
def _clear_data() -> float:
|
||||
size = 0
|
||||
for dir_name in ['temp', 'rar', 'r18_rar']:
|
||||
dir_name = f'{IMAGE_PATH}/{dir_name}'
|
||||
for file in os.listdir(dir_name):
|
||||
try:
|
||||
file_size = os.path.getsize(os.path.join(dir_name, file))
|
||||
os.remove(os.path.join(dir_name, file))
|
||||
except Exception as e:
|
||||
logger.error(f"清理临时数据错误...e:{e}")
|
||||
file_size = 0
|
||||
size += file_size
|
||||
return float(size)
|
||||
|
||||
Reference in New Issue
Block a user