// package serv_bots -- словарь ботов сервера package serv_bots import ( "fmt" "wartank/pkg/types" "wartank/server/serv_bots/dict_warbot" "wartank/server/serv_bots/warbot" ) // БотоФерма -- словарь ботов на сервере type БотоФерма struct { server types.ИСервер store types.IStore dictBot *dict_warbot.DictWarBot } // NewServBots -- возвращает новый словарь серверных ботов func NewServBots(server types.ИСервер) (*БотоФерма, error) { if server == nil { return nil, fmt.Errorf("NewServBots(): IServer == nil") } sf := &БотоФерма{ server: server, store: server.Store(), } var err error sf.dictBot, err = dict_warbot.NewDictWarBot(server) if err != nil { return nil, fmt.Errorf("NewServBots(): in create DictWarBot, err=\n\t%w", err) } return sf, nil } // Get -- возвращает боевого бота по имени func (sf *БотоФерма) Get(name string) types.ИБот { bot := sf.dictBot.Get(name) return bot } // BotStart -- запускает бота в работу по его имени func (sf *БотоФерма) BotStart(name string) error { bot := sf.dictBot.Get(name) if bot == nil { return fmt.Errorf("ServBots.BotStart(): bot(%v) not found", name) } err := bot.Пуск() if err != nil { return fmt.Errorf("ServBots.BotStart(): in run bot(%v), err=\n\t%w", name, err) } return nil } // ListBot -- возвращает список существующих ботов func (sf *БотоФерма) ListBot() []types.ИБот { lst := sf.dictBot.ListBot() return lst } // NewBot -- добавляет нового бота на ферму func (sf *БотоФерма) NewBot(login, pass string) error { { // Существует ли такой бот bot := sf.dictBot.Get(login) if bot != nil { return nil } } { // Нет такого бота, надо его создать bot, err := warbot.НовВарБот(sf.server, login, pass) if err != nil { return fmt.Errorf("ServBots.NewBot(): in create bot %q, err=\n\t%w", login, err) } sf.dictBot.Add(bot) } return nil }