我正在尝试开发一个具有更灵活命令路由的简单 Lita 聊天机器人。
有几个问题我遇到了困难。
1.条件路由
如何在路由定义之前或内部使用配置值?
例如,代替需要“运行”前缀的这个定义:
route(/^\s*run\s+(\S*)\s*(.*)$/, :cmd, command: true)
我想使用这样的东西,带有一个灵活的、基于配置的前缀:
route(/^\s*#{config.prefix}\s+(\S*)\s*(.*)$/, :cmd, command: true)
哪个失败了。所以我也尝试了这样的事情:
if config.use_prefix
route(/^\s*run\s+(\S*)\s*(.*)$/, :cmd, command: true)
else
route(/^\s*(\S*)\s*(.*)$/, :cmd, command: true)
end
这也失败了一个不是很有帮助的错误。config :prefix
在这两种情况下,我都使用和定义了正确的配置键config :use_prefix
。
2.在帮助中显示机器人名称
我知道robot.name
在执行的命令中有一个可用的属性,但我无法在帮助字符串中使用它。我试图实现这样的目标:
route(/^\s*run\s+(\S*)\s*(.*)$/, :cmd, command: true, help: {
"run SCRIPT" => "run the specified SCRIPT. use `#{robot.name} run list` for a list of available scripts."
})
但它只是打印了一些意想不到的东西。
任何帮助表示赞赏。