require_relative "../../drill" class Plugin class DrillPlugin < Plugin attr_reader :drills def initialize(ika) super @drills = {} end def handle_message(message) return false unless super Message.new(self, message).handle end def can_handle_message?(message) return true if message.content == "!drill" drills[message.channel.id]&.can_handle_message?(message) end class Message attr_reader :plugin, :message def initialize(plugin, message) @plugin = plugin @message = message end def content message.content end def responder message.responder end def respond(response) responder.call response end def handle drill.handle_message(message) end def drill drl = plugin.drills[message.channel.id] return drl if drl drl = Drill.new responder: responder plugin.drills[message.channel.id] = drl end end end end