Beispiel #1
0
        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);
        }
Beispiel #2
0
        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();
        }