package messages import ( "fmt" "math/rand" "strconv" "strings" "student_bot/date" "student_bot/new_year_service" "student_bot/parser" "time" weather "github.com/3crabs/go-yandex-weather-api" ) func StartMessage() string { return "Привет, я Верочка!" } var thanksMessages = []string{ "Обращайся", "Пожалуйста", "Всегда рада помочь", "Да незачто", "Всегда к вашим услугим", } func ThanksMessage() string { return thanksMessages[rand.Intn(len(thanksMessages)-1)] } func HelpMessage(chatID int64) string { return "Вот чем я могу вам помочь (v1.4.5), отправь:\n\n" + "- /ping отобью pong\n" + "- /today_lessons покажу расписание на сегодня\n" + "- /tomorrow_lessons покажу расписание на завтра\n" + "- /all_lessons - пары на несколько дней\n" + "- /weather покажу погоду у универа\n" + "- /new_year - посчитаю количество дней до нового года\n" + "\nНу а больше я пока ничего не умею" + "\nВаш chatID: " + strconv.FormatInt(chatID, 10) } func PongMessage() string { return "pong" } func LessonsMessage(schedule []parser.Lesson, prefix, emptyText string) string { if len(schedule) == 0 { return emptyText } s := "" if prefix != "" { s += prefix + "\n\n" } endDate := "" for _, l := range schedule { if endDate != l.TimeStart.Format("02.01") { if endDate != "" { s += "\n" } endDate = l.TimeStart.Format("02.01") s += date.GetTranslatedWeekday(l.TimeStart) + " " + endDate + "\n" } if strings.Contains(l.User, "Ярных В.В.") { s += "⭐️ " } l.Name = strings.ReplaceAll(l.Name, l.Place, "") l.Name = strings.ReplaceAll(l.Name, "()", "") l.Name = strings.ReplaceAll(l.Name, l.TimeStart.Format("15:04"), "") l.Name = strings.TrimSpace(l.Name) s += fmt.Sprintf("%s %s (%s)\n%s\n", l.TimeMsg, l.Name, l.Place, l.User) } if prefix != "" { s += "\n" + "Д — Димитрова 66\n" + // (Филологический, социологический) "Л — Ленина 61\n" + // (Математический, биологический) "М — Ленина 61а\n" + // (Исторический и географический) "С — Социалистический 68" // (Экономический и юридический) } return s } func WeatherMessage(w weather.Weather) string { return fmt.Sprintf("Сейчас у универа:\n"+ "%s\n"+ "Температура: %d°C\n"+ "Ощущается как: %d°C\n"+ "Скорость ветра: %dм/с\n"+ "\nПогода на %s:\n"+ "%s\n"+ "Температура: %d°C\n"+ "Ощущается как: %d°C\n"+ "Скорость ветра: %dм/с\n", w.Fact.GetCondition(), w.Fact.Temp, w.Fact.FeelsLike, w.Fact.WindSpeed, w.Forecast.Parts[0].GetPartName(), w.Forecast.Parts[0].GetCondition(), w.Forecast.Parts[0].TempAvg, w.Forecast.Parts[0].FeelsLike, w.Forecast.Parts[0].WindSpeed) } func NewYearMessage(message new_year_service.NewYearMessage) string { loc := time.FixedZone("UTC+7", +7*60*60) ny := time.Date(time.Now().Year()+1, 1, 1, 0, 0, 0, 0, loc) now := time.Now().In(loc) days := ny.Sub(now).Hours() / 24 if message.Header != "" { return fmt.Sprintf("❄ %s ❄ \n\n%s\n\n%s", toStrDays(int(days)), message.Header, message.Text) } return fmt.Sprintf("❄ %s ❄ \n\n%s", toStrDays(int(days)), message.Text) } func toStrDays(days int) string { if days == 0 { return "Сегодня новый год!!!" } if days == 1 { return "Новый год завтра!" } s := "" a := days % 10 if days < 10 { switch a { case 2: s = "дня" case 3: s = "дня" case 4: s = "дня" default: s = "дней" } } if days >= 10 && days < 20 { s = "дней" } if days >= 20 { switch a { case 1: s = "день" case 2: s = "дня" case 3: s = "дня" case 4: s = "дня" default: s = "дней" } } return fmt.Sprintf("До нового года %d %s", days, s) }