public async Task <MTObject> Handle(IMessageContext <TLGetState> context) { MTObject result = null; var session = manager .GetSession(context.AuthKey()); var user = await session.GetUser(); try { result = new TLState { Date = MTServer.Instance.Services.Utils().ToTelegramDate(DateTime.UtcNow), Pts = user.UserData.Pts, Qts = 0, Seq = user.UserData.Seq, UnreadCount = 0 }; } catch (Exception err) { this.logger.LogError( $"An error occured while trying to handle GetState: \r\n{err.GetBaseException().Message}"); } return(result); }
public async Task <MTObject> Handle(IMessageContext <TLImportContacts> context) { TLImportedContacts result = new TLImportedContacts(); result.Users = new NET.Schema.TL.TLVector <NET.Schema.TL.TLAbsUser>(); result.Imported = new NET.Schema.TL.TLVector <NET.Schema.TL.TLImportedContact>(); result.RetryContacts = new NET.Schema.TL.TLVector <long>(); result.PopularInvites = new NET.Schema.TL.TLVector <NET.Schema.TL.TLPopularContact>(); try { var session = manager.GetSession(context.AuthKey()); if (session == null) { throw new Exception("Seesion not found."); } var userId = session.GetUserId(); var request = context.Body; foreach (var contact in request.Contacts) { if (contact.ClientId == 0) { contact.ClientId = new Random().Next(); } //contact.ClientId++; var added_contact = await this.contactService.ImportContact(userId, contact.FirstName, contact.LastName, contact.Phone, contact.ClientId); if (added_contact != null) { result.Imported.Add(new NET.Schema.TL.TLImportedContact { ClientId = added_contact.ClientId, UserId = added_contact.ImportedContactId }); if (added_contact.ImportedContactId != 0) { result.Users.Add(new MTProto.NET.Schema.Layer72.TLUser { Id = added_contact.ImportedContactId, FirstName = string.IsNullOrWhiteSpace(added_contact.FirstName)?$"User {added_contact.Id}":added_contact.FirstName, LastName = added_contact.LastName, Phone = added_contact.Phone }); } } } } catch (Exception err) { this.logger.LogError( "An error occured while trying to handle 'ImportContacts': \r\n{0}", err.GetBaseException().Message); throw; } return(result); }
public async Task <MTObject> Handle(IMessageContext <TLUpdateProfile> context) { MTObject result = null; try { var session = manager.GetSession(context.AuthKey()); if (session == null) { throw new Exception("Session not found!"); } var userId = session.GetUserId(); var profile = context.Body; var data = await this.profileService.UpdateProfile(userId, profile.FirstName, profile.LastName, profile.About); if (data != null) { result = new MTProto.NET.Schema.Layer72.TLUser { FirstName = data.FirstName, LastName = data.LastName, Id = data.Id, Self = true }; } else { result = new TLUserEmpty { }; } } catch (Exception err) { this.logger.LogError( "An error occured while trying to handle 'UpdateProfile': \r\n{0}", err.GetBaseException().Message); throw; } return(result); }
public async Task <MTObject> Handle(IMessageContext <TLGetContacts> context) { var result = new TLContacts(); result.Users = new TLVector <TLAbsUser>(); result.Contacts = new TLVector <TLContact>(); try { var session = manager.GetSession(context.AuthKey()); if (session == null) { throw new Exception("Seesion not found."); } var userId = session.GetUserId(); var request = context.Body; var contacts = await contactService.GetContacts(userId); contacts.ToList().ForEach(x => { result.Contacts.Add(new TLContact { UserId = x.ImportedContactId, }); result.Users.Add(new MTProto.NET.Schema.Layer72.TLUser { Id = x.ImportedContactId, FirstName = x.FirstName, LastName = x.LastName, Phone = x.Phone, AccessHash = 5 }); }); } catch (Exception err) { this.logger.LogError( "An error occured while trying to handle 'ImportContacts': \r\n{0}", err.GetBaseException().Message); throw; } return(result); }
public async Task <MTObject> Handle(IMessageContext <TLGetDialogs> context) { var result = await Task.FromResult <MTObject>(null); try { var dialogs = new TLVector <TLAbsDialog>(); var users = new TLVector <TLAbsUser>(); var chats = new TLVector <TLAbsChat>(); var messages = new TLVector <TLAbsMessage>(); var session = manager.GetSession(context.AuthKey()); if (session == null) { throw new Exception($"Session not found."); } var user = await session.GetUser(); var users_list = new List <int>(); users.Add(new NET.Schema.Layer72.TLUser { Id = session.GetUserId(), FirstName = string.IsNullOrWhiteSpace(user?.UserData?.FirstName)? $"User {user.Id}": user.UserData.FirstName, Self = true });; var dialog = new NET.Schema.Layer72.TLDialog { Peer = new TLPeerUser { UserId = session.GetUserId() }, NotifySettings = new NET.Schema.Layer72.TLPeerNotifySettingsEmpty { } }; dialogs.Add(dialog); var contacts = await contactService.GetContacts(session.GetUserId()); foreach (var privateChat in await this.messagingService.GetPrivateChats(session.GetUserId(), 0, 1000)) { if (!users_list.Contains(privateChat.UserId2)) { users_list.Add(privateChat.UserId2); } dialog = new NET.Schema.Layer72.TLDialog { Peer = new TLPeerUser { UserId = privateChat.UserId2 }, NotifySettings = new NET.Schema.Layer72.TLPeerNotifySettingsEmpty { } }; dialogs.Add(dialog); } foreach (var contact in await contactService.GetContacts(session.GetUserId())) { if (!users_list.Contains(contact.ImportedContactId)) { users_list.Add(contact.ImportedContactId); } } foreach (var chat_user in users_list) { var _user = await this.contactService.GetUser(chat_user); if (_user != null) { users.Add(new NET.Schema.Layer72.TLUser { Id = _user.Id, FirstName = _user.FirstName, LastName = _user.LastName, AccessHash = _user.Access_Hash, Phone = _user.Phone });; } } if (session.GetUserId() == 1 && 1 == 0) { dialog = new NET.Schema.Layer72.TLDialog { Peer = new TLPeerUser { UserId = 2 }, NotifySettings = new NET.Schema.Layer72.TLPeerNotifySettingsEmpty { } }; dialogs.Add(dialog); users.Add(new NET.Schema.Layer72.TLUser { Id = 2, FirstName = $"User {2}", });; } if (session.GetUserId() == 2 && 1 == 0) { dialog = new NET.Schema.Layer72.TLDialog { Peer = new TLPeerUser { UserId = 1 }, NotifySettings = new NET.Schema.Layer72.TLPeerNotifySettingsEmpty { } }; dialogs.Add(dialog); users.Add(new NET.Schema.Layer72.TLUser { Id = 1, FirstName = $"User {1}", });; } result = new NET.Schema.TL.Messages.TLDialogs { Chats = chats, Dialogs = dialogs, Messages = new TLVector <TLAbsMessage>(), Users = users }; } catch (Exception err) { this.logger.LogError( $"An error occured while trying to handle GetDialogs.:\r\n{err.GetBaseException().Message}"); throw; } return(result); }