| 
					
				 | 
			
			
				@@ -1,8 +1,7 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import { ICommand } from "./command"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import { Dict, NeighBuilder } from "../util"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import { Dict } from "../util"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import { ReactionCollector, Message } from "discord.js"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import yaml from "yaml"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import { client } from "src/client"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import { getRepository } from "typeorm"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import { Contest } from "@db/entity/Contest"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import { isNumber } from "util"; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -39,25 +38,22 @@ const DURATION_MULTIPLIERS : Dict<number> = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     "y": 365 * 24 * 60 * 60 * 1000 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const DURATION_REGEX_STR = `(\\d+) ?(${Object.keys(DURATION_MULTIPLIERS).join("|")})`; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+const DURATION_REGEX = new RegExp(DURATION_REGEX_STR, "i"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 function parseDuration(duration: string) : number | undefined { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // Time to eat... 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    let numNB = new NeighBuilder(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    let chIndex = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    for(; chIndex < duration.length; chIndex++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        let c = duration.charAt(chIndex); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if(isNumber(c)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            numNB.append(c); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    let match = DURATION_REGEX.exec(duration); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    let unit = duration.substr(chIndex).trim().toLowerCase(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if(match.length == 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return undefined; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if(!(unit in DURATION_MULTIPLIERS)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    let num = match[1]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if(!isNumber(num)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return undefined; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    return +numNB * DURATION_MULTIPLIERS[unit]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    let unit = match[2]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return +num * DURATION_MULTIPLIERS[unit]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 async function createContest(msg: Message, info: ContestCreationOptions) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -94,10 +90,9 @@ async function createContest(msg: Message, info: ContestCreationOptions) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     await msg.channel.send(`${msg.author.toString()} Started contest (ID: ${contest.id})`); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-const d = <ICommand>{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export default <ICommand>{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     commands: [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            //\s+in:\s*([^\s]+)\s+duration:\s(\d+ ?(s|d|m|y))\s+announce_winners:\s*(true|false)\s+vote_reaction:\s*([^\s]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             pattern: "create contest", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             action: async (m, contents) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 let message = contents.substr("create contest".length); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -144,6 +139,4 @@ const d = <ICommand>{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     onStart: init, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-export default {}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 |