/// <summary> /// Handler for a user executing a "/msg" command. Sends the message directly /// to another user rather than to the whole channel. /// </summary> /// <param name="command">The command that was sent by the user</param> internal virtual async Task PrivateMessageCommandSent(UserCommand command) { if (command.Parameters.Count < 2) { return; } var receivingUser = command.Parameters[0]; var messageElements = command.Parameters.Except(new List <string> { receivingUser }); var message = String.Join(" ", messageElements); await SendMessageToServerAsync(new IrcMessage { Command = "PRIVMSG", Parameters = { receivingUser }, TrailingParameter = message }); }
/// <summary> /// Handler for a user executing a "/join" command. Sends a request to /// the server to leave the current channel and join the new one. /// </summary> /// <param name="command">The command that was sent by the user</param> internal virtual async Task JoinCommandSent(UserCommand command) { if (command.Parameters.Count == 0) { return; } if (_currentChannel != null) { await SendMessageToServerAsync(new IrcMessage { Command = "PART", Parameters = { _currentChannel } }); } var channel = command.Parameters[0]; await SendMessageToServerAsync(new IrcMessage { Command = "JOIN", Parameters = { channel } }); }
/// <summary> /// Handler for a user executing the /help command. /// </summary> /// <param name="command">The command that was sent by the user</param> internal virtual async Task HelpCommandSent(UserCommand command) { const string joinHelp = "/join <channel> \tJoins a channel"; const string partHelp = "/part \t\tLeaves the current channel"; const string langHelp = "/lang \t\tSets the translation language. If 'off', turns translation off"; const string msgHelp = "/msg <user> <msg> \tSends a private message"; const string nickHelp = "/nick <nickname> \tChange nickname"; const string quitHelp = "/quit \t\tDisconnects the client"; var joinHelpMessage = new Message { Type = MessageType.Server, Text = joinHelp }; var partHelpMessage = new Message { Type = MessageType.Server, Text = partHelp }; var langHelpMessage = new Message { Type = MessageType.Server, Text = langHelp }; var msgHelpMessage = new Message { Type = MessageType.Server, Text = msgHelp }; var nickHelpMessage = new Message { Type = MessageType.Server, Text = nickHelp }; var quitHelpMessage = new Message { Type = MessageType.Server, Text = quitHelp }; TriggerEvent(OnMessageReceived, joinHelpMessage); TriggerEvent(OnMessageReceived, partHelpMessage); TriggerEvent(OnMessageReceived, langHelpMessage); TriggerEvent(OnMessageReceived, msgHelpMessage); TriggerEvent(OnMessageReceived, nickHelpMessage); TriggerEvent(OnMessageReceived, quitHelpMessage); await Task.Yield(); }
/// <summary> /// Handler for a user executing the /nick command. /// </summary> /// <param name="command">The command that was sent by the user</param> internal virtual async Task NickCommandSent(UserCommand command) { await SendMessageToServerAsync(new IrcMessage { Command = "NICK", Parameters = command.Parameters }); }
/// <summary> /// Handler for a user executing the /quit command. /// </summary> /// <param name="command">The command that was sent by the user</param> internal virtual async Task QuitCommandSent(UserCommand command) { await SendMessageToServerAsync(new IrcMessage { Command = "QUIT", TrailingParameter = "Client quit" }); _cancellationTokenSource.Cancel(); }