Я пытаюсь разработать простой бот-чат Lita с более гибкой командной маршрутизацией.Условные маршруты и имя бота в 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."
})
но оно только что напечатало что-то неожиданное.
Любая помощь приветствуется.
Это похоже на разумное и элегантное решение на данный момент, спасибо большое.Я думаю, что нет простого способа использовать имя робота в тексте справки? – DannyB
Это было бы сделано так же, определяя в обратном вызове, который не выполняется до создания объекта робота. –