Загрузка данных
package main
import (
"bufio"
"fmt"
"math/rand"
"os"
"strings"
"time"
)
func main() {
// Инициализация генератора случайных чисел
rand.Seed(time.Now().UnixNano())
reader := bufio.NewReader(os.Stdin)
fmt.Println("Привет! Я бот-помощник. Вот список доступных команд:")
showHelp()
for {
fmt.Print("\nВведите команду или категорию (или 'help' для справки, 'exit' для выхода): ")
input, err := reader.ReadString('\n')
if err != nil {
fmt.Println("Ошибка чтения ввода:", err)
continue
}
input = strings.TrimSpace(strings.ToLower(input))
if input == "exit" {
fmt.Println("До свидания!")
break
}
switch input {
case "help", "помощь":
showHelp()
case "фильм по жанру", "1":
recommendMovieByGenre(reader)
case "фильм по настроению", "2":
recommendMovieByMood(reader)
case "музыка по жанру", "3":
recommendMusicByGenre(reader)
case "музыка по настроению", "4":
recommendMusicByMood(reader)
case "анекдот", "5":
tellJoke()
case "каталог мерча", "6":
showMerchCatalog()
case "купить мерч", "7":
buyMerch(reader)
default:
fmt.Println("Я не понял команду. Введите 'help' для просмотра доступных функций.")
}
}
}
func showHelp() {
fmt.Println("\n--- Доступные функции ---")
fmt.Println("1. Рекомендация фильма по жанру (введите: фильм по жанру)")
fmt.Println("2. Рекомендация фильма по настроению (введите: фильм по настроению)")
fmt.Println("3. Рекомендация музыки по жанру (введите: музыка по жанру)")
fmt.Println("4. Рекомендация музыки по настроению (введите: музыка по настроению)")
fmt.Println("5. Рассказать анекдот (введите: анекдот)")
fmt.Println("6. Вывести каталог мерча (введите: каталог мерча)")
fmt.Println("7. Купить мерч / Интерфейс покупки (введите: купить мерч)")
fmt.Println("-------------------------")
}
func recommendMovieByGenre(reader *bufio.Reader) {
fmt.Println("\nВыберите жанр (фантастика, комедия, драма, боевик):")
genre, _ := reader.ReadString('\n')
genre = strings.TrimSpace(strings.ToLower(genre))
switch genre {
case "фантастика":
fmt.Println("Рекомендую посмотреть: «Интерстеллар»")
case "комедия":
fmt.Println("Рекомендую посмотреть: «Шоу Трумана»")
case "драма":
fmt.Println("Рекомендую посмотреть: «Побег из Шоушенка»")
case "боевик":
fmt.Println("Рекомендую посмотреть: «Тёмный рыцарь»")
default:
fmt.Println("К сожалению, такого жанра у меня нет в базе.")
}
}
func recommendMovieByMood(reader *bufio.Reader) {
fmt.Println("\nКакое у вас настроение? (грустное, веселое, напряженное):")
mood, _ := reader.ReadString('\n')
mood = strings.TrimSpace(strings.ToLower(mood))
switch mood {
case "грустное":
fmt.Println("Советую посмотреть добрую комедию: «Амели»")
case "веселое":
fmt.Println("Поддержите настроек отличным экшеном: «Безумный Макс: Дорога ярости»")
case "напряженное":
fmt.Println("Расслабьтесь за просмотром легкого мультфильма: «Душа»")
default:
fmt.Println("Интересное настроение! Посмотрите «Форрест Гамп» — он подходит под любое.")
}
}
func recommendMusicByGenre(reader *bufio.Reader) {
fmt.Println("\nВыберите музыкальный жанр (рок, рэп, поп, электроника):")
genre, _ := reader.ReadString('\n')
genre = strings.TrimSpace(strings.ToLower(genre))
switch genre {
case "рок":
fmt.Println("Трек для вас: Linkin Park - In the End")
case "рэп":
fmt.Println("Трек для вас: Travis Scott - SICKO MODE")
case "поп":
fmt.Println("Трек для вас: The Weeknd - Blinding Lights")
case "электроника":
fmt.Println("Трек для вас: Daft Punk - Get Lucky")
default:
fmt.Println("Не знаю такого жанра, но послушайте классику!")
}
}
func recommendMusicByMood(reader *bufio.Reader) {
fmt.Println("\nКакое у вас настроение для музыки? (бодрое, расслабленное, грустное):")
mood, _ := reader.ReadString('\n')
mood = strings.TrimSpace(strings.ToLower(mood))
switch mood {
case "бодрое":
fmt.Println("Включайте фонк или энергичный рэп!")
case "расслабленное":
fmt.Println("Подойдет лоу-фай хип-хоп (Lofi Beats).")
case "грустное":
fmt.Println("Синти-поп или меланхоличный рок помогут пережить этот момент.")
default:
fmt.Println("Включайте плейлист 'Победитель' — не прогадаете.")
}
}
func tellJoke() {
jokes := []string{
"Программист — это тот, кто решает проблему, о которой вы не знали, способом, который вам непонятен.",
"Встречаются два программиста:\n— Как дела?\n— Да нормально, жена попросила сходить в магазин и купить батон, а если будут яйца — взять десяток. Я вернулся с десятью батонами.",
"Почему программисты не любят природу? Слишком много багов.",
"Существует 10 типов людей: те, кто понимает двоичную систему, и те, кто нет.",
}
index := rand.Intn(len(jokes))
fmt.Printf("\nАнекдот:\n%s\n", jokes[index])
}
func showMerchCatalog() {
fmt.Println("\n--- Каталог мерча ---")
fmt.Println("1. Футболка с логотипом — 1500 руб.")
fmt.Println("2. Худи фирменное — 3200 руб.")
fmt.Println("3. Кружка керамическая — 600 руб.")
fmt.Println("4. Стикерпак — 300 руб.")
fmt.Println("---------------------")
}
func buyMerch(reader *bufio.Reader) {
showMerchCatalog()
fmt.Print("\nВведите номер товара, который хотите купить: ")
choice, _ := reader.ReadString('\n')
choice = strings.TrimSpace(choice)
var item string
switch choice {
case "1":
item = "Футболка с логотипом"
case "2":
item = "Худи фирменное"
case "3":
item = "Кружка керамическая"
case "4":
item = "Стикерпак"
default:
fmt.Println("Неверный выбор товара.")
return
}
fmt.Printf("Вы выбрали: %s.\n", item)
fmt.Print("Введите ваше имя для заказа: ")
name, _ := reader.ReadString('\n')
name = strings.TrimSpace(name)
fmt.Print("Введите адрес доставки: ")
address, _ := reader.ReadString('\n')
address = strings.TrimSpace(address)
fmt.Printf("\nСпасибо за заказ, %s! Товар «%s» успешно оформлен для доставки по адресу: %s.\n", name, item, address)
fmt.Println("(Интеграция с платежной системой в данной версии прототипа отключена).")
}