2021-10-07 21:39:01 +08:00
|
|
|
|
import json
|
|
|
|
|
|
|
|
|
|
|
|
from nonebot import on_command
|
|
|
|
|
|
from nonebot.log import logger
|
|
|
|
|
|
from nonebot.adapters.cqhttp import Bot, MessageSegment, MessageEvent
|
|
|
|
|
|
|
|
|
|
|
|
import prism_api
|
|
|
|
|
|
|
|
|
|
|
|
|
2021-10-08 16:44:24 +08:00
|
|
|
|
op_user: list = json.loads(open('./config/group.json', 'r', encoding='utf-8').read())['op_user']
|
|
|
|
|
|
text: dict = json.loads(open('./config/text.json', 'r', encoding='utf-8').read())['issue_cmd']
|
2021-10-07 21:39:01 +08:00
|
|
|
|
|
|
|
|
|
|
cmd_set: dict = json.loads(
|
2021-10-08 16:44:24 +08:00
|
|
|
|
open('./config/cmd_alias.json', 'r', encoding='utf-8').read())['issue_cmd']
|
2021-10-07 21:39:01 +08:00
|
|
|
|
issue_cmd = on_command(cmd_set['cmd'], aliases=set(cmd_set['aliases']))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@issue_cmd.handle()
|
|
|
|
|
|
async def handle_issue_cmd(bot: Bot, event: MessageEvent):
|
|
|
|
|
|
# 发送者 user_id
|
|
|
|
|
|
user_id = event.user_id
|
|
|
|
|
|
at_msg = MessageSegment.at(user_id) + '\n'
|
|
|
|
|
|
|
|
|
|
|
|
string = str(event.message).strip()
|
|
|
|
|
|
arg_list = string.split(',')
|
|
|
|
|
|
|
|
|
|
|
|
logger.info(f"{user_id}试图执行命令:{arg_list}")
|
|
|
|
|
|
|
|
|
|
|
|
# 鉴权
|
|
|
|
|
|
if user_id not in op_user:
|
|
|
|
|
|
await issue_cmd.send(at_msg + text['no_permission'])
|
|
|
|
|
|
logger.debug(f"op_user为:{op_user}")
|
|
|
|
|
|
logger.info(f"{user_id}试图执行命令但无权限")
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
|
|
# 处理命令格式,参数分别为 cmd num wait_time server_tag
|
|
|
|
|
|
cmd = arg_list[0]
|
|
|
|
|
|
|
|
|
|
|
|
if cmd == '':
|
|
|
|
|
|
await issue_cmd.send(at_msg + text['format_error'])
|
|
|
|
|
|
logger.info(f"{user_id}发送格式错误!执行命令请求被拒绝")
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
|
|
if len(arg_list) > 1:
|
|
|
|
|
|
num = int(arg_list[1])
|
|
|
|
|
|
else:
|
|
|
|
|
|
num = 1
|
|
|
|
|
|
|
|
|
|
|
|
if len(arg_list) > 2:
|
|
|
|
|
|
wait_time = int(arg_list[2])
|
|
|
|
|
|
else:
|
|
|
|
|
|
wait_time = 1
|
|
|
|
|
|
|
|
|
|
|
|
if len(arg_list) > 3:
|
|
|
|
|
|
server = arg_list[3]
|
|
|
|
|
|
|
|
|
|
|
|
exist_server_tag_list = []
|
|
|
|
|
|
for server in prism_api.config['server']:
|
|
|
|
|
|
exist_server_tag_list.append(server['tag'])
|
|
|
|
|
|
|
|
|
|
|
|
if server not in exist_server_tag_list:
|
|
|
|
|
|
await issue_cmd.send(at_msg + text['server_tag_not_exist'])
|
|
|
|
|
|
logger.info("服务器不存在!执行命令请求被拒绝")
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
server = None
|
|
|
|
|
|
|
|
|
|
|
|
# 发送命令
|
|
|
|
|
|
res = await prism_api.server_cmd(cmd=cmd, num=num, wait_time=wait_time, server_tag=server)
|
|
|
|
|
|
|
|
|
|
|
|
# 回传结果
|
|
|
|
|
|
msg = text['answer'].replace('<res>', res)
|
|
|
|
|
|
await issue_cmd.send(at_msg + msg)
|
|
|
|
|
|
logger.info(f"命令执行结果:{res}")
|