public MessageTree(InputResponsePair headInputResponsePair) { if (headInputResponsePair.Input == null || headInputResponsePair.Responses == null || !headInputResponsePair.Responses.Any()) { throw new ArgumentNullException(); } _head = new MessageTreeNode(new InputResponsePair(headInputResponsePair.Input, headInputResponsePair.Responses)); _nodes.Add(_head); }
public static MessageTree CreateMessageTree() { var head = new InputResponsePair( new UserInput("/start"), new List <Response> { new Response("Привет. Я чат-бот и я могу расказать тебе зачем нужны чат-боты."), new Response("Хочешь узнать?") { ReplyMarkup = new ReplyKeyboardMarkup(new[] { new KeyboardButton("Да"), new KeyboardButton("Нет") }, true, true) } }); var areYouSure = new InputResponsePair( new UserInput("Да"), new List <Response> { new Response("Ты уверен?") { ReplyMarkup = new ReplyKeyboardMarkup(new [] { new KeyboardButton("Да"), new KeyboardButton("Нет") }, true, true) } }); var botHaveBadNews = new InputResponsePair( new UserInput("Нет"), new List <Response> { new Response("Тогда у меня для тебя плохие новости...") }); var messageTree = new MessageTree(head); messageTree.AddAfter(areYouSure, head); messageTree.AddAfter(botHaveBadNews, head); messageTree.AddAfter(botHaveBadNews, areYouSure); return(messageTree); }
public void AddAfter(InputResponsePair forAdd, InputResponsePair after) { if (forAdd == null || after == null) { throw new ArgumentNullException(); } var foundAfterPair = _nodes.FirstOrDefault(p => p.Current.Equals(after)); if (foundAfterPair == null) { //todo добавить метод quals и протестировать их //todo заменить на более подходящее исключение, говорящее что пара после которой добавлять не найдена throw new InstanceNotFoundException(); } _nodes.Add(new MessageTreeNode(forAdd)); foundAfterPair.NextNodes.Add(new MessageTreeNode(forAdd)); }
public MessageTreeNode(InputResponsePair currentPair) { Current = currentPair; }