I read messages from the chat using the following code:

public async Task GatherChatHistory(string channelName, string ch_id, string mid, int offset = 0, int minId = 0, int maxId = -1, int limit = 100) { Log.Info(Tag, "In GatherChatHistory Start"); TelegramClient client = CreateClient(); await InitializeAndAuthenticateClient(client); int maximal = Convert.ToInt32(mid); Log.Info(Tag, "In GatherChatHistory Before GetUserDialogAsync"); try { var dialogs = (TLDialogs)await client.GetUserDialogsAsync(); var chat = dialogs.chats.lists .OfType<TLChat>() .FirstOrDefault(c => c.title == channelName); Log.Info(Tag, "In GatherChatHistory After GetUserDialogAsync " + (chat != null)); if (chat != null) { Log.Info(Tag, "Chat != null, " + channelName); try { var tlAbsMessages = await client.GetHistoryAsync( new TLInputPeerChat { chat_id = chat.id }, offset, minId, maxId, limit); Log.Info(Tag, "After GetHistoryAsync"); var tlChannelMessages = (TLMessages)tlAbsMessages; Log.Info(Tag, "GatherChatHistory Messages count = " + (tlChannelMessages.messages.lists.Count - 1)); for (var index = 0; index < tlChannelMessages.messages.lists.Count - 1; index++) { var tlAbsMessage = tlChannelMessages.messages.lists[index]; Log.Info(Tag, "Message Type = " + tlAbsMessage.GetType()); if (tlAbsMessage.GetType().ToString().Equals("TeleSharp.TL.TLMessageService")) continue; var message = (TLMessage)tlAbsMessage; if (message.id == maximal) { Log.Info(Tag, "GatherChatHistory Chat_id = " + channelName + " maximal was reached"); break; } if (message.id <= maximal) { Log.Info(Tag, "GatherChatHistory Chat_id = " + channelName + " message.id = " + message.id + " maxid = " + maximal); continue; } if (message.media == null) { Log.Info(Tag, "Message ID = " + message.id); Log.Info(Tag, "Chat ID = " + chat.id); Log.Info(Tag, "Content = " + message.message); await AddNewMessageToDatabase(channelName, ch_id, message.message, null, message.from_id.GetValueOrDefault(), message.id); } else { switch (message.media.GetType().ToString()) { case "TeleSharp.TL.TLMessageMediaPhoto": var tLMessageMediaPhoto = (TLMessageMediaPhoto)message.media; var photo = (TLPhoto)tLMessageMediaPhoto.photo; var photoSize = photo.sizes.lists.OfType<TLPhotoSize>().Last(); TLFileLocation tf = (TLFileLocation)photoSize.location; var resFile = await client.GetFile(new TLInputFileLocation { local_id = tf.local_id, secret = tf.secret, volume_id = tf.volume_id }, 0, -1); using (var ms = new MemoryStream(resFile.bytes)) { byte[] byteArr = ms.ToArray(); string base64image = Convert.ToBase64String(byteArr); Log.Info(Tag, "Caption = " + tLMessageMediaPhoto.caption); Log.Info(Tag, "Base64 Image = " + base64image); await AddNewMessageToDatabase(channelName, ch_id, tLMessageMediaPhoto.caption, base64image, message.from_id.GetValueOrDefault(), message.id); } break; case "TeleSharp.TL.TLMessageMediaDocument": var tLMessageMediaDocument = (TLMessageMediaDocument)message.media; break; case "TeleSharp.TL.TLMessageMediaWebPage": var tLMessageMediaWebPage = (TLMessageMediaWebPage)message.media; string url = string.Empty; if (tLMessageMediaWebPage.webpage.GetType().ToString() != "TeleSharp.TL.TLWebPageEmpty") { var webPage = (TLWebPage)tLMessageMediaWebPage.webpage; url = webPage.url; } break; } } } } catch (Exception e) { Logger.Error("Telegram Chat History exception: " + e.Message); Log.Error(Tag, "Telegram Chat History exception: " + e.Message); Log.Error(Tag, "Telegram Chat History StackTrace = " + e.ToString()); } } else Log.Info(Tag, "Chat == null"); } catch (Exception e) { Log.Error(Tag, "ReadUserAsync Error : " + e.Message); } } 

I have no problems reading text messages, but if more than one photo got into the chat between calls to this function, only one is normally read, when reading the second one, when GetFile is called, an exception occurs:

 [MessagingService:TelegramBridge] Telegram Chat History exception: msg_seqno too low (the server has already received a message with a lower msg_id but with either a higher or an equal and odd seqno) [MessagingService:TelegramBridge] Telegram Chat History StackTrace = System.InvalidOperationException: msg_seqno too low (the server has already received a message with a lower msg_id but with either a higher or an equal and odd seqno) [MessagingService:TelegramBridge] at TLSharp.Core.Network.MtProtoSender.HandleBadMsgNotification (System.UInt64 messageId, System.Int32 sequence, System.IO.BinaryReader messageReader) [0x0009f] in <24dee86ac15149c89ccf3cac229b439d>:0 [MessagingService:TelegramBridge] at TLSharp.Core.Network.MtProtoSender.processMessage (System.UInt64 messageId, System.Int32 sequence, System.IO.BinaryReader messageReader, TeleSharp.TL.TLMethod request) [0x00182] in <24dee86ac15149c89ccf3cac229b439d>:0 [MessagingService:TelegramBridge] at TLSharp.Core.Network.MtProtoSender+ <Receive>d__9.MoveNext () [0x000bb] in <24dee86ac15149c89ccf3cac229b439d>:0 

At the same time, the part of the code associated with TLSharp stops working completely until the program is restarted. Maybe someone came across this?

    0