private static CommandMessage GetMessage(IrcNetwork network, string text, string targetName, CommandProcessorAttribute attrib)
        {
            var split = ParseCommand(network, text, attrib);

            split.SetChannelFallback(network, targetName);

            var chan = split.ChannelName.HasText() ? network.GetChannel(split.ChannelName) : null;
            var user = split.UserName.HasText() ? network.GetUser(split.UserName) : null;

            return(new CommandMessage(split.Text.Trim(), chan, user, targetName));
        }
            public static void Me(IrcNetwork network, CommandMessage command)
            {
                string text       = network.CurrentUser.Nickname + " " + command.Text;
                var    ircMessage = new IrcMessage(network, MessageDirection.Sent, network.CurrentUser, IrcMessageType.Action, text);

                if (network.Parameters.IsChannelName(command.TargetName))
                {
                    var channel = network.GetChannel(command.TargetName);
                    channel.Ctcp.SendAction(command.Text);
                    Messenger.Send(new ChannelMessageSentMessage(channel, ircMessage));
                }
                else
                {
                    var user = network.GetUser(command.TargetName);
                    user.Ctcp.SendAction(command.Text);
                    Messenger.Send(new UserMessageSentMessage(user, ircMessage));
                }
            }
        private static void HandleNormalMessage(IrcNetwork network, string targetName, string text)
        {
            var ircMessage = new IrcMessage(network, MessageDirection.Sent, network.CurrentUser, IrcMessageType.Normal, text);

            if (targetName == null)
            {
                // don't show the sent message
                network.Client.SendRawData(text);
            }
            else if (network.Parameters.IsChannelName(targetName))
            {
                var channel = network.GetChannel(targetName);
                channel.SendMessage(text);
                Messenger.Send(new ChannelMessageSentMessage(channel, ircMessage));
            }
            else
            {
                var user = network.GetUser(targetName);
                user.SendMessage(text);
                Messenger.Send(new UserMessageSentMessage(user, ircMessage));
            }
        }
Пример #4
0
        public async Task <bool> ConnectAsync(string hostName, int port)
        {
            // Create an IrcNetwork, injecting a SocketWrapper
            _network = new IrcNetwork(new SocketWrapper(hostName, port));

            // The only options here are to connect as an user or as a service.
            // We'll keep things simple and be a normal user.
            if (await _network.ConnectAsync(_nickname, "Greeting Bot", IrcUserLoginModes.None))
            {
                // We connected successfully, so join the channel and monitor it.
                // However, we have to wait for a while before joining the channel - some networks are a bit slow
                var channel = _network.GetChannel(_channelName);
                channel.UserJoined += Channel_UserJoined;

                // Wait one second
                await Task.Delay(1000);

                channel.Join();
                return(true);
            }

            // An error occured.
            return(false);
        }