예제 #1
0
        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;
            }
        }
예제 #2
0
 public MessageReceivedEventArgs(TwitchMessage twitchMessage)
 {
     TwitchMessage = twitchMessage;
 }
예제 #3
0
 private void OnMessageReceived(TwitchMessage twitchMessage)
 {
     _log.LogTrace("Broadcasting {@Message} to event listeners", twitchMessage);
     MessageReceived?.Invoke(this, new MessageReceivedEventArgs(twitchMessage));
 }