Skip to content

Latest commit

 

History

History
101 lines (60 loc) · 5.98 KB

BotConvention.md

File metadata and controls

101 lines (60 loc) · 5.98 KB

请注意,下面的内容将会在「开黑啦」服务器中呈现。请不要使用KMarkdown不支持的语法。

「开黑啦」机器人公约/Keiheila Bot Convention


「开黑啦」是一个新兴的即时聊天平台,拥有一个正在逐渐成熟、逐渐发展的社区。在这个社区内,各种各样的机器人(Bot)在社区内的方方面面都起到了非常重要的作用。

但是,随着机器人数量的增多,越来越多的问题开始逐渐显现出来。

为了解决开黑啦社区中存在的机器人相关的各种问题,营造一个良好的社区氛围,我们制定了以下规范,给各位机器人开发者以供参考。

此规范以「规避机器人使用中可能出现的问题,营造良好的社区氛围」为宗旨编写。但是,机器人的需求和功能多种多样,各个服务器的需求也有很大的差异。因此,在遇到特殊情况时,机器人不需要也不应该遵守此处的公约。然而在大多数情况下,让机器人遵守公约可以解决服务器中遇到的「多个机器人响应」、「机器人相互响应」等问题;因此,在创建一个新的机器人,时,我们希望机器人开发者能够遵守机器人公约,并且按照公约中的要求和指南进行机器人的开发。

如果你对这个公约的内容有任何建议,请在这里或在(chn)9155203584956320(chn)频道提出。


· 公约内容

一、我们规定,加入了「开黑啦」机器人公约的机器人应该至少做到:

1. 将「单一功能」作为机器人的目标

机器人应该始终将「单一功能」作为最终的目标,并在一开始就以「更好的实现该功能」为目的进行设计和规划。

如「搜图」机器人,产品名称应该为「搜图」或「SauceNAO搜图」等。具有「实用工具箱」、「服务器管家」等名称的机器人将不能加入公约。

(请注意,某个机器人不能加入公约并不代表该机器人一定会与其他的机器人产生指令冲突,如「Mee6」。但服务器管理者需要注意,一个服务器不应拥有多于一个与Mee6功能类似的机器人。)

同时,机器人内不能具有任何与机器人的功能无关的指令。这种情况下,请考虑创建新的机器人。

如「搜图」机器人,其中不应该具有「天气」指令。请尝试新建「天气查询」机器人。

2. 将「.」(英文句点)作为机器人指令的前缀

「.」是我们经过慎重考虑而决定的机器人的统一前缀。相较「/」、「!」来说,不管是在什么平台上,这个前缀都能够被轻松输入。

同时,所有的机器人均使用统一的指令前缀可以极大地减少用户的迷惑,使得用户更快地记住机器人指令。

3. 将机器人提供的所有指令列表都列举在机器人简介中

一个机器人不应提供太多指令,且每一条指令都应写入简介。

这既方便了服务器的管理者,可以视情况将机器人加入自己的服务器;也方便了用户,用户可以快捷地从机器人介绍中了解机器人的全部可用指令。

二、我们希望,加入了「开黑啦」机器人公约的机器人能够做到:

4. 机器人的附属功能可以由管理员进行开关

此处所指的「附属」功能并非「附加」功能,遵守公约的机器人不应该具有任何的附加功能。

「附属」功能是指,在一个搜图机器人中,如果`.搜图`是其默认命令的话,那么`.SauceNAO`(使用SauceNAO搜图)就是其附属命令。这样的命令应该可以由管理员进行开关。附属功能关闭之后,不应该再响应对应的指令。

5. 机器人指令的具名传参使用dash语法

机器人指令的具名传参应该使用`dash`语法,类似:

.指令A value_a value_b -a value --param-b value --switch-a

如:

.weather Beijing -d 7 --with-details
.天气 北京 -天数 7 -详细

6. 让机器人同时能够响应「.」(英文句点)和「。」(中文句号)为前缀的指令

这条规范是为了使用全角句号作为句尾符号的用户而添加的可选项。


· 为什么要编写公约?

上文已经提到,「开黑啦」机器人公约是为了解决机器人使用中可能出现的问题而编写的。现对这些问题进行展开讨论。

将「单一功能」作为机器人的目标

在单一机器人中加入多种没有任何相互关联的功能(我们称之为「超集成」)是一种非常不被推荐的做法。

这种做法既不利于服务器管理员的管理,也会带来很多情况下机器人的不必要响应。在某些特殊情况下,这种做法还可能与其他机器人产生冲突,甚至造成连锁反应。

当然,你可能想问:为什么QQ的机器人生态下这种做法很常见?

这是由QQ平台的限制决定的。QQ并没有机器人的开放接口,想要在QQ中接入机器人,只得使用模拟普通用户收发消息的做法。但这种做法风险很大,因此一般一位Bot开发者只会使用一个模拟用户加入群聊。这就迫使机器人开发者在一个简单用户的限制下加入尽可能多的功能,因为没有多种多样的机器人共其选择。

然而在开黑啦平台下,这种做法会给服务器带来非常多的问题,因此不被推荐。同时,这种做法限制了开黑啦机器人社区的良性发展,因为为了避免可能的机器人冲突,服务器管理员只会加入单个机器人在服务器内。这非常不利于其他机器人开发者进行自己机器人的推广。

将机器人提供的所有指令列表都列举在机器人简介中

有了专属的「机器人简介」页面,以前的「帮助」指令就不再必要。机器人开发者应该将机器人指令写入专门的「简介」页内,使服务器管理员和用户都能快速了解该机器人。