private void INSTANCE_NewChatMessage(ChatDBManager handler, NewChatMessageEventArgs args) { if (string.Equals(Chat?.id, args.MESSAGE.chatId)) { NewChatMessage?.Invoke(this, args); } }
/// <summary> /// Logs a message to chat. <font/> 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); }
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)); } }
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); }
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)); } }
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); } }
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)); }
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); }
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); } }
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)); }