ljsc / hbot

A simple Haskell chat bot for Hipchat
GNU General Public License v3.0
8 stars 1 forks source link

Update Plugin Types #8

Open ljsc opened 10 years ago

ljsc commented 10 years ago

The Plugin type we have is simple and easy to implement, but it leaves a bit to be desired feature-wise. Right now, you can only print out grey text messages, when it would be a lot better to allow different values for color and messageFormat fields in ChatNotification. At the same time it's a little awkward passing in a tuple for the input when the BotCommand can be directly extracted from the event. I've added the help text in a recent commit, but we might want additional fields for plugins to use as well.

One thing to keep in mind is that these things should be easy to implement. Right now if you have any function from Text->Text you can trivially lift it to a plugin via textPlugin. It should continue to be that easy in the simple case.

Right now I'm thinking of having a typeclass somewhere so we can have the simple case continue to have a really straightforward type, and then possibly have a different concrete version for stuff that does html messages and the like via blaze-html.

stephenbaldwin commented 10 years ago

+1

I'd also say we look into creating an "auto discover" for plugins. Maybe start putting plugins in a separate root folder and have people ln -s the plugins to the auto discover folder... Similar to the apache sites_available and sites_enabled folder

Sent from my iPhone

On Aug 17, 2014, at 8:07 AM, Lou Scoras notifications@github.com wrote:

The Plugin type we have is simple and easy to implement, but it leaves a bit to be desired feature-wise. Right now, you can only print out grey text messages, when it would be a lot better to allow different values for color and messageFormat fields in ChatNotification. At the same time it's a little awkward passing in a tuple for the input when the BotCommand can be directly extracted from the event. I've added the help text in a recent commit, but we might want additional fields for plugins to use as well.

One thing to keep in mind is that these things should be easy to implement. Right now if you have any function from Text->Text you can trivially lift it to a plugin via textPlugin. It should continue to be that easy in the simple case.

Right now I'm thinking of having a typeclass somewhere so we can have the simple case continue to have a really straightforward type, and then possibly have a different concrete version for stuff that does html messages and the like via blaze-html.

— Reply to this email directly or view it on GitHub.