private Message GetMessage(TlAbsUpdates udAbsUpdates) { int senderId = 0; string text = String.Empty; DateTime time = DateTime.Now; //switch (udAbsUpdates) //{ // case TlUpdateShortMessage tlUpdateShortMessage: // text = tlUpdateShortMessage.Message; // time = tlUpdateShortMessage.TimeUnixToWindows(true); // break; // case TlUpdates u: // foreach (var item in u.Updates.Lists) // { // switch (item) // { // case TlUpdateNewMessage updateNewMessage: // text = (updateNewMessage.Message as TlMessage).GetTextMessage(); // time = (updateNewMessage.Message as TlMessage).TimeUnixToWindows(true); // break; // case TlUpdateNewChannelMessage updateNewChannelMessage: // text = (updateNewChannelMessage.Message as TlMessage).GetTextMessage(); // time = (updateNewChannelMessage.Message as TlMessage).TimeUnixToWindows(true); // break; // } // } // break; //} udAbsUpdates.MessageInfo(out senderId, out text, out time); var message = _ioc.Resolve <Message>(); message.FillValues("You", text, time); return(message); }
private async void Updates_RecieveUpdates(TlAbsUpdates update) { int id = -1; string text = String.Empty; DateTime time = DateTime.Now; switch (update) { case TlUpdateShort _: break; case TlUpdates updates: foreach (var item in updates.Updates.Lists) { switch (item) { case TlUpdateDeleteMessages _: OnUpdateDialogs?.Invoke(); break; case TlUpdateContactLink _: OnUpdateDialogs?.Invoke(); OnUpdateContacts?.Invoke(); break; case TlUpdateNewChannelMessage updateNewChannelMessage: update.MessageInfo(out id, out text, out time); AddNewMessageToUnread(id, text, time); break; case TlUpdateNewMessage updateNewMessage: update.MessageInfo(out id, out text, out time); AddNewMessageToUnread(id, text, time); Directory.CreateDirectory($"{Directory.GetCurrentDirectory()}\\Downloads"); switch ((updateNewMessage.Message as TlMessage).Media) { case TlMessageMediaDocument document: var file = document.Document as TlDocument; var fileName = file.Attributes.Lists.OfType <TlDocumentAttributeFilename>().FirstOrDefault().FileName; int blockNumber = file.Size % 1048576 == 0 ? file.Size / 1048576 : file.Size / 1048576 + 1; List <byte> bytes = new List <byte>(); for (int i = 0; i < blockNumber; i++) { var resFile = await _client.GetFile(new TlInputDocumentFileLocation { Id = file.Id, AccessHash = file.AccessHash, Version = file.Version }, file.Size, i * 1048576); bytes.AddRange(resFile.Bytes); } ConsoleTelegramUI.WriteToFile(bytes.ToArray(), fileName); break; case TlMessageMediaPhoto photo: var filePhoto = photo.Photo as TlPhoto; var photoInfo = filePhoto.Sizes.Lists.OfType <TlPhotoSize>().Last(); var tf = (TlFileLocation)photoInfo.Location; var resFilePhoto = await _client.GetFile(new TlInputFileLocation { LocalId = tf.LocalId, Secret = tf.Secret, VolumeId = tf.VolumeId }, 0); var date = (updateNewMessage.Message as TlMessage).TimeUnixToWindows(true).ToString(); date = date.Replace(':', '-'); string photoName = $"ConsoleTelegram_{date}.png"; ConsoleTelegramUI.WriteToFile(resFilePhoto.Bytes, photoName); break; } break; } } break; case TlUpdateShortMessage _: update.MessageInfo(out id, out text, out time); AddNewMessageToUnread(id, text, time); break; } }