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) => { }); }
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); } } } }
public LightNode(string name, MetaInlineMessage metaMessage = null) : base(name, metaMessage ?? new MetaInlineMessage(name)) { }
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)