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)); } }
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); }