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