Пример #1
0
        /// <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 });
        }
Пример #2
0
        /// <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 } });
        }
Пример #3
0
        /// <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();
        }
Пример #4
0
 /// <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 });
 }
Пример #5
0
        /// <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();
        }