[一个设想]给avbot加一个exapi命令


#1

最初的目的是方便web开发者参与进来扩展avbot的功能,通过调用url获取返回值。后来再想想,能做的不止这些。

假设增加一个命令,类似api或者callback ,参数1(parameter1)是与配置文件中想对应的(配置文件中至少还对应一个 url),其他参数都将在被调用时传递给url(可能还要酌情传递qq号、群号等附加信息)。

比如 .qqbot exapi key1 ,bot就调用配置文件中与key1对应的url,然后将该url返回的内容(或者其特定的某个部分,比如参照RPC接口设定一个标准JSON结构),返回到qq群里面来。


#2

这主意不错.

能再详细点么?


#3

假设,配置文件里面加上如下内容

表示启用哪些exapi

exapi=check_new_verison;ex_cmd_name2;...

配置具体参数:调用地址,附加参数,返回数据名称

check_new_verison_url=http://avbot.com/update_api.php
check_new_verison_param=$avbot_version
check_new_verison_return_msg=datas.message
check_new_verison_return_link=datas.url

此时,如果有人输入命令:

 .qqbot exapi check_new_verison

触发命令,(按照上面的配置,就是)访问

  http://avbot.com/update_api.php?param=7.3

返回的JSON中,需要显示到qq群的信息在json[‘datas’][‘message’],链接在json[‘datas’][‘url’]。


#4

有点麻烦, 返回的数据直接贴到群里不是更好??? 是吧?


#5

也对,返回内容直接贴在群里面也足够用了。


#6

需要考虑一下怎么发生那些附加的信息,比如bot的版本,发出命令的用户的qq号码或者昵称或者群名片,群的号码。


#7

这些扩展最好不要放到配置文件.

配置文件是用的 boost.program_options 解析的, 局限性很大.

可以考虑这些东西使用独立的配置文件, 采用 json 格式? xml 格式? 还是依旧 ini 格式?


#8

建议设置一个目录格式(我可能有点小纠结),比如在某个特点目录(例如exapi)下面的每个子目录,表示一个exapi的扩展,该子目录中就是这个扩展的配置文件config.json。 这样也便于bot记录其命令名称和说明,在help命令中一起展示出来。


#9

那么目录结构应该如何呢??