protected virtual async Task OnNewMessageEvent(NewMessageEvent typedEvent) { string decrypted = _aes.OpenSSLDecrypt(typedEvent.Message.Content, typedEvent.AESKey); _botLogger.LogInfo($"On message from sender `{typedEvent.Message.Sender.NickName}`: {decrypted}"); if (decrypted.StartsWith("[group]") && int.TryParse(decrypted.Substring(7), out int groupId)) { await BuildBot.OnGroupInvitation(groupId, typedEvent); } await BuildBot.OnMessage(decrypted, typedEvent).ConfigureAwait(false); }
public async void OnStargateMessage(ResponseMessage msg) { var inevent = JsonConvert.DeserializeObject <KahlaEvent>(msg.ToString()); switch (inevent.Type) { case EventType.NewMessage: var newMessageEvent = JsonConvert.DeserializeObject <NewMessageEvent>(msg.ToString()); await InsertNewMessage( newMessageEvent.ConversationId, newMessageEvent.Message, newMessageEvent.PreviousMessageId); await OnNewMessageEvent(newMessageEvent); break; case EventType.NewFriendRequestEvent: var newFriendRequestEvent = JsonConvert.DeserializeObject <NewFriendRequestEvent>(msg.ToString()); PatchFriendRequest(newFriendRequestEvent.Request); await BuildBot.OnFriendRequest(newFriendRequestEvent); break; case EventType.FriendsChangedEvent: var friendsChangedEvent = JsonConvert.DeserializeObject <FriendsChangedEvent>(msg.ToString()); PatchFriendRequest(friendsChangedEvent.Request); if (friendsChangedEvent.Result) { SyncFriendRequestToContacts(friendsChangedEvent.Request, friendsChangedEvent.CreatedConversation); } await BuildBot.OnFriendsChangedEvent(friendsChangedEvent); break; case EventType.FriendDeletedEvent: var friendDeletedEvent = JsonConvert.DeserializeObject <FriendDeletedEvent>(msg.ToString()); DeleteConversationIfExist(friendDeletedEvent.ConversationId); await BuildBot.OnWasDeleted(friendDeletedEvent); break; case EventType.DissolveEvent: var dissolveEvent = JsonConvert.DeserializeObject <DissolveEvent>(msg.ToString()); DeleteConversationIfExist(dissolveEvent.ConversationId); await BuildBot.OnGroupDissolve(dissolveEvent); break; case EventType.SomeoneLeftEvent: var someoneLeftEvent = JsonConvert.DeserializeObject <SomeoneLeftEvent>(msg.ToString()); if (someoneLeftEvent.LeftUser.Id == BuildBot.Profile.Id) { // you was kicked DeleteConversationIfExist(someoneLeftEvent.ConversationId); } else { // Some other one, not me, was deleted in a conversation. } break; case EventType.GroupJoinedEvent: var groupJoinedEvent = JsonConvert.DeserializeObject <GroupJoinedEvent>(msg.ToString()); SyncGroupToContacts(groupJoinedEvent.CreatedConversation, groupJoinedEvent.MessageCount, groupJoinedEvent.LatestMessage); await BuildBot.OnGroupConnected(new SearchedGroup(groupJoinedEvent.CreatedConversation)); break; default: _botLogger.LogDanger($"Unhandled server event: {inevent.TypeDescription}!"); break; } await BuildBot.OnMemoryChanged(); }