示例#1
0
        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);
        }
示例#3
0
        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));
        }
示例#4
0
 public MessageTreeNode(InputResponsePair currentPair)
 {
     Current = currentPair;
 }