Пример #1
0
 private void INSTANCE_NewChatMessage(ChatDBManager handler, NewChatMessageEventArgs args)
 {
     if (string.Equals(Chat?.id, args.MESSAGE.chatId))
     {
         NewChatMessage?.Invoke(this, args);
     }
 }
Пример #2
0
 /// <summary>
 /// Logs a message to chat. &lt;font/&gt; tags are added if missing.
 /// </summary>
 /// <param name="message"></param>
 /// <param name="author"></param>
 /// <param name="channel"></param>
 public static void Chat(string message, string author = "System", ChatChannel channel = ChatChannel.TCC)
 {
     if (!message.StartsWith("<font"))
     {
         message = ChatUtils.Font(message);
     }
     NewChatMessage?.Invoke(channel, message, author);
 }
Пример #3
0
 public void setChatMessage(ChatMessageTable message, bool triggerNewChatMessage, bool triggerMessageChanged)
 {
     dB.InsertOrReplace(message);
     if (triggerNewChatMessage)
     {
         NewChatMessage?.Invoke(this, new NewChatMessageEventArgs(message));
         if (message.isImage && !Settings.getSettingBoolean(SettingsConsts.DISABLE_IMAGE_AUTO_DOWNLOAD))
         {
             cacheImage(message);
         }
     }
     if (triggerMessageChanged)
     {
         ChatMessageChanged?.Invoke(this, new ChatMessageChangedEventArgs(message, false));
     }
 }
Пример #4
0
        public ChatClient(IMessageHandler handler)
        {
            _tcpClient = new TcpClient("irc.twitch.tv", 6667);
            var networkStream = _tcpClient.GetStream();

            _reader = new StreamReader(networkStream);
            _writer = new StreamWriter(networkStream)
            {
                AutoFlush = true
            };
            _cts                     = new CancellationTokenSource();
            _joinedStreams           = new ConcurrentDictionary <Stream, byte>();
            _handler                 = handler;
            _handler.ChatClient      = this;
            _handler.NewChatMessage += (sender, args) => NewChatMessage.Invoke(sender, args);
        }
Пример #5
0
 public void setChatMessage(ChatMessageTable message, bool triggerNewChatMessage, bool triggerMessageChanged)
 {
     update(message);
     if (triggerNewChatMessage)
     {
         NewChatMessage?.Invoke(this, new NewChatMessageEventArgs(message));
         if (message.isImage)
         {
             cacheImage(message);
         }
     }
     if (triggerMessageChanged)
     {
         ChatMessageChanged?.Invoke(this, new ChatMessageChangedEventArgs(message));
     }
 }
Пример #6
0
        private void SendToAll(MainRequest request, ChatModule chat)
        {
            var data         = request as InsertToChatMessageModel;
            var clientSneder = _allChatDetails.GetClientByName(data.From);

            if (!ValidateFirstConnectionToChat(clientSneder, chat, data))
            {
                return;
            }

            try
            {
                lock (locker)
                {
                    _allChatDetails.UpdateCurrentChat(clientSneder, chat);
                }



                var model = new NewChatMessage
                {
                    RequestType = MessageType.NewChatMessage,
                    From        = request.From,
                    Message     = data.MessageChat
                };
                string message = Utils.SerlizeObject(model);
                if (data.MessageChat == "exit")
                {
                    ExitFromChat(clientSneder, chat, request);
                    return;
                }


                SendToAll(chat, request, message);



                chat.AddMessage(new MessageModel(ChatMessageType.TextMessage, data.MessageChat, clientSneder, DateTime.Now));
            }
            catch (Exception e)
            {
                ExitFromChat(clientSneder, chat, request);
            }
        }
Пример #7
0
        private void ExitFromChat(IClientModel clientSneder, ChatModule chat, MainRequest request)
        {
            lock (locker)
            {
                _allChatDetails.UpdateCurrentChat(clientSneder, null);
            }
            var model = new NewChatMessage
            {
                RequestType = MessageType.NewChatMessage,
                From        = request.From
            };

            model.Message = $"The user {clientSneder.Name} disconnect from server";
            chat.AddMessage(new MessageModel(ChatMessageType.TextMessage, model.Message, clientSneder, DateTime.Now));
            SendToAll(chat, request, Utils.SerlizeObject(model));
            model.Message = $"exit";
            chat.AddMessage(new MessageModel(ChatMessageType.TextMessage, model.Message, clientSneder, DateTime.Now));
            _containerInterfaces.RequestHandler.SendData(clientSneder.Client, Utils.SerlizeObject(model));
        }
Пример #8
0
        private void Connection_ConnectionNewValidMessage(IMessageSender connection, NewValidMessageEventArgs args)
        {
            AbstractMessage msg = args.MESSAGE;

            if (msg is MessageMessage mMsg)
            {
                NewChatMessage?.Invoke(this, new NewChatMessageEventArgs(mMsg));
            }
            else if (msg is ChatStateMessage sMsg)
            {
                NewChatState?.Invoke(this, new NewChatStateEventArgs(sMsg));
            }
            else if (msg is DeliveryReceiptMessage dRMsg)
            {
                NewDeliveryReceipt?.Invoke(this, new NewDeliveryReceiptEventArgs(dRMsg));
            }

            NewValidMessage?.Invoke(this, args);
        }
Пример #9
0
        private void ConnectedToChat(string requestData)
        {
            string response = requestData;
            InsertToChatMessageModel request = Utils.DeSerlizeObject <InsertToChatMessageModel>(response);
            var        clientSneder          = _allChatDetails.GetClientByName(Name);
            ChatModule foundChat             = _allChatDetails.GetChatById(request.ChatId);

            lock (locker)
            {
                _allChatDetails.UpdateCurrentChat(clientSneder, foundChat);
            }
            Console.WriteLine(clientSneder.CurrentConnectChat);

            while (true)
            {
                request = Utils.DeSerlizeObject <InsertToChatMessageModel>(response);

                var model = new NewChatMessage
                {
                    RequestType = "NewChatMessage",
                    From        = request.From,
                    Message     = request.MessageChat
                };
                string message = Utils.SerlizeObject(model);
                if (request.MessageChat == "exit")
                {
                    lock (locker)
                    {
                        _allChatDetails.UpdateCurrentChat(clientSneder, null);
                        //clientSneder.CurrentConnectChat = null;
                    }
                    model.Message = $"The user {model.From} disconnect from this chat";
                    SendAll(foundChat, request, $"User");
                    return;
                }

                SendAll(foundChat, request, message);

                foundChat.AddMessage(new MessageModel(MessageType.TextMessage, message, clientSneder, DateTime.Now));
                response = _responseHandler.GetResponse(_allChatDetails.GetClientByName(Name).Client);
            }
        }
Пример #10
0
        public async void Handle(string message)
        {
            if (message == "PING :tmi.twitch.tv")
            {
                if (ChatClient != null)
                {
                    await ChatClient.WriteRaw("PONG :tmi.twitch.tv");
                }
                return;
            }
            var msg = await _factory.FromRawString(message, DateTime.Now);

            if (msg.MessageBody != string.Empty)
            {
                NewChatMessage.Invoke(this, new NewChatMessageEventArgs
                {
                    Message = msg
                });
                //Debug.WriteLine(message);
            }
        }
        private void SendToAll(MainRequest request, ChatModule chat)
        {
            var data         = request as InsertToChatMessageModel;
            var clientSneder = _allChatDetails.GetClientByName(data.From);

            lock (locker)
            {
                _allChatDetails.UpdateCurrentChat(clientSneder, chat);
            }

            var model = new NewChatMessage
            {
                RequestType = "NewChatMessage",
                From        = request.From,
                Message     = data.MessageChat
            };
            string message = Utils.SerlizeObject(model);

            if (data.MessageChat == "exit")
            {
                model.Message = $"The user {data.From} disconnect from server";
                SendToAll(chat, request, Utils.SerlizeObject(model));
                model.Message = $"exit";
                SendToAllExit(chat, request, Utils.SerlizeObject(model));

                lock (locker)
                {
                    _allChatDetails.UpdateCurrentChat(clientSneder, null);
                }
                return;
            }

            SendToAll(chat, request, message);


            chat.AddMessage(new MessageModel(MessageType.TextMessage, message, clientSneder, DateTime.Now));
        }