Build a markov model of everything Hubot hears.

Hubot Markov Model

Generates a markov model based on everything that your Hubot sees in your chat.

  1. Add hubot-markov to your package.json with npm install --save hubot-markov:
    "hubot-markov": "~1.4.0"
  1. Require the module in external-scripts.json:
  1. Run npm update and restart your Hubot.

Saying anything at all in chat appends to the model. The robot is always watching!

Hubot: markov will randomly generate text based on the current contents of its model.

Hubot: markov your mother is a will generate a random phrase seeded with the phrase you give it. This command might output "your mother is a classy lady", for example. Remember: Hubot is an innocent soul, and what he says only acts as a mirror for everything in your hearts.

Hubot: remarkov and Hubot: mmarkov are similar, but traverse node transitions in different directions: remarkov chains backwards from a given ending state, and mmarkov chains both forward and backward.

The Hubot markov model can optionally be configured by four environment variables:

HUBOT_MARKOV_PLY controls the order of the model that's built; effectively, how many previous states (words) are considered to choose the next state. You can bump this up if you'd like, but the default of 1 is both economical with storage and maximally hilarious.

HUBOT_MARKOV_LEARN_MIN controls the minimum length of a phrase that will be used to train the model, default 1. Set this higher to avoid training your model with a bunch of immediate terminal transitions like "lol".

HUBOT_MARKOV_GENERATE_MAX controls the maximum size of a markov chain that will be generated by the "markov" command.

HUBOT_MARKOV_RESPOND_CHANCE controls the chance that Hubot will respond un-prompted to a message it sees by using the last word in the message as the seed. Set this to a value between 0 and 1.0 to enable the feature. Leaving this variable unset or setting it to 0 will disable the feature.