Sha256: f6eaf2ee52872d9de6515900a1b30e2691933195a3879f4e16750255e8b05e20

Contents?: true

Size: 801 Bytes

Versions: 1

Compression:

Stored size: 801 Bytes

Contents

module Bot
  class Context
    attr_accessor :redis_client, :user

    def initialize(user, redis_client)
      @redis_client = redis_client
      @user = user
    end

    def method_missing(m, *args, &block)
      if m =~ /.+=/
        self.add(m.to_s.gsub('=', ''), *args)
      else
        self.get(m)
      end
    end

    def get(field)
      data = $redis.hget(context_key, field)
      JSON.parse(data) if data.present?
    rescue JSON::ParserError
      data
    end

    def set(context)
      self.clear
      $redis.hmset(context_key, context.map { |k, v| [k, v] }.flatten)
    end

    def add(field, content)
      $redis.hset context_key, field, content
    end

    def clear
      $redis.del context_key
    end

    def context_key
      "bot:context:#{user.id}"
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
bot-0.0.29 lib/bot/context.rb