27 lines
515 B
Ruby
27 lines
515 B
Ruby
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
|