func (this *NewwarHandler) handle(text []string) (result string, err error) {
	//fmt.Printf("len text:%d\n", len(text))
	if len(text) < 3 {
		err = errors.New("i need more info\n" + this.getHelp())
		return
	}
	cout, err := strconv.Atoi(text[1])
	if err != nil || cout < 0 {
		err = errors.New("arg2 must be number\n" + this.getHelp())
		return
	}
	groupname := mainhandler.getGroupName()
	if groupname == "" {
		err = errors.New("group not found groupid:" + mainhandler.rec.Group_id)
		return
	}
	enemyname := strings.Join(text[2:len(text)], " ")
	id, err := models.AddWarData(groupname, enemyname, cout)
	if err != nil {
		fmt.Println(err.Error())
		err = errors.New("server error")
	} else {
		content, err := models.GetWarData(id)
		if err == nil {
			fmt.Printf("now time:%v\n", time.Now())
			fmt.Printf("default time:%v\n", content.Begintime)
			result = printWarData(content)
		}
	}

	return

}
func (this *TimerHandler) handle(text []string) (result string, err error) {

	if len(text) < 2 {
		err = errors.New("i need more info\n" + this.getHelp())
		return
	}
	num, err := strconv.Atoi(text[1])
	if err != nil || num < 0 {
		err = errors.New("arg2 must be number\n" + this.getHelp())
		return
	}
	content, err := models.GetWarData(num)
	if err == nil {
		result = fmt.Sprintf("War #%d \n %s VS %s \n %d vs %d \n  %d hours till war start!", content.Id, content.TeamA, content.TeamB, len(content.Battles), len(content.Battles), int(content.Begintime.Sub(time.Now()).Hours()))
	}
	return

}
func (this *EditwarHandler) handle(text []string) (result string, err error) {
	groupname := mainhandler.getGroupName()
	if groupname == "" {
		err = errors.New("group not found groupid:" + mainhandler.rec.Group_id)
		return
	}
	if len(text) < 3 {
		err = errors.New("i need more info\n" + this.getHelp())
		return
	}
	num1, err := strconv.Atoi(text[1])
	if err != nil || num1 < 0 {
		err = errors.New("arg2 must be number\n" + this.getHelp())
		return
	}
	num2, err := strconv.Atoi(text[2])
	isTime := strings.HasSuffix(text[2], "am") || strings.HasSuffix(text[2], "pm")
	if (err != nil || num2 < 0) && !isTime {
		err = errors.New("arg3 must be number or time(endwith am/pm)\n" + this.getHelp())
		return
	}

	if err == nil {
		enemyname := strings.Join(text[3:len(text)], " ")
		battles := make([]models.Battle, num2)
		battlep := &models.Battle{}
		battlep.Init()
		for index := range battles {
			battles[index] = *battlep
		}
		err := models.UpdateWarData(num1, bson.M{"$set": bson.M{"teamb": enemyname, "battles": battles}})
		if err == nil {
			content, err := models.GetWarData(num1)
			if err != nil {
				fmt.Println(err.Error())
				err = errors.New("server error")
			} else if !content.IsEnable {
				result = "no war being"
			} else {
				result = fmt.Sprintf("War #%d Edited \n %s VS %s \n %d vs %d \n War starts %s", content.Id, content.TeamA, content.TeamB, len(content.Battles), len(content.Battles), content.Begintime.Format("3:04PM MST 1/2/2006"))
			}

		}
	} else if isTime {
		now := time.Now()
		var h int
		if strings.HasSuffix(text[2], "am") {
			fmt.Printf("trim time:%s\n", strings.Trim(text[2], "am"))
			h, err = strconv.Atoi(strings.Trim(text[2], "am"))
			if err != nil || h < 0 {
				err = errors.New("wrong time format")
			} else {
				mi := 0
				if h > 12 {
					mi = int(math.Mod(float64(h), 100))
					h = int(h / 100)
				}
				y, m, d := now.Date()
				if now.Hour()*60+now.Minute() > h*60+mi { //if befor now so will be tmw
					d++
				}
				newtime := time.Date(y, m, d, h, mi, 0, 0, time.Local)
				err := models.UpdateWarData(num1, bson.M{"$set": bson.M{"begintime": newtime}})
				if err == nil {
					content, err := models.GetWarData(num1)
					if err != nil {
						fmt.Println(err.Error())
						err = errors.New("server error")
					} else if !content.IsEnable {
						result = "no war being"
					} else {
						result = fmt.Sprintf("War #%d Edited \n %s VS %s \n %d vs %d \n War starts %s", content.Id, content.TeamA, content.TeamB, len(content.Battles), len(content.Battles), content.Begintime.Format("3:04PM MST 1/2/2006"))
					}
				}
			}
		} else {

			h, err = strconv.Atoi(strings.Trim(text[2], "pm"))
			fmt.Printf("trim time:%d\n", h)
			if err != nil || h < 0 {
				err = errors.New("wrong time format")
			} else {
				mi := 0
				if h > 12 {
					mi = int(math.Mod(float64(h), 100))
					h = int(h / 100)
				}
				h = h + 12
				y, m, d := now.Date()
				if now.Hour()*60+now.Minute() > h*60+mi { //if befor now so will be tmw
					d++
				}
				fmt.Printf("trim time mi:%d\n", mi)
				newtime := time.Date(y, m, d, h, mi, 0, 0, time.Local)
				err := models.UpdateWarData(num1, bson.M{"$set": bson.M{"begintime": newtime}})
				if err == nil {
					content, err := models.GetWarData(num1)
					if err != nil {
						fmt.Println(err.Error())
						err = errors.New("server error")
					} else if !content.IsEnable {
						result = "no war being"
					} else {
						result = fmt.Sprintf("War #%d Edited \n %s VS %s \n %d vs %d \n War starts %s", content.Id, content.TeamA, content.TeamB, len(content.Battles), len(content.Battles), content.Begintime.Format("3:04PM MST 1/2/2006"))
					}
				}
			}
		}

	} else {
		err = errors.New("wrong arg \n" + this.getHelp())
	}

	return

}