private void HandleReceivedMessage(ChatMessage msg) { OnChatMessageReceived?.Invoke(this, new ChatMessageReceivedEventArgs(msg.Message, msg.Username)); string userName = msg.Username.ToLowerInvariant(); dictUserMessages[userName] = DateTime.Now; }
public void SendChatMessageNotice(string userName, string sendingUserName, string chatRoom, string message) { OnChatMessageReceived?.Invoke(this, new ChatMessageEventArgs() { TargetUserName = userName, SendingUserName = sendingUserName, Message = message, Chatroom = chatRoom }); }
private void ReadChat() { if (twitchClient.Available <= 0) { return; } var message = reader.ReadLine(); if (!message.Contains("PRIVMSG")) { return; } var splitPoint = message.IndexOf(commandPrefix, 1); var username = message.Substring(0, splitPoint); splitPoint = message.IndexOf(":", 1); message = message.Substring(splitPoint + 1); //IMPORTANTl this line prints out message Debug.Log(message); string[] messages = message.Split(' '); if (messages.Length == 0 || messages[0][0] != commandPrefix[0]) { return; } username = username.Substring(1); TwitchChatMessage chatMessage = new TwitchChatMessage(username, messages); onChatMessageReceived?.Invoke(chatMessage); }
private void OnMessageReceived(object sender, OnMessageReceivedArgs e) { OnChatMessageReceived?.Invoke(this, e.ChatMessage); var user = GetOrAddUser(e.ChatMessage.Username); AddMessage(user.UserID, this.JoinedChannel.ChannelID, e.ChatMessage.Message); }
private void ChatMessageReceivedHandler(string sender, string message) { var args = new ChatMessageReceivedEventArgs { Sender = sender, Message = message }; OnChatMessageReceived?.Invoke(this, args); }
/// <summary> /// Handles incoming <see cref="ChatMessagePacket"/>s. /// </summary> /// <param name="connectionId">Original connection ID</param> /// <param name="packet">Incoming packet</param> private void chatMessagePacketHandler(string connectionId, ChatMessagePacket packet) { lock (messageHistoryLock) { // Store the message in chat history messageHistory.Add(new ClientChatMessage(packet.MessageId, packet.Uuid, packet.Message, packet.Timestamp.ToDateTime(), ChatMessageStatus.CONFIRMED)); } OnChatMessageReceived?.Invoke(this, new ChatMessageEventArgs(packet.Message, packet.Uuid, packet.Timestamp.ToDateTime())); }
private void ReadChatMessage(string message) { string displayName = _messageRegexp.Match(message).Groups[1].Value; bool isSub = _messageRegexp.Match(message).Groups[2].Value == "1"; string idUser = _messageRegexp.Match(message).Groups[3].Value; string username = _messageRegexp.Match(message).Groups[4].Value; string messageSent = _messageRegexp.Match(message).Groups[5].Value; int bits = 0; TwitchUser twitchUser = TwitchUserManager.AddUser(username); twitchUser.SetData(idUser, displayName, isSub); if (messageSent.Length == 0) { return; } MatchCollection matches = cheerRegexp.Matches(messageSent); foreach (Match match in matches) { if (match.Groups.Count != 2) { continue; // First group is 'cheerXX', second group is XX. } string value = match.Groups[1].Value; if (!Int32.TryParse(value, out int bitsAmount)) { continue; } bits += bitsAmount; } if (messageSent[0] == commandPrefix[0]) { TwitchChatCommand chatCommand = new TwitchChatCommand(twitchUser, messageSent, bits); onChatCommandReceived?.Invoke(chatCommand); } else { TwitchChatMessage chatMessage = new TwitchChatMessage(twitchUser, messageSent, bits); onChatMessageReceived?.Invoke(chatMessage); } }
private void ReadChat() { if (twitchClient.Available <= 0) { return; } var message = reader.ReadLine(); if (!message.Contains("PRIVMSG")) { return; } var splitPoint = message.IndexOf(commandPrefix, 1); var username = message.Substring(0, splitPoint); splitPoint = message.IndexOf(":", 1); message = message.Substring(splitPoint + 1); //IMPORTANT this line prints out message Debug.Log(message); string[] messages = message.Split(' '); if (messages.Length == 0 /*|| messages[0][0] != commandPrefix[0]*/) { return; } /*------START OF CUSTOMIZE CODE------*/ StartCoroutine(CheckEmo(messages)); /*------END OF CUSTOMIZE CODE------*/ username = username.Substring(1); TwitchChatMessage chatMessage = new TwitchChatMessage(username, messages); onChatMessageReceived?.Invoke(chatMessage); }
/// <summary> /// Handles incoming <see cref="ChatMessageResponsePacket"/>s. /// </summary> /// <param name="connectionId">Original connection ID</param> /// <param name="packet">Incoming packet</param> private void chatMessageResponsePacketHandler(string connectionId, ChatMessageResponsePacket packet) { ClientChatMessage message; lock (messageHistoryLock) { try { // Try get a message with a corresponding original message ID message = messageHistory.Single(m => m.MessageId == packet.OriginalMessageId); } catch (InvalidOperationException) { RaiseLogEntry(new LogEventArgs(string.Format("Got a ChatMessageResponsePacket with an unknown original message ID ({0})", packet.OriginalMessageId), LogLevel.WARNING)); // Stop here return; } // Update the message ID message.MessageId = packet.NewMessageId; if (packet.Success) { // Update the message content and confirm it message.Message = packet.Message; message.Status = ChatMessageStatus.CONFIRMED; } else { // Deny the message but don't overwrite the content message.Status = ChatMessageStatus.DENIED; } } OnChatMessageReceived?.Invoke(this, new ClientChatMessageEventArgs(message)); }
}//c-tor //Receive messages via network stream public void Work() { Thread newThread = new Thread(new ThreadStart(() => { while (!_isStopped) { try { object msg = _formatter.Deserialize(_stream); OnChatMessageReceived?.Invoke(this, msg); } catch (Exception ex) { // IsStopped = true; Disconnect(); OnDataTransferError?.Invoke(ex, new ChatErrorEventArgs("Connection error")); } } } )); newThread.IsBackground = true; newThread.Start(); }
private void Server() { while (true) { try { UpdateStatus("Connecting..."); incoming = new TcpListener(IPAddress.Parse("127.0.0.1"), 13000); // Start listening for client requests. incoming.Start(); // Buffer for reading data Byte[] bytes = new Byte[256]; String data = null; TcpClient client = null; // Enter the listening loop. while (true) { try { // Perform a blocking call to accept requests. // You could also user server.AcceptSocket() here. client = incoming.AcceptTcpClient(); UpdateStatus("Connected"); data = null; // Get a stream object for reading and writing NetworkStream stream = client.GetStream(); int i; // Loop to receive all the data sent by the client. while ((i = stream.Read(bytes, 0, bytes.Length)) != 0) { // Translate data bytes to a ASCII string. data = System.Text.Encoding.ASCII.GetString(bytes, 0, i); OnChatMessageReceived?.Invoke(this, new ChatMessage(DateTime.Now, $"<< {data}")); } } catch (Exception e) { OnChatMessageReceived?.Invoke(this, new ChatMessage(DateTime.Now, e.Message)); } finally { // Shutdown and end connection client?.Close(); } } } catch (Exception e) { OnChatMessageReceived?.Invoke(this, new ChatMessage(DateTime.Now, e.Message)); } finally { // Stop listening for new clients. incoming.Stop(); } } }
private void HandleChannelMessage(string ircRawMessage, string channelName, IRCParser.TwitchChannelMessageType channelMessageType) { switch (channelMessageType) { case IRCParser.TwitchChannelMessageType.Usernotice: { UserNotice usernotice = new UserNotice(ircRawMessage); if (usernotice.MessageID != UserNotice.SubscriptionType.None) { OnSubscriptionEventArgs subEvent = new OnSubscriptionEventArgs(usernotice); OnSubscriptionReceived?.Invoke(this, subEvent); } return; } case IRCParser.TwitchChannelMessageType.ChannelMessage: { ChatMessage chatMessage = new ChatMessage(ircRawMessage); OnChatMessageReceivedEventArgs onChatReceivedEvent = new OnChatMessageReceivedEventArgs(chatMessage); OnChatMessageReceived?.Invoke(this, onChatReceivedEvent); return; } case IRCParser.TwitchChannelMessageType.LeftChannel: { // USER LEFT CHANNEL //:[email protected] PART #sirtucx string sUsername = ircRawMessage.Substring(1, ircRawMessage.IndexOf('!') - 1); OnUserLeaveEventArgs onUserLeaveEventArgs = new OnUserLeaveEventArgs(sUsername, channelName); OnUserLeaveEvent?.Invoke(this, onUserLeaveEventArgs); return; } case IRCParser.TwitchChannelMessageType.Mode: { string[] sModeSplit = ircRawMessage.Split(' '); if (sModeSplit[3] == "+o") { // TODO: MOD JOINED CHANNEL } else if (sModeSplit[3] == "-o") { // TODO: MOD LEFT CHANNEL } else { // TODO: UNKNOWN } return; } case IRCParser.TwitchChannelMessageType.Notice: { if (ircRawMessage.Contains("Improperly formatted auth")) { // TODO: AUTH ERROR } else if (ircRawMessage.Contains("has gone offline")) { // TODO: HOST LEFT } else if (ircRawMessage.Contains("The moderators of this room are:")) { // TODO: LIST ALL MODERATORS } else if (ircRawMessage.Contains("Your color has been changed.")) { // TODO: DETECT COLOR CHANGE } return; } case IRCParser.TwitchChannelMessageType.RoomState: { // TODO: ROOM STATE CHANGED return; } case IRCParser.TwitchChannelMessageType.UserState: { // USER JOINED CHANNEL // Example: @badges=staff/1;color=#0D4200;display-name=ronni;emote-sets=0,33,50,237,793,2126,3517,4578,5569,9400,10337,12239;mod=1;subscriber=1;turbo=1;user-type=staff :tmi.twitch.tv USERSTATE #dallas UserState userState = new UserState(ircRawMessage); OnUserJoinedEventArgs onUserJoinedEventArgs = new OnUserJoinedEventArgs(userState); OnUserJoinedEvent?.Invoke(this, onUserJoinedEventArgs); return; } case IRCParser.TwitchChannelMessageType.ClearChat: { // TODO: HANDLE BANS/TIMEOUTS return; } } }