76 lines
2.2 KiB
Python
Raw Normal View History

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}")