Ejemplo n.º 1
0
 public ActionNode(Action <ISession> nodeAction, MetaInlineMessage metaMessage = null, string name = null)
     : base(name ?? DefaultStrings.Next, metaMessage)
 {
     Children = new List <ITreeNode>(1);
     message  = metaMessage;
     action   = nodeAction ?? ((session) => { });
 }
Ejemplo n.º 2
0
 public ItemNode(string itemsContainer, int itemID, string sessionContainer, MetaInlineMessage metaMessage = null, string name = null)
     : base((session) =>
 {
     var item      = session.BotWrapper.GlobalVars.GetVar <Dictionary <int, MetaValued <T> > >(itemsContainer)[itemID];
     var container = session.Vars.GetVar <MetaValuedContainer <T> >(sessionContainer);
     if (container == null)
     {
         container = new MetaValuedContainer <T>(sessionContainer);
         session.Vars.SetVar(container);
     }
     container.Add(item, 1);
 }, metaMessage, name ?? DefaultStrings.Add) { }
 private static ITreeNode CreateHead(string name, MetaReplyMessage folderMsg, MetaInlineMessage previewMsg)
 {
     if (previewMsg != null && (previewMsg.Text.ToString() != name || previewMsg.File != null))
     {
         return(new SimpleNode(name, new MetaMultiMessage(previewMsg, folderMsg)
         {
             DefaultMessageIndex = 1
         }));
     }
     else
     {
         return(new SimpleNode(name, folderMsg));
     }
 }
        public ProductSimpleNode(string name, List <List <string> > elements, string itemsContainer, List <int> productsIds, List <MetaReplyMessage> foldersMsgs,
                                 string sessionContainer, string addedPrefix = DefaultStrings.Plus, string addBtnName = DefaultStrings.Add,
                                 MetaInlineMessage metaMessage = null, bool needBack = true) :
            base(
                CreateHead(name, foldersMsgs[0], metaMessage),
                CreateItemNodes(name, itemsContainer, elements, productsIds,
                                sessionContainer, addedPrefix)
                )
        {
            if (foldersMsgs.Count != elements.Count)
            {
                throw new ArgumentException("Количество названий разделов не совпадает с количеством секций.");
            }
            int itemNumber = 0;

            RecursiveSections(HeadNode);

            void RecursiveSections(ITreeNode parent, int index = 0)
            {
                if (index < elements.Count - 1)
                {
                    for (int i = 0; i < elements[index].Count; i++)
                    {
                        var foldersMsg = foldersMsgs[index + 1];
                        var clonedMsg  = new MetaMessage <MetaKeyboardMarkup <Telegram.Bot.Types.ReplyMarkups.KeyboardButton> >(foldersMsg.Text,
                                                                                                                                foldersMsg.MessageType, foldersMsg.File, foldersMsg.MetaKeyboard.Clone(), foldersMsg.parseMode);
                        SimpleNode folder = new SimpleNode(elements[index][i], clonedMsg);
                        folder.SetParent(parent);
                        RecursiveSections(folder, index + 1);
                    }
                }
                else
                {
                    for (int i = 0; i < elements[index].Count; i++)
                    {
                        TailNodes[itemNumber].SetParent(parent);
                        TailNodes[itemNumber++].SetBackLink(HeadNode);
                    }
                }
            }
        }
Ejemplo n.º 5
0
 public LightNode(string name, MetaInlineMessage metaMessage = null)
     : base(name, metaMessage ?? new MetaInlineMessage(name))
 {
 }
Ejemplo n.º 6
0
 public OwnerNotificationNode(string name, MetaInlineMessage metaMessage = null, IOrdersSendable sendable      = null,
                              int statusGroupID = 0, Func <ISession, UniversalOrderContainer> containerCreator = null,
                              IEnumerable <(Type varType, string varName)> variables = null)