calledtoconstruct / lambdabot

A friendly IRC bot and apprentice coder, written in Haskell.
4 stars 2 forks source link

Create request / queue plugin #42

Open calledtoconstruct opened 4 years ago

calledtoconstruct commented 4 years ago

Support:

request [queue name] [remove] value request (promote | demote) [queue name] value queue (pop | shuffle) queue (create | delete | open | close) name [option list name] option (create list | delete list) name option (add | remove | disable | enable) name

For the request command, if only one queue exists, then the queue name is optional. The remove keyword is always optional, but items will always be added (see also, duplicate entries below) unless remove is specified.

Outstanding issue: how to handle duplicate entries? Perhaps the queue create command can take an argument indicating whether duplicates are allowed?

Andrewnetwork commented 4 years ago

Some examples of bot usage according to your spec:

request Row your Boat
request promote Row your Boat
request remove Row Your Boat
queue create premium 
request Twinkle Twinkle Little Star          -- Would throw error because we have a named queue? 

Feedback:

calledtoconstruct commented 4 years ago

Excellent feedback, thank you!

So, I should clarify option ...

When you use queue create and supply the name of an option-list, then only items from the option list are allowed to be requested. Perhaps another optional setting for a queue would be to allow "donation requests" to be added to the queue regardless of whether they exist on the option list.

So, a queue can have the following "options": Duplicate: allowed, promoted, not-allowed. Constrained: none, option-list, option-list except by donation.