Skip to content

命令系统

cmd1152 edited this page Aug 12, 2024 · 4 revisions

设置命令前缀

你可以设置 client.cmdstart 这个字符串来指定一个命令前缀(长度不限,你甚至可以设置为空),这将是调用机器人命令的起始

client.cmdstart = ":!";

设置命令处理

一般来说本来的 client._COMMAND 是不应该被用户更改的,这个函数储存了默认的命令执行判断,但是你可以修改他来实现更多功能 client._COMMAND 是一个函数,会传入命令名称命令参数用户信息、返回数据(给用户)的函数用户是否是私信`

默认函数

client._COMMAND = function(cmd, args, info, back, whisper) {
  if (this.command[cmd]) {
    try {
      this.command[cmd].run(args,info,back,whisper);
    } catch (e) {
      back(`命令执行出错:${e.message}`);
    }
  }
}

back函数

back函数支持2个值,一个是要返回的文本,和是否修复>#漏洞(如果是私信,那么换行保证这2字符正常渲染,如果是公屏,删除开头的 @用户名

添加命令

你需要在client.comamnd按上面的格式创建一个obj,比如下面这个简单的help和test命令

client.command = {
  help: {
    run: function(args, info, back, whisper) {
      if (args[0]) {
        if (client.command[args[0]]) {
          back(`\n### ${args[0]}\n${client.command[args[0]].help}\n用法:\`${client.cmdstart}${args[0]} ${client.command[args[0]].useage}\``, true)
        } else {
          back("没有这个命令")
        }
      } else {
        let sortedCommands = Object.keys(client.command).sort()
        back(`\n### 命令列表\n \`${sortedCommands.join("`, `")}\``, true)
      }
    },
    help: '显示帮助',
    useage: '<命令名称>'
  },
  test: {
    run: function(args, info, back, whisper) {
      back("默认反馈,不带`>`和`#`修复");
      back("带`>`和`#`修复",true);
      back(`你是私信调用的:${whisper}\n你的信息:${JSON.stringify(info)}`);
    },
    help: '测试',
    useage: ''
  }
}
Clone this wiki locally