Challenging because coming up with a syntax is difficult. Your first inclination is to allow for factoid commands/queries to be like lazybot: foo is bar but that doesn't really work in lazybot. The problem is that command prefixes are arbitary strings. This means that lazybot: can actually be a command prefix in which case whatever foo is could be a command, in which case the commands and hooks would clash. I guess one option here is to modify the command/hook system so that hooks only trigger if a command isn't also triggered, but I don't want to do that. I think that the best compromise here is to just make the factoid system be a command.
e.g.
$fact foo is bar
$whatis foo
Challenging because coming up with a syntax is difficult. Your first inclination is to allow for factoid commands/queries to be like
lazybot: foo is barbut that doesn't really work in lazybot. The problem is that command prefixes are arbitary strings. This means thatlazybot:can actually be a command prefix in which case whateverfoois could be a command, in which case the commands and hooks would clash. I guess one option here is to modify the command/hook system so that hooks only trigger if a command isn't also triggered, but I don't want to do that. I think that the best compromise here is to just make the factoid system be a command.e.g.