private void irc_Message(UserInfo user, string channel, string message) { if (user.UserType != IRCUserType.User) { return; } if (message.StartsWith("!") && message.Length > 1) // Command { message = message.Substring(1); if (channel.StartsWith("#")) // Channel { if (message.Equals("help", StringComparison.InvariantCultureIgnoreCase)) { IRC.SendMessage(Info.GetAutoResponses(), channel); } } else // Whisper { } } else // Message { CheckGithubIssues(message, channel); } }
private void IRC_UserJoined(UserInfo userInfo, string channel) { if (userInfo.UserType == IRCUserType.Me) { Channel = channel; } }
private void IRC_UserJoined(UserInfo userInfo, string channel) { if (userInfo.Nickname == IRC.CurrentNickname && userInfo.Username == Settings.Username) { this.InvokeSafe(() => { tabManager.AddChannel(channel); if (string.IsNullOrEmpty(txtChannel.Text)) { txtChannel.Text = channel; } }); } }
private void IRC_Message(UserInfo userInfo, string channel, string message) { this.InvokeSafe(() => { if (channel[0] != '#' && userInfo.UserType == IRCUserType.User) { channel = userInfo.Nickname; } tabManager.AddMessage(channel, $"{userInfo.Nickname}: {message}"); }); }
public MessageInfo(string content) { Content = content; User = new UserInfo(); Parameters = new List<string>(); }
private void ParseWHOIS(MessageInfo messageInfo) { UserInfo userInfo; switch (messageInfo.Command) { case "311": //:sendak.freenode.net 311 Jaex ShareX ~ShareX unaffiliated/sharex * :realname if (messageInfo.Parameters.Count >= 4) { userInfo = new UserInfo(); userInfo.Nickname = messageInfo.Parameters[1]; if (messageInfo.Parameters[2][1] == '~') { userInfo.Username = messageInfo.Parameters[2].Substring(1); } else // Ident { userInfo.Username = messageInfo.Parameters[2]; } userInfo.Host = messageInfo.Parameters[3]; userInfo.Realname = messageInfo.Message; userList.Add(userInfo); } break; case "319": //:sendak.freenode.net 319 Jaex ShareX :@#ShareX @#ShareX_Test if (messageInfo.Parameters.Count >= 2) { userInfo = FindUser(messageInfo.Parameters[1]); if (userInfo != null) { userInfo.Channels.Clear(); userInfo.Channels.AddRange(messageInfo.Message.Split()); } } break; case "312": //:sendak.freenode.net 312 Jaex ShareX sendak.freenode.net :Vilnius, Lithuania, EU if (messageInfo.Parameters.Count >= 3) { userInfo = FindUser(messageInfo.Parameters[1]); if (userInfo != null) { userInfo.Server = messageInfo.Parameters[2]; } } break; case "671": //:sendak.freenode.net 671 Jaex ShareX :is using a secure connection if (messageInfo.Parameters.Count >= 2) { userInfo = FindUser(messageInfo.Parameters[1]); if (userInfo != null) { userInfo.SecureConnection = true; } } break; case "317": //:sendak.freenode.net 317 Jaex ShareX 39110 1440201914 :seconds idle, signon time if (messageInfo.Parameters.Count >= 4) { userInfo = FindUser(messageInfo.Parameters[1]); if (userInfo != null) { int idleTime; if (int.TryParse(messageInfo.Parameters[2], out idleTime)) { userInfo.IdleTime = TimeSpan.FromSeconds(idleTime); } int signOnTime; if (int.TryParse(messageInfo.Parameters[3], out signOnTime)) { userInfo.SignOnDate = Helpers.UnixToDateTime(signOnTime).ToLocalTime(); } } } break; case "330": //:sendak.freenode.net 330 Jaex ShareX ShareX :is logged in as if (messageInfo.Parameters.Count >= 3) { userInfo = FindUser(messageInfo.Parameters[1]); if (userInfo != null) { userInfo.Identity = messageInfo.Parameters[2]; } } break; case "318": //:sendak.freenode.net 318 Jaex ShareX :End of /WHOIS list. if (messageInfo.Parameters.Count >= 2) { userInfo = FindUser(messageInfo.Parameters[1]); if (userInfo != null) { userList.Remove(userInfo); OnWhoisResult(userInfo); } } break; } }
protected void OnUserKicked(UserInfo userInfo, string channel, string kickedNick) { if (UserKicked != null) { UserKicked(userInfo, channel, kickedNick); } }
private void irc_WhoisResult(UserInfo userInfo) { IRC.SendMessage(userInfo.ToString()); }
protected void OnUserLeft(UserInfo userInfo, string channel) { if (UserLeft != null) { UserLeft(userInfo, channel); } }
protected void OnUserJoined(UserInfo userInfo, string channel) { if (UserJoined != null) { UserJoined(userInfo, channel); } }
protected void OnWhoisResult(UserInfo userInfo) { if (WhoisResult != null) { WhoisResult(userInfo); } }
protected void OnUserQuit(UserInfo userInfo) { if (UserQuit != null) { UserQuit(userInfo); } }
protected void OnMessage(UserInfo userInfo, string channel, string message) { if (Message != null) { Message(userInfo, channel, message); } }
private void irc_UserJoined(UserInfo user, string channel) { /*if (user.UserType == IRCUserType.User && user.Nickname != Info.Nickname) { string[] messages = { "Hello", "Hi", "Welcome" }; string message = messages[new Random().Next(messages.Length)]; IRC.SendMessage(channel, message + " " + user.Nickname); }*/ }
private void IRC_Message(UserInfo userInfo, string channel, string message) { if (userInfo.UserType != IRCUserType.User) { return; } if (message.StartsWith("!") && message.Length > 1) // Command { message = message.Substring(1); if (channel.StartsWith("#")) // Channel { } else // Whisper { } if (message.Equals("help", StringComparison.InvariantCultureIgnoreCase)) { OutputCurrentCommands(channel); } else if (message.Equals("release", StringComparison.InvariantCultureIgnoreCase)) { OutputLatestReleaseInfo(channel); } else if (message.Equals("permission", StringComparison.InvariantCultureIgnoreCase)) { IRC.SendMessage($"{userInfo.Nickname} permission: {IsUserHavePermission(userInfo)}", channel); } else if (message.Equals("restart", StringComparison.InvariantCultureIgnoreCase) && IsUserHavePermission(userInfo, channel)) { Program.RestartRequested = true; IRC.Disconnect(); } } else // Message { if (CheckGitHubIssues(message, channel)) return; } }
private bool IsUserHavePermission(UserInfo userInfo, string channel = null) { bool result = !string.IsNullOrEmpty(userInfo.Host) && Settings.Permissions.Any(x => x.Equals(userInfo.Host, StringComparison.InvariantCulture)); if (!string.IsNullOrEmpty(channel) && !result) { OutputInvalidPermission(channel); } return result; }
protected void OnUserNickChanged(UserInfo userInfo, string newNick) { if (UserNickChanged != null) { UserNickChanged(userInfo, newNick); } }