public void Read <T>(Message message, Action <T> newMessage, ReadMessageData messageData = null, long peerId = 0) { if (peerId == 0) { peerId = (long)Id; } Send(message, peerId); Read <T>(newMessage, messageData, peerId); }
public void Read <T>(Action <T> newMessage, ReadMessageData messageData = null, long peerId = 0) { if (_readMessageData == null) { FillReadMessageData(Provider.BotInstance); } if (peerId == 0) { peerId = (long)Id; } GetChat(peerId).NewMessageAction = message => { ReadMessageData data; if (messageData != null) { data = messageData; } else if (_readMessageData.ContainsKey(typeof(T))) { data = _readMessageData[typeof(T)]; } else { throw new InvalidCastException("Unknown type"); } if (!data.TryParse(message, out object result)) { Send(data.Error, peerId); Read(newMessage, messageData); return; } GetChat(peerId).NewMessageAction = null; newMessage?.Invoke((T)result); }; }