require_relative './session' require_relative './message' require_relative './drill_plugin' require_relative './ika/plugin' class Ika attr_reader :plugins PLUGIN_TYPES = [ Plugin::HelpPlugin, Plugin::LessonPlugin ] def self.for(type:, **kwargs) type.new **kwargs end def initialize @current_session = nil @plugins = PLUGIN_TYPES.map { |plugin_type| plugin_type.new self } end def handle_message(message) plugins.find { |plugin| plugin.handle_message message } end end