|
@@ -0,0 +1,102 @@
|
|
|
+import { GroupMessage, PrivateFriendMessage, PrivateGroupMessage, Receive } from "node-napcat-ts";
|
|
|
+import { commandList, param, plugins, runcod } from "../lib/decorators.js";
|
|
|
+import { addPermission, getuserPermissions, IsAdmin, removePermission } from "../lib/Permission.js";
|
|
|
+
|
|
|
+@plugins({
|
|
|
+ easycmd: false,//是否启用简易命令,启用将将命令注册为<命令名称>,不启用将注册为#<插件名称> <命令名称>
|
|
|
+ name: "权限管理道具", //插件名称,用于显示在菜单中
|
|
|
+ version: "1.0.0", //插件版本号,用于显示在菜单中
|
|
|
+ describe: "官方权限插件", //插件描述,用于显示在菜单中
|
|
|
+ author: "枫叶秋林",//插件作者,用于显示在菜单中
|
|
|
+ help: { //插件帮助信息,用于显示在菜单中
|
|
|
+ enabled: true, //是否启用帮助信息
|
|
|
+ description: "显示道具插件" //帮助信息描述
|
|
|
+ }
|
|
|
+})
|
|
|
+export class Permission{
|
|
|
+ @runcod(["list", "查看权限"],"使用道具" )
|
|
|
+ async list(
|
|
|
+ context: PrivateFriendMessage | PrivateGroupMessage | GroupMessage
|
|
|
+ ){
|
|
|
+ if(await IsAdmin(context?.sender?.user_id)){
|
|
|
+ return "你是管理员,拥有所有权限"
|
|
|
+ }
|
|
|
+ const Data = await getuserPermissions(context?.sender?.user_id.toString()??"0")
|
|
|
+ if(Data.length === 0){
|
|
|
+ return "你没有设置任何权限"
|
|
|
+ }
|
|
|
+ let s ='权限列表:\n'
|
|
|
+ Data.forEach((permission) => {
|
|
|
+ const parts = permission.split('.');
|
|
|
+ const pluginName = parts[0];
|
|
|
+ const commandName = parts[1];
|
|
|
+ commandList.forEach((command) => {
|
|
|
+ if(command.id === pluginName){
|
|
|
+ s += `插件:${command.name}\n`;
|
|
|
+ command.commands.forEach((cmd) => {
|
|
|
+ if(cmd.fnName === commandName){
|
|
|
+ s += `指令:${command.name}【${cmd.cmd}】有权限 \n`;
|
|
|
+ }else{
|
|
|
+ s += `指令:${command.name}【${cmd.fnName}】无权限 \n`;
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }else{
|
|
|
+ s += `插件:${command.name} 无权限 \n`;
|
|
|
+ }
|
|
|
+ })
|
|
|
+ return s;
|
|
|
+ })
|
|
|
+
|
|
|
+ }
|
|
|
+ @runcod(["add", "添加权限"],"添加权限,指令为空则未拥有该插件下所有命令权限" )
|
|
|
+ async add(
|
|
|
+ @param("qq号","at") userid: Receive["at"],
|
|
|
+ @param("插件名称","text") Userplugin: Receive["text"],
|
|
|
+ @param("指令名称","text",{type:'text',data:{text:"-1"}},true) Usercommand: Receive["text"],
|
|
|
+ context: PrivateFriendMessage | PrivateGroupMessage | GroupMessage
|
|
|
+ ){
|
|
|
+ if(await IsAdmin(Number(userid?.data?.qq))){
|
|
|
+ return "你是管理员,拥有所有权限"
|
|
|
+ }
|
|
|
+ commandList.forEach((command) => {
|
|
|
+ if(command.id === Userplugin?.data?.text && Usercommand?.data?.text==="-1"){
|
|
|
+ command.commands.forEach((cmd) => {
|
|
|
+ addPermission(Number(userid?.data?.qq).toString(),command.id,cmd.fnName)
|
|
|
+ })
|
|
|
+ }
|
|
|
+ if(command.id === Userplugin?.data?.text && Usercommand?.data?.text!="-1"){
|
|
|
+ command.commands.forEach((cmd) => {
|
|
|
+ if(cmd.fnName === Usercommand?.data?.text){
|
|
|
+ addPermission(Number(userid?.data?.qq).toString(),command.id,cmd.fnName)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ return "添加权限成功"
|
|
|
+ }
|
|
|
+ @runcod(["remove", "移除权限"],"移除权限,指令为空则移除该插件下所有命令权限" )
|
|
|
+ async remove(
|
|
|
+ @param("插件名称","at") userid: Receive["at"],
|
|
|
+ @param("插件名称","text") Userplugin: Receive["text"],
|
|
|
+ @param("指令名称","text",{type:'text',data:{text:"-1"}},true) Usercommand: Receive["text"],
|
|
|
+ context: PrivateFriendMessage | PrivateGroupMessage | GroupMessage
|
|
|
+ ){
|
|
|
+ if(await IsAdmin(Number(userid?.data?.qq))){
|
|
|
+ return "你是管理员,拥有所有权限"
|
|
|
+ }
|
|
|
+ commandList.forEach((command) => {
|
|
|
+ if(command.id === Userplugin?.data?.text && Usercommand?.data?.text==="-1"){
|
|
|
+ command.commands.forEach((cmd) => {
|
|
|
+ removePermission(Number(userid?.data?.qq).toString(),command.id,cmd.fnName)
|
|
|
+ })
|
|
|
+ }
|
|
|
+ if(command.id === Userplugin?.data?.text && Usercommand?.data?.text!="-1"){
|
|
|
+ command.commands.forEach((cmd) => {
|
|
|
+ if(cmd.fnName === Usercommand?.data?.text){
|
|
|
+ removePermission(Number(userid?.data?.qq).toString(),command.id,cmd.fnName)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+}
|