Listeners - Zirak/SO-ChatBot GitHub Wiki
Listeners are commands only with "looser" syntax; i.e. they are matched against regular expressions. Listeners are invoked by simply omitting the /
command prefix:
!!give me a lick
Where the !!
is the Invocation Pattern (see main, subject to change by bot handler. In this wiki, !!
is assumed). The general form being:
!!text
Easy, right?
Okay, let's move on to listing
The Listeners
This wiki assumes (for demonstration purposes) that your username is Dave, your user-id is 5318008 and the message you sent has an id of 42.
regexp: /^help(?: (\S+))?/
!!help [command]
Fetches documentation for given command, or general help article. Synonym of /help [command]
regexp: /^tell (me (your|the) )?(rule|law)s/
!!tell me your laws
Prints out the laws which the bot must follow.
regexp: /^give (.+?) a lick/
!!give target a lick
Licks target
. I have a feeling target
will taste like grapes.
regexp: /^what(?:'s|'re)?\s(?:(?:is|are)\s)?(?:(?:an|a)\s)?([\w\s\-]+)\??/
!!what's a subject?
regexp: /^define\s(?:(?:an|a)\s)?([\w\s\-]+)/
!!define subject
Synonym for /define subject
.
regexp: /thank(s| you)/
regexp: /sorry/
regexp: /bitch/
regexp: /cow(think|say)\s(?:([eT])=(.{0,2})\s)?(?:([eT])=(.{0,2})\s)?(.+)/
!!cowsay moooo
An implementation of cowsay. Available arguments are e=xx
and T=xx
for eyes and tongue respectively. Cowthink is also included and accepts the same arguments..
!!cowthink mooo
!!cowsay e=@@ T=UU
!!cowthink mooo?
regexp: /(which |what |give me a )?firefly( episode)?/i
!!give me a firefly
Gives you a Firefly episode to watch. If you did not explicitly tell it to give you an episode, you may also get the movie.
!!which firefly episode
@Dave Episode 11 - Trash
!!which firefly
@Dave Serenity (movie)
regexp: /(?:nudge|remind|poke)\s(?:me\s)?(?:in\s)?(\d+m?)\s?(.*)$/
!!nudge in 20 get the pizza out
Synonym for /nudge interval message
.
regexp: /^\s*s(\/|\|)((?:(?:\\\1)|[^\1])*?)\1((?:(?:\\\1)|[^\1])*?)\1(g?i?)/
!!s/pattern/replacement/flags
Performs a substitution on a message matching pattern
. The replacement is done with replacement.replace
. In case the world burns and mdn goes down, here are the special patterns you can use in replacement
(to grab stuff from the capture):
Pattern | Meaning |
---|---|
$n |
The n th capturing group ($1, $2, $3, ...) |
$& | The entire match |
$` | The substring preceding the match |
$' | The substring following the match |
$$ | A literal dollar sign |
foo is the bar
!! s/foo(.*)bar/blorg$1blarg/
@Dave blorg is the blarg
my panties are on fire
!! s/.+/$& and they smell like toast/
@Dave my panties are on fire and they smell like toast
Note: This listener works on the DOM of the bot's window. That means that it'll only work on messages which are on the same main window as the bot's.
regexp: /^\s*(choose|should)?.*\sor\s[^$]/i
!!a or b or c
Beckon the weasel choose an option for you. Options are delimited by the word or
. Surprise.
!!should I stay or should I go?
@Dave You should stay
regexp: /\b(am|are|can|could|do|does|is|may|might|shall|should|will|would)\b/i
!!does this dress make me look fat?
Ask the weasel to enlighten your question with a (sort-of) yes/no answer.
!!will I die tomorrow?
@Dave All signs point to yes.