Skip to content

自定义指令

Tnze edited this page Sep 5, 2019 · 4 revisions

SiS支持在群内运行服主预先设定好的指令,下面介绍:

配置指令

为了运行自定义指令,需要修改conf.toml文件:

[Cmd."指令触发名"]         # 触发名不能包含空格,若是纯英文名则可以省略引号
Command = "实际运行的指令" # 将被直接发送到服务器,当前版本不允许执行时输入参数
Level = 0                # 执行该命令所需的最低权限,所有玩家默认权限为0
# Silent = true          # 是否禁用命令输出,默认为false

配置完成后需要重载应用。

作为一个例子,我们服务器(msc)的SiS系统有如下配置,用于玩家自行查看服务器tps(Ticks per second, 一个用于衡量服务器运行速度的指标):

[Cmd.tps]
Command = "tps" # 需要服务器支持(官方服务器不存在该指令)
Level = 0       # 群内任何人都能执行

然后我们只要在群里发送@robot tps就能查看服务器的tps了。

我们当前处于安全考虑只允许运行预定义的静态指令,但是当以后我们仔细思考权衡输入指令参数的利弊之后,将会以一种安全的方式允许大家在群内执行可在执行时确定参数的指令。

设置管理员

上面我们知道,每个命令都有它自己的最低权限,每个群成员也有他(她)的个人权限等级, 只有群成员的等级高于或等于命令的等级,命令才能被执行。

群成员的权限等级需要由群内的管理员来设置,而管理员又需要由服主在conf.toml内设置。
假设我们要配置3261340757和1234567890为管理员,我们需要在conf.toml内这么写:

Administrators = [3261340757, 1234567890]

这样就能把这两个人设置为管理员了。

管理员设置他人权限

管理员可以设置其它任何人的权限(包括自己和其它管理员),具体方法是在群内使用auth指令。
其中auth指令的格式为@robot auth <@QQ | Q号> <level>,即第一个参数可以是@某人或者直接是Q号数字,第二个参数是目标等级。
例如:@robot auth 3261340757 100或者@robot auth @Tnze 100就能把自己的权限设置为100

如果auth命令不传入level, 则变为查询玩家当前权限:@robot auth <@QQ | Q号>

当然也可以@robot auth @robot 100来将机器人的权限设置为100,但是实践表明这并没有什么用~