Sha256: ada76622a51db32393857280aceddcff640803eab81af9983d3414f8db8dbf40

Contents?: true

Size: 1.38 KB

Versions: 1

Compression:

Stored size: 1.38 KB

Contents

module Lita
  module Handlers
    class Wtf < Handler
      route(
        /^wtf(?:\s+is)?\s(?<term>\w+)(?:\?)?/,
        :lookup,
        command: true,
        help: {
          t('help.wtf.syntax') => t('help.wtf.desc')
        }
      )

      route(
        /^define\s(?<term>\w+)\sis\s(?<definition>.+)$/,
        :define,
        command: true,
        help: {
          t('help.define.syntax') => t('help.define.desc')
        }
      )

      def lookup(response)
        term = response.match_data['term']
        return response.reply(t('wtf.unknown', term: term)) unless known?(term)
        response.reply(format_definition(term, definition(term)))
      end

      def define(response)
        term = response.match_data['term']
        info = response.match_data['definition']
        write(term, info, response.user.id)
        response.reply(format_definition(term, definition(term)))
      end

      private

      def format_definition(term, definition)
        t('wtf.is', term: term, definition: definition)
      end

      def known?(term)
        redis.exists(term.downcase)
      end

      def definition(term)
        redis.hget(term.downcase, 'definition')
      end

      def write(term, definition, owner)
        redis.hset(term.downcase, 'definition', definition)
        redis.hset(term.downcase, 'owner', owner)
      end
    end

    Lita.register_handler(Wtf)
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
lita-wtf-1.0.0 lib/lita/handlers/wtf.rb