private async Task HandleMessage(ServerMessage message) { switch (message.Command) { case "001": case "002": case "003": case "004": case "375": case "372": break; case "PING": await SendRawAsync($"PONG :{message.Trailing}"); break; case "PRIVMSG": var msg = new TwitchMessage(message.Parameters.First(), message.Prefix.Split('!').First(), message.Trailing); if (msg.Sender == _config.Username) { break; } OnMessageReceived(msg); break; case "376": _log.LogInformation("Connection to IRC established, joining {Channel}", _config.Channel); await SendRawAsync($"JOIN {_config.Channel}"); break; case "JOIN": var user = message.Prefix.Split('!').First(); if (user == _config.Username) { _log.LogInformation("Successfully joined {Channel}", message.Parameters.First()); } else { _log.LogTrace("{User} joined {Channel}", user, message.Parameters.First()); } break; default: _log.LogTrace("Unsupported command: {Command}", message.Command); break; } }
public MessageReceivedEventArgs(TwitchMessage twitchMessage) { TwitchMessage = twitchMessage; }
private void OnMessageReceived(TwitchMessage twitchMessage) { _log.LogTrace("Broadcasting {@Message} to event listeners", twitchMessage); MessageReceived?.Invoke(this, new MessageReceivedEventArgs(twitchMessage)); }